path # lines of code # active days days since first update days since last update # commits # contributors first updated last updated first contributor last contributor settings.gradle.kts 49 34 1081 122 38 3 2023-02-03 2025-09-19 ikupriyanov@horis.ru igor.alshan@gmail.com lets-plot-compose/src/androidMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelRaw.kt 65 4 125 52 4 2 2025-09-16 2025-11-28 igor.alshannikov@jetbrains.com ikupriyanov@horis.ru lets-plot-compose/src/androidMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelComposeCanvas.kt 268 2 52 49 3 1 2025-11-28 2025-12-01 ikupriyanov@horis.ru ikupriyanov@horis.ru lets-plot-compose/src/androidMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelAndroidView.kt 86 1 52 52 1 1 2025-11-28 2025-11-28 ikupriyanov@horis.ru ikupriyanov@horis.ru lets-plot-compose/src/androidMain/kotlin/org/jetbrains/letsPlot/compose/ggsave.android.kt 97 2 70 48 2 1 2025-11-10 2025-12-02 ikupriyanov@horis.ru ikupriyanov@horis.ru lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/SimpleSvgPanel.kt 25 1 125 125 1 1 2025-09-16 2025-09-16 igor.alshannikov@jetbrains.com igor.alshannikov@jetbrains.com lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelRaw.kt 64 4 125 52 7 2 2025-09-16 2025-11-28 igor.alshannikov@jetbrains.com ikupriyanov@horis.ru lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelSwingComponent.kt 143 2 52 49 2 1 2025-11-28 2025-12-01 ikupriyanov@horis.ru ikupriyanov@horis.ru lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelComposeCanvas.kt 189 4 52 32 7 1 2025-11-28 2025-12-18 ikupriyanov@horis.ru ikupriyanov@horis.ru lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/canvas/SkiaFontManager.kt 58 1 75 75 1 1 2025-11-05 2025-11-05 ikupriyanov@horis.ru ikupriyanov@horis.ru lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/canvas/SkiaContext2d.kt 314 4 75 48 4 1 2025-11-05 2025-12-02 ikupriyanov@horis.ru ikupriyanov@horis.ru lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/canvas/SkiaSnapshot.kt 28 1 75 75 1 1 2025-11-05 2025-11-05 ikupriyanov@horis.ru ikupriyanov@horis.ru lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/canvas/SkiaCanvasPeer.kt 34 2 75 52 2 1 2025-11-05 2025-11-28 ikupriyanov@horis.ru ikupriyanov@horis.ru lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/canvas/SkiaCanvas.kt 21 1 75 75 1 1 2025-11-05 2025-11-05 ikupriyanov@horis.ru ikupriyanov@horis.ru lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/PlotToolbar.kt 161 3 125 45 3 2 2025-09-16 2025-12-05 igor.alshannikov@jetbrains.com igor.alshannikov@jetbrains.com lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/SvgIconUtils.kt 36 1 45 45 1 1 2025-12-05 2025-12-05 igor.alshannikov@jetbrains.com igor.alshannikov@jetbrains.com lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/ComposeMouseEventMapper.kt 98 3 75 49 3 1 2025-11-05 2025-12-01 ikupriyanov@horis.ru ikupriyanov@horis.ru lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/desktop/SvgViewPanel.kt 96 1 125 125 1 1 2025-09-16 2025-09-16 igor.alshannikov@jetbrains.com igor.alshannikov@jetbrains.com lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/desktop/DebouncedRunner.kt 31 1 125 125 1 1 2025-09-16 2025-09-16 igor.alshannikov@jetbrains.com igor.alshannikov@jetbrains.com lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/desktop/PlotContainer.kt 19 1 125 125 1 1 2025-09-16 2025-09-16 igor.alshannikov@jetbrains.com igor.alshannikov@jetbrains.com lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/desktop/SvgView.kt 114 1 125 125 1 1 2025-09-16 2025-09-16 igor.alshannikov@jetbrains.com igor.alshannikov@jetbrains.com lets-plot-compose/src/commonMain/kotlin/org/jetbrains/letsPlot/compose/Utils.kt 7 1 52 52 1 1 2025-11-28 2025-11-28 ikupriyanov@horis.ru ikupriyanov@horis.ru lets-plot-compose/src/commonMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelRaw.kt 18 4 125 48 4 2 2025-09-16 2025-12-02 igor.alshannikov@jetbrains.com ikupriyanov@horis.ru lets-plot-compose/src/commonMain/kotlin/org/jetbrains/letsPlot/compose/PlotFigureModel.kt 63 1 52 52 1 1 2025-11-28 2025-11-28 ikupriyanov@horis.ru ikupriyanov@horis.ru lets-plot-compose/src/commonMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanel.kt 32 4 125 48 4 2 2025-09-16 2025-12-02 igor.alshannikov@jetbrains.com ikupriyanov@horis.ru lets-plot-compose/src/commonMain/kotlin/org/jetbrains/letsPlot/compose/util/NaiveLogger.kt 14 1 125 125 1 1 2025-09-16 2025-09-16 igor.alshannikov@jetbrains.com igor.alshannikov@jetbrains.com lets-plot-compose/build.gradle.kts 128 16 845 45 17 3 2023-09-27 2025-12-05 igor.alshannikov@jetbrains.com igor.alshannikov@jetbrains.com platf-android/src/androidMain/kotlin/org/jetbrains/letsPlot/android/canvas/CanvasView2.kt 83 2 73 53 2 1 2025-11-07 2025-11-27 ikupriyanov@horis.ru ikupriyanov@horis.ru platf-android/src/androidMain/kotlin/org/jetbrains/letsPlot/android/canvas/CanvasView.kt 169 2 125 47 2 2 2025-09-16 2025-12-03 igor.alshannikov@jetbrains.com ikupriyanov@horis.ru platf-android/src/androidMain/kotlin/org/jetbrains/letsPlot/android/canvas/SizeConverter.kt 29 1 125 125 1 1 2025-09-16 2025-09-16 igor.alshannikov@jetbrains.com igor.alshannikov@jetbrains.com platf-android/src/androidMain/kotlin/org/jetbrains/letsPlot/android/canvas/Utils.kt 5 1 125 125 1 1 2025-09-16 2025-09-16 igor.alshannikov@jetbrains.com igor.alshannikov@jetbrains.com platf-android/src/androidMain/kotlin/org/jetbrains/letsPlot/android/canvas/AndroidSnapshot.kt 27 1 125 125 1 1 2025-09-16 2025-09-16 igor.alshannikov@jetbrains.com igor.alshannikov@jetbrains.com platf-android/src/androidMain/kotlin/org/jetbrains/letsPlot/android/canvas/AndroidCanvas.kt 24 2 125 70 2 2 2025-09-16 2025-11-10 igor.alshannikov@jetbrains.com ikupriyanov@horis.ru platf-android/src/androidMain/kotlin/org/jetbrains/letsPlot/android/canvas/AndroidCanvasPeer.kt 32 2 73 70 2 1 2025-11-07 2025-11-10 ikupriyanov@horis.ru ikupriyanov@horis.ru platf-android/src/androidMain/kotlin/org/jetbrains/letsPlot/android/canvas/AndroidContext2d.kt 250 3 125 53 3 2 2025-09-16 2025-11-27 igor.alshannikov@jetbrains.com ikupriyanov@horis.ru platf-android/src/androidMain/kotlin/org/jetbrains/letsPlot/android/canvas/AndroidMouseEventMapper.kt 62 1 125 125 1 1 2025-09-16 2025-09-16 igor.alshannikov@jetbrains.com igor.alshannikov@jetbrains.com platf-android/src/androidInstrumentedTest/kotlin/org/jetbrains/letsPlot/android/canvas/ImageComparer.kt 109 1 125 125 1 1 2025-09-16 2025-09-16 igor.alshannikov@jetbrains.com igor.alshannikov@jetbrains.com platf-android/src/androidInstrumentedTest/kotlin/org/jetbrains/letsPlot/android/canvas/Utils.kt 131 1 125 125 1 1 2025-09-16 2025-09-16 igor.alshannikov@jetbrains.com igor.alshannikov@jetbrains.com platf-android/src/androidInstrumentedTest/kotlin/org/jetbrains/letsPlot/android/canvas/ContextPath2dTest.kt 326 1 125 125 1 1 2025-09-16 2025-09-16 igor.alshannikov@jetbrains.com igor.alshannikov@jetbrains.com platf-android/src/androidInstrumentedTest/kotlin/org/jetbrains/letsPlot/android/canvas/ContextClipTest.kt 207 1 125 125 1 1 2025-09-16 2025-09-16 igor.alshannikov@jetbrains.com igor.alshannikov@jetbrains.com platf-android/build.gradle.kts 192 1 125 125 2 1 2025-09-16 2025-09-16 igor.alshannikov@jetbrains.com igor.alshannikov@jetbrains.com platf-skia/src/jvmTest/kotlin/org/jetbrains/letsPlot/skia/shape/SvgDocUtil.kt 127 4 854 444 4 2 2023-09-18 2024-11-01 igor.alshannikov@jetbrains.com ikupriyanov@horis.ru platf-skia/src/jvmTest/kotlin/org/jetbrains/letsPlot/skia/shape/SvgComplianceTest.kt 230 2 854 444 2 2 2023-09-18 2024-11-01 igor.alshannikov@jetbrains.com ikupriyanov@horis.ru platf-skia/src/jvmTest/kotlin/org/jetbrains/letsPlot/skia/shape/PropertiesSynchronizationTest.kt 55 1 529 529 1 1 2024-08-08 2024-08-08 ikupriyanov@horis.ru ikupriyanov@horis.ru platf-skia/src/jvmTest/kotlin/org/jetbrains/letsPlot/skia/shape/HierarchyTest.kt 46 2 854 531 2 2 2023-09-18 2024-08-06 igor.alshannikov@jetbrains.com ikupriyanov@horis.ru platf-skia/src/commonMain/kotlin/org/jetbrains/letsPlot/skia/builder/ViewModel.kt 80 2 125 75 2 2 2025-09-16 2025-11-05 igor.alshannikov@jetbrains.com ikupriyanov@horis.ru platf-skia/src/commonMain/kotlin/org/jetbrains/letsPlot/skia/builder/FigureToViewModel.kt 107 2 125 75 2 2 2025-09-16 2025-11-05 igor.alshannikov@jetbrains.com ikupriyanov@horis.ru platf-skia/src/commonMain/kotlin/org/jetbrains/letsPlot/skia/builder/CompositeFigureEventDispatcher.kt 29 1 125 125 1 1 2025-09-16 2025-09-16 igor.alshannikov@jetbrains.com igor.alshannikov@jetbrains.com platf-skia/src/commonMain/kotlin/org/jetbrains/letsPlot/skia/builder/MonolithicSkia.kt 30 1 125 125 1 1 2025-09-16 2025-09-16 igor.alshannikov@jetbrains.com igor.alshannikov@jetbrains.com platf-skia/src/commonMain/kotlin/org/jetbrains/letsPlot/skia/view/SkiaSvgView.kt 136 1 143 143 1 1 2025-08-29 2025-08-29 igor.alshannikov@jetbrains.com igor.alshannikov@jetbrains.com platf-skia/src/commonMain/kotlin/org/jetbrains/letsPlot/skia/view/SvgViewEventDispatcher.kt 9 1 143 143 1 1 2025-08-29 2025-08-29 igor.alshannikov@jetbrains.com igor.alshannikov@jetbrains.com platf-skia/src/commonMain/kotlin/org/jetbrains/letsPlot/skia/mapping/svg/SvgSvgElementMapper.kt 40 1 854 854 1 1 2023-09-18 2023-09-18 igor.alshannikov@jetbrains.com igor.alshannikov@jetbrains.com platf-skia/src/commonMain/kotlin/org/jetbrains/letsPlot/skia/mapping/svg/SvgImageElementMapper.kt 26 1 854 854 2 1 2023-09-18 2023-09-18 igor.alshannikov@jetbrains.com igor.alshannikov@jetbrains.com platf-skia/src/commonMain/kotlin/org/jetbrains/letsPlot/skia/mapping/svg/SvgTextElementMapper.kt 133 9 854 131 11 2 2023-09-18 2025-09-10 igor.alshannikov@jetbrains.com ikupriyanov@horis.ru platf-skia/src/commonMain/kotlin/org/jetbrains/letsPlot/skia/mapping/svg/SvgUtils.kt 97 4 854 427 5 2 2023-09-18 2024-11-18 igor.alshannikov@jetbrains.com ikupriyanov@horis.ru platf-skia/src/commonMain/kotlin/org/jetbrains/letsPlot/skia/mapping/svg/SvgElementMapper.kt 43 1 854 854 1 1 2023-09-18 2023-09-18 igor.alshannikov@jetbrains.com igor.alshannikov@jetbrains.com platf-skia/src/commonMain/kotlin/org/jetbrains/letsPlot/skia/mapping/svg/SvgTransformParser.kt 77 2 854 132 2 2 2023-09-18 2025-09-09 igor.alshannikov@jetbrains.com ikupriyanov@horis.ru platf-skia/src/commonMain/kotlin/org/jetbrains/letsPlot/skia/mapping/svg/SvgNodeMapper.kt 19 1 854 854 1 1 2023-09-18 2023-09-18 igor.alshannikov@jetbrains.com igor.alshannikov@jetbrains.com platf-skia/src/commonMain/kotlin/org/jetbrains/letsPlot/skia/mapping/svg/SvgGElementMapper.kt 33 2 854 531 2 2 2023-09-18 2024-08-06 igor.alshannikov@jetbrains.com ikupriyanov@horis.ru platf-skia/src/commonMain/kotlin/org/jetbrains/letsPlot/skia/mapping/svg/attr/SvgRectAttrMapping.kt 25 1 854 854 1 1 2023-09-18 2023-09-18 igor.alshannikov@jetbrains.com igor.alshannikov@jetbrains.com platf-skia/src/commonMain/kotlin/org/jetbrains/letsPlot/skia/mapping/svg/attr/SvgTSpanElementAttrMapping.kt 54 4 445 131 4 1 2024-10-31 2025-09-10 ikupriyanov@horis.ru ikupriyanov@horis.ru platf-skia/src/commonMain/kotlin/org/jetbrains/letsPlot/skia/mapping/svg/attr/SvgImageAttrMapping.kt 26 1 854 854 1 1 2023-09-18 2023-09-18 igor.alshannikov@jetbrains.com igor.alshannikov@jetbrains.com platf-skia/src/commonMain/kotlin/org/jetbrains/letsPlot/skia/mapping/svg/attr/SvgShapeMapping.kt 22 3 854 404 3 2 2023-09-18 2024-12-11 igor.alshannikov@jetbrains.com ikupriyanov@horis.ru platf-skia/src/commonMain/kotlin/org/jetbrains/letsPlot/skia/mapping/svg/attr/SvgLineAttrMapping.kt 14 1 854 854 1 1 2023-09-18 2023-09-18 igor.alshannikov@jetbrains.com igor.alshannikov@jetbrains.com platf-skia/src/commonMain/kotlin/org/jetbrains/letsPlot/skia/mapping/svg/attr/SvgTextElementAttrMapping.kt 65 5 854 131 5 2 2023-09-18 2025-09-10 igor.alshannikov@jetbrains.com ikupriyanov@horis.ru platf-skia/src/commonMain/kotlin/org/jetbrains/letsPlot/skia/mapping/svg/attr/SvgAttrMapping.kt 32 6 854 427 7 2 2023-09-18 2024-11-18 igor.alshannikov@jetbrains.com ikupriyanov@horis.ru platf-skia/src/commonMain/kotlin/org/jetbrains/letsPlot/skia/mapping/svg/attr/SvgSvgAttrMapping.kt 18 4 854 613 4 2 2023-09-18 2024-05-16 igor.alshannikov@jetbrains.com ikupriyanov@horis.ru platf-skia/src/commonMain/kotlin/org/jetbrains/letsPlot/skia/mapping/svg/attr/SvgCircleAttrMapping.kt 13 1 854 854 1 1 2023-09-18 2023-09-18 igor.alshannikov@jetbrains.com igor.alshannikov@jetbrains.com platf-skia/src/commonMain/kotlin/org/jetbrains/letsPlot/skia/mapping/svg/attr/SvgPathAttrMapping.kt 31 4 854 427 5 2 2023-09-18 2024-11-18 igor.alshannikov@jetbrains.com ikupriyanov@horis.ru platf-skia/src/commonMain/kotlin/org/jetbrains/letsPlot/skia/mapping/svg/attr/SvgGAttrMapping.kt 4 1 854 854 1 1 2023-09-18 2023-09-18 igor.alshannikov@jetbrains.com igor.alshannikov@jetbrains.com platf-skia/src/commonMain/kotlin/org/jetbrains/letsPlot/skia/mapping/svg/attr/SvgEllipseAttrMapping.kt 14 1 854 854 1 1 2023-09-18 2023-09-18 igor.alshannikov@jetbrains.com igor.alshannikov@jetbrains.com platf-skia/src/commonMain/kotlin/org/jetbrains/letsPlot/skia/mapping/svg/FontManager.kt 46 3 531 442 4 1 2024-08-06 2024-11-03 ikupriyanov@horis.ru ikupriyanov@horis.ru platf-skia/src/commonMain/kotlin/org/jetbrains/letsPlot/skia/mapping/svg/DebugOptions.kt 33 6 854 427 8 2 2023-09-18 2024-11-18 igor.alshannikov@jetbrains.com ikupriyanov@horis.ru platf-skia/src/commonMain/kotlin/org/jetbrains/letsPlot/skia/mapping/svg/SvgStyleElementMapper.kt 20 2 854 427 2 2 2023-09-18 2024-11-18 igor.alshannikov@jetbrains.com ikupriyanov@horis.ru platf-skia/src/commonMain/kotlin/org/jetbrains/letsPlot/skia/mapping/svg/SkiaTargetPeer.kt 45 2 854 531 3 2 2023-09-18 2024-08-06 igor.alshannikov@jetbrains.com ikupriyanov@horis.ru platf-skia/src/commonMain/kotlin/org/jetbrains/letsPlot/skia/mapping/svg/SvgSkiaPeer.kt 67 3 854 427 3 2 2023-09-18 2024-11-18 igor.alshannikov@jetbrains.com ikupriyanov@horis.ru platf-skia/src/commonMain/kotlin/org/jetbrains/letsPlot/skia/mapping/svg/SvgNodeMapperFactory.kt 46 4 854 192 4 2 2023-09-18 2025-07-11 igor.alshannikov@jetbrains.com ikupriyanov@horis.ru platf-skia/src/commonMain/kotlin/org/jetbrains/letsPlot/skia/shape/Container.kt 67 3 854 427 3 2 2023-09-18 2024-11-18 igor.alshannikov@jetbrains.com ikupriyanov@horis.ru platf-skia/src/commonMain/kotlin/org/jetbrains/letsPlot/skia/shape/Image.kt 23 2 854 839 2 2 2023-09-18 2023-10-03 igor.alshannikov@jetbrains.com ikupriyanov@horis.ru platf-skia/src/commonMain/kotlin/org/jetbrains/letsPlot/skia/shape/Text.kt 131 11 854 131 12 2 2023-09-18 2025-09-10 igor.alshannikov@jetbrains.com ikupriyanov@horis.ru platf-skia/src/commonMain/kotlin/org/jetbrains/letsPlot/skia/shape/Line.kt 17 2 854 839 2 2 2023-09-18 2023-10-03 igor.alshannikov@jetbrains.com ikupriyanov@horis.ru platf-skia/src/commonMain/kotlin/org/jetbrains/letsPlot/skia/shape/Ellipse.kt 23 2 854 839 2 2 2023-09-18 2023-10-03 igor.alshannikov@jetbrains.com ikupriyanov@horis.ru platf-skia/src/commonMain/kotlin/org/jetbrains/letsPlot/skia/shape/Colors.kt 152 1 854 854 1 1 2023-09-18 2023-09-18 igor.alshannikov@jetbrains.com igor.alshannikov@jetbrains.com platf-skia/src/commonMain/kotlin/org/jetbrains/letsPlot/skia/shape/TSpan.kt 134 3 440 131 3 1 2024-11-05 2025-09-10 ikupriyanov@horis.ru ikupriyanov@horis.ru platf-skia/src/commonMain/kotlin/org/jetbrains/letsPlot/skia/shape/Util.kt 155 6 854 404 7 2 2023-09-18 2024-12-11 igor.alshannikov@jetbrains.com ikupriyanov@horis.ru platf-skia/src/commonMain/kotlin/org/jetbrains/letsPlot/skia/shape/Rectangle.kt 18 2 854 839 2 2 2023-09-18 2023-10-03 igor.alshannikov@jetbrains.com ikupriyanov@horis.ru platf-skia/src/commonMain/kotlin/org/jetbrains/letsPlot/skia/shape/Pane.kt 5 1 854 854 1 1 2023-09-18 2023-09-18 igor.alshannikov@jetbrains.com igor.alshannikov@jetbrains.com platf-skia/src/commonMain/kotlin/org/jetbrains/letsPlot/skia/shape/Node.kt 91 5 854 427 5 2 2023-09-18 2024-11-18 igor.alshannikov@jetbrains.com ikupriyanov@horis.ru platf-skia/src/commonMain/kotlin/org/jetbrains/letsPlot/skia/shape/VisualProperty.kt 20 2 854 427 3 2 2023-09-18 2024-11-18 igor.alshannikov@jetbrains.com ikupriyanov@horis.ru platf-skia/src/commonMain/kotlin/org/jetbrains/letsPlot/skia/shape/Element.kt 27 4 854 427 5 2 2023-09-18 2024-11-18 igor.alshannikov@jetbrains.com ikupriyanov@horis.ru platf-skia/src/commonMain/kotlin/org/jetbrains/letsPlot/skia/shape/Group.kt 2 1 854 854 1 1 2023-09-18 2023-09-18 igor.alshannikov@jetbrains.com igor.alshannikov@jetbrains.com platf-skia/src/commonMain/kotlin/org/jetbrains/letsPlot/skia/shape/Path.kt 24 3 854 839 3 2 2023-09-18 2023-10-03 igor.alshannikov@jetbrains.com ikupriyanov@horis.ru platf-skia/src/commonMain/kotlin/org/jetbrains/letsPlot/skia/shape/Circle.kt 23 2 854 839 2 2 2023-09-18 2023-10-03 igor.alshannikov@jetbrains.com ikupriyanov@horis.ru platf-skia/src/commonMain/kotlin/org/jetbrains/letsPlot/skia/shape/ComputedProperty.kt 30 3 854 529 4 2 2023-09-18 2024-08-08 igor.alshannikov@jetbrains.com ikupriyanov@horis.ru platf-skia/src/commonMain/kotlin/org/jetbrains/letsPlot/skia/shape/Figure.kt 33 5 854 404 6 2 2023-09-18 2024-12-11 igor.alshannikov@jetbrains.com ikupriyanov@horis.ru platf-skia/build.gradle.kts 96 18 854 75 18 2 2023-09-18 2025-11-05 igor.alshannikov@jetbrains.com ikupriyanov@horis.ru build.gradle.kts 107 34 1081 27 37 3 2023-02-03 2025-12-23 ikupriyanov@horis.ru igor.alshannikov@jetbrains.com