esteinberg / plantuml4idea

Intellij IDEA plugin for PlantUML
Apache License 2.0
618 stars 111 forks source link

DITAA diagram results into a transcoder exception #405

Closed veselov closed 8 months ago

veselov commented 8 months ago

On a standard DITAA diagram (plucked from PlantUML DITAA page):

@startditaa
+--------+   +-------+    +-------+
|        +---+ ditaa +--> |       |
|  Text  |   +-------+    |diagram|
|Document|   |!magic!|    |       |
|     {d}|   |       |    |       |
+---+----+   +-------+    +-------+
    :                         ^
    |       Lots of work      |
    +-------------------------+
@endditaa

The plugin fails with:


   io.sf.carte.echosvg.transcoder.TranscoderException: null
Enclosed Exception:
Invalid UTF-8 start byte 0x89
 at [row,col {unknown-source}]: [1,2]
    at org.plantuml.idea.preview.image.svg.batik.MySvgDocumentFactoryKt.createSvgDocument(MySvgDocumentFactory.kt:32)
    at org.plantuml.idea.preview.image.svg.batik.MySvgDocumentFactoryKt.createSvgDocument(MySvgDocumentFactory.kt:26)
    at org.plantuml.idea.preview.image.svg.MyImageEditorImpl$MyScaledImageProvider.createImage(MyImageEditorImpl.java:228)
    at org.plantuml.idea.preview.image.svg.MyImageEditorImpl$MyScaledImageProvider.apply(MyImageEditorImpl.java:208)
    at org.plantuml.idea.preview.image.svg.MyImageEditorImpl$MyScaledImageProvider.apply(MyImageEditorImpl.java:185)
    at org.intellij.images.ui.ImageComponent$ImageDocumentImpl.lambda$setValue$2(ImageComponent.java:309)
    at org.intellij.images.ui.ImageComponent$ImageDocumentImpl.getValue(ImageComponent.java:296)
    at org.intellij.images.ui.ImageComponent$ImageDocumentImpl.getValue(ImageComponent.java:291)
    at org.plantuml.idea.preview.image.svg.MyImageEditorUI$DocumentChangeListener.stateChanged(MyImageEditorUI.java:634)
    at org.intellij.images.ui.ImageComponent$ImageDocumentImpl.fireChangeEvent(ImageComponent.java:330)
    at org.intellij.images.ui.ImageComponent$ImageDocumentImpl.setValue(ImageComponent.java:313)
    at org.plantuml.idea.preview.image.svg.MyImageEditorUI.setImageProvider(MyImageEditorUI.java:280)
    at org.plantuml.idea.preview.image.svg.MyImageEditorImpl.setValue(MyImageEditorImpl.java:93)
    at org.plantuml.idea.preview.image.svg.MyImageEditorImpl.<init>(MyImageEditorImpl.java:87)
    at org.plantuml.idea.preview.image.ImageContainerSvg.initEditor(ImageContainerSvg.java:155)
    at org.plantuml.idea.rendering.ImageItem.initImage(ImageItem.java:189)
    at org.plantuml.idea.rendering.RenderCommand.lambda$displayResult$0(RenderCommand.java:173)
    at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625)
    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
    at java.base/java.util.stream.ForEachOps$ForEachTask.compute(ForEachOps.java:290)
    at java.base/java.util.concurrent.CountedCompleter.exec(CountedCompleter.java:754)
    at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373)
    at java.base/java.util.concurrent.ForkJoinTask.invoke(ForkJoinTask.java:686)
    at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateParallel(ForEachOps.java:159)
    at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateParallel(ForEachOps.java:173)
    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:233)
    at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
    at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:765)
    at org.plantuml.idea.rendering.RenderCommand.lambda$displayResult$2(RenderCommand.java:171)
    at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:992)
    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
    at java.base/java.util.stream.ForEachOps$ForEachTask.compute(ForEachOps.java:290)
    at java.base/java.util.concurrent.CountedCompleter.exec(CountedCompleter.java:754)
    at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373)
    at java.base/java.util.concurrent.ForkJoinTask.invoke(ForkJoinTask.java:686)
    at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateParallel(ForEachOps.java:159)
    at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateParallel(ForEachOps.java:173)
    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:233)
    at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
    at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:765)
    at org.plantuml.idea.rendering.RenderCommand.displayResult(RenderCommand.java:170)
    at org.plantuml.idea.rendering.LazyApplicationPoolExecutor$MyRunnable.run(LazyApplicationPoolExecutor.java:131)
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
    at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: com.fasterxml.aalto.WFCException: Invalid UTF-8 start byte 0x89
 at [row,col {unknown-source}]: [1,2]
    at com.fasterxml.aalto.in.XmlScanner.reportInputProblem(XmlScanner.java:1333)
    at com.fasterxml.aalto.in.ByteBasedScanner.reportInvalidInitial(ByteBasedScanner.java:446)
    at com.fasterxml.aalto.in.Utf8Scanner.decodeCharForError(Utf8Scanner.java:2708)
    at com.fasterxml.aalto.in.StreamScanner.nextFromProlog(StreamScanner.java:187)
    at com.fasterxml.aalto.stax.StreamReaderImpl.next(StreamReaderImpl.java:790)
    at org.plantuml.idea.preview.image.svg.batik.MySvgDocumentFactoryKt.buildDocument(MySvgDocumentFactory.kt:94)
    at org.plantuml.idea.preview.image.svg.batik.MySvgDocumentFactoryKt.createSvgDocument(MySvgDocumentFactory.kt:30)
    ... 48 more
krasa commented 8 months ago

works fine for me, plugin version?

veselov commented 8 months ago

7.2.0-IJ2023.2. Seems to be the latest version available. It looks like the SVG file is, in fact, invalid, I don't think that that SVG/XML libraries have a bug in it. I imagine SVG comes out of PlantUML rendering, and maybe something environmental related gets into it. Can you please tell me where these SVG files can be found, so I can at least look at what's in there, and attach them to this report?

krasa commented 8 months ago

SVG source is right there:

image

veselov commented 8 months ago

Mine doesn't have that bit: image

veselov commented 8 months ago

If I run PlantUML separately (installed as a system package on Fedora), this what happens:

[vps@hornet]~/.config/JetBrains/IntelliJIdea2023.2/scratches$ plantuml -tsvg scratch_138.puml 
java.lang.ClassNotFoundException: org.stathissideris.ascii2image.core.ProcessingOptions
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
    at java.base/java.lang.Class.forName0(Native Method)
    at java.base/java.lang.Class.forName(Class.java:375)
    at net.sourceforge.plantuml.ditaa.PSystemDitaa.<init>(PSystemDitaa.java:79)
    at net.sourceforge.plantuml.ditaa.PSystemDitaa.add(PSystemDitaa.java:97)
    at net.sourceforge.plantuml.ditaa.PSystemDitaaFactory.executeLine(PSystemDitaaFactory.java:117)
    at net.sourceforge.plantuml.ditaa.PSystemDitaaFactory.executeLine(PSystemDitaaFactory.java:42)
    at net.sourceforge.plantuml.command.PSystemBasicFactory.createSystem(PSystemBasicFactory.java:84)
    at net.sourceforge.plantuml.PSystemBuilder.createPSystem(PSystemBuilder.java:139)
    at net.sourceforge.plantuml.BlockUml.getDiagram(BlockUml.java:184)
    at net.sourceforge.plantuml.SourceFileReaderAbstract.getGeneratedImages(SourceFileReaderAbstract.java:167)
    at net.sourceforge.plantuml.Run.manageFileInternal(Run.java:506)
    at net.sourceforge.plantuml.Run.processArgs(Run.java:400)
    at net.sourceforge.plantuml.Run.manageAllFiles(Run.java:367)
    at net.sourceforge.plantuml.Run.main(Run.java:202)
[vps@hornet]~/.config/JetBrains/IntelliJIdea2023.2/scratches$ file scratch_138.svg 
scratch_138.svg: PNG image data, 722 x 347, 8-bit/color RGB, non-interlaced

That would explain the "non-UTF" error, the "SVG" file PlantUML generated is in fact, a PNG. The plugin tries to feed it to the SVG parser, which fails right away (first byte of PNG file is not a valid UTF-8 byte).

My Fedora package is PUML 1.2023.7 The plugin version I have is pulling 1.2023.11 So I don't know if PlantUML running under the plugin runs into the same exception. It's a strange exception to have, and doesn't seem to depend on JDK versions, at least, and I can't imagine what other environmental factors can play a role here.

veselov commented 8 months ago

Considering the fact that it seems to be possible that PUML will write PNG contents in an SVG file, it would be great if plugin detected that, and treated and rendered the output as such, so at least it's possible to see what PUML is freaking out about.

I've tried running the latest PUML from a terminal, and get a different error, and it doesn't write PNG as SVG in that case (https://github.com/plantuml/plantuml/issues/1582), so whatever it is that's making it crash when rendering from IDEA is still unknown; IDEA logs show no exceptions from PUML.

krasa commented 8 months ago

Mine doesn't have that bit:

that's a different exception (that one does not break the flow, maybe I could add more info into it), the one after that is the right one (IDE can skip reporting them), or just see what is in the preview panel.

Considering the fact that it seems to be possible that PUML will write PNG contents in an SVG file, it would be great if plugin detected that, and treated and rendered the output as such, so at least it's possible to see what PUML is freaking out about.

That is already implemented because of DITAA :-) When the detection is broken: image

So I don't know if PlantUML running under the plugin runs into the same exception. It's a strange exception to have, and doesn't seem to depend on JDK versions, at least, and I can't imagine what other environmental factors can play a role here.

There can be a lot, some plugins can override the default XML parser (it is checked), JetBrains JRE can have some extra bugs.

krasa commented 8 months ago

OS-dependent bug imho, It works for me on Win. Demo server fails: https://www.plantuml.com/plantuml/svg/SoWkIImgISaiIKpaqjQ50cq51GLjE1kPmrMZ00NQO3cmHX3RJW4cKmDI4v9QKG9aefjJavAPc5wKc0jKuvAVN9gRcbTI0n9Mp4rCpqnM1B5Hp061wfJQ6YHXD3LWPn1mCuXdfO0Bn74Xc-YJNrAia9-cK9vVb0sp0s8Q1e2Rxv2Qbm8E2000

veselov commented 8 months ago

Considering the fact that it seems to be possible that PUML will write PNG contents in an SVG file, it would be great if plugin detected that, and treated and rendered the output as such, so at least it's possible to see what PUML is freaking out about.

That is already implemented because of DITAA :-)

I'm not sure I follow. I do have this PNG dump in the rendering pane, and what I'm suggesting is to render it as an image, I don't see any obvious way to see it in the image form...

OS-dependent bug imho, It works for me on Win. Demo server fails: https://www.plantuml.com/plantuml/svg/SoWkIImgISaiIKpaqjQ50cq51GLjE1kPmrMZ00NQO3cmHX3RJW4cKmDI4v9QKG9aefjJavAPc5wKc0jKuvAVN9gRcbTI0n9Mp4rCpqnM1B5Hp061wfJQ6YHXD3LWPn1mCuXdfO0Bn74Xc-YJNrAia9-cK9vVb0sp0s8Q1e2Rxv2Qbm8E2000

Well, this output actually just produces PNG as SVG file. The browser freaks out because mime type of the response is SVG, but the contents are PNG:

$ curl -o /tmp/1 'https://www.plantuml.com/plantuml/svg/SoWkIImgISaiIKpaqjQ50cq51GLjE1kPmrMZ00NQO3cmHX3RJW4cKmDI4v9QKG9aefjJavAPc5wKc0jKuvAVN9gRcbTI0n9Mp4rCpqnM1B5Hp061wfJQ6YHXD3LWPn1mCuXdfO0Bn74Xc-YJNrAia9-cK9vVb0sp0s8Q1e2Rxv2Qbm8E2000'
$ file /tmp/1
/tmp/1: PNG image data, 390 x 182, 8-bit/color RGB, non-interlaced
$ pngcheck /tmp/1
OK: /tmp/1 (390x182, 24-bit RGB, non-interlaced, 96.2%).

The rendering is correct: 1

Then what it looks like is that plugin fails to detect the output as PNG in this case, and is still treating it as an SVG (judging by the exception).

krasa commented 8 months ago

I'm not sure I follow. I do have this PNG dump in the rendering pane, and what I'm suggesting is to render it as an image, I don't see any obvious way to see it in the image form...

So why don't you post it? (as text)

Well, this output actually just produces PNG as SVG file. The browser freaks out because mime type of the response is SVG, but the contents are PNG:

Ah, ok.

veselov commented 8 months ago

So why don't you post it? (as text)

�PNG


IHDR��Rォ�IDATx^�{x���'�ǐ�   �5X�F��JA*����!�RR��Rh+}�R/�V�"^�����QZ���AE@B ��] �����)g���=svwfw��yΜy睝����sfw&F-A�k0�� � K"�E��TC�dIA��$� \YA.�,� A�D�� K"�E�%�"Ȓ�pdIA��$� \YA.�,� A�D�� K"�E�%�"Ȓ�pdIA��$� \YA.�,� A�D�� K"�E�%�"Ȓ�pdIA��$� \YA.�,� A�D�� K"�E�%�"�bI���qTC,PD�
N�Y��JX,   ��g#P�#G�;v�����ɓ�O�����Su�C*���L�[b�:^�A�QQQ�o߾�B*�$�+<xM��,�T+b�����u�&�T���l��핕��    �b�ƒ�Tp��rH�"V��xKQ�k2�A5V�^�i�&�O|t��
^S��:�!ĊXa��-1D�� �X�lt§ƴ�i��
^S��:�!ĊXa��-1D�� �x���|��u����Y�^��k*8Ug9��X+�T�%���5��d���::�СCb�-H�"V��xKQ�k2���^S!�uF�V�Z�\�R\�� V�
3o�!�xM9�"�#*�p�
H�f͚S�N]z����gΜ�"�u6|4h���;אַ�W�܌�
f*�C��r�E�G8T����(((`��|��������nxD   a��%1rrr6o�,FM8Tp3�*��xKQ�k2����P�O�>�ϒ���z�����IBXgӐ|$$$<��#�qA`�A7�������u�&�}��*V�Zu�W$&&�������8kI���7F㩧�jԨ?�q��;wn��퓓��4iҿ�={��l��� a����ӽ{���
1�
#D*D��
f*�C��r�E�GHT8z�hFFR��W��L����%���YYY�6m�O<q��t����۷�c�=��_�����'�uf�Y����_|Q��b�B�(��V�L�[b�:^�A��$�KQg�ҥ�ӫW/�إK��%��;&n���Ǫ6m��o�s�<<�%Yb�%�}���{�9�)**b���z��%a���w_NNN�f���Ұ��/����t.4qC[3o�!�xM9�"�#$*��� �Zl�%�>K�ԩ��l������x��W�7m�d���@�!!�u�Y� ]�}�T�%���5��d���p�ȑ&M�����r�-#F�@èϒ����߳g�I�&}��/���������Q�Fg�'PHa��1�GJ�`��-1D�� G_${�J��+W^v�e���Æ
��_�b�gI7n���mԨQVV�o���III����'O���c��?$���̌角6�W�L�[b�:^�A��H��
!��A7��E_3o�!�xM9�"��k*���tۭm�U0S����d��/�=���Su�C*���L�[b�:^�A��H��
N�Y� V�
3o�!�xM9�"��k*8Ug9�Tp���`��-1D{2C�=�:�X�B���ݼnh�d#l*���,Ǟ
����~�U0S���=�a�̙cǎ�馛���-[��Q�}�D��u}��>܉Su�cO�@O\p?�*��xKQǞ����뮻οsǎ}��MNNnѢŭ��z��at������޴iS|||ӦM1>����0�/�=��V7n�H��A��O\�
�����m�
�����7n�j֬ل   $9bĈ�n�
�Ϗ~��;�s���999��/~�]�v�0K�w�����u���u-���:++e��}�݆��u�c*~�UWaqɒ%�>�����7��    }�l�㪨�(++[�z��e�^�u4�7F8�\����p��1|�bq���l�mZZZÆ
sss�}��@X�������kC�n��9r$���~���xKQ�N�Ե$Xzn���j:t�?��V�
z�y�1�СC�&���C��H���u߾}�)F�8Wߌu4��X8�\���(�7Ϟ=�*a[�KJJ��eOb`�;w�D�%��N���ڵk��ԩ������f*�C�  R�Ե$|u�G%[��ֳ~�z��,���
�����~a��b�����΅`��P�9
l����׻->�Y�$��'7kc��Us��A�Dc��9,����xKQ'HlSג���?����Z�-Zqqq�>ۤ��17��}���kI�����>���<q!�s�,Y�v�>}ض�Xؖ(��,   S�Z�� �kIp��.���;�c֬YӦM�������EoР�G����V3g�d�7��T!G_${�[�a���QjI�<q!�s�-�<�d̘1�ƍcS�z-)P!�,I���v��5hР���?[�j��C���-"�޽{wrrrbb"3 ��u�T�E_${�[�ՖT�$�QX�b��1
<�[�n���?�ߖ!�@��!�E���T��Fﵤ¾#+//WD�w�����u"/����^S��߸iҹs�iӦ͞=�
pڷo_�wnG�w�����u"#C��/�=���7z��I�>}2226lزeˡC���#����L�[b�:��!Z��^S��:�!ĊXa��-1D�� G_${�P�����T��P���������u,eh׮��#))  o�{��ĉb��Qz���H��TA��N7--M\:j��k�y
N�Y��
ю�
f*�CԱ��Y�o~�Q�F�i������Ǐ�qnE�)�"��R��{洸"����,GU�hG_3o�!�X��,i�����'O�� ���lmyy9>H�7o���������D�_�~������?���*++����a�-X��ٳ������~j����>B�o~�w`�&M��;�����W}���H��TA`�޽�Ұ� ���rɽ���/u^�N�Y��
ю�
f*�CԱ��ߒj��"o�Z��/��,2d���qqqYYYUUUp�������ϟ8qb�޽�#KK2�nn����_���ݏ����ת?E@_${X� p��1lr�5װ�`�W��r�����u^�N�Y��
ю�
f*�CԱ�A�$�z�w���~�����_�V��>����]lݺu�Ij}ok�ʒ� +��͒G��1�B��GE{���,��-��"��R����o��޶��?�ߛ�,�^AY
J8Ug96T�j�U0S�����%���v�Z[�f���1M�g�����3���涼�Y���1@?���X����t�A�e�j�Y.�7�YR��֞��p��rl���`��-1DK�-  cuv���Җ-[f���ذ��ť��h��у���:u
3����ߑ�v�mƹ�dyێ������}��a�B]PO��z��,���z�=�5(�T���P!��W�L�[b�:�20K>|��!C.����f�8y�d۶m
ߵ��o��Ӻu몪��G�b4����������lv�]x*,,��uRR��hI�! l.X��S�E���
xm0wL]�b0�tgy0���+���p��rTU�v�U0S�����wIxw����M`:|�]�08JMM������c�)�aÆ�ݻ㽎w-�Ql,��\y啉���3o�<Cђj<B@�\�$���dK0]����ݛ-S=ɝ��ܛ^WP�5(�T�娪��`��-1D�� G_${�G��ܛ�T��G�Ƞ������u�&�}���
��7ݩ:�qV�ȣ������u�&�}���
��7ݩ:�qV�ȣ������u�&�}���5���RA��f*�C��r�E���Tp��rH�"V��xKQ�k2���^S��:�!ĊXa��-1D�� G_${xM��,�T+b�����u�&�}���5���RA��f*�C��r�E���Tp��rH�"V��xKQ�k2���^S��:�!ĊXa��-1D�� G_${xM��,�T+b�����u�&�}���5���RA��f*�C��r�E���Tp��rH�"V��xKQ�k2���^S��:�!ĊXa��-1D�� G_${xM��,�T+b�����u�&�}���5���RA��f*�C��r�E���Tp��rH�"V��xKQ�k2���^S��:�!ĊXa��-1D�� G_${xM��,�T+b�����u\.��ӧ���fϞ]XXؿ�����M�6M�6MNN6�%##�Y�f�_~y�n��Ʊc�Θ1c�…[�n�F_${�\���T��
bE�0S���;eظq�ԩS�󟧦����dgg���k�СEEEw�}��?��7o����_|�ŗ^z   ��5k������ӧO�2e̘1���ݺuk׮�+>>>++�{���[UVV��;��H�p�
�é:�!ĊXa��-1DWɰg�J۶m���:v�8r��x`�ܹ��׿�>,(..~��ח,Y�t�����e˖-_��M?��@�o��D.^���W^���~�������ͅǥ��u��宻�B$�P}���*"�Su�C*���L�[b�:.�a���װ�˄���O?����^@�^{��x��o��r��U�V��?�Y�z����5k�|��k׮]�c���k?����������{g
W�X���ȐmΜ9�'O��/�i`BBS�ƍc�dQS${�D���T��
bE�0S��N˖-;w�����gluu5�n���@9���a�Y>� �c"��.\�a�[o�����Y�2�ׯ���a^[�l��϶n���_l۶m��|����?G"��ʰ 6�裏`X�;�O���qp:Xތ3

.��Ҍ�����
6|��6D�Gff��%�٣y2�RA���t�%?~'�ĉsrr���o���®]��^�*2k֬:�.�z���
f���ϣF�-����a�:�����O�2��*L���ݻo߾o����o�ݿ���8�=��گ���������ܽ{76ܹs'�#C�O>�d�ƍ0)��Py���;��=��S�vt���^a���������(_�up�8R/�:�u�C*(a�μ%����é�s�G}tذaW]uU��k��fԨQO=���?��p������v�
K��O~�}=��s����W^��   �"��_رc����9t��ѣG�͝<y�ԩS�O�FN�c9��?��bYUU�M���ÇaX�;�O���qp:��a^�{�����v��1��a���i‚�.�ߵ��Lj#���#Yg9�����%�8q�*�|��8-1��/���b��    ����;v�تU�����͛���?0`����x�����#���C*1p��y=��3S�L4hP���SRR`s�;8,  NĆE�:!�(x"^�/�s0�A��,����U�Vo�!ÈaRRA�Zx��t�� v
���Y�����W�e�S�wq,��1�Hq�8�H�Y��?�ClI8E1����"�J|����iŊ�FaF���K�ӟF�=p��.]�\q�_|qӦM322Ν���ɘ��n�3�뮻�EEE����͛��K/!���_����
�(���e0'�A!�1�b�
@���k40���
�,q���}�|�kX$�`��b#��}�D��rH%�eI8-q������M0�t�X���{�w0�b߲������,.,..~��W1�Z�`�����c-�B�-����F��l7��]-�
Ө�{����&4�D�0{:���L �;�'��8��q�8^u$�,�TP"\�T�wB��`0ѝ;wb�
�x��
6�_�&�a��}ժU�o�1�z�\Ѓ~b�M��ڵk�g���p"f�l���I�͈ {�ђ����>+�Xj������C�o�?��S��ƍ1݃�`H��3U�у~���}��'yaCx��ؠ4�+£�p�}��QB�,I@p(��0��Iažb߳g�9�[vL�v�z�#C"�   6<p��X����L�!�F �XR]�I����W��`����
��g�h��X;ì����-�,h�#JO�XRH�>}��E��w�e�P�!��bʒ ��Ec���̒��EdI;TWW7i҄YX#\YA�.d~����zȒ"v�����$,��'�,�.o^�СC            ���Et�q�&�,� �̳�>��Gt�q�,� b�|t�q�,� b����
��d��*1�Ő%D,����nt��]LLY]�&<KNN�hEg�*1��Ĕ%�#����YA� �{.�%�嫯��իWjjjzzz������oܸ���m��\ K��ڵC��m�&������z����~���B�ɓ'c��;w�뮻�l�"�dIu���1eI�+C�P����������*4IJJJ���,)��)K",�גv��YPPмy󔔔���/����f�jԨ������:u
C�.� !!!++��{�Lr�=��w�y,CZZ�ѣz��XG�����^���Ç�/m۶
���g@�ƍ�3gN�f�&L��z�%UWW�̏?�8�]�%y�������K.A�!C��9q��ҥK�@��i�p��,^}�U,v��a�̙�G�~��'-�,Z�(77�����<���GЉ�h_x�-Z��s!���^C��I�%��ܭaÆ��r���0`6���.Ȓ�E]Kz���s��׳Ev+9��;~��˗c���ϟ={����y�i�����x�Dg�޽�oߎ���ߏ�+W����K€�^�d φ��1cƠ�w���'��$oQגؽ��Ǐg��j������:�T㻺���gff��ŋy�$I��Z�n��
6lР������1˻�˒�����{IBf���ЃA�����e���jLYR��1�ZRii��7�馛��   ڝ:uB����������?���.��wJ���  &��o߾W^y%���  ��mk�   �^�F6�4�e˖         }���ZobD��1eI�+C�`�4|���>���?`HҶm[�w���o������]�aӥ�={N�4i�֭���6l�c�=v�}�!,;;���$  dIK�.Ebbbaa!g̘������{N��^Kb=�"ᕇ�� �{.�%yfI�-Z����Ð��TL�������?����,)++�7��_|1�!��ڵ+��g�$�%�_�7z,�9{5
TVV��@  %��L��$l��e��=Ȓ"��s�,� b�轮S��2��)K""�!K"�E�%�"Ȓ"���1eI�+A�����9�,)ze ����BLYRff&��0\�"맵��#kq.�wF1eIAD;dIA��$� \YA.�,� A�D�� K"�E�%�"Ȓ�pdIA��$� \YA.�,� A�D�� K"�E�%�"Ȓ�pdIA��$� \YA.�,� A�D�� K"�E�%�"Ȓ�pdIA��$� \YA.�,� A�D�� K"�E�cIA�C�D�� K"�E���Q�Q�qIEND�B`�

io.sf.carte.echosvg.transcoder.TranscoderException: null
Enclosed Exception:
Invalid UTF-8 start byte 0x89
 at [row,col {unknown-source}]: [1,2]
    at org.plantuml.idea.preview.image.svg.batik.MySvgDocumentFactoryKt.createSvgDocument(MySvgDocumentFactory.kt:32)
    at org.plantuml.idea.preview.image.svg.batik.MySvgDocumentFactoryKt.createSvgDocument(MySvgDocumentFactory.kt:26)
    at org.plantuml.idea.preview.image.svg.MyImageEditorImpl$MyScaledImageProvider.createImage(MyImageEditorImpl.java:228)
    at org.plantuml.idea.preview.image.svg.MyImageEditorImpl$MyScaledImageProvider.apply(MyImageEditorImpl.java:208)
    at org.plantuml.idea.preview.image.svg.MyImageEditorImpl$MyScaledImageProvider.apply(MyImageEditorImpl.java:185)
    at org.intellij.images.ui.ImageComponent$ImageDocumentImpl.lambda$setValue$2(ImageComponent.java:309)
    at org.intellij.images.ui.ImageComponent$ImageDocumentImpl.getValue(ImageComponent.java:296)
    at org.intellij.images.ui.ImageComponent$ImageDocumentImpl.getValue(ImageComponent.java:291)
    at org.plantuml.idea.preview.image.svg.MyImageEditorUI$DocumentChangeListener.stateChanged(MyImageEditorUI.java:634)
    at org.intellij.images.ui.ImageComponent$ImageDocumentImpl.fireChangeEvent(ImageComponent.java:330)
    at org.intellij.images.ui.ImageComponent$ImageDocumentImpl.setFormat(ImageComponent.java:325)
    at org.plantuml.idea.preview.image.svg.MyImageEditorUI.setImageProvider(MyImageEditorUI.java:283)
    at org.plantuml.idea.preview.image.svg.MyImageEditorImpl.setValue(MyImageEditorImpl.java:93)
    at org.plantuml.idea.preview.image.svg.MyImageEditorImpl.<init>(MyImageEditorImpl.java:87)
    at org.plantuml.idea.preview.image.ImageContainerSvg.initEditor(ImageContainerSvg.java:155)
    at org.plantuml.idea.rendering.ImageItem.initImage(ImageItem.java:189)
    at org.plantuml.idea.rendering.RenderCommand.lambda$displayResult$0(RenderCommand.java:173)
    at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625)
    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
    at java.base/java.util.stream.ForEachOps$ForEachTask.compute(ForEachOps.java:290)
    at java.base/java.util.concurrent.CountedCompleter.exec(CountedCompleter.java:754)
    at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373)
    at java.base/java.util.concurrent.ForkJoinTask.invoke(ForkJoinTask.java:686)
    at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateParallel(ForEachOps.java:159)
    at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateParallel(ForEachOps.java:173)
    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:233)
    at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
    at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:765)
    at org.plantuml.idea.rendering.RenderCommand.lambda$displayResult$2(RenderCommand.java:171)
    at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:992)
    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
    at java.base/java.util.stream.ForEachOps$ForEachTask.compute(ForEachOps.java:290)
    at java.base/java.util.concurrent.CountedCompleter.exec(CountedCompleter.java:754)
    at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373)
    at java.base/java.util.concurrent.ForkJoinTask.invoke(ForkJoinTask.java:686)
    at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateParallel(ForEachOps.java:159)
    at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateParallel(ForEachOps.java:173)
    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:233)
    at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
    at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:765)
    at org.plantuml.idea.rendering.RenderCommand.displayResult(RenderCommand.java:170)
    at org.plantuml.idea.rendering.LazyApplicationPoolExecutor$MyRunnable.run(LazyApplicationPoolExecutor.java:131)
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
    at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: com.fasterxml.aalto.WFCException: Invalid UTF-8 start byte 0x89
 at [row,col {unknown-source}]: [1,2]
    at com.fasterxml.aalto.in.XmlScanner.reportInputProblem(XmlScanner.java:1333)
    at com.fasterxml.aalto.in.ByteBasedScanner.reportInvalidInitial(ByteBasedScanner.java:446)
    at com.fasterxml.aalto.in.Utf8Scanner.decodeCharForError(Utf8Scanner.java:2708)
    at com.fasterxml.aalto.in.StreamScanner.nextFromProlog(StreamScanner.java:187)
    at com.fasterxml.aalto.stax.StreamReaderImpl.next(StreamReaderImpl.java:790)
    at org.plantuml.idea.preview.image.svg.batik.MySvgDocumentFactoryKt.buildDocument(MySvgDocumentFactory.kt:94)
    at org.plantuml.idea.preview.image.svg.batik.MySvgDocumentFactoryKt.createSvgDocument(MySvgDocumentFactory.kt:30)
    ... 48 more