@molgenis/vip-report-template 2.6.3 → 2.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (215) hide show
  1. package/.scannerwork/css-bundle/stylelintconfig.json +1 -1
  2. package/.scannerwork/report-task.txt +5 -5
  3. package/.scannerwork/ucfg2/js/_home_travis_build_molgenis_vip_report_template_src_components_AnnotationsNav_vue_1_1_P1_ENTRY.ucfg +0 -0
  4. package/.scannerwork/ucfg2/js/_home_travis_build_molgenis_vip_report_template_src_components_Gene_vue_1_1_P1_ENTRY.ucfg +0 -0
  5. package/.scannerwork/ucfg2/js/_home_travis_build_molgenis_vip_report_template_src_components_RecordCommonDetails_vue_1_1_P1_ENTRY.ucfg +0 -0
  6. package/.scannerwork/ucfg2/js/_home_travis_build_molgenis_vip_report_template_src_components_RecordInfoDetailsItemValue_vue_1_1_P1_ENTRY.ucfg +0 -0
  7. package/.scannerwork/ucfg2/js/_home_travis_build_molgenis_vip_report_template_src_components_RecordInfoDetailsItem_vue_1_1_P1_ENTRY.ucfg +0 -0
  8. package/.scannerwork/ucfg2/js/_home_travis_build_molgenis_vip_report_template_src_components_RecordInfoDetails_vue_1_1_P1_ENTRY.ucfg +0 -0
  9. package/.scannerwork/ucfg2/js/_home_travis_build_molgenis_vip_report_template_src_components_RecordInfoUnnestedDetails_vue_1_1_P1_ENTRY.ucfg +0 -0
  10. package/.scannerwork/ucfg2/js/_home_travis_build_molgenis_vip_report_template_src_components_RecordTable_vue_1_1_P1_ENTRY.ucfg +0 -0
  11. package/.scannerwork/ucfg2/js/_home_travis_build_molgenis_vip_report_template_src_components_SampleNavigation_vue_1_1_P1_ENTRY.ucfg +0 -0
  12. package/.scannerwork/ucfg2/js/_home_travis_build_molgenis_vip_report_template_src_components_SamplePedigree_vue_1_1_P1_ENTRY.ucfg +0 -0
  13. package/.scannerwork/ucfg2/js/_home_travis_build_molgenis_vip_report_template_src_components_TreeVisualisation_vue_1_1_P1_ENTRY.ucfg +0 -0
  14. package/.scannerwork/ucfg2/js/_home_travis_build_molgenis_vip_report_template_src_components_annotation_AnnotationControl_vue_1_1_P1_ENTRY.ucfg +0 -0
  15. package/.scannerwork/ucfg2/js/_home_travis_build_molgenis_vip_report_template_src_globals_utils_ts_1_1_P1_ENTRY.ucfg +0 -0
  16. package/.scannerwork/ucfg2/js/_home_travis_build_molgenis_vip_report_template_src_store_actions_ts_1_1_P1_ENTRY.ucfg +0 -0
  17. package/.scannerwork/ucfg2/js/_home_travis_build_molgenis_vip_report_template_src_store_getters_ts_1_1_P1_ENTRY.ucfg +0 -0
  18. package/.scannerwork/ucfg2/js/_home_travis_build_molgenis_vip_report_template_src_store_mutations_ts_1_1_P1_ENTRY.ucfg +0 -0
  19. package/.scannerwork/ucfg2/js/_home_travis_build_molgenis_vip_report_template_src_types_Consequence_ts_1_1_P1_ENTRY.ucfg +0 -0
  20. package/.scannerwork/ucfg2/js/_home_travis_build_molgenis_vip_report_template_src_types_Gene_ts_1_1_P1_ENTRY.ucfg +0 -0
  21. package/.scannerwork/ucfg2/js/_home_travis_build_molgenis_vip_report_template_src_utils_treeBuilder_ts_1_1_P1_ENTRY.ucfg +0 -0
  22. package/.scannerwork/ucfg2/js/_home_travis_build_molgenis_vip_report_template_src_utils_treeDrawer_ts_1_1_P1_ENTRY.ucfg +0 -0
  23. package/.scannerwork/ucfg2/js/_home_travis_build_molgenis_vip_report_template_src_views_Samples_vue_1_1_P1_ENTRY.ucfg +0 -0
  24. package/.scannerwork/ucfg2/js/_home_travis_build_molgenis_vip_report_template_src_views_VcfViewer_vue_1_1_P1_ENTRY.ucfg +0 -0
  25. package/.scannerwork/ucfg2/js/src_components_AnnotationsNav_vue_55_20_FE_92_0.ucfg +0 -0
  26. package/.scannerwork/ucfg2/js/src_components_RecordCommonDetails_vue_80_11_FE_119_0.ucfg +0 -0
  27. package/.scannerwork/ucfg2/js/src_components_RecordCommonDetails_vue_86_10_FE_120_0.ucfg +0 -0
  28. package/.scannerwork/ucfg2/js/{src_components_RecordInfoDetailsItemValue_vue_110_23_FE_34_0.ucfg → src_components_RecordInfoDetailsItemValue_vue_114_23_FE_34_0.ucfg} +0 -0
  29. package/.scannerwork/ucfg2/js/{src_components_RecordInfoDetailsItemValue_vue_119_13_FE_35_val.ucfg → src_components_RecordInfoDetailsItemValue_vue_123_13_FE_35_val.ucfg} +0 -0
  30. package/.scannerwork/ucfg2/js/{src_components_RecordInfoDetailsItemValue_vue_147_16_FE_36_val.ucfg → src_components_RecordInfoDetailsItemValue_vue_151_16_FE_36_val.ucfg} +0 -0
  31. package/.scannerwork/ucfg2/js/{src_components_RecordInfoDetailsItemValue_vue_90_19_FE_32_0.ucfg → src_components_RecordInfoDetailsItemValue_vue_94_19_FE_32_0.ucfg} +0 -0
  32. package/.scannerwork/ucfg2/js/{src_components_RecordInfoDetailsItemValue_vue_95_22_FE_33_0.ucfg → src_components_RecordInfoDetailsItemValue_vue_99_22_FE_33_0.ucfg} +0 -0
  33. package/.scannerwork/ucfg2/js/src_components_RecordInfoDetails_vue_44_17_FE_101_thi_tha.ucfg +0 -0
  34. package/.scannerwork/ucfg2/js/src_components_RecordInfoDetails_vue_47_18_FE_102_met.ucfg +0 -0
  35. package/.scannerwork/ucfg2/js/src_components_RecordInfoUnnestedDetails_vue_39_11_FE_46_0.ucfg +0 -0
  36. package/.scannerwork/ucfg2/js/src_components_RecordInfoUnnestedDetails_vue_46_10_FE_47_0.ucfg +0 -0
  37. package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_297_19_FE_2_0.ucfg → src_components_RecordTable_vue_298_19_FE_2_0.ucfg} +0 -0
  38. package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_300_11_FE_3_0.ucfg → src_components_RecordTable_vue_301_11_FE_3_0.ucfg} +0 -0
  39. package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_345_13_FE_4_ctx.ucfg → src_components_RecordTable_vue_346_13_FE_4_ctx.ucfg} +0 -0
  40. package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_353_44_A_9_0.ucfg → src_components_RecordTable_vue_354_44_A_9_0.ucfg} +0 -0
  41. package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_360_9_FE_5_rec_ind_but.ucfg → src_components_RecordTable_vue_361_9_FE_5_rec_ind_but.ucfg} +0 -0
  42. package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_365_19_FE_6_0.ucfg → src_components_RecordTable_vue_366_19_FE_6_0.ucfg} +0 -0
  43. package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_369_16_FE_7_0.ucfg → src_components_RecordTable_vue_370_16_FE_7_0.ucfg} +0 -0
  44. package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_402_22_FE_8_0.ucfg → src_components_RecordTable_vue_403_22_FE_8_0.ucfg} +0 -0
  45. package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_409_33_FE_9_0.ucfg → src_components_RecordTable_vue_410_33_FE_9_0.ucfg} +0 -0
  46. package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_436_28_FE_10_0.ucfg → src_components_RecordTable_vue_437_28_FE_10_0.ucfg} +0 -0
  47. package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_443_31_FE_11_0.ucfg → src_components_RecordTable_vue_444_31_FE_11_0.ucfg} +0 -0
  48. package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_450_24_FE_12_0.ucfg → src_components_RecordTable_vue_451_24_FE_12_0.ucfg} +0 -0
  49. package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_453_32_FE_13_0.ucfg → src_components_RecordTable_vue_454_32_FE_13_0.ucfg} +0 -0
  50. package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_455_18_A_10_phe.ucfg → src_components_RecordTable_vue_456_18_A_10_phe.ucfg} +0 -0
  51. package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_456_14_A_11_phe.ucfg → src_components_RecordTable_vue_457_14_A_11_phe.ucfg} +0 -0
  52. package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_463_15_FE_14_ctx.ucfg → src_components_RecordTable_vue_464_15_FE_14_ctx.ucfg} +0 -0
  53. package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_471_19_A_12_a_b.ucfg → src_components_RecordTable_vue_472_19_A_12_a_b.ucfg} +0 -0
  54. package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_480_19_A_13_a_b.ucfg → src_components_RecordTable_vue_481_19_A_13_a_b.ucfg} +0 -0
  55. package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_504_19_FE_15_rec.ucfg → src_components_RecordTable_vue_505_19_FE_15_rec.ucfg} +0 -0
  56. package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_510_41_A_14_con.ucfg → src_components_RecordTable_vue_511_41_A_14_con.ucfg} +0 -0
  57. package/.scannerwork/ucfg2/js/src_components_RecordTable_vue_520_41_A_15_con.ucfg +0 -0
  58. package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_519_43_A_16_con.ucfg → src_components_RecordTable_vue_532_43_A_16_con.ucfg} +0 -0
  59. package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_524_41_A_17_con.ucfg → src_components_RecordTable_vue_537_41_A_17_con.ucfg} +0 -0
  60. package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_528_41_A_18_con.ucfg → src_components_RecordTable_vue_541_41_A_18_con.ucfg} +0 -0
  61. package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_532_41_A_19_con.ucfg → src_components_RecordTable_vue_545_41_A_19_con.ucfg} +0 -0
  62. package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_543_41_A_20_con.ucfg → src_components_RecordTable_vue_556_41_A_20_con.ucfg} +0 -0
  63. package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_547_41_A_21_con.ucfg → src_components_RecordTable_vue_560_41_A_21_con.ucfg} +0 -0
  64. package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_551_41_A_22_con.ucfg → src_components_RecordTable_vue_564_41_A_22_con.ucfg} +0 -0
  65. package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_555_41_A_23_con.ucfg → src_components_RecordTable_vue_568_41_A_23_con.ucfg} +0 -0
  66. package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_567_11_FE_16_0.ucfg → src_components_RecordTable_vue_580_11_FE_16_0.ucfg} +0 -0
  67. package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_571_33_FE_17_0.ucfg → src_components_RecordTable_vue_584_33_FE_17_0.ucfg} +0 -0
  68. package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_574_44_FE_18_0.ucfg → src_components_RecordTable_vue_587_44_FE_18_0.ucfg} +0 -0
  69. package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_578_46_FE_19_0.ucfg → src_components_RecordTable_vue_591_46_FE_19_0.ucfg} +0 -0
  70. package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_582_41_FE_20_0.ucfg → src_components_RecordTable_vue_595_41_FE_20_0.ucfg} +0 -0
  71. package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_586_40_FE_21_0.ucfg → src_components_RecordTable_vue_599_40_FE_21_0.ucfg} +0 -0
  72. package/.scannerwork/ucfg2/js/src_components_SampleNavigation_vue_23_19_FE_49_0.ucfg +0 -0
  73. package/.scannerwork/ucfg2/js/src_components_SampleNavigation_vue_31_10_FE_50_sam.ucfg +0 -0
  74. package/.scannerwork/ucfg2/js/src_components_SampleNavigation_vue_34_13_FE_51_sam.ucfg +0 -0
  75. package/.scannerwork/ucfg2/js/src_components_SampleNavigation_vue_37_13_FE_52_sam.ucfg +0 -0
  76. package/.scannerwork/ucfg2/js/src_components_SampleNavigation_vue_40_15_FE_53_sam.ucfg +0 -0
  77. package/.scannerwork/ucfg2/js/src_components_SamplePedigree_vue_30_19_FE_103_0.ucfg +0 -0
  78. package/.scannerwork/ucfg2/js/src_components_SamplePedigree_vue_34_19_FE_104_0.ucfg +0 -0
  79. package/.scannerwork/ucfg2/js/src_components_TreeVisualisation_vue_124_14_FE_64_0.ucfg +0 -0
  80. package/.scannerwork/ucfg2/js/src_components_TreeVisualisation_vue_127_13_FE_65_0.ucfg +0 -0
  81. package/.scannerwork/ucfg2/js/src_components_TreeVisualisation_vue_130_10_FE_66_0.ucfg +0 -0
  82. package/.scannerwork/ucfg2/js/src_components_TreeVisualisation_vue_133_10_FE_67_0.ucfg +0 -0
  83. package/.scannerwork/ucfg2/js/src_components_TreeVisualisation_vue_153_14_FE_72_0.ucfg +0 -0
  84. package/.scannerwork/ucfg2/js/src_components_TreeVisualisation_vue_162_14_FE_73_0.ucfg +0 -0
  85. package/.scannerwork/ucfg2/js/src_components_TreeVisualisation_vue_167_11_FE_74_0.ucfg +0 -0
  86. package/.scannerwork/ucfg2/js/src_components_TreeVisualisation_vue_170_11_FE_75_pro.ucfg +0 -0
  87. package/.scannerwork/ucfg2/js/src_components_TreeVisualisation_vue_176_16_FE_76_nod_g.ucfg +0 -0
  88. package/.scannerwork/ucfg2/js/src_components_TreeVisualisation_vue_177_21_A_27_nod.ucfg +0 -0
  89. package/.scannerwork/ucfg2/js/src_components_TreeVisualisation_vue_181_16_FE_77_edg_g.ucfg +0 -0
  90. package/.scannerwork/ucfg2/js/src_components_TreeVisualisation_vue_186_18_FE_78_nod_edg.ucfg +0 -0
  91. package/.scannerwork/ucfg2/js/src_components_TreeVisualisation_vue_199_14_FE_79_g.ucfg +0 -0
  92. package/.scannerwork/ucfg2/js/src_components_TreeVisualisation_vue_209_15_FE_80_svg_min_max.ucfg +0 -0
  93. package/.scannerwork/ucfg2/js/src_components_TreeVisualisation_vue_225_11_FE_81_nod_edg.ucfg +0 -0
  94. package/.scannerwork/ucfg2/js/src_components_TreeVisualisation_vue_78_7_FE_57_0.ucfg +0 -0
  95. package/.scannerwork/ucfg2/js/src_components_annotation_AnnotationControl_vue_27_13_FE_89_val.ucfg +0 -0
  96. package/.scannerwork/ucfg2/js/{src_globals_utils_ts_122_1_FD_2_getInfoConsequences.ucfg → src_globals_utils_ts_133_1_FD_2_getInfoConsequences.ucfg} +0 -0
  97. package/.scannerwork/ucfg2/js/{src_globals_utils_ts_216_1_FD_3_hasVepConsequences.ucfg → src_globals_utils_ts_233_1_FD_3_hasVepConsequences.ucfg} +0 -0
  98. package/.scannerwork/ucfg2/js/{src_globals_utils_ts_221_1_FD_4_getVepConsequences.ucfg → src_globals_utils_ts_238_1_FD_4_getVepConsequences.ucfg} +0 -0
  99. package/.scannerwork/ucfg2/js/{src_globals_utils_ts_249_1_FD_5_hasSnpEffConsequences.ucfg → src_globals_utils_ts_267_1_FD_5_hasSnpEffConsequences.ucfg} +0 -0
  100. package/.scannerwork/ucfg2/js/{src_globals_utils_ts_254_1_FD_6_getSnpEffConsequences.ucfg → src_globals_utils_ts_272_1_FD_6_getSnpEffConsequences.ucfg} +0 -0
  101. package/.scannerwork/ucfg2/js/{src_globals_utils_ts_345_1_FD_7_sortConsequences.ucfg → src_globals_utils_ts_364_1_FD_7_sortConsequences.ucfg} +0 -0
  102. package/.scannerwork/ucfg2/js/{src_globals_utils_ts_375_8_FD_8_getConsequences.ucfg → src_globals_utils_ts_394_8_FD_8_getConsequences.ucfg} +0 -0
  103. package/.scannerwork/ucfg2/js/{src_globals_utils_ts_387_1_FD_9_getVepPhenotypesIndex.ucfg → src_globals_utils_ts_406_1_FD_9_getVepPhenotypesIndex.ucfg} +0 -0
  104. package/.scannerwork/ucfg2/js/{src_globals_utils_ts_403_8_FD_10_getPhenotypesSelector.ucfg → src_globals_utils_ts_422_8_FD_10_getPhenotypesSelector.ucfg} +0 -0
  105. package/.scannerwork/ucfg2/js/{src_globals_utils_ts_411_1_FD_11_getVepInheritanceModesGeneIndex.ucfg → src_globals_utils_ts_430_1_FD_11_getVepInheritanceModesGeneIndex.ucfg} +0 -0
  106. package/.scannerwork/ucfg2/js/{src_globals_utils_ts_427_8_FD_12_getInheritanceModesGeneSelector.ucfg → src_globals_utils_ts_446_8_FD_12_getInheritanceModesGeneSelector.ucfg} +0 -0
  107. package/.scannerwork/ucfg2/js/{src_globals_utils_ts_435_8_FD_13_getVariant.ucfg → src_globals_utils_ts_454_8_FD_13_getVariant.ucfg} +0 -0
  108. package/.scannerwork/ucfg2/js/{src_globals_utils_ts_53_1_FD_0_createConsequence.ucfg → src_globals_utils_ts_59_1_FD_0_createConsequence.ucfg} +0 -0
  109. package/.scannerwork/ucfg2/js/{src_globals_utils_ts_84_1_FD_1_createConsequences.ucfg → src_globals_utils_ts_93_1_FD_1_createConsequences.ucfg} +0 -0
  110. package/.scannerwork/ucfg2/js/src_store_actions_ts_100_27_FE_135_Ptr_val.ucfg +0 -0
  111. package/.scannerwork/ucfg2/js/src_store_actions_ts_103_26_FE_136_Ptr_val.ucfg +0 -0
  112. package/.scannerwork/ucfg2/js/src_store_actions_ts_106_11_FE_137_0.ucfg +0 -0
  113. package/.scannerwork/ucfg2/js/src_store_actions_ts_110_13_FE_138_Ptr_loc.ucfg +0 -0
  114. package/.scannerwork/ucfg2/js/src_store_actions_ts_113_13_FE_139_0.ucfg +0 -0
  115. package/.scannerwork/ucfg2/js/src_store_actions_ts_117_9_FE_140_Ptr_sam.ucfg +0 -0
  116. package/.scannerwork/ucfg2/js/src_store_actions_ts_120_24_FE_141_0.ucfg +0 -0
  117. package/.scannerwork/ucfg2/js/src_store_actions_ts_129_8_FD_14_setTestApi.ucfg +0 -0
  118. package/.scannerwork/ucfg2/js/src_store_actions_ts_25_21_FE_121_Ptr.ucfg +0 -0
  119. package/.scannerwork/ucfg2/js/src_store_actions_ts_29_24_FE_122_Ptr.ucfg +0 -0
  120. package/.scannerwork/ucfg2/js/src_store_actions_ts_40_20_FE_123_Ptr.ucfg +0 -0
  121. package/.scannerwork/ucfg2/js/src_store_actions_ts_45_21_FE_124_Ptr_sam.ucfg +0 -0
  122. package/.scannerwork/ucfg2/js/src_store_actions_ts_57_24_FE_125_Ptr.ucfg +0 -0
  123. package/.scannerwork/ucfg2/js/src_store_actions_ts_67_20_FE_126_Ptr_par.ucfg +0 -0
  124. package/.scannerwork/ucfg2/js/src_store_actions_ts_71_15_FE_127_Ptr_rec.ucfg +0 -0
  125. package/.scannerwork/ucfg2/js/src_store_actions_ts_74_14_FE_128_Ptr_ale.ucfg +0 -0
  126. package/.scannerwork/ucfg2/js/src_store_actions_ts_77_20_FE_129_Ptr.ucfg +0 -0
  127. package/.scannerwork/ucfg2/js/src_store_actions_ts_80_21_FE_130_Ptr.ucfg +0 -0
  128. package/.scannerwork/ucfg2/js/src_store_actions_ts_83_20_FE_131_Ptr_ann.ucfg +0 -0
  129. package/.scannerwork/ucfg2/js/src_store_actions_ts_86_19_FE_132_Ptr_ann.ucfg +0 -0
  130. package/.scannerwork/ucfg2/js/src_store_actions_ts_94_30_FE_133_Ptr_val.ucfg +0 -0
  131. package/.scannerwork/ucfg2/js/src_store_actions_ts_97_32_FE_134_Ptr_val.ucfg +0 -0
  132. package/.scannerwork/ucfg2/js/{src_store_getters_ts_97_18_A_81_sta.ucfg → src_store_getters_ts_100_5_A_81_sta.ucfg} +0 -0
  133. package/.scannerwork/ucfg2/js/{src_store_getters_ts_97_36_A_82_rec.ucfg → src_store_getters_ts_101_5_A_82_rec.ucfg} +0 -0
  134. package/.scannerwork/ucfg2/js/{src_store_getters_ts_125_24_A_83_sta.ucfg → src_store_getters_ts_129_24_A_83_sta.ucfg} +0 -0
  135. package/.scannerwork/ucfg2/js/{src_store_getters_ts_137_46_A_84_ite.ucfg → src_store_getters_ts_141_46_A_84_ite.ucfg} +0 -0
  136. package/.scannerwork/ucfg2/js/{src_store_getters_ts_146_31_A_85_sta.ucfg → src_store_getters_ts_150_31_A_85_sta.ucfg} +0 -0
  137. package/.scannerwork/ucfg2/js/{src_store_getters_ts_158_64_A_86_ite.ucfg → src_store_getters_ts_162_64_A_86_ite.ucfg} +0 -0
  138. package/.scannerwork/ucfg2/js/{src_store_getters_ts_167_32_A_87_sta.ucfg → src_store_getters_ts_171_32_A_87_sta.ucfg} +0 -0
  139. package/.scannerwork/ucfg2/js/{src_store_getters_ts_180_27_A_88_sta.ucfg → src_store_getters_ts_184_27_A_88_sta.ucfg} +0 -0
  140. package/.scannerwork/ucfg2/js/{src_store_getters_ts_193_26_A_89_sta.ucfg → src_store_getters_ts_197_26_A_89_sta.ucfg} +0 -0
  141. package/.scannerwork/ucfg2/js/{src_store_getters_ts_23_18_A_70_sta.ucfg → src_store_getters_ts_24_5_A_70_sta.ucfg} +0 -0
  142. package/.scannerwork/ucfg2/js/{src_store_getters_ts_23_36_A_71_id.ucfg → src_store_getters_ts_25_5_A_71_id.ucfg} +0 -0
  143. package/.scannerwork/ucfg2/js/{src_store_getters_ts_27_37_A_72_sam.ucfg → src_store_getters_ts_29_39_A_72_sam.ucfg} +0 -0
  144. package/.scannerwork/ucfg2/js/{src_store_getters_ts_29_19_A_73_sta.ucfg → src_store_getters_ts_31_19_A_73_sta.ucfg} +0 -0
  145. package/.scannerwork/ucfg2/js/{src_store_getters_ts_40_37_A_74_sam.ucfg → src_store_getters_ts_42_37_A_74_sam.ucfg} +0 -0
  146. package/.scannerwork/ucfg2/js/{src_store_getters_ts_42_19_A_75_sta.ucfg → src_store_getters_ts_44_19_A_75_sta.ucfg} +0 -0
  147. package/.scannerwork/ucfg2/js/{src_store_getters_ts_53_37_A_76_sam.ucfg → src_store_getters_ts_55_37_A_76_sam.ucfg} +0 -0
  148. package/.scannerwork/ucfg2/js/{src_store_getters_ts_55_20_A_77_sta.ucfg → src_store_getters_ts_57_20_A_77_sta.ucfg} +0 -0
  149. package/.scannerwork/ucfg2/js/src_store_getters_ts_7_12_A_69_sta.ucfg +0 -0
  150. package/.scannerwork/ucfg2/js/{src_store_getters_ts_85_14_A_78_sta.ucfg → src_store_getters_ts_87_14_A_78_sta.ucfg} +0 -0
  151. package/.scannerwork/ucfg2/js/{src_store_getters_ts_88_20_A_79_sta.ucfg → src_store_getters_ts_90_20_A_79_sta.ucfg} +0 -0
  152. package/.scannerwork/ucfg2/js/{src_store_getters_ts_94_24_A_80_sta.ucfg → src_store_getters_ts_96_24_A_80_sta.ucfg} +0 -0
  153. package/.scannerwork/ucfg2/js/src_store_mutations_ts_10_13_FE_106_sta_sam.ucfg +0 -0
  154. package/.scannerwork/ucfg2/js/src_store_mutations_ts_13_20_FE_107_sta_sam.ucfg +0 -0
  155. package/.scannerwork/ucfg2/js/src_store_mutations_ts_17_30_FE_108_sta_phe.ucfg +0 -0
  156. package/.scannerwork/ucfg2/js/src_store_mutations_ts_20_13_FE_109_sta_rec.ucfg +0 -0
  157. package/.scannerwork/ucfg2/js/src_store_mutations_ts_24_20_FE_110_sta_rec.ucfg +0 -0
  158. package/.scannerwork/ucfg2/js/src_store_mutations_ts_27_11_FE_111_sta_ale.ucfg +0 -0
  159. package/.scannerwork/ucfg2/js/src_store_mutations_ts_32_14_FE_112_sta_ale.ucfg +0 -0
  160. package/.scannerwork/ucfg2/js/src_store_mutations_ts_35_17_FE_113_sta_ann.ucfg +0 -0
  161. package/.scannerwork/ucfg2/js/src_store_mutations_ts_38_30_FE_114_sta_val.ucfg +0 -0
  162. package/.scannerwork/ucfg2/js/src_store_mutations_ts_41_32_FE_115_sta_val.ucfg +0 -0
  163. package/.scannerwork/ucfg2/js/src_store_mutations_ts_44_27_FE_116_sta_val.ucfg +0 -0
  164. package/.scannerwork/ucfg2/js/src_store_mutations_ts_47_26_FE_117_sta_val.ucfg +0 -0
  165. package/.scannerwork/ucfg2/js/src_store_mutations_ts_7_14_FE_105_sta_met.ucfg +0 -0
  166. package/.scannerwork/ucfg2/js/src_utils_treeBuilder_ts_62_30_A_5_inp.ucfg +0 -0
  167. package/.scannerwork/ucfg2/js/src_utils_treeBuilder_ts_64_40_A_6_key.ucfg +0 -0
  168. package/.scannerwork/ucfg2/js/{src_utils_treeBuilder_ts_73_44_A_7_cat.ucfg → src_utils_treeBuilder_ts_75_46_A_7_cat.ucfg} +0 -0
  169. package/.scannerwork/ucfg2/js/{src_utils_treeBuilder_ts_81_33_A_8_k.ucfg → src_utils_treeBuilder_ts_96_33_A_8_k.ucfg} +0 -0
  170. package/.scannerwork/ucfg2/js/src_utils_treeDrawer_ts_109_32_A_49_svg_pro.ucfg +0 -0
  171. package/.scannerwork/ucfg2/js/src_utils_treeDrawer_ts_113_24_A_50_thi_nex_thi_nex_xOf_yOf_bar.ucfg +0 -0
  172. package/.scannerwork/ucfg2/js/src_utils_treeDrawer_ts_133_24_A_51_lab_fon_typ_fon.ucfg +0 -0
  173. package/.scannerwork/ucfg2/js/src_utils_treeDrawer_ts_153_18_A_52_svg_x1_y1_x2_y2_str.ucfg +0 -0
  174. package/.scannerwork/ucfg2/js/src_utils_treeDrawer_ts_16_41_A_33_fon.ucfg +0 -0
  175. package/.scannerwork/ucfg2/js/src_utils_treeDrawer_ts_171_18_A_53_gEl_x_y_wid_hei_isE.ucfg +0 -0
  176. package/.scannerwork/ucfg2/js/src_utils_treeDrawer_ts_192_18_A_54_gEl_x_y_lab_fon_nod.ucfg +0 -0
  177. package/.scannerwork/ucfg2/js/src_utils_treeDrawer_ts_20_34_A_34_bar.ucfg +0 -0
  178. package/.scannerwork/ucfg2/js/src_utils_treeDrawer_ts_210_25_A_55_svg.ucfg +0 -0
  179. package/.scannerwork/ucfg2/js/src_utils_treeDrawer_ts_226_29_A_56_ele_can_can.ucfg +0 -0
  180. package/.scannerwork/ucfg2/js/src_utils_treeDrawer_ts_234_23_A_57_bar_g_e_fon_val_off_svg.ucfg +0 -0
  181. package/.scannerwork/ucfg2/js/src_utils_treeDrawer_ts_254_18_A_58_coo_bar_svg_nex_ind.ucfg +0 -0
  182. package/.scannerwork/ucfg2/js/src_utils_treeDrawer_ts_273_26_A_59_svg_g_fon_gra_gra_hor.ucfg +0 -0
  183. package/.scannerwork/ucfg2/js/src_utils_treeDrawer_ts_282_21_A_60_v.ucfg +0 -0
  184. package/.scannerwork/ucfg2/js/src_utils_treeDrawer_ts_301_26_A_61_svg_g_bar_fon_gra_gra_hor.ucfg +0 -0
  185. package/.scannerwork/ucfg2/js/src_utils_treeDrawer_ts_312_21_A_62_e.ucfg +0 -0
  186. package/.scannerwork/ucfg2/js/src_utils_treeDrawer_ts_43_26_A_39_y_ind_fon_lab.ucfg +0 -0
  187. package/.scannerwork/ucfg2/js/src_views_Samples_vue_29_10_FE_83_sam.ucfg +0 -0
  188. package/.scannerwork/ucfg2/js/src_views_Samples_vue_40_40_A_30_sam.ucfg +0 -0
  189. package/.scannerwork/ucfg2/js/src_views_VcfViewer_vue_22_16_FE_98_0.ucfg +0 -0
  190. package/.travis.yml +5 -1
  191. package/README.md +1 -1
  192. package/package.json +3 -3
  193. package/src/components/Gene.vue +32 -0
  194. package/src/components/RecordInfoDetailsItem.vue +8 -1
  195. package/src/components/RecordInfoDetailsItemValue.vue +6 -2
  196. package/src/components/RecordTable.vue +27 -14
  197. package/src/globals/utils.ts +19 -0
  198. package/src/locales/en.json +2 -1
  199. package/src/mocks/apiDataMock.ts +1 -1
  200. package/src/store/getters.ts +35 -31
  201. package/src/types/Consequence.ts +2 -0
  202. package/src/types/DecisionTree.d.ts +2 -2
  203. package/src/types/Gene.ts +4 -0
  204. package/src/utils/treeBuilder.ts +28 -13
  205. package/tests/unit/globals/utils.spec.ts +15 -0
  206. package/tests/unit/store/getters.spec.ts +1 -1
  207. package/tests/unit/utils/treeBuilder.spec.ts +54 -0
  208. package/tests/unit/utils/treeDrawer.spec.ts +1 -1
  209. package/.scannerwork/css-bundle/bin/server +0 -15
  210. package/.scannerwork/css-bundle/lib/src/server.d.ts +0 -14
  211. package/.scannerwork/css-bundle/lib/src/server.js +0 -83
  212. package/.scannerwork/css-bundle/lib/src/server.js.map +0 -1
  213. package/.scannerwork/css-bundle/lib/tsconfig.tsbuildinfo +0 -1369
  214. package/.scannerwork/css-bundle/package/package.json +0 -11
  215. package/.scannerwork/ucfg2/js/src_components_RecordTable_vue_514_41_A_15_con.ucfg +0 -0
@@ -0,0 +1,32 @@
1
+ <template>
2
+ <span>
3
+ <Anchor
4
+ :href="'https://www.omim.org/search?search=' + encodeURIComponent(value.symbol) + '&field=approved_gene_symbol'"
5
+ :text="value.symbol"
6
+ />
7
+ <b-button
8
+ pill
9
+ v-if="value.incompletePenetrance"
10
+ size="sm"
11
+ variant="info"
12
+ class="ml-2 p-0"
13
+ v-b-tooltip.click
14
+ :title="$t('incompletePenetrance')"
15
+ >
16
+ <sup>IP</sup>
17
+ </b-button>
18
+ </span>
19
+ </template>
20
+
21
+ <script lang="ts">
22
+ import Vue, { PropType } from 'vue';
23
+ import Anchor from '@/components/Anchor.vue';
24
+ import { Gene } from '@/types/Gene';
25
+
26
+ export default Vue.extend({
27
+ components: { Anchor },
28
+ props: {
29
+ value: { type: Object as PropType<Gene> }
30
+ }
31
+ });
32
+ </script>
@@ -1,11 +1,17 @@
1
1
  <template>
2
2
  <span v-if="metadata.number.type === 'NUMBER' && metadata.number.count === 1">
3
+ <span v-if="metadata.id === 'GeneObject'">
4
+ <Gene v-if="value.length > 0" :value="value" />
5
+ </span>
3
6
  <RecordInfoDetailsItemValue v-if="value !== null" :metadataId="metadata.id" :value="value" :details="details" />
4
7
  </span>
5
8
  <span v-else>
6
9
  <span v-if="metadata.id === 'PUBMED'">
7
10
  <PubMedAnchor v-if="value.length > 0" :pubMedIds="value" />
8
11
  </span>
12
+ <span v-else-if="metadata.id === 'GeneObject'">
13
+ <Gene v-if="value.length > 0" :value="value" />
14
+ </span>
9
15
  <span v-else>
10
16
  <span v-for="(item, index) in value" :key="index">
11
17
  <RecordInfoDetailsItemValue v-if="value !== null" :metadataId="metadata.id" :value="item" :details="details" />
@@ -20,9 +26,10 @@ import Vue, { PropType } from 'vue';
20
26
  import { Vcf } from '@molgenis/vip-report-api';
21
27
  import RecordInfoDetailsItemValue from '@/components/RecordInfoDetailsItemValue.vue';
22
28
  import PubMedAnchor from '@/components/PubMedAnchor.vue';
29
+ import Gene from '@/components/Gene.vue';
23
30
 
24
31
  export default Vue.extend({
25
- components: { PubMedAnchor, RecordInfoDetailsItemValue },
32
+ components: { Gene, PubMedAnchor, RecordInfoDetailsItemValue },
26
33
  props: {
27
34
  metadata: Object as PropType<Vcf.InfoMetadata>,
28
35
  value: [String, Number, Boolean, Array, Object] as PropType<
@@ -9,7 +9,10 @@
9
9
  :text="details ? value : value.replace(/_variant$/, '')"
10
10
  />
11
11
  </span>
12
- <span v-else-if="metadataId === 'SYMBOL' || metadataId === 'Gene_Name'">
12
+ <span v-else-if="metadataId === 'GeneObject'">
13
+ <Gene :value="value" />
14
+ </span>
15
+ <span v-else-if="metadataId === 'Gene_Name'">
13
16
  <Anchor
14
17
  :href="'https://www.omim.org/search?search=' + encodeURIComponent(value) + '&field=approved_gene_symbol'"
15
18
  :text="value"
@@ -73,10 +76,11 @@
73
76
  <script lang="ts">
74
77
  import Vue, { PropType } from 'vue';
75
78
  import Anchor from '@/components/Anchor.vue';
79
+ import Gene from '@/components/Gene.vue';
76
80
  import { mapState } from 'vuex';
77
81
 
78
82
  export default Vue.extend({
79
- components: { Anchor },
83
+ components: { Anchor, Gene },
80
84
  props: {
81
85
  metadataId: String as PropType<string>,
82
86
  value: [String, Number, Boolean, Object] as PropType<string | number | boolean | unknown>,
@@ -49,24 +49,24 @@
49
49
  <Genotype
50
50
  :genotype="data.item.s[sample.index].GT"
51
51
  :alleles="[data.item.r].concat(data.item.a)"
52
- :readDepth="data.item.s[sample.index].f ? data.item.s[sample.index].f.DP : undefined"
53
- :allelicDepth="data.item.s[sample.index].f ? data.item.s[sample.index].f.AD : undefined"
52
+ :readDepth="data.item.s[sample.index].DP"
53
+ :allelicDepth="data.item.s[sample.index].AD"
54
54
  />
55
55
  </template>
56
56
  <template v-slot:cell(father)="data">
57
57
  <Genotype
58
58
  :genotype="data.item.s[samplePaternal.index].GT"
59
59
  :alleles="[data.item.r].concat(data.item.a)"
60
- :readDepth="data.item.s[samplePaternal.index].f ? data.item.s[samplePaternal.index].f.DP : undefined"
61
- :allelicDepth="data.item.s[samplePaternal.index].f ? data.item.s[samplePaternal.index].f.AD : undefined"
60
+ :readDepth="data.item.s[samplePaternal.index].DP"
61
+ :allelicDepth="data.item.s[samplePaternal.index].AD"
62
62
  />
63
63
  </template>
64
64
  <template v-slot:cell(mother)="data">
65
65
  <Genotype
66
66
  :genotype="data.item.s[sampleMaternal.index].GT"
67
67
  :alleles="[data.item.r].concat(data.item.a)"
68
- :readDepth="data.item.s[sampleMaternal.index].f ? data.item.s[sampleMaternal.index].f.DP : undefined"
69
- :allelicDepth="data.item.s[sampleMaternal.index].f ? data.item.s[sampleMaternal.index].f.AD : undefined"
68
+ :readDepth="data.item.s[sampleMaternal.index].DP"
69
+ :allelicDepth="data.item.s[sampleMaternal.index].AD"
70
70
  />
71
71
  </template>
72
72
  <template v-slot:cell(expand)="data">
@@ -86,10 +86,10 @@
86
86
  :values="data.item.expand ? data.item.effect.items : data.item.effect.items.slice(0, 1)"
87
87
  />
88
88
  </template>
89
- <template v-slot:cell(symbol)="data">
89
+ <template v-slot:cell(gene)="data">
90
90
  <RecordInfoDetailsItemMultiline
91
- :metadata="data.item.symbol.metadata"
92
- :values="data.item.expand ? data.item.symbol.items : data.item.symbol.items.slice(0, 1)"
91
+ :metadata="data.item.gene.metadata"
92
+ :values="data.item.expand ? data.item.gene.items : data.item.gene.items.slice(0, 1)"
93
93
  />
94
94
  </template>
95
95
  <template v-slot:cell(inheritance)="data">
@@ -229,7 +229,7 @@ interface Row {
229
229
  f: string[];
230
230
  s: Vcf.RecordSample[];
231
231
  effect?: unknown;
232
- symbol?: unknown;
232
+ gene?: unknown;
233
233
  inheritance?: unknown;
234
234
  hgvsC?: unknown;
235
235
  hgvsP?: unknown;
@@ -281,6 +281,7 @@ export default Vue.extend({
281
281
  'isSamplesContainInheritance',
282
282
  'isSamplesContainDenovo',
283
283
  'isSamplesContainDepth',
284
+ 'isRecordsContainIncompletePenetrance',
284
285
  'sampleMaternal',
285
286
  'samplePaternal'
286
287
  ]),
@@ -316,7 +317,7 @@ export default Vue.extend({
316
317
  if (this.hasConsequences) {
317
318
  fields.push({ key: 'expand', label: '', class: ['compact', 'align-top'] });
318
319
  fields.push({ key: 'effect', label: 'effect' });
319
- fields.push({ key: 'symbol', label: 'symbol' });
320
+ fields.push({ key: 'gene', label: 'symbol' });
320
321
  if (this.isSamplesContainInheritance) {
321
322
  fields.push({ key: 'inheritance', label: 'inheritance' });
322
323
  }
@@ -509,9 +510,21 @@ export default Vue.extend({
509
510
  metadata: consequences.metadata.effect,
510
511
  items: consequences.items.map((consequence) => consequence.effect)
511
512
  };
512
- row.symbol = {
513
- metadata: consequences.metadata.symbol,
514
- items: consequences.items.map((consequence) => consequence.symbol)
513
+ row.gene = {
514
+ metadata: {
515
+ id: 'GeneObject',
516
+ type: 'Other',
517
+ number: { type: 'NUMBER', count: 1 },
518
+ description: 'GeneObject'
519
+ },
520
+ items: consequences.items.map((consequence) =>
521
+ consequence.symbol !== null
522
+ ? {
523
+ symbol: consequence.symbol,
524
+ incompletePenetrance: consequence.incompletePenetrance
525
+ }
526
+ : null
527
+ )
515
528
  };
516
529
  if (this.isSamplesContainInheritance) {
517
530
  row.inheritance = {
@@ -10,6 +10,12 @@ const consequenceMetadata: ConsequenceMetadata = {
10
10
  description: 'Consequence'
11
11
  },
12
12
  symbol: { id: 'SYMBOL', type: 'STRING', number: { type: 'NUMBER', count: 1 }, description: 'SYMBOL' },
13
+ incompletePenetrance: {
14
+ id: 'IncompletePenetrance',
15
+ type: 'FLAG',
16
+ number: { type: 'NUMBER', count: 1 },
17
+ description: 'IncompletePenetrance'
18
+ },
13
19
  inheritance: {
14
20
  id: 'InheritanceModesGene',
15
21
  type: 'STRING',
@@ -54,6 +60,7 @@ function createConsequence(
54
60
  info: Vcf.Value[],
55
61
  effectIndex: number | undefined,
56
62
  symbolIndex: number | undefined,
63
+ incompletePenetranceIndex: number | undefined,
57
64
  inheritanceIndex: number | undefined,
58
65
  hgvsCIndex: number | undefined,
59
66
  hgvsPIndex: number | undefined,
@@ -68,6 +75,8 @@ function createConsequence(
68
75
  return {
69
76
  effect: effectIndex !== undefined ? (info[effectIndex] as string[]) : [],
70
77
  symbol: symbolIndex !== undefined ? (info[symbolIndex] as string | null) : null,
78
+ incompletePenetrance:
79
+ incompletePenetranceIndex !== undefined ? (info[incompletePenetranceIndex] as boolean) : false,
71
80
  inheritance: inheritanceIndex !== undefined ? (info[inheritanceIndex] as string[]) : [],
72
81
  hgvsC: hgvsCIndex !== undefined ? (info[hgvsCIndex] as string | null) : null,
73
82
  hgvsP: hgvsPIndex !== undefined ? (info[hgvsPIndex] as string | null) : null,
@@ -85,6 +94,7 @@ function createConsequences(
85
94
  info: Vcf.Value[][],
86
95
  effectIndex: number | undefined,
87
96
  symbolIndex: number | undefined,
97
+ incompletePenetranceIndex: number | undefined,
88
98
  inheritanceIndex: number | undefined,
89
99
  hgvsCIndex: number | undefined,
90
100
  hgvsPIndex: number | undefined,
@@ -102,6 +112,7 @@ function createConsequences(
102
112
  item,
103
113
  effectIndex,
104
114
  symbolIndex,
115
+ incompletePenetranceIndex,
105
116
  inheritanceIndex,
106
117
  hgvsCIndex,
107
118
  hgvsPIndex,
@@ -124,6 +135,7 @@ function getInfoConsequences(
124
135
  info: Vcf.Value[][],
125
136
  effectId: string,
126
137
  symbolId: string,
138
+ incompletePenetranceId: string | null,
127
139
  inheritanceId: string | null,
128
140
  hgvsCId: string,
129
141
  hgvsPId: string,
@@ -141,6 +153,7 @@ function getInfoConsequences(
141
153
 
142
154
  let effectIndex,
143
155
  symbolIndex,
156
+ incompletePenetranceIndex,
144
157
  inheritanceIndex,
145
158
  hgvsCIndex,
146
159
  hgvsPIndex,
@@ -160,6 +173,9 @@ function getInfoConsequences(
160
173
  case symbolId:
161
174
  symbolIndex = index;
162
175
  break;
176
+ case incompletePenetranceId:
177
+ incompletePenetranceIndex = index;
178
+ break;
163
179
  case inheritanceId:
164
180
  inheritanceIndex = index;
165
181
  break;
@@ -200,6 +216,7 @@ function getInfoConsequences(
200
216
  info,
201
217
  effectIndex,
202
218
  symbolIndex,
219
+ incompletePenetranceIndex,
203
220
  inheritanceIndex,
204
221
  hgvsCIndex,
205
222
  hgvsPIndex,
@@ -233,6 +250,7 @@ function getVepConsequences(record: Vcf.Record, metadata: Vcf.Metadata): Consequ
233
250
  csqInfo,
234
251
  'Consequence',
235
252
  'SYMBOL',
253
+ 'IncompletePenetrance',
236
254
  'InheritanceModesGene',
237
255
  'HGVSc',
238
256
  'HGVSp',
@@ -267,6 +285,7 @@ function getSnpEffConsequences(record: Vcf.Record, metadata: Vcf.Metadata): Cons
267
285
  'Annotation',
268
286
  'Gene_Name',
269
287
  null,
288
+ null,
270
289
  'HGVS.c',
271
290
  'HGVS.p',
272
291
  null,
@@ -77,5 +77,6 @@
77
77
  "genomeBrowserUnavailable": "Genome browser unavailable for selected record.",
78
78
  "treeViewer": "Decision tree",
79
79
  "missingDecisionTree": "Decision tree unavailable",
80
- "treeInfo": "Click and drag in the tree to navigate, scroll to zoom."
80
+ "treeInfo": "Click and drag in the tree to navigate, scroll to zoom.",
81
+ "incompletePenetrance": "Gene associated with incomplete penetrance."
81
82
  }
@@ -102,7 +102,7 @@ export const apiData: ApiData.Container = {
102
102
  },
103
103
  base85: {
104
104
  vcfGz:
105
- 'ABzY800000008Y>>2o4Svi~gq6@(lize7M}-KDp31V$30wJr-r9)BVj)M9um0S}PZvr&Ki%j}z`xisTrXC!;1KC+?mmsxq$(cgaiFnkOi#?z<X{P?bU_N%P%Z@&HZ?EIp0dVBo0^ONJ7M!S7@63qJ3;bcA>kB;{nkB=36Y935yl}T?l3-0&7r)REjFB_fknUkBttLLZp!SomoJ0B;(@%d;T41#Ilb0(AN__rZ`b5NNEz5B|2Fqwa-{0AM+D*qhf@#Rm)T&c=<8lApJA|jtvdeb0oLva6}#jkI53SZxzPluzy;<vYg(RhwGix1zOClA+FKin8qg3<F+FzwNKW&BW?jAygq`^TU%9DN9;!+CGi4=PXN`(RdE{)Xl@@SNv9s5yR`jGssMmD#*Ee=hsTlU+aZ1o{7Uy!r!MTfl%A2C<}iqeaep^ZtjDPrcl=nV0lIi>(aBPHKA`{MLJ#JO<rggGu+-{zGpx8rLGNsC|5TMB4MKv+MAin~hW@8__qPJ&t?x#qUL;^X4h)^!&qk5R8WX;rwG|f*LmLhhqMZhw1pKQXfpm&y!jG`Kdps4*LE2{At3Vj=KE6L4Q80qtKrpd(-Y{FzZf+li+bU3hLA6(X5ULj_bej8n3bXG?+a<&ZBGH=voa~s15$rO>XfnF@&54c-ZevhW(%};{%SgCC^4(A>+FJ(-u-}jz_cL|DFSaJN`zzKC6V>p5ncy_m7pk)0<l5EVL6x6|?}sW8iZS`t!@1MziDFzg+%sec?$l{8@lPn+9F#Wyy*E;rzPu%gw1jeRqB3&#yYS_~%XQuH6rRPkjI6s?o*HG^958=1Ds{xtWgV!ElsaXgm!^<8H4%yq{rP?y)ug^ta(`jvRJ>?M;Whi0b0v^y0L8_4d-AoVPoTtLCY1cWxV3C;sfB(Q11X`j2tLyY1_@w|M_e>#Es3Kk>JxXYJFUx~RX+H_6HM8UE>n%}tI6qw!PYq}w>lj&Ad3mkVd@zvs?Q8|~cL+4)uO?CR_^cXr)*lRIli&owXbiS~KRx3960=S_d}=Je{?-@N_d^7O<v-<&po>|(opu1j5#Q3?fg_hah<8`q2unitXE)7wV-@@+dhxp<r0zWVVzI=F3|{BZsDq<fj(!h=?N^fo%W!^1^oygR>X7W!bBHX<21g8pzuJ#Ib?f=d4poy_oI*bn6yeP{_g#}_DiGQ~?4xPtzzGXD@%uu}*4^zHZ=eaK1+GNs$K`RrFDZI2)3|3qgKa)6KH=N;am<D;gEnyHDy6YQVI`<!v8GF9ce!pxCy`-f<<pL(PF3+(;ZA#1ba{r(uu-EZ^bzx5x7{eRT@<7rT9M%OCi_hddQy?KTGW**FgkPl!au<t9ODv##fu)%+r^%333l9td^9(qs1$B$8i{?;9iYaQg^{QBo<Z!!s{l~M00IR5TMExqr}dr?d2S8Wp9e;3N|_`B(M=yLnxdsLX?@7{LKs`k6@lZKFmIYwFxBkrI3!F_jvf}T%F1J<+;PiD~<k^<L9<5BLp@LD&2Z9WXTq(HN7FhafjSC?eYfGbj!wXOU|@bRDH>HTpdHLmDY#{B?8r`fTrpza-arq59%f_C<J|5spgzcL>_Eo)Y&T$O&W{{ipiScvU(9iOk`)AbMIr*U_Nz9JaSP^J%PsOfsQb=&+P%s#d<q^}Og$9TC0_u~C~9i*2Zo=1ITHoW%$ePc9F?nU&y2e|KN^r^WG@0z|e?|D!G#u$Fe_zC&kpM2=e0<m9dUbipLo5%Z(<1q^Tt~U+2L@4(wZ(5fpRkU6gL_rr32MRIqJ3eB(5jMUy0sNTz_w6f$3KUWdLd+46*6CIA`sB0%F1#4Le;z*G(+2@!NQ9yBJl>!38th}t_V{t~0lC~K?Z$79aEiXT3XCuZbHv1v<dtfr)jaDm`T@yQjjL|foNmbFuwNTIJkZAs;xC38+pnPQnji1eZxwzGN%{PyOSUaG635lypAuG-bnR-t^2eJP=*BkwV?8nbRf4DXzccJB)$yO(q-FA)1QTb#@TQ>au}?jwg9;ub=DXm=Y6)%gA|mZmFg2Pz&o(^}`{(GX_+-;F<i?{1=x7r)y84J14>r-}qk-t5_)7h9i*F($8$CrwTTs7Eso!p*zDrwlx4tFhm4}1S!^7cYFdEE19CPWoVw%HYYJJ`d^Zg<<U$~h)D!@5mM1fkAQiHRM<0Gs<Ei(c@8^?`a*AkUdTjoG<&DK%tl-dA(IMZewb=FknKv=ECI%=CzOD(iS-qumOj2buyL~b25u#{XVC8UvS8xBy8xKNB~1-eMiSC9*<z&ceVUm;JxPj=SWB6%iIW`uM~t`!kv5@lQo5N<7wpi3L$m{8KFq9#I0U;&)MC}!<v+tSZAmKnq45}&S=8dZl|XNxW2sYJCvJ{4cv5?(G)X@R?C0iot4Uk-vvrPubLcjeN=CK;x5v3LHG@r50I!$)6s%0F8x?TD1Z=rD_*u!9NCV)v4`meBLW*OGvt^3sT*5MU=>|Mz#XpEa@=KTk1yt|Q0~!$Gb8FsM`~mCuxLRI2}|R3E<iw)y7v`f~5)y1jRPvWGeJUgM&(_tV?P#a>h$-J{HQFRE_s-JmzYv|#UYjCtmC@2p3EzJWc9ipPNM)%Kcu9sEtz)V*fo2IB>kw)&rD`={fMe;Urn_XpkBN%>0*Vs9IrQ-9OA{n2;;0m^qU35gPAe|3qGC;%72m>Tz!xH1wY9^TZAFOVGdYf|gx_Z@$A6J7^xrK`cwq}G@YK<UnO;uT1bR31<LZT)B891QB6!N5;v8nCZx#}6=gzf)FOjDfLPp8ofzVLB966zGT7&`AWCvUuigO&bv(tC|!hK8Bi6Ha=$FvjYhKdEdD8{_br%{Gjmf;Y-oM_VSuq4NY{vfQths5Ud4I41WPA@cW|jKU7RP?(DTXM<+K&cjx&33I4m>!zYduJ8GO9!4Ya*y><lUXQ^&V)XG+?+1zU_s;4v%YG>6CM-NlXn7jAEV-Qx<ei!XD(3M8ucPwk@&2$XP(k%t9ivG$Ybrq>mD5i?HeCwv(@`C}gF|Q8>a}<uz(i$Uxuh3FmGdhKu{*yHgF1k{Say%W0!N&sdH$M7>5;%M*D%)#i0gqHOb6^-#RmQyl4EVfgd=_m4#w12Mw#-yA3?nz1%B#z(Mh85y%J{N2a%YUOH7G)_>dF^L5Pf7mvz6RR!%Si;IWuGykkTWS$J2sY0Lh)UVBA6T61XvFH&&o7YH4@pHR~WJ0bN6B=J40t;ni$p0zVBc1J}TW)8c?*8#(7LJ`g0RiyQhsItcCP{rI1w88)Ez6xOlw2%evvpWbeRpj+<G>CXz*4SJQ54)_N%|1!Pd+*nhSE0rd`zo;=rXf6{klBf&lUDf5!1nl$lXv%XqsIW&DybH$bHtf-@HIiwcy!pXv;n<Qg3gogTmd&X3`THamC0gG%qmIm-gHS9e5DvB-Oua_OjwBvW{m=EbpSK3}c{3CXCYa>k9YeV=6rGmIfgtHr%Q|%W^EmuR@c6M?kU-?iPhyPGc!roSU>yUz$MSzNEFC%Py+#pB7Gc@=ow1aeQB1KU6$jJ&I72Ksb|O@9AQf+-iuX~)`-mlGHC!sGBNYcGWeBRn)HDj7@G-57W-kGj9ngOe;hQ3y0$dL7!k-9UrLaL|&Iglu7dxNX<Z;+Xmp>kjrzym5&RcJGhSy7U`HS#MF8&)@-#1cgDjX)Z+%k30Y-0{;jHCn2nX?&cO0Gr?Y8W&uxb-N;%sY0}<^@Ypgp;Z=)@pqKMr-4=!2=8&t-=E>nKFVMU?10tJ9z-;zl9TGK?Wp-l{#*dKZy{4>2e`RyD<XTRS0rf$0cwQK|#l76A-pB8+nXSyreKnSbtK#@~z&y-ssIe>9w$2r*c7OvW1!OG17}lyR5Ttq-43yf>Grr0bFbnX7ll+JLqAqd;c<3EkQ|0QECYQR0pl9Kp%!A7y>J_1pkGWpof;AM}erKAt7c}Y)es#QcdO-Rw8C<PLU?-f+lC#QbC1d1@@VaO2yGHtD<VIG!H!a6G3e-oEHdkrwFyuOnr9i%a<_+DH_X|&nD8|^&Z3Q6e+wUy}a{-M!!DjM7Ea(DTS4x?X@7>N|0qu6tVzHRgE(V@MJIqN0+%|g%6%b{a`vrE$hyPgHc#sr&%FU+<}oJS_gYT$+8lL<z%pAp|fD4wG?m=fJd+pXRN%0QbWmO2hpaqgGkV;I>^lphJ)z-?UJyV09F<aI-kE!W<){SK~RK{6<UBgh}39C6ly2_TkIepjHQwzIY{ip7|2B(1P!dxYfOD88!owy%{mv5Ns+E#$AcBo;X!s-FZZuWZ{o^Guo@*vOlbxOTqxlb#*|KD^NcxgXd<~l=Ro5M63{1LN{gvHK7*+~=TaXa0X7FP4psPh7z7+}gK*>3D7Cza9C!HZa3}cy2Gg3!<s60AwJ(r_U5e)_VnQ>c6G2H!a*BEtr(X3UF}+HuR7ye%?bNcARBH87l0sjiu^URRK67{aTI94<EG(5lsDPK6O|v?#xP06B<qgWgmDB<;U<3op5_fe-J7z)?W^F1HIYUz|be3#561lYk6E}t7sVj(FSz|1>VTggk!GxP)4JGhrmAEAevKU>^f1<{96k+7VyE3&)#R(cDa}K5EjG&Aj572L-VDUgWDFj_XwZx1rlu<0A)qQCrw0sL_c?_*BK$}&zI18a=4xzQ^w%IGR82N1htyrP8Hib6UTBcvMHiJ!W0j*pCtt&ul#H&F_230J2jrGtbGzhH`xl%W9ur4zQ(h#&5v?ILE<LU0u!WV@tcLG0tJ+=uAVar&47y<Fk)K<vIk7<uo9#6k=wGCl|Euf7<1Zx+e<t&3X^kar<yB7VJV6V`E<6A%*g$Tm90<>BF%0r7_(a0i|$J1A6p)8dFRtMt?L`6pyVk?U=!fRxkhfQyxwt9uys)E`YOyytIHc6vZi666dNQc7{8iE#beoP318Da`8lS$HmRH*mz6<V!e3uvJnTFVO18mV5PMc9Dj&vL0evj#Ci7}KVp3N2J-Vr7V^!zYjg1KKYT(T%e_-rSsAcq=ghC?bsCr}T1tJ2$~&JwAd!{R={r{2)5CpetglJ5QPK2EXCuC7@QQ;%yfs#+4LLJq>65?(J2Bl#slAcI#+VLq|?Z7&`QA(EGR0uFr>`$m3_DPMqCB{IG!`e)#tb!LMXkcUAdSu<~JDV>XU8e$G0qFstjZg61_@tvpiEG=ajrCLw`qbZI0aiH1e45|OSMmrjOF594V~*)*rHB#-cKU26A>HFlx!VQUTqNN$zkG+9Aw{LllgEN9BF1CY*vGUfmsgJBAYMjK%`-ZCh9XHWwSMx4xuRJ!qy{oyBxWQY2#WGm~pAj7F<jwZ9AcLVt<l9!8Qhq~`lFUi$?!(L*neeETmE|MMU#Y-Y_MUlX(;rcX@>{@5$u)59+BofDrM=A`<VOx>Ft4uznKCLZZS)b-M^6zN5EcbZ&+D%?Ak{#;WhOMk?^T@wT6p2Cq&R_leCx~Q+dbozw_3+Sg;Wdv`9#3CI@^X>vQb*4__+lOXH8c5qGTEX2zSK=rp_>@ASg+mWQ$(_3-JUzXs&4OWk}D#Scdy?469lq-wSP$<S+zeF2sf_+dAUG#86yB*K1Lv-z!xQeBpy${dP)4QLkeYZ3W{;REJXjLF$k@qF$fHXR>S>eYwsU9WC1c7vOqk(O1M{!a4f8*!ZtAN?1~xYV)JsUi%S%M#8#ICtqPkeOI?8Q1sYlc!Ud!Y{xFG<f{D-*v>rc70Q3hKtzzd1mjK`e->TpG7W#rl=nFUlWrd3dqMURqH$|~EWIDI(QgH4?jVYC1Zx!BAT*OB-U4`ws)=Dx#OSEXc8xzJd8kYi#Izx-D4p3UOe@ODrFPzc77B5BJ@^H<2S^5UPKt!+$E_1MJr&I>J<RR=*BJ4=#@xm+Yt6?w8nt5K^V<LhbJ8}VbnZS+!5bT`tWuo(h$SdqCVJ}aNxi8R^qpk|5gE8tA^|h!g^j6D(Btp)7o}h@gQd+!%y&KqI7;ShXSL$~{un4vh!p5c1PXrsjI<##m+Tim9C1~@nShcrYHqMR+^CQ^q(l>lh8jZoObm3zE!nQTSX}NLRn#=YZjzNpi%j?Ivg5}UuWcAdDfQqSBbiQxJ3&^>Q<a`l4qhBF8OPYXh(NS~jFHp+;PQTu7(RzO)n6+Rq)~7jApqO2={S?OFg}G6-W+A(_PI`%ql8xz7IUT+X8=wTl!txGXGCu+k(@<BiDn$rrcL!hzNIDE4DRe|4uld#x{Xqz=T!!nCKdBn3aL<WmV`)DW=VZJ+U$_n3?8ES3zPKgL=TSr371pJ@(50%_dK`gZcfH4lStpp{_i$OI%~9}yDn5XLJM%x)-}z=^P!IP?6h@&HldE(w{aHv|J!V~oIhz`UbUq!b*-JRzS;-vhV)mWwN|;kLgh0y-0l{5W(EL}&st``WS_i<V^IuS+dZa}8Ki|kb%(De&Jlxo5Db+T>U}LI%bJO6S8>W}n@oR^<vRvLcD$V#J0)$byY>Q261*P86MuyH|cl8<-4@nR@=Wps4zTX_w`<-wXE{Z6Wqm6Z_t1?J;+eG~rny+8L&v>#(pJVf*Yd}Zg28UK=K29Lc$&t~kx0B%pU7m6#tb0UTrbT;s(VxQ?;Yfx^mn0L(wmZrFaD_`U=xMC8lBfGYa!oJ_Y!{MH!Qv~0(Uk3^qkaB<<T>&%rrT<2PAGC@CUzTNCx~ttM4JWv5kWY2NaRse$xf}D+pteNgb*VXnmF__9N{kk<Q8Vu>`9ERjQ}XyxlB5?d7J0f#W_M{gjx30$XiX96?l^I#fXCRS}U98y%?Ok(9AYJ&Xf|Jk5f-G)IAZ=wk*C`|HaQ+{rbESdYVl;mHBj!vIv?DyEfIcz?#^iSbLjG5tdpy74F*9Xm*x&j&#5`L_WKs>B_*wD4>ffmihh^(bnTLHWHOQ^!!vU6Rt|{Xz=t<l^())h+#a0c(ySHXf;}${=D9w|Am0Idm1~l0x8O?@G9BoWrz(e8!BnOIl(Mb>9QzGfJWcH9A%+3mIV@m+JLEIVx_Xp4>3bEk`}&gh?b(e3viV!DqG!FOqgxSmR^F@MZ6bLOc6#gHXSR_7$UP|Gf|9N!gXb+x7fEF?PG^m{Ll6OiZ&E&42lfFE*x#G03nA3aj&_CIsj79%ZymKL4Biz)~h%eBR2K5n??h?rR_JCwzjhjmZ1g6s-zJ`xD%H#UHoO!-X@IW>1JF`v>rc(y$uwneXb?;H>z~tV^w<0BZ<GouGVNp;kL0{2#0=Y72ru}BO6si_mdVj00eD;o$S&cZS-W51Eq?)>&Ba6=eHcLZXPy2eRth%O0Q4|O9SV$uBarO$qk(6Sww?by7KO`bD92Z;TIjIA4W;71=*NJqtR+C?VgC9*>2FV#t+Q~^{A4HFe|ADD^^!oNti_?VQr-B;;&4<luY(h{}6EO%bgF?*qj@tOcjG8OyTgUDm_JWZEcmve5ZX@@4WN9exuXubmsGVuRq_xt{+4p#)_T%%W(ue;+i=cm<^3}v6l)F)dHH!mhZaJLFHJUmw}pKWNGroe4YTYvktS4v=pVIKo8>y?!x^F9A+Fy;_=k~LKd&rtj~Kb3iLQQtr+d`dFe2$<|^LoQ%JjJ$sVAgg~B$JqNX4l6JIVfuH5~T(dNj>Mrg^LfL(9`^iCE^hBkG&>tjkno7GWNoK&TNHZ@K0!dN$2&h5OU(j6+;mx!0(9Jwfa?L(?sDNRAUK;YLqxujtHi&n4@3|%^f5PX5A6tH5C1e!qjNr=I}17v0k$jl1JbP+P<%$KiZcKwibLQ{&EDIx|Kczp4Qxh-_etw78!>6rfV5i@MFjv2NBF}GyMEc@~igY_HX#w3(~8odCRV=Rp=91jyvr9Dz%u*|<)yyWKCB3=c|3mWF)xqS#&q+nJH)Gg!xZPaU<Yyoq9AsI+aS4u~Hq=pTpoxe9Og}1_#&V6D^@Upi6iR6VADG5mcQz@zW;#)0@0wqQGG7y2WirQ&NjOw+R&nkxQXDR1iSM*-Zl%T~*%P-}UNq`^U58r#B;{p)SL|B%T1M%$Q<ID?XJ(8er)c&;oqi^*F^+s>7j%oOGuD8(%v1g1jG%KyN+Na~!Ypuhtd2vP4V3{b}&s&$y{uJ4}wGt9ak@7Qcg%Zis&*sM&NJ)iiNhy*5ngSY^sps{1V;;Vh2R{ZJe%x;3sJp4kYF0H>4VJ5gb?Ni>3ruQhqt`*bh(mZOi`(dh+_O&5YkH~N-f1n(GC&MARA)M!rlr}@49Z5^tu<w%?KFImEg_7F5H+WBF977IvGGv*WiS^U&L4xg21sufah~49gqQtg{hja4TlHRuAHvF+(QGAt^i~{IFw(rHWp*un$zA5AJ_P_?0syOn^aUa^FdPa1Kmq_TlLvqq7c!3r8vyvz`4=VpLvDRsLKM!oum%2k!oSuF?9+Dt&U&r?!rY_LL-STXD_-~l5k<sSW!$4>lv*a-qsPdxPr(rqd-5ZHarQS%lTK)8L7ppeuTt)Ho_njfM`BOwGXA36)8YlE%LhLqy-z5}>OsOdVgb&CzJg31TadZo9w|Lu{mXLgEJoSOgBCfiV~Pc3cfw+KF4uHm7XIq0PE0|`OPn$zpHM7ldB`>|S8?ayk5%zq7Rjwb;<k%kS?GmDiHYd5dq<-hFvbZ4PY3C%Lw^UxwhMvCnP_7*E1U7lFmm5G<M;gPjNW}Hc}Z~01Q;k8YT<RBTET=SoZ)S=X|0TFYopn67s0cN7U<CIN}9tV;%TjedcQUBn@7rvFPS@h8Amh}=1SQSK2Na7ivcHgVg!DFP6Q{=OJ<BIpTEDr2<3fo72)$sWE*ugduRz2b`zS?*=R1Ma?Wj<9dmU?@6XnvWJs`d0v*(q@p%f$>!lF6Nx>?rb)o^Yz>|qF4uL@nL8RUS_zu~zezV@|uYd;D&4M|60YktfmyVb7WPO3C$QH_3Ic3T@qn8V;;S6?RZR`0R#AIPA$I45Qrf4m!DP75+4Hp~j+K#Fs%Tz@RfZS4sSXB^8dJ!yjAFZAAMCIwqLKkXYqFazEoTx8p_<M`_KnKe+f?mYpO68HfTzRxGGH1Fo<q3J^D&*B*x<-Vau586C?8fZxq)cv)_UzLjb?Mujoq|}Ima4fICl|L~IJrE31EU{PR(68~-H3oH-&$r<5EP^%D`0I@_GTVQJf4=+ahYX8Ms-{X(HmNw69zA`9ZD=Od99l<^j2efX&b$Ckn;m;Eyw<NKyPz4cuwlW=}ocm%#c)yq_aC93G^maXUis$r(mWu1v~*PH{5(?NWTn3U0F>tTPTvyP`yt=0ntoJqqiubE_<Y+Icr}IqN_#_)&px9D;+?<Okt5Gd_RJ$g5#XfO@<J@LcqipfQbw+=G2z}*fs$%dL|<kI2X+rUvf=WY?@%$>fHQrgOMEVc2c^{tyQXQO@#9W63P^q%2hCda}k@?#%v^%NM;#w8YDtPLgXH=`zs0|8~q)E<J;|m;|<I?C3#7GI?r58Ld=0RIp!=EaoL8Lb2`r)XO5<b7}RO~=P)Nw*Ggt~+iX-XydScaR^2hZW6Z^`)*ewnmlv4Do<e&UQvCL3@B}neQ#xxiUMd#f50@`MA}WPlz@<D%wkRi>Er7Hhub1!yyD+syZ+*8XX~2nbS}L==s1<|Fc&W^6@;K}V-TU!qJYB@+=aXBSMh`R-d^u+4;pDDmTN&;Xu}DKTNN)a{cd}In?Xd0)tA_Urll0$R<ZBQwZ8K&Bs$_$-Xy=?91vOW&b<Kqx+xt9OJ3Ia6wsFQu;l=Va0K-A7nVg<$8NF6}8!*c!maj-)-d&s=zPq@^{3OIQ%UQO+fvO1DL>g*UWho6Rid~h`T;E*5#m^oSyroeO&X|Vf6-Fv~|9E^qoc@$XjM!<ViWZa5+^6WJn}X(WLO4AoA1+4IP?&T=Z?TvJVr)01hb73e?Jj-u{}I}1bV8;800',
105
+ 'ABzY800000008Y>=~E-elK+e&{68po5qJ-fD(f!x;RsoPhBcQ#gU6o~8qsL94<xN5{5%`=$8Toe>TX@k_;@p55A=~ORsJ$7uR8i~e|s1{1`p%uQ*VBB*E;=G*7>*J{Oxb2XXl-ho1?#<9UomcZ*TXHgIRw%oXm&g(a~=6@v(-F&4cNzHtEe~!Ts*{;X_w97tK!i(DC*D<@3|~V0r}mosW~?=xj6(2EnxOL6gaJ{M!(}JE%>A-hJ&pn9M)a{*8`jwSNxr_~NG{u2gM2jZWVq5s}Yoy=f3PBDnwe()YJJh3~(ePluzy;@7u>(RhwGOHbdOB~RCvKiwSFg3<F+FzwNKZTwK1jAygq`^TU*9DN9;!+CGi4{A^2`(ReD_=?sh2%Y6VsWpC@jGssMwb{Hkf3Ez@<843l7$Nv|yy6qv8z6x=2C=w$qebR>^ZtjbkG<Hop%?T?g?5J0C;dGNe(OC=9)s?$!KC|Z|DiV;jq8ze)IUBw67kvP=~ejMt!Ap4&FH&NAIH7<;x{AFS?dIqd;VcO2u8#HaQ?A2K}{R>Lt+2h!*u*qYYe92=gF+`{L~*D4Ep`X{At3Vfja#^L4Q7Lpy;0;d(-Y{FzZf+li+bU3L4Yr(X4?WjvK%7I<K?FG?+a<&ZBGH=vp0ls1N?Ho801E;s|*U@UY*T4EsSt#s?f}E1r$JM8@{*Pa8<GH6G1^|9uV!@%St8`m7eRdxH0#-appvPOj^<)6irb*3cFNkAcrU=+7>$o2`z&{pI3^t8-7v;ZFmU+cfA>Z%a=64`)}MU#?I5$-Apde|Fiq!9Q=>cenlU_r&*)FPmNLQ$uQlZyn!eC)d;QJQ$9$3(cqDXx#1fhxapV%RRQnpZqqQ&5^_Iuf6H87g3#`pPZj`FW+AH<FngN^Rji~Z#y^5%VU3f-fZ7`l=_cx!@IXvZ*TDaoAza^dv@$^PEK!6e(ItMx85WtSEu-=6E-(F9*o9M&EszKG&{P<pIt1R-Trs(?4)^{J3BqQ%$;4Hp5)H1I&X4kx6yO0bA00VtnF{Fu#smifBoj<^2%So{o&%|*tg!Cw0`VjyM3-#U65@G1$6gg`y3nBiVj-m(chDs=IzDX+vw!{ZF2ka$Fu0*rg{9s)!XClMS2Sl+Ue2T=;)5_o{jor>Z0@D8ozHorLQlj=-t_MtI##8bQH<ZPxOZ~>WK4c5Y+mQ=!Aw3!+t2`_){ymJUT~>AVXcU&o%UbwfTpjhMhg2$8W~Z=wz1KmMPt?&u709?d|ws{!esAArtrk_=)>>=o_iEqHgM9{}_Aj(Jp5k4wyRNy2i|*aJ&0x(Vu#w`*XAlS0Q(^quu@(P2q3zqrdkbhy8!l`{QX)Z$;N?<M(7(YQ1@l{bnA_gOCqkB(U#mp^lH{-LS=fm|YUx$jDaE)E;_I!^e+NgZ|zfj_V!d;Oy$>X>T$KrnOP;DLDG>MJ>JW&3jQx=~sOc+<zBJ@#wqhcj%J)<9pPZqwn5!P7myN-zN<r({qHh7--x-_k;WHB-O(e?ZcB<^o69^jnR0NdoH}z&0m`jgD$DitQ(9_HUF<mGH1XQ>B`Dh{v-JK&++vBsF_+_^f%*vfYH_LNY+sKjylulxXYjgKHB{inB1++hfihI3bm`&@AW_6y&Mm*1#jT<4Sc%sVf-}i&d`knqZtbI0Zlkv@3wDRAB5S(W`^_!!|@SbuEV`}|6T{_<%j1{AGr<hJwV?W&69f(eeVJ8`x$*|h{L<4FU@-%)POODpE7<zMt3J4db2?6)>>D$7iX=bUB~elrGD3&hFl_+yR|p%i{k^dYv)8k7ZC>vL-9L4Vl)yqzCHo`nEUs)mk1Roq!@&tBOvXQ%huKLNex_hF?jzxe7vU*0>qFAL$i9cJLPrQ#h~u-<KzQ!xl8Je-yY!<eenS>!W_&Y6Ni%54r=YzX_wItNT%vsb+hJlLoSE?`rzS#K4uVqG1S>^4ei(bXqSGg@M}UbpIvv!z{O_b=wSG#gd7!}`=DR@<Bbe-V?+P3k=XwOf~WpJGwdw~<3G1aW%9fT6Mw+)t_W|$4)=%-YIu;C@Paq1r^K!Eh_+9m)@b%TTl+-pzN5$DleG_#n~$ELqqXE13q;g-u$DL<FGNqpR~i?ad>5J9=rKClg#2wv{&p?-UD~L-HH{$`JsgDY9`+xD(O~}Jh)c&6(;W6wOY~lt?+fI7;coV<0Oy1eMRHL|4$d-;&#)r7%qRd&9yfYrV^m6RnFGZ&TS=}{as&ABOq-SDS#y;GVYL=3$!$t5wa^k7TuJUSa^N5kz?I~{QhK43kVdX<JU}(_LNTTl=n_3&LNBZW>r{z;iDUsk+gW2v^qFXx5z;BST2_$BmT@IOxYcliu56EELP?`adI>3o1#k*OoYkLhD?i;>W(=2QW?dyYsu8!&mKwuT*=m8zD!#fgyjrx<0(TXXLOo2r9|V(1ukKUts^yBUGEC`GkNqWM4!i%l55MSCf4WxMg|rlGhq(sDCQNXaxS+)SgzhQ1n1mIzm&O%^Ks<>Jet$>&S>uoK^AyAE2IBlM9Mt;{gWAEQ_L&ls+QC0+2M-8%>&?y8#m@EB?atZp4rbvy&GXLAPj8#&J5i-|hqB<Es6@7Njjjgshn<TtrlixI(;of#_8Zu-sDKREPJO4f)4|_Vn%!wNuQ9AZiL3u=-Trjc@lV4U1qeYmc47VkqurZk=fqz(Z+<i$K!EZcOjn|;+FxE^$O^!PFs9D^BrdK*DT+4@;|nB*{kqh;^?k=*UWeB~Tj}a>IH@<M15mm%op=S(BbCQff7AHcw+4eoXE5;7nFj3l+VMS%^6!*Y7K3GMmZ$&yNtif=MG5-hb@Uwp<~E*rTh~U!$Eq%ciI1Ufl#P#>_iPWsf8IB5yuW*U8-7sqcmJjEV1s#GEypIhUjW8|6NuIVDu%xR75JTDf&Zf7%TZ^i-8nqIKD;}_|BvzC#ST7msMuli_z(_J@f!6*s6NZ|Q=(?J+pX44dr?KDflxya{BZOz#r(Q^A3O$OVeWU)Py=0Q1b#<ZORuM6P?l~fa0lqXJW?MZHOj>t;4R<2ZnXVifNabggTWl-W3;r!2;fUJRo9J9(Wd`oU4x6R)T4w@N0RWd4E(i^exVTdUy91+idn!TRn8n3#vCZ)UH}GsUNrpY(MMoRV)$dL3?{=6bFIO=ytr(3z$3Gam-Uf5V~njs5q#B9zCeQbBm0@f<W?GH5{t>1A=`kI9;rN@7Hk7Z?z9Et_F5OfjX~qF1b0zS`#i5(2RRw&I?6LA0nHs=&Bi$J)6hI{4NN#K_BghYbME2;L83aprvIY@G8<@4@5lcf&9Di*r?B#s$MEd*?Br$>3|+ZTr$0-WH|Sj|I^iGA{>yZSb7M_iE>)cP{-V|xp}9=lNun~Kw^f-x7qZXPu_+1Spu&z_a5EUi+puG|R|x0!_{|Sq3&%<tDUi{+DBDx(^Y=+IO0>UkMg5sO2ccw8CLHW-F!dUpJd$`k^*=Xm{k%PB%v+&kFasrD?-+`Pq4cy&4g?A4psHV|KaazI1dkuP1tCO!{WyX7+DEW2pdCZJ!}5P}Xgc!SJIx}REJCySJEJKx>zJZRdJd-bafWDe>`AESKziOnJ@2EQ_YqA@bhuPfM|uuS$`DqEd219(;bU4E&0Yd6+oS&=LO8`Zg?I_T3x8sOmBJ=f`5{dAUF?TulgD8n{r`A0o~9tbIcvY!8elKc|1Sb8x%f|Lf8R{as&JU{a?8|S>lSlUV<a7D&YaC~Q*t?OP{#;j!N*52XWq-BMlTqQBA`^eu~zFnFj^a@4IW?=X%!x5$&?Xn5Bs@R+{ryaS1z0o3sMLLu~g4(@+TDoFkLMMY1f7W+loP!^;`lcAr$m{HUVLqvysPe#Y>8+g!RXbOW*Fz8_nL_lWq&kbt)P3DjOIJA7j0!xD|Q}he|HdTQI8HFo25<!)!jDbO$|5f$v|Yt`#^5DJty&fa;)i73j{81Y=@__TWFz9`w*2^e8e_G@!(+ift-tQmW0|!cxpk-6_&$UC`z%gDR+Tti(RkQ>i$*XjN3t<wk-he`2r=M)(3@?i9gRnyJrjg?SlukfK>eeKwKyuJ;(`tVrP{>E@juH2aM~C$hmb$|<Z2ZLkI5mclISqL3I+0&AQ}peM5-I6BXgHQsw3^@Hgg^{hJ^4n|>3p5~iGK?nwtXd~<%rO-+kmXku+QfGljyA*s7f`_mWb1c0?azp83C()*|lSt6ZI?44lMu!***pj%I09F+oI-kE!#zaBdNl=K8RbYTRiPUIJ6ly5`TkIqtjHQw!xk~KF7}rIe1P!gyD@=YU9WJ?!%{v#6$&s#L=Yu7|;$C*xsP?o;kK)Qmuo`7aOlbytTqxlbhL}!c^NiVZXehZrCqV-d63{nbo{RZCK7;u`=Th$>0X7FPELHe<7!K@lgK*>3DBrw}TzKTi_qP%dU~sLOEN3mep?!fQ>{UEhD-)U-ok&Vr5>(W&ICZQS$>~*0)nXD_Xs60zQmN%jNeaD*MtUgQ`pg~bs}a;@aj{ee!2(`sI?eL<;^J-Rmp3R0S5YLy;1LXzW$qe~_RWMQ%;HogbcW_y=q&YcBy?*9CUOcxRaX$Yvc_0$!%zdogE=_G97^ENGJ#7JWiiU2|3sbZDALFYcxkGa3KTR*<{Zk+89_-t9-#L`(c*z{QV6<&ii!DMD5Y3PE4tHKZ21P*@)%oNz&5LRaTa3B9AazHd$U(;5jU{`wql9i+7#PZZ<&78+Z=9k18n6IY+V6cBVKJnI^tr{cdW)Xp+Rho$W_6CgLRorkcP0u@E!4W9#6N&7QQTSxfA&LtHDiZ2wcYULktLTrno{z&P;ox@_72SD{hDzY=CVXC|J9QEoT|Fp))g7@wMp81bf96apN0c8wCo&xB|9WD$7HoVA0SbmB-UpY!SB#gA1$y#utc+-Yf)H79)k%2zLQoy@BHDC5o#Gifb^fe^uOzB&Ajr&dfF-9WPI42wTWGGa(G-iYc~CCfNg0q2|k1Y-wKV2G~M1ww4vJHB!A|OSl2YpK|d$GYBz37~7_(3N2J-W@QMe!zYjg1KTeV(zWwI-drD_dn+*$C_;>1sC2pDotpx(8X!Ta{sl2ge-Iv8B^L43ou}M)gWvFS38^K@c+&-m@g;>-Ps3Tidvn<&H6)*(-8vlA(VdeThHiZm`2IEY>+=C9@&MYXA7{4^Kx|<MApZSQ0IV4AU0RP7ta`lHn6*QYpR+J4%<{slpt(<0E00t(hoCU`Nl4%t9UBQrqH&SSgrw`nr88&K!+7dbHWezY(xU)2uD<)lvb#|Dur+%EB)7_Nn#rIwe&`-omNRA89!Tdv8MBAp!7v3xqm3{eZy6N6GpGXwBTr^TD&J%@fB%zYvPD5xvZV!Gkl}nZM>F2g$ANs6$tTEUi$ZXzpX3U`VLvg}zV?&PAd@W$$R(M$qD<h`c738uwk<q!SYCJrl8Ix+BNfKyu&GSoRVbfSu-29@Em(6KIe9c*mU}#X?I@ohlPwC}hAl00^T^3dl!-wn&tIMVr^sZB0=b6e1@h2%;Wdv`9#3Co@(D88rm&v(^2NgXYliX}g|bCKzSL1vp`#cyTCW}DlVq}GA)h<GtdQ?)k~AWbcdst~QzWu^`M)HQto$EKgqv51e1b%_88iT1J!l}J_!mWhBpy#+Me)0iF;w9xDAfJ3ApNrjCA5kLB`_pfj`tU?zklQy2FPd(0|EIu@m@OQvAF6ATfwxmOXi@9^~<i#FHi&$+g%a7Dr~H*^aH{dXlR`X7mzLv#B4$eCPH`6e*7o_&?#Wliv1^CCV&@wyK&>&=n$HrL*NXQ6)qZ^a?&l`Q^nSi>D(es!MPW8rc{1iR(MBo5g*Y!7Pjr0EXf2d<)W2wOc={(s0u7<4K2>vLwV6w56M5ja7J5VycBiI!-euyc^vox5y39F%)zdmQW@-$hp<bDup^zv3$L&*hrKF&=6P+8i3oP=$_3bE0y_dguyabBiOv%uudpwLy*feWzCcrrx+<U!#;8}+SE8=aUzLMNgq-<2K@o4Iw0H%3JFvkp+9^ja)$fF05o{xbjf<q82sV6mXxmD(!RHAo(B@yUYHzx{oE;MAhp^eDZ@=L?(r65Lr3<$OC~S2joR(|1y1BT0!!c|Ty1dSuD<}u2BCD)M1XNbFqVs(_UTDr`B<b_u89fV0TGH%%i>{hme~xnQclwQfn|1~;f>{d&<9(Vq1&Y}fJ6B;8UYIat>lU(WtK^qRDcRUAlhpppzyZoaER=WmlKIhqn1*_TRVhS3TR{LzP|{%xNzo$`dCfP*=#PSE>1th<{K+&?g&S0~nxzd?oRjhPe&IHDvk$|E`Qk1%pGOmIS6G+sVwY-T`*8$<-Sr+HW}RS)-^1kr?WTec9N+^Oy)*w)<DG9c2aRyMMPU@0GPz70)1QS5)??~rn6s%>Naxv+roDvqt@X^YE@t7`wuU)fLkzUcAQ0Rg2$~w}*a3tSvsNMS82~8gQ6ti${GV^Xkvo`g3(k1B9a1UfHo#zQ%6)y^<enR*%WM9%!<<=`H=If{zlZ>VR4&`7(^^3(c(fOybJ%CSM%_aa1kd^F#<}me2916v+`o$=3*~4t9_p_Q(mgw|3kc0uFZO3VS<uh1`O!6?qi~NzD>Gjw5b5N|=;a&GaD%Q-ITKbuqW#vQUBJRW`!52L%#p6hDw3UglKbHrm}D5#SZ5_q_mt$Ca1_`uB%#X1*NUU5+IvU){Qby*<Z(>*=G2^E<j76zJ-$*DT^U82<p2>uIHgGBVN}U}ubkVkTRX%MLlv4&^fDmfuYu$yw$|)O477~^sM_*OI<|hx==S*;f@Op$`)uT{uB)m&$&h12L8`5lO_N}Z)Lm$6TOVgiiO$EVry1;?h-e=d-)j8g=k0!D-V7bix-HIpy17~Gh1SI4jV#J0z9{hC<Wh{LmQICRJvCdM^460M_?j4KTRdGAoEQ#tQO&X-AjP!(_>7H2MGr#&DxL{<K<|R^^w0r4gpm=$$OsX=#bBV_Y<K$eMt}a7g4*tA?9vLPs4mN^WNVlqHnnQ>r1j<)(@v$U0xkg>gMf0tg+^HxNC<2L<^c07mF=B~DXWpRKyFRo6y03}tZMPu^2TBcZ7a3{6RaWP9gJd%FrKmL=z+#~nI#*NVgwVeKSR~U4(4bNJiOw6Zv02IDQR<1<OsH6X=5D-Su99=#Whj`kcwWU#KJxAn{6~=#Q_?zuESk7o8T?&*iqUR&oU^33y@V#BZ_bfFJrp+%cfmU7{}9Hyqsu1ehj-DC{EjEOYC%1{lLc#=rNBZ{s#M7vmFKB#&RJXI;drkC*_W8tPTB8TI>K2w4-*i?|ZaCluZtlDsIyo@3EcViWjq$wd3h0@2+lJ(kqlgX+)jYA5}y)xe@g|k7zb4*XVtAHnX2iJfy>H#3-q?AWPG1Hrvh8=8Nd1?HVO({?KYtx2h-<vx-8oVhxp5idj@C)<()M{>oHL$z+H24*|yx-T5$$&AMUA9AKb?IUPQAKu^(ZTzf!dzH@up=)Cj2ezVi+bmsF$uRq_yzVAihM(*_hn;;2z$Tf2`W*ZvqVpkO+st>fv2JoucK?NyK+CXhEvND@vK2Lz?S%+CjTA|WW*oUzNci|QX4l@uW@p$TgA;Z^eHRioGg?${HR*bd@y>J+1a~1CwDx_VpybsXcLSY|EQCE-+mzV30OE(Z@w99g`i&{EgU>l$S-IRrjK~J6T8kv&NR(BL6C&enDjZss;F!YVqe>*R!q=!28MFJ)`M>eWnCXp&vN>k7;5cvI0mQ;*?*(w&Ip(`gDf-lfiB3A5_KvN7q2{QPXz|3rbnOTCFE@H-<`3ls`t{%`%XeuEyMaTdnkS`xHw}F<qC6L*Ymg%nmGQ-wunPE#Hb0uSD*;fD=tlmvGCZTlH=mo?aV`+%tc$kkW?U4$@X8r{OCfA1;@v327&@mU!{zJqf6|-8Pb{YS#qhK2)4w(E4$v|T6QaK_dHLR)j{CD$0cq>fh{3xabuX@3dNM4bVl8_8AuacTCz9+*dP*Q|17!eq=sI3OfsE~{4tzzhe$~pL|a`<wt1g&f;zw}Ecv3`6%e2s#RYeGQtWm!@r#Iy5{GcT0&NP;d>`;*3xzTF!%n!Uj)uHiGVy^&go9b=TC$!nE0KpnrnYZZd6^Glj7%S6@I;JR{>sL0;km5@-rl%JR@lt^ZXwm!~4N-AMX%9jMtOwqW2J#WmL^YC>)_%Yz{<F*@U-BMeY^Qx(gP_7|1q|e_kaH*w@-Zk|i7U9J_ZloG=$2vi838qSXr(K$gfGDgf*mOEAOY^81RE@}6YpO=%X>21~bQlvMZcgXkGRRSB<Kg&=U@kbEJqB@Qklt3}JiX-!FZ+weJKvkP8@&)g1eP<S*-`}QZ9A%9ta)9_>{|LJy_~=L6a;t$0;~bj7l_Era3~-E2?D@O9sy=t$UPpcLEz5^KvVz#xfOK@Q8+8Z769N009r5bPp=Pf)@%J&W*<!-8oBBz^uia2C_J_*V;}9K)G}coJx7jzij$DolRx>Z^S@?NbwWdH_*{{Fm9nq%>|4b>5_?+3@mFP^);c&{JuVWdenLT}4-(E13~(lN8D#g^g47N7Na^wFUzcrXG3G9hXXMz9DHinI35#92TG@eF_{(cMaRn7`hssQSLb0IeA>X`O%bkNiSj)FrShoy{n=X21p%+#%Cc@9|9ggb27$+1w9i;Cl{XIC_Fc>1IqK(z8YK}0&Kz{8U;j_zAdcUIN6_GL%V4z|YhBtU>3lo}fR=CaP!7{F`jb_%J2hS>6)I*aoX{v{a=fMsd{r14GA51U3#BTp(EYU!jtK>)cJi#I}2AtT66ZivI5u9MJm|doP{{8|dlnBO^h2KFY8>y_>L5rxcv(OaKW~-FjIk#>a&E+Y*vRjLa5yQ&qcF<79=P4-HmqO&`5v!;OigwHbPiD|Kga+*dk$MZ@J7muKtwyiE1RPj7U1t9U908MDI$q6`^#!6LUnpwjl&NNo-dM1LHQ0)`ji-SSmxUQ0OE1OBqP4K5atVYsT&y*3TWX7}(iSZMa%&)BZ9y>UowL-3w06=Hm8UBU{it<;{z0m6g1@8z@(pGV?N!VjdJ&IH^+)n*{n5h6oC(kLCuEkZkXeKI8xeZCvJtbeCAYtqKDiy*{!fF{m2Z!B3SxaKReH~l&u_eNvOLWLLm^XDkAno?h=9uCT4wVU6r=+$U~N<rXC6sBo>tU&nPoyoHC_qPyI`FY1~0NL3NJ5tahx&q4rO{R9KF|&^F3=V$1b@??~XQjP71{7owV@;l1z@Iwp&06^vYIetEQf(Xr?p;KmjZ_+<azCzYs`WRk1T$Vv^8M9Z*66(o9XGcQm0kd!(ZIZC?<i%Z3+LBWoF}99_V~VUZ?$?}9u4$2q~9j4ynRh=~ml6B%O6sV@Stje=wJPev+mE}CXua!^*Rn~m7+T>o&5K^^UxQn_!gRjO(+h4Tdx${U!<RW^Zh5!=`1Y$TLOrX+G2LqcOh<Q}j4ONu6&{Vf9Jn+*fyHQYHRc}3+q&s|JH+<`SY?kpE^Er+;sI?o+vj%Jb=RBQbwaVJpUDrSS*Y}hZnAM%wJ<T2f2%*8MA9#LqQ7n#N0LOUT+B=@H<1vHLRIma_zXcpfOmpwotEQP(mrA$e-C@Gp#fV3X3S1<)zakWX8eYYcNJc@BzW>a1mi-Bjn%w{%u9QK3m{dhE<E+X{v@eR$s2bw-!4&Zq>5v*)7!wn}EX{b2K&42Pvwp!sfEJ?$%SpbE({qN2f>Jl$)H0B4YV!O3y51t$awO6oJ?S*X{{5)AXr~Ue-dCE!aMR~S>;UHE_Y0ou{UgNz9oJ*#oFUe=#ogeSNJHNqnB}6q#VK%=(>Im3K8jn>~84fCoU6$coU0=fa&mJ?r(x3=uOhb8nl1koq9^Vh=N~Pf=c3r8Wbtp7ZDtf=Cph=$)&Sc5Qj?s)2CY{h5tV4kq-L?5*1-5LnOW%I;{|eMS+8(C>00',
106
106
  fastaGz: {
107
107
  '1:10042288-10042788':
108
108
  'ABzY800000002#qTMEKZ3`GCC7ojbJmwpH#AKAd{e=X)rs#sd@Bbi6W_i-Kj{yfjM9^Smx+9Larlo`ELg<l1~z3r8!GUQJ0m8ym)8U`}CE7g=s>8808G~E!>54$YrvcZ(-L#$VpmdhA9B{jC$1ds_c=59}2<_dJ*g<OWidWM*zjL2IkV8;uzj1g9GufGD*XpWdclZc##2HWWTs+BF8P=j=ugvRU~z|$)$)-To>Kk^RtKZLTEbcW-=QQY~_Iit)WY}kGW$@poJA~D%3|Je2cTbQ393jzQD',
@@ -20,12 +20,14 @@ export default {
20
20
  return 0;
21
21
  });
22
22
  },
23
- getSampleById: (state: State) => (id: string): Api.Sample | null => {
24
- if (state.samples === null) {
25
- return null;
26
- }
27
- return state.samples.items.find((sample) => sample.person.individualId === id) || null;
28
- },
23
+ getSampleById:
24
+ (state: State) =>
25
+ (id: string): Api.Sample | null => {
26
+ if (state.samples === null) {
27
+ return null;
28
+ }
29
+ return state.samples.items.find((sample) => sample.person.individualId === id) || null;
30
+ },
29
31
  sampleMaternal: (state: State): Api.Sample | null => {
30
32
  if (state.selectedSample === null) {
31
33
  return null;
@@ -94,31 +96,33 @@ export default {
94
96
  isAnnotationEnabled: (state: State): boolean => {
95
97
  return state.annotations !== null;
96
98
  },
97
- getAnnotation: (state: State) => (record: Vcf.Record): Annotation => {
98
- if (state.annotations === null) {
99
- throw 'Annotations disabled';
100
- }
101
- if (state.selectedSample == null) {
102
- throw 'No sample selected';
103
- }
99
+ getAnnotation:
100
+ (state: State) =>
101
+ (record: Vcf.Record): Annotation => {
102
+ if (state.annotations === null) {
103
+ throw 'Annotations disabled';
104
+ }
105
+ if (state.selectedSample == null) {
106
+ throw 'No sample selected';
107
+ }
104
108
 
105
- const sampleId = state.selectedSample.person.individualId;
106
- const key = `${sampleId}_${record.c}_${record.p}_${record.r}_${record.a.join(',')}`;
107
- let annotation = state.annotations[key];
108
- if (annotation === undefined) {
109
- annotation = {
110
- sampleId: sampleId,
111
- chr: record.c,
112
- pos: record.p,
113
- ref: record.r,
114
- alt: record.a,
115
- geneMatch: null,
116
- class: null,
117
- txt: null
118
- };
119
- }
120
- return annotation;
121
- },
109
+ const sampleId = state.selectedSample.person.individualId;
110
+ const key = `${sampleId}_${record.c}_${record.p}_${record.r}_${record.a.join(',')}`;
111
+ let annotation = state.annotations[key];
112
+ if (annotation === undefined) {
113
+ annotation = {
114
+ sampleId: sampleId,
115
+ chr: record.c,
116
+ pos: record.p,
117
+ ref: record.r,
118
+ alt: record.a,
119
+ geneMatch: null,
120
+ class: null,
121
+ txt: null
122
+ };
123
+ }
124
+ return annotation;
125
+ },
122
126
  /**
123
127
  * Returns whether records contain mvl annotations.
124
128
  */
@@ -200,4 +204,4 @@ export default {
200
204
  }
201
205
  return hasReadDepth;
202
206
  }
203
- };
207
+ };
@@ -3,6 +3,7 @@ import { Vcf } from '@molgenis/vip-report-api';
3
3
  export interface ConsequenceMetadata {
4
4
  effect: Vcf.InfoMetadata;
5
5
  symbol: Vcf.InfoMetadata;
6
+ incompletePenetrance: Vcf.InfoMetadata;
6
7
  inheritance: Vcf.InfoMetadata;
7
8
  hgvsC: Vcf.InfoMetadata;
8
9
  hgvsP: Vcf.InfoMetadata;
@@ -17,6 +18,7 @@ export interface Consequence {
17
18
  alleleIndex: number | null;
18
19
  effect: string[];
19
20
  symbol: string | null;
21
+ incompletePenetrance: boolean | false;
20
22
  inheritance: string[];
21
23
  hgvsC: string | null;
22
24
  hgvsP: string | null;
@@ -32,8 +32,8 @@ type CategoricalNode = {
32
32
  outcomeMap: {
33
33
  [key: string]: Outcome;
34
34
  };
35
- outcomeMissing: Outcome;
36
- outcomeDefault: Outcome;
35
+ outcomeMissing?: Outcome;
36
+ outcomeDefault?: Outcome;
37
37
  };
38
38
 
39
39
  type ExitNode = {
@@ -0,0 +1,4 @@
1
+ export interface Gene {
2
+ symbol: string | null;
3
+ incompletePenetrance: boolean | false;
4
+ }
@@ -63,19 +63,34 @@ export const retrieveEdges = (inputTree: DecisionTree): TreeEdgesArray => {
63
63
  let edges: TreeEdgesObj = {};
64
64
  Object.keys(inputTree.nodes).forEach((key) => {
65
65
  const node: Node = inputTree.nodes[key];
66
- if ('outcomeTrue' in node) {
67
- edges = createSimpleEdge('True', node, key, edges);
68
- edges = createSimpleEdge('False', node, key, edges);
69
- if ('outcomeMissing' in node) {
70
- edges = createSimpleEdge('Missing', node, key, edges);
71
- }
72
- } else if ('outcomeMap' in node) {
73
- Object.keys(node.outcomeMap).forEach((category) => {
74
- const nextNode = node.outcomeMap[category].nextNode;
75
- edges = createEdge(nextNode, category, key, edges);
76
- });
77
- edges = createSimpleEdge('Missing', node, key, edges);
78
- edges = createSimpleEdge('Default', node, key, edges);
66
+ switch (node.type) {
67
+ case 'BOOL':
68
+ edges = createSimpleEdge('True', node, key, edges);
69
+ edges = createSimpleEdge('False', node, key, edges);
70
+ if ('outcomeMissing' in node) {
71
+ edges = createSimpleEdge('Missing', node, key, edges);
72
+ }
73
+ break;
74
+ case 'CATEGORICAL':
75
+ Object.keys(node.outcomeMap).forEach((category) => {
76
+ const nextNode = node.outcomeMap[category].nextNode;
77
+ edges = createEdge(nextNode, category, key, edges);
78
+ });
79
+ if ('outcomeMissing' in node) {
80
+ edges = createSimpleEdge('Missing', node, key, edges);
81
+ }
82
+ if ('outcomeDefault' in node) {
83
+ edges = createSimpleEdge('Default', node, key, edges);
84
+ }
85
+ break;
86
+ case 'EXISTS':
87
+ edges = createSimpleEdge('True', node, key, edges);
88
+ edges = createSimpleEdge('False', node, key, edges);
89
+ break;
90
+ case 'LEAF':
91
+ break;
92
+ default:
93
+ throw new Error('unknown node type');
79
94
  }
80
95
  });
81
96
  return Object.keys(edges).map((k) => edges[k]);
@@ -6,6 +6,12 @@ import { Consequence } from '@/types/Consequence';
6
6
  const expectedMetadata = {
7
7
  effect: { id: 'Consequence', type: 'STRING', number: { type: 'OTHER' }, description: 'Consequence' },
8
8
  symbol: { id: 'SYMBOL', type: 'STRING', number: { type: 'NUMBER', count: 1 }, description: 'SYMBOL' },
9
+ incompletePenetrance: {
10
+ id: 'IncompletePenetrance',
11
+ type: 'FLAG',
12
+ number: { type: 'NUMBER', count: 1 },
13
+ description: 'IncompletePenetrance'
14
+ },
9
15
  inheritance: {
10
16
  id: 'InheritanceModesGene',
11
17
  type: 'STRING',
@@ -169,6 +175,7 @@ test('get consequences in case of CSQ info', () => {
169
175
  gnomAD: null,
170
176
  hgvsC: 'hgvsC1',
171
177
  hgvsP: 'hgvsP1',
178
+ incompletePenetrance: false,
172
179
  pubMed: [],
173
180
  clinVar: [],
174
181
  mvl: null,
@@ -183,6 +190,7 @@ test('get consequences in case of CSQ info', () => {
183
190
  gnomAD: null,
184
191
  hgvsC: 'hgvsC0',
185
192
  hgvsP: 'hgvsP0',
193
+ incompletePenetrance: false,
186
194
  pubMed: [],
187
195
  clinVar: [],
188
196
  mvl: null,
@@ -243,6 +251,7 @@ test('get consequences in case of CSQ info with extended info', () => {
243
251
  gnomAD: 0.1234,
244
252
  hgvsC: 'hgvsC1',
245
253
  hgvsP: 'hgvsP1',
254
+ incompletePenetrance: false,
246
255
  pubMed: ['12345678', '23456789'],
247
256
  clinVar: ['likely_pathogenic', 'pathogenic'],
248
257
  vkgl: 'B',
@@ -257,6 +266,7 @@ test('get consequences in case of CSQ info with extended info', () => {
257
266
  gnomAD: 0.2345,
258
267
  hgvsC: 'hgvsC0',
259
268
  hgvsP: 'hgvsP0',
269
+ incompletePenetrance: false,
260
270
  pubMed: ['12345678'],
261
271
  clinVar: ['benign'],
262
272
  vkgl: 'VUS',
@@ -289,6 +299,7 @@ test('get consequences in case of ANN info', () => {
289
299
  gnomAD: null,
290
300
  hgvsC: 'hgvsC1',
291
301
  hgvsP: 'hgvsP1',
302
+ incompletePenetrance: false,
292
303
  pubMed: [],
293
304
  clinVar: [],
294
305
  mvl: null,
@@ -303,6 +314,7 @@ test('get consequences in case of ANN info', () => {
303
314
  gnomAD: null,
304
315
  hgvsC: 'hgvsC0',
305
316
  hgvsP: 'hgvsP0',
317
+ incompletePenetrance: false,
306
318
  pubMed: [],
307
319
  clinVar: [],
308
320
  mvl: null,
@@ -336,6 +348,7 @@ test('get consequences in case of CSQ and ANN info', () => {
336
348
  gnomAD: null,
337
349
  hgvsC: 'hgvsC1',
338
350
  hgvsP: 'hgvsP1',
351
+ incompletePenetrance: false,
339
352
  pubMed: [],
340
353
  clinVar: [],
341
354
  mvl: null,
@@ -350,6 +363,7 @@ test('get consequences in case of CSQ and ANN info', () => {
350
363
  gnomAD: null,
351
364
  hgvsC: 'hgvsC0',
352
365
  hgvsP: 'hgvsP0',
366
+ incompletePenetrance: false,
353
367
  pubMed: [],
354
368
  clinVar: [],
355
369
  mvl: null,
@@ -364,6 +378,7 @@ test('get consequences in case of CSQ and ANN info', () => {
364
378
  gnomAD: null,
365
379
  hgvsC: 'hgvsC2',
366
380
  hgvsP: 'hgvsP2',
381
+ incompletePenetrance: false,
367
382
  pubMed: [],
368
383
  clinVar: [],
369
384
  mvl: null,
@@ -517,7 +517,7 @@ test('whether records contain MVL annotations - no meta', () => {
517
517
 
518
518
  test('whether records contain MVL annotations - no info meta', () => {
519
519
  const recordsMetadata = mock<Vcf.Metadata>();
520
- recordsMetadata.info = { };
520
+ recordsMetadata.info = {};
521
521
 
522
522
  const metadata = mock<Api.Metadata>();
523
523
  metadata.records = recordsMetadata;