问:
Shopware 6 TWIG / HTML Syntax question csv feed komma separated
i am building a twig template for shopware 6 productfeed for ebay.

If i separate the template with semicolon, all the rows and columns are clean and sorted. If i change the delimiter to comma it gets screwed :-/ Can someone check my code and help me with the right html syntax? I think something with the divs and ul's and li's have to be enclosed ?#
After rendering the template with products (some have commas in the description) the feed gets extra columns and so on i guess something with the desription part has to be faulty.

`

```<code>"{{ product.productNumber }}",{#- -#}
"de_DE",{#- -#}
{%- if context.extensions.digahoodextension.varianttitles[product.id] is defined -%}
"{{ product.translated.name|length > 60 ? product.translated.name|slice(0, 85) : product.translated.name }} {{ context.extensions.digahoodextension.varianttitles[product.id]|length > 60 ? context.extensions.digahoodextension.varianttitles[product.id]|slice(0, 85) ~ '...' : context.extensions.digahoodextension.varianttitles[product.id] }} {% if product.customFields.custom_hoodtitle_title is defined %}{{ product.customFields.custom_hoodtitle_title }}{% endif %}",{#- -#}
{% else %}
"{{ product.translated.name|length > 120 ? product.translated.name|slice(0, 85) ~ '...' : product.translated.name }} {% if product.customFields.custom_hoodtitle_title is defined %}{{ product.customFields.custom_hoodtitle_title }}{% endif %}",{#- -#}
{%- endif -%}
,{#- -#}
"{{ product.translated.description|replace({"\n":' ', "\r":' ','"':'""'})|raw }}",{#- -#}
,{#- -#}
,{#- -#}
"{{product.cover.media.url}}",{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(2,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%},{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(3,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%},{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(4,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%},{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(5,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%},{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(6,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%},{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(7,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%},{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(8,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%},{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(9,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%},{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(10,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%},{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(11,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%},{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(12,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%},{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(13,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%},{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(14,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%},{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(15,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%},{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(16,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%},{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(17,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%},{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(18,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%},{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(19,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%},{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(20,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%},{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(21,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%},{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(22,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%},{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(23,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%},{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(24,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%},{#- -#}
,{#- -#}
,{#- -#}
{%- if product.ean is defined and product.ean is not null -%}"{{ product.ean|u.truncate(16) }}"{%- endif -%},{#- -#}
"{{ product.productNumber }}",{#- -#}
{%- if product.manufacturer is not null -%}
"{{ product.manufacturer.name }}"
{%- endif -%},{#- -#}
,{#- -#}
{% for properties in product.properties|slice(1,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(1,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(2,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(2,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(3,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(3,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(4,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(4,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(5,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(5,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(6,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(6,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(7,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(7,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(8,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(8,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(9,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(9,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(10,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(10,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(11,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(11,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(12,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(12,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(13,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(13,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(14,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(14,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(15,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(15,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(16,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(16,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(17,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(17,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(18,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(18,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(19,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(19,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(20,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(20,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(21,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(21,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(22,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(22,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(23,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(23,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(24,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(24,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(25,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(25,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(26,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(26,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(27,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(27,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(28,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(28,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(29,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(29,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(30,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(30,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(31,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(31,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(32,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(32,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(33,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(33,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(34,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(34,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(35,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(35,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(36,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(36,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(37,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(37,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(38,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(38,1) %}{{ properties.name }}{% endfor %},{#- -#}
"NEW",{#- -#}
,{#- -#}
"METRIC",{#- -#}
{%- if product.length is defined and product.length is not null -%}{{ product.length/10 }} cm{%- endif -%},{#- -#}
{%- if product.width is defined and product.width is not null -%}{{ product.width/10 }} cm{%- endif -%},{#- -#}
{%- if product.height is defined and product.height is not null -%}{{ product.height/10 }} cm{%- endif -%},{#- -#}
{%- if product.weight is defined and product.weight is not null -%}{{ product.weight|round }}{%- endif -%},{#- -#}
"0",{#- -#}
,{#- -#}
"{{ product.stock }}",{#- -#}
"EBAY_DE",{#- -#}
"{%- set break = false -%}{%- for pc in product.categories -%}{%- if break == false -%}{%- if pc.customFields -%}{%- if pc.customFields.diga_ebay_category_field is defined and pc.customFields.diga_ebay_category_field is not null -%}{{ pc.customFields.diga_ebay_category_field }}{% set break = true %}{%- endif -%}{%- endif -%}{%- endif -%}{%- endfor -%}",{#- -#}
,{#- -#}
"shipping",{#- -#}
"payment",{#- -#}
"return",{#- -#}
,{#- -#}
,{#- -#}
,{#- -#}
{%- if context.extensions.digahoodextension.prices is defined and context.extensions.digahoodextension.prices is not null -%}{{ context.extensions.digahoodextension.prices[product.id]}}{%- endif -%},{#- -#}

</code>```

`

Thanks in advance and best regards
mark

I just search and replaced the semicolons to commas this is the original code.

`

```<code>"{{ product.productNumber }}";{#- -#}
"de_DE";{#- -#}
{%- if context.extensions.digahoodextension.varianttitles[product.id] is defined -%}
"{{ product.translated.name|length > 60 ? product.translated.name|slice(0, 85) : product.translated.name }} {{ context.extensions.digahoodextension.varianttitles[product.id]|length > 60 ? context.extensions.digahoodextension.varianttitles[product.id]|slice(0, 85) ~ '...' : context.extensions.digahoodextension.varianttitles[product.id] }} {% if product.customFields.custom_hoodtitle_title is defined %}{{ product.customFields.custom_hoodtitle_title }}{% endif %}";{#- -#}
{% else %}
"{{ product.translated.name|length > 120 ? product.translated.name|slice(0, 85) ~ '...' : product.translated.name }} {% if product.customFields.custom_hoodtitle_title is defined %}{{ product.customFields.custom_hoodtitle_title }}{% endif %}";{#- -#}
{%- endif -%}
;{#- -#}
"{{ product.translated.description|replace({"\n":' ', "\r":' ','"':'""'})|raw }}",{#- -#}
;{#- -#}
;{#- -#}
"{{product.cover.media.url}}";{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(2,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%};{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(3,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%};{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(4,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%};{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(5,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%};{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(6,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%};{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(7,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%};{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(8,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%};{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(9,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%};{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(10,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%};{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(11,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%};{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(12,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%};{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(13,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%};{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(14,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%};{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(15,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%};{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(16,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%};{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(17,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%};{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(18,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%};{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(19,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%};{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(20,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%};{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(21,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%};{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(22,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%};{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(23,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%};{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(24,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%};{#- -#}
;{#- -#}
;{#- -#}
{%- if product.ean is defined and product.ean is not null -%}"{{ product.ean|u.truncate(16) }}"{%- endif -%};{#- -#}
"{{ product.productNumber }}";{#- -#}
{%- if product.manufacturer is not null -%}
"{{ product.manufacturer.name }}"
{%- endif -%};{#- -#}
;{#- -#}
{% for properties in product.properties|slice(1,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(1,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(2,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(2,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(3,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(3,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(4,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(4,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(5,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(5,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(6,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(6,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(7,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(7,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(8,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(8,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(9,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(9,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(10,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(10,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(11,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(11,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(12,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(12,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(13,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(13,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(14,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(14,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(15,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(15,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(16,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(16,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(17,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(17,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(18,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(18,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(19,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(19,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(20,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(20,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(21,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(21,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(22,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(22,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(23,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(23,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(24,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(24,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(25,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(25,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(26,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(26,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(27,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(27,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(28,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(28,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(29,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(29,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(30,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(30,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(31,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(31,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(32,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(32,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(33,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(33,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(34,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(34,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(35,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(35,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(36,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(36,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(37,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(37,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(38,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(38,1) %}{{ properties.name }}{% endfor %};{#- -#}
"NEW";{#- -#}
;{#- -#}
"METRIC";{#- -#}
{%- if product.length is defined and product.length is not null -%}{{ product.length/10 }} cm{%- endif -%};{#- -#}
{%- if product.width is defined and product.width is not null -%}{{ product.width/10 }} cm{%- endif -%};{#- -#}
{%- if product.height is defined and product.height is not null -%}{{ product.height/10 }} cm{%- endif -%};{#- -#}
{%- if product.weight is defined and product.weight is not null -%}{{ product.weight|round }}{%- endif -%};{#- -#}
"0";{#- -#}
;{#- -#}
"{{ product.stock }}";{#- -#}
"EBAY_DE";{#- -#}
"{%- set break = false -%}{%- for pc in product.categories -%}{%- if break == false -%}{%- if pc.customFields -%}{%- if pc.customFields.diga_ebay_category_field is defined and pc.customFields.diga_ebay_category_field is not null -%}{{ pc.customFields.diga_ebay_category_field }}{% set break = true %}{%- endif -%}{%- endif -%}{%- endif -%}{%- endfor -%}";{#- -#}
;{#- -#}
;{#- -#}
;{#- -#}
;{#- -#}
;{#- -#}
;{#- -#}
;{#- -#}
{%- if context.extensions.digahoodextension.prices is defined and context.extensions.digahoodextension.prices is not null -%}{{ context.extensions.digahoodextension.prices[product.id]}}{%- endif -%};{#- -#}

</code>```

`

Body:
i am building a twig template for shopware 6 productfeed for ebay.

If i separate the template with semicolon, all the rows and columns are clean and sorted. If i change the delimiter to comma it gets screwed :-/ Can someone check my code and help me with the right html syntax? I think something with the divs and ul's and li's have to be enclosed ?#
After rendering the template with products (some have commas in the description) the feed gets extra columns and so on i guess something with the desription part has to be faulty.

`

"{{ product.productNumber }}",{#- -#}
"de_DE",{#- -#}
{%- if context.extensions.digahoodextension.varianttitles[product.id] is defined -%}
"{{ product.translated.name|length > 60 ? product.translated.name|slice(0, 85) : product.translated.name }} {{ context.extensions.digahoodextension.varianttitles[product.id]|length > 60 ? context.extensions.digahoodextension.varianttitles[product.id]|slice(0, 85) ~ '...' : context.extensions.digahoodextension.varianttitles[product.id] }} {% if product.customFields.custom_hoodtitle_title is defined %}{{ product.customFields.custom_hoodtitle_title }}{% endif %}",{#- -#}
{% else %}
"{{ product.translated.name|length > 120 ? product.translated.name|slice(0, 85) ~ '...' : product.translated.name }} {% if product.customFields.custom_hoodtitle_title is defined %}{{ product.customFields.custom_hoodtitle_title }}{% endif %}",{#- -#}
{%- endif -%}
,{#- -#}
"{{ product.translated.description|replace({"\n":' ', "\r":' ','"':'""'})|raw }}",{#- -#}
,{#- -#}
,{#- -#}
"{{product.cover.media.url}}",{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(2,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%},{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(3,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%},{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(4,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%},{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(5,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%},{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(6,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%},{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(7,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%},{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(8,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%},{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(9,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%},{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(10,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%},{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(11,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%},{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(12,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%},{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(13,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%},{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(14,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%},{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(15,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%},{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(16,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%},{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(17,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%},{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(18,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%},{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(19,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%},{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(20,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%},{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(21,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%},{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(22,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%},{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(23,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%},{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(24,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%},{#- -#}
,{#- -#}
,{#- -#}
{%- if product.ean is defined and product.ean is not null -%}"{{ product.ean|u.truncate(16) }}"{%- endif -%},{#- -#}
"{{ product.productNumber }}",{#- -#}
{%- if product.manufacturer is not null -%}
"{{ product.manufacturer.name }}"
{%- endif -%},{#- -#}
,{#- -#}
{% for properties in product.properties|slice(1,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(1,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(2,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(2,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(3,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(3,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(4,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(4,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(5,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(5,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(6,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(6,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(7,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(7,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(8,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(8,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(9,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(9,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(10,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(10,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(11,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(11,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(12,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(12,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(13,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(13,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(14,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(14,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(15,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(15,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(16,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(16,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(17,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(17,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(18,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(18,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(19,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(19,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(20,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(20,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(21,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(21,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(22,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(22,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(23,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(23,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(24,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(24,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(25,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(25,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(26,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(26,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(27,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(27,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(28,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(28,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(29,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(29,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(30,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(30,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(31,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(31,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(32,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(32,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(33,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(33,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(34,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(34,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(35,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(35,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(36,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(36,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(37,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(37,1) %}{{ properties.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(38,1) %}{{ properties.group.name }}{% endfor %},{#- -#}
{% for properties in product.properties|slice(38,1) %}{{ properties.name }}{% endfor %},{#- -#}
"NEW",{#- -#}
,{#- -#}
"METRIC",{#- -#}
{%- if product.length is defined and product.length is not null -%}{{ product.length/10 }} cm{%- endif -%},{#- -#}
{%- if product.width is defined and product.width is not null -%}{{ product.width/10 }} cm{%- endif -%},{#- -#}
{%- if product.height is defined and product.height is not null -%}{{ product.height/10 }} cm{%- endif -%},{#- -#}
{%- if product.weight is defined and product.weight is not null -%}{{ product.weight|round }}{%- endif -%},{#- -#}
"0",{#- -#}
,{#- -#}
"{{ product.stock }}",{#- -#}
"EBAY_DE",{#- -#}
"{%- set break = false -%}{%- for pc in product.categories -%}{%- if break == false -%}{%- if pc.customFields -%}{%- if pc.customFields.diga_ebay_category_field is defined and pc.customFields.diga_ebay_category_field is not null -%}{{ pc.customFields.diga_ebay_category_field }}{% set break = true %}{%- endif -%}{%- endif -%}{%- endif -%}{%- endfor -%}",{#- -#}
,{#- -#}
"shipping",{#- -#}
"payment",{#- -#}
"return",{#- -#}
,{#- -#}
,{#- -#}
,{#- -#}
{%- if context.extensions.digahoodextension.prices is defined and context.extensions.digahoodextension.prices is not null -%}{{ context.extensions.digahoodextension.prices[product.id]}}{%- endif -%},{#- -#}

`

Thanks in advance and best regards
mark

I just search and replaced the semicolons to commas this is the original code.

`

"{{ product.productNumber }}";{#- -#}
"de_DE";{#- -#}
{%- if context.extensions.digahoodextension.varianttitles[product.id] is defined -%}
"{{ product.translated.name|length > 60 ? product.translated.name|slice(0, 85) : product.translated.name }} {{ context.extensions.digahoodextension.varianttitles[product.id]|length > 60 ? context.extensions.digahoodextension.varianttitles[product.id]|slice(0, 85) ~ '...' : context.extensions.digahoodextension.varianttitles[product.id] }} {% if product.customFields.custom_hoodtitle_title is defined %}{{ product.customFields.custom_hoodtitle_title }}{% endif %}";{#- -#}
{% else %}
"{{ product.translated.name|length > 120 ? product.translated.name|slice(0, 85) ~ '...' : product.translated.name }} {% if product.customFields.custom_hoodtitle_title is defined %}{{ product.customFields.custom_hoodtitle_title }}{% endif %}";{#- -#}
{%- endif -%}
;{#- -#}
"{{ product.translated.description|replace({"\n":' ', "\r":' ','"':'""'})|raw }}",{#- -#}
;{#- -#}
;{#- -#}
"{{product.cover.media.url}}";{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(2,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%};{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(3,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%};{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(4,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%};{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(5,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%};{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(6,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%};{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(7,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%};{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(8,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%};{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(9,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%};{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(10,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%};{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(11,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%};{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(12,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%};{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(13,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%};{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(14,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%};{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(15,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%};{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(16,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%};{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(17,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%};{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(18,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%};{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(19,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%};{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(20,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%};{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(21,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%};{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(22,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%};{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(23,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%};{#- -#}
{%- if product.media|length > 1 -%}
    {%- for mediaAssociation in product.media|slice(24,1) -%}
        {{ mediaAssociation.media.url }}
    {%- endfor -%}
{%- endif -%};{#- -#}
;{#- -#}
;{#- -#}
{%- if product.ean is defined and product.ean is not null -%}"{{ product.ean|u.truncate(16) }}"{%- endif -%};{#- -#}
"{{ product.productNumber }}";{#- -#}
{%- if product.manufacturer is not null -%}
"{{ product.manufacturer.name }}"
{%- endif -%};{#- -#}
;{#- -#}
{% for properties in product.properties|slice(1,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(1,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(2,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(2,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(3,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(3,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(4,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(4,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(5,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(5,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(6,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(6,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(7,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(7,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(8,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(8,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(9,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(9,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(10,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(10,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(11,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(11,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(12,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(12,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(13,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(13,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(14,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(14,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(15,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(15,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(16,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(16,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(17,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(17,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(18,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(18,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(19,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(19,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(20,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(20,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(21,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(21,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(22,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(22,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(23,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(23,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(24,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(24,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(25,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(25,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(26,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(26,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(27,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(27,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(28,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(28,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(29,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(29,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(30,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(30,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(31,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(31,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(32,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(32,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(33,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(33,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(34,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(34,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(35,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(35,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(36,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(36,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(37,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(37,1) %}{{ properties.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(38,1) %}{{ properties.group.name }}{% endfor %};{#- -#}
{% for properties in product.properties|slice(38,1) %}{{ properties.name }}{% endfor %};{#- -#}
"NEW";{#- -#}
;{#- -#}
"METRIC";{#- -#}
{%- if product.length is defined and product.length is not null -%}{{ product.length/10 }} cm{%- endif -%};{#- -#}
{%- if product.width is defined and product.width is not null -%}{{ product.width/10 }} cm{%- endif -%};{#- -#}
{%- if product.height is defined and product.height is not null -%}{{ product.height/10 }} cm{%- endif -%};{#- -#}
{%- if product.weight is defined and product.weight is not null -%}{{ product.weight|round }}{%- endif -%};{#- -#}
"0";{#- -#}
;{#- -#}
"{{ product.stock }}";{#- -#}
"EBAY_DE";{#- -#}
"{%- set break = false -%}{%- for pc in product.categories -%}{%- if break == false -%}{%- if pc.customFields -%}{%- if pc.customFields.diga_ebay_category_field is defined and pc.customFields.diga_ebay_category_field is not null -%}{{ pc.customFields.diga_ebay_category_field }}{% set break = true %}{%- endif -%}{%- endif -%}{%- endif -%}{%- endfor -%}";{#- -#}
;{#- -#}
;{#- -#}
;{#- -#}
;{#- -#}
;{#- -#}
;{#- -#}
;{#- -#}
{%- if context.extensions.digahoodextension.prices is defined and context.extensions.digahoodextension.prices is not null -%}{{ context.extensions.digahoodextension.prices[product.id]}}{%- endif -%};{#- -#}

`


来源: stackexchange

问:
MongoError: unknown top level operator: $match. If you have a field name that starts with a '$' symbol, consider using $getField or $setField
```<code>    if(keyword){
      keywordFilterQuery =   {"$match":{$or: [{title : { $regex: keyword, $options: "i" }},{street : { $regex: keyword, $options: "i" }}],...search}}
    } else if(keyword === "" || keyword === undefined || keyword === null) {
      keywordFilterQuery= {search}
}
    if(keyword_features){
      filterQuery = {"$match":{$or: [{special_features : {$regex: keyword_features, $options: "i"}}, {facilities : {$regex: keyword_features, $options: "i"}}, {fixtures_fittings : {$regex: keyword_features, $options: "i"}}],...keywordFilterQuery}}
    }
      else if(keyword_features === "" || keyword_features === undefined || keyword_features === null) {
      filterQuery = keywordFilterQuery
    }

    const results = await model.aggregate([

      filterQuery
])

</code>```

If the keyword comes from the front end it must search in the MongoDB fields whether it is matching with title or street. If it is matching it will return that into keywordFilterQuery and checks whether there are keyword_features from the front end, if it matches with the field special_features or facilities it will return it to filterQuery, and then it is passed to the aggregation. This is what I needed.

But here while I am passing I got an error like this:

**
MongoError: unknown top-level operator: $match. If you have a field name that starts with a '$' symbol, consider using $getField or $setField.
**

While I am passing keywordFilterQuery directly to the aggregation, I got a result matching that.

Please help!

ContentLicense: CC BY-SA 4.0

Body:
    if(keyword){
      keywordFilterQuery =   {"$match":{$or: [{title : { $regex: keyword, $options: "i" }},{street : { $regex: keyword, $options: "i" }}],...search}}
    } else if(keyword === "" || keyword === undefined || keyword === null) {
      keywordFilterQuery= {search}
}
    if(keyword_features){
      filterQuery = {"$match":{$or: [{special_features : {$regex: keyword_features, $options: "i"}}, {facilities : {$regex: keyword_features, $options: "i"}}, {fixtures_fittings : {$regex: keyword_features, $options: "i"}}],...keywordFilterQuery}}
    }
      else if(keyword_features === "" || keyword_features === undefined || keyword_features === null) {
      filterQuery = keywordFilterQuery
    }

    const results = await model.aggregate([

      filterQuery
])

If the keyword comes from the front end it must search in the MongoDB fields whether it is matching with title or street. If it is matching it will return that into keywordFilterQuery and checks whether there are keyword_features from the front end, if it matches with the field special_features or facilities it will return it to filterQuery, and then it is passed to the aggregation. This is what I needed.

But here while I am passing I got an error like this:

**
MongoError: unknown top-level operator: $match. If you have a field name that starts with a '$' symbol, consider using $getField or $setField.
**

While I am passing keywordFilterQuery directly to the aggregation, I got a result matching that.

Please help!


问:
How to stitch drone images using jupyter lab?
I want to stitch some images from my drone mission. I used jupyter lab. Is there anyone who knows the code/script for that?

I hope i can run the stitching process by jupyter lab.


问:
wpf pass class list instance to datagrid
sorry, i am new in wpf.i want show xml file value to datagrid[similar to attached image] at the time of settingwindow load by using class instance.Also want to save datagrid value to xml file .how can i do this?

settingWindow.xaml file:

```<code><DataGrid Name="dataGridDG" Grid.RowSpan="2" ItemsSource="{Binding}" Margin="0,150,0,-401">
            <DataGrid.Columns>
                <DataGridTextColumn Header="Generate Name" Binding="{Binding generateName}" />
            <DataGridTextColumn Header="File Name" Binding="{Binding fileName}" />
            </DataGrid.Columns>
        </DataGrid>

</code>```

SettingWindow.xaml.cs file:

```<code>namespace FileGenerator
{
　　public partial class SettingWindow : Window
    {
        //private ICollectionView collectionView;
        public SettingWindow()
        {
            InitializeComponent();
            DataContext = App.staticUserSetting.listDataGridView;
        }
    }
}
</code>```

MainWindow.xaml.cs file:

```<code>
namespace FileGenerator
{

    public partial class MainWindow : Window
    {

        public MainWindow()
        {
            InitializeComponent();
        }
        private void MainWindow_Loaded(object sender, RoutedEventArgs e)
        {
            App.staticUserSetting = CustomerSetting.Read();
        }

        private void ButtonSetting_Click(object sender, EventArgs e)
        {
            try
            {
                var windowSetting = new SettingWindow();
                windowSetting.ShowDialog();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error : " + ex.Message, "Error", MessageBoxButton.OK,        MessageBoxImage.Error);
            }

        }
    }

</code>```

App.xaml.cs file

```<code>
namespace FileGenerator
{

    public partial class App : Application
    {
        public static UserSetting staticUserSetting;
    }
}

</code>```

CustomerSetting.cs file:

```<code>
namespace FileGenerator
{
    public class CustomerSetting
    {
        public string zipPassword;
        public List<ClassDV_List> listDataGridView;

        public static readonly string userFilePath = AppDomain.CurrentDomain.BaseDirectory + "CustomerSetting.xml";

        public CustomerserSetting()
        {
            zipPassword = "bcdv";
            listDataGridView = new List<ClassDVList>
            {

            };
        }

        public void Save()
        {
            var serializer = new XmlSerializer(typeof(CustomerSetting));
            using (var writer = new StreamWriter(userFilePath))
            {
                serializer.Serialize(writer, this);
            }
        }

        public static CustomerSetting Read()
        {
            try
            {
                XmlSerializer xmlSerializer = new XmlSerializer(typeof(CustomerSetting));
                using (StreamReader streamReader = new StreamReader(userFilePath))
                {
                    return (CustomerSetting)xmlSerializer.Deserialize(streamReader);
                }
            }
            catch (FileNotFoundException)
            {
                return new CustomerSetting();
            }
        }
    }
    public class ClassDVList
    {
        public string generateName;
        public string fileName;
    }

</code>```

Body:
sorry, i am new in wpf.i want show xml file value to datagrid[similar to attached image] at the time of settingwindow load by using class instance.Also want to save datagrid value to xml file .how can i do this?

settingWindow.xaml file:

<DataGrid Name="dataGridDG" Grid.RowSpan="2" ItemsSource="{Binding}" Margin="0,150,0,-401">
            <DataGrid.Columns>
                <DataGridTextColumn Header="Generate Name" Binding="{Binding generateName}" />
            <DataGridTextColumn Header="File Name" Binding="{Binding fileName}" />
            </DataGrid.Columns>
        </DataGrid>

SettingWindow.xaml.cs file:

namespace FileGenerator
{
　　public partial class SettingWindow : Window
    {
        //private ICollectionView collectionView;
        public SettingWindow()
        {
            InitializeComponent();
            DataContext = App.staticUserSetting.listDataGridView;
        }
    }
}

MainWindow.xaml.cs file:

namespace FileGenerator
{

    public partial class MainWindow : Window
    {

        public MainWindow()
        {
            InitializeComponent();
        }
        private void MainWindow_Loaded(object sender, RoutedEventArgs e)
        {
            App.staticUserSetting = CustomerSetting.Read();
        }

        private void ButtonSetting_Click(object sender, EventArgs e)
        {
            try
            {
                var windowSetting = new SettingWindow();
                windowSetting.ShowDialog();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error : " + ex.Message, "Error", MessageBoxButton.OK,        MessageBoxImage.Error);
            }

        }
    }

App.xaml.cs file

namespace FileGenerator
{

    public partial class App : Application
    {
        public static UserSetting staticUserSetting;
    }
}

CustomerSetting.cs file:

namespace FileGenerator
{
    public class CustomerSetting
    {
        public string zipPassword;
        public List<ClassDV_List> listDataGridView;

        public static readonly string userFilePath = AppDomain.CurrentDomain.BaseDirectory + "CustomerSetting.xml";

        public CustomerserSetting()
        {
            zipPassword = "bcdv";
            listDataGridView = new List<ClassDVList>
            {

            };
        }

        public void Save()
        {
            var serializer = new XmlSerializer(typeof(CustomerSetting));
            using (var writer = new StreamWriter(userFilePath))
            {
                serializer.Serialize(writer, this);
            }
        }

        public static CustomerSetting Read()
        {
            try
            {
                XmlSerializer xmlSerializer = new XmlSerializer(typeof(CustomerSetting));
                using (StreamReader streamReader = new StreamReader(userFilePath))
                {
                    return (CustomerSetting)xmlSerializer.Deserialize(streamReader);
                }
            }
            catch (FileNotFoundException)
            {
                return new CustomerSetting();
            }
        }
    }
    public class ClassDVList
    {
        public string generateName;
        public string fileName;
    }


问:
Can you use the Kotlin DeepRecursiveFunction to generate a sequence?
I just discovered Kotlin's DeepRecursiveFunction.

Is it possible to use it to generate a Sequence?

I.e. can you use it to generate the heap based version of this recursive function:

```<code>fun <T> T.recursiveFlatten(getChildren: (T) -> Sequence<T>): Sequence<T> = sequence {
    yield(this@recursiveFlatten)
    for (child in getChildren(this@recursiveFlatten)) {
        yieldAll(child.recursiveFlatten(getChildren))
    }
}
</code>```

Body:
I just discovered Kotlin's DeepRecursiveFunction.

Is it possible to use it to generate a Sequence?

I.e. can you use it to generate the heap based version of this recursive function:

fun <T> T.recursiveFlatten(getChildren: (T) -> Sequence<T>): Sequence<T> = sequence {
    yield(this@recursiveFlatten)
    for (child in getChildren(this@recursiveFlatten)) {
        yieldAll(child.recursiveFlatten(getChildren))
    }
}


问:
How to use UI application to set static IP address in embedded linux
I'm using Jetson Nano as my embedded Linux SOC. I develop a QT UI application on it. Now I'd like to know if there is any way to use this UI application to set static IP address and make it instantly effective after I set it up without rebooting? Thank you.

i'm expecting the answer.....


问:
Is there a way to calculate f''(x)=0 in java?
I need to know if there's a way to find f''(x)  = 0 in Java. I need this to calculate the inflection point of a "random" function. I've done research, but I wasn't able to find a correct answer (I can't calculate this in other languages like Python etc. I need to find a solution in Java). Any idea?

For now, I only have f''(x), but I don't know where to start to find f''(x)=0

double[] x = { 0, -0.839, 1.33, -1.148, -1.0338, -0.8989 };
double[] y = { -2, 0, -0.81, 2.152, 1.24267, 0.342398 }; // test
double[] root;
PolynomialRegression regression = new PolynomialRegression(x, y, 3);
Function f = new Function(regression.toString());
Derivative deriv = new Derivative(f);
Function derive = deriv.findDerivative(f);
Derivative derivSeconde = new Derivative(derive);

System.out.println("Derivative is "+deriv.findDerivative(f).f);
System.out.println(regression.toString());
System.out.println("Second derivative is "+derivSeconde.findDerivative(derive).f);
```
<p>Output:</p>
<pre class="lang-none prettyprint-override"><code>Derivative is -3.0045962x^2+4.0051484x+0.0028687536
-1.0015320813678574x^3+2.002574163543064x^2+0.002868753687649257x+-1.9999326254109058
Second derivative is -6.0091925x+4.0051484
</code>```

Body:
I need to know if there's a way to find f''(x)  = 0 in Java. I need this to calculate the inflection point of a "random" function. I've done research, but I wasn't able to find a correct answer (I can't calculate this in other languages like Python etc. I need to find a solution in Java). Any idea?

For now, I only have f''(x), but I don't know where to start to find f''(x)=0

double[] x = { 0, -0.839, 1.33, -1.148, -1.0338, -0.8989 };
double[] y = { -2, 0, -0.81, 2.152, 1.24267, 0.342398 }; // test
double[] root;
PolynomialRegression regression = new PolynomialRegression(x, y, 3);
Function f = new Function(regression.toString());
Derivative deriv = new Derivative(f);
Function derive = deriv.findDerivative(f);
Derivative derivSeconde = new Derivative(derive);

System.out.println("Derivative is "+deriv.findDerivative(f).f);
System.out.println(regression.toString());
System.out.println("Second derivative is "+derivSeconde.findDerivative(derive).f);

Output:

Derivative is -3.0045962x^2+4.0051484x+0.0028687536
-1.0015320813678574x^3+2.002574163543064x^2+0.002868753687649257x+-1.9999326254109058
Second derivative is -6.0091925x+4.0051484


问:
change order of x-axis in ggplot2 in shiny app
I have a shiny app created that plots metagenome data using ggplot2, phyloseq, and plotly with dplyr and tidyr. It creates pretty good stacked barplots and heatmaps. The only issue is that it reorders sample names on the x-axis, for example. 1–10 are arranged as 1, 10, 2, 5, 6... How do I correct that bug?

I have tried forcats and reorder but nothing is happening. I believe they are required to be converted to factors, but I'm not sure and i dont know how to do it.

source code is:

```<code>plot_barplot <- function(
genera,
samples,
cutoff,
modus
){
if (length(samples) == 0){
messagetext <- list(
x = 1,
y = 1,
text = "No sample selected \nplease select a sample"
font = list(size = 28)
)
 plot <- plot_ly(as.data.frame(NULL))
 plot <- plot %>% layout(annotations = messagetext,
                         yaxis = list(visible = FALSE),
                         xaxis = list(visible = FALSE))
 } else {
 plotdata <- dplyr::select(genera$Abundance, all_of(samples))
  if (ncol(plotdata) > 1) {
  plotdata$Total <- rowSums(plotdata)
  circ = F
 } else if (ncol(plotdata) == 1) {
  plotdata$copy <- plotdata[1]
  plotdata$Total <- rowSums(plotdata) / 2
  circ = T
 }
 plotdata <- plotdata[order(plotdata$Total,
                           decreasing = T),]
 plotdata <- rbind(plotdata[1:cutoff,],
                  colSums(plotdata[(cutoff + 1):nrow(plotdata),]))
 row.names(plotdata)[nrow(plotdata)] <- "#others"
 if (circ == T | modus == "total"){
  plotdata <- dplyr::select(plotdata, Total)
  plotdata$Name <- row.names(plotdata)
  plot <- plotly::plot_ly(plotdata,
                          labels = ~Name,
                          values = ~Total,
                          type = "pie")
 } else {
  plotdata <- dplyr::select(plotdata, -Total)
  if (modus == "hide_others"){
    plotdata <- dplyr::slice_head(plotdata,
    n = (nrow(plotdata)    -1))
  }
  datapoints <- colnames(plotdata)
  plotdata$Name <- row.names(plotdata)
  plotdata <- tidyr::pivot_longer(plotdata,
                                  datapoints,
                                  names_to = "Sample",
                                  values_to = "Abundance")
  if (modus %in% c("absolute", "hide_others")){
    plot <- ggplot2::ggplot(plotdata,
                            ggplot2::aes(fill = Name,
                                         y = Abundance,
                                         x = sample))
    plot <- plot + ggplot2::geom_bar(position = "stack",
                                     stat = "identity")
    plot <- plot + ggplot2::theme_classic()
    plot <- plotly::ggplotly(plot)
  } else {
    plot <- ggplot2::ggplot(plotdata,
                            ggplot2::aes(fill = Name,
                                         y = Abundance,
                                         x = Sample))
    plot <- plot + ggplot2::geom_bar(position = "fill",
                                     stat = "identity")
    plot <- plot + ggplot2::theme_classic()
    plot <- plotly::ggplotly(plot)
    }
   }
  }

    return(plot)
   }
</code>```

Body:
I have a shiny app created that plots metagenome data using ggplot2, phyloseq, and plotly with dplyr and tidyr. It creates pretty good stacked barplots and heatmaps. The only issue is that it reorders sample names on the x-axis, for example. 1–10 are arranged as 1, 10, 2, 5, 6... How do I correct that bug?

I have tried forcats and reorder but nothing is happening. I believe they are required to be converted to factors, but I'm not sure and i dont know how to do it.

source code is:

plot_barplot <- function(
genera,
samples,
cutoff,
modus
){
if (length(samples) == 0){
messagetext <- list(
x = 1,
y = 1,
text = "No sample selected \nplease select a sample"
font = list(size = 28)
)
 plot <- plot_ly(as.data.frame(NULL))
 plot <- plot %>% layout(annotations = messagetext,
                         yaxis = list(visible = FALSE),
                         xaxis = list(visible = FALSE))
 } else {
 plotdata <- dplyr::select(genera$Abundance, all_of(samples))
  if (ncol(plotdata) > 1) {
  plotdata$Total <- rowSums(plotdata)
  circ = F
 } else if (ncol(plotdata) == 1) {
  plotdata$copy <- plotdata[1]
  plotdata$Total <- rowSums(plotdata) / 2
  circ = T
 }
 plotdata <- plotdata[order(plotdata$Total,
                           decreasing = T),]
 plotdata <- rbind(plotdata[1:cutoff,],
                  colSums(plotdata[(cutoff + 1):nrow(plotdata),]))
 row.names(plotdata)[nrow(plotdata)] <- "#others"
 if (circ == T | modus == "total"){
  plotdata <- dplyr::select(plotdata, Total)
  plotdata$Name <- row.names(plotdata)
  plot <- plotly::plot_ly(plotdata,
                          labels = ~Name,
                          values = ~Total,
                          type = "pie")
 } else {
  plotdata <- dplyr::select(plotdata, -Total)
  if (modus == "hide_others"){
    plotdata <- dplyr::slice_head(plotdata,
    n = (nrow(plotdata)    -1))
  }
  datapoints <- colnames(plotdata)
  plotdata$Name <- row.names(plotdata)
  plotdata <- tidyr::pivot_longer(plotdata,
                                  datapoints,
                                  names_to = "Sample",
                                  values_to = "Abundance")
  if (modus %in% c("absolute", "hide_others")){
    plot <- ggplot2::ggplot(plotdata,
                            ggplot2::aes(fill = Name,
                                         y = Abundance,
                                         x = sample))
    plot <- plot + ggplot2::geom_bar(position = "stack",
                                     stat = "identity")
    plot <- plot + ggplot2::theme_classic()
    plot <- plotly::ggplotly(plot)
  } else {
    plot <- ggplot2::ggplot(plotdata,
                            ggplot2::aes(fill = Name,
                                         y = Abundance,
                                         x = Sample))
    plot <- plot + ggplot2::geom_bar(position = "fill",
                                     stat = "identity")
    plot <- plot + ggplot2::theme_classic()
    plot <- plotly::ggplotly(plot)
    }
   }
  }

    return(plot)
   }


问:
I'm looking for an approach where I can pass every single file from folder to open these files in binary mode
I have data in some files, and I want to check each file with my code. I was able to read a single file every time but I need to change the path every time in my code with the name of the respective file.

I have a folder where the all files are located. I want to open each file from that folder and pass it to the open in read bytes mode. How can I get files one after another?

```<code>readDataFromFile = open('abc.ecg', 'rb')
datatype = np.dtype('B')   #this is working as per expections
</code>```

The above block is working as per expectations

```<code>for files in os.listdir('D:\\ECGPROC\\All Data\\Normal'):
    print(files)
</code>```

How can I pass these files to that readDataFromFile at one time?

Body:
I have data in some files, and I want to check each file with my code. I was able to read a single file every time but I need to change the path every time in my code with the name of the respective file.

I have a folder where the all files are located. I want to open each file from that folder and pass it to the open in read bytes mode. How can I get files one after another?

readDataFromFile = open('abc.ecg', 'rb')
datatype = np.dtype('B')   #this is working as per expections

The above block is working as per expectations

for files in os.listdir('D:\\ECGPROC\\All Data\\Normal'):
    print(files)

How can I pass these files to that readDataFromFile at one time?


问:
Redirect files on sub domain to root domain with wildcard
I'm trying to redirect all files on a subdomain to the same file on the root domain.

subdomain path = img.example.com/example-directory/file.jpg

Root domain path = example.com/wp-content/uploads/file.jpg

This needs to redirect all files in example-directory to the same file in uploads on the root domain.

This is the code I have that is not working at all:

```<code>RewriteEngine On
RewriteCond %{HTTP_HOST}    =img.example.com
RewriteCond %{REQUEST_URI}  ^/example-directory/(.+)$
RewriteRule ^           https://example.com/wp-content/uploads/%1 [L,R=301]
</code>```

Body:
I'm trying to redirect all files on a subdomain to the same file on the root domain.

subdomain path = img.example.com/example-directory/file.jpg

Root domain path = example.com/wp-content/uploads/file.jpg

This needs to redirect all files in example-directory to the same file in uploads on the root domain.

This is the code I have that is not working at all:

RewriteEngine On
RewriteCond %{HTTP_HOST}    =img.example.com
RewriteCond %{REQUEST_URI}  ^/example-directory/(.+)$
RewriteRule ^           https://example.com/wp-content/uploads/%1 [L,R=301]


问:
web service class array item null problem
When i send class array with web service and i set item's string property as null in c#. In this case string property can not be send inside the request.
Request is sent like this when i set string property of item as null:

```<code>          "Number": "0",
          "Amount": "0",
          "CodeOrder": "0",
          "TaxCode": "false"
</code>```

But when i set item's string property as ""(empty string) so this property is sent as null. Why soap web service behave like this?
Request is sent like this when i set string property of item as "":

```<code>          "Code": null,
          "Name": null,
          "Number": "0",
          "Amount": "0",
          "CodeOrder": "0",
          "TaxCode": "false"
</code>```

Body:
When i send class array with web service and i set item's string property as null in c#. In this case string property can not be send inside the request.
Request is sent like this when i set string property of item as null:

          "Number": "0",
          "Amount": "0",
          "CodeOrder": "0",
          "TaxCode": "false"

But when i set item's string property as ""(empty string) so this property is sent as null. Why soap web service behave like this?
Request is sent like this when i set string property of item as "":

          "Code": null,
          "Name": null,
          "Number": "0",
          "Amount": "0",
          "CodeOrder": "0",
          "TaxCode": "false"


问:
Reason for using `Any` over `AnyAsync` in async code
In the Microsoft tutorial for using ASP.NET Core with EF Core here, there is this sample code:

[HttpPut("{id}")]
public async Task<IActionResult> PutTodoItem(long id, TodoItem todoItem)
{
    if (id != todoItem.Id)
    {
        return BadRequest();
    }

    _context.Entry(todoItem).State = EntityState.Modified;

    try
    {
        await _context.SaveChangesAsync();
    }
    catch (DbUpdateConcurrencyException)
    {
        if (!TodoItemExists(id))
        {
            return NotFound();
        }
        else
        {
            throw;
        }
    }

    return NoContent();
}

...

private bool TodoItemExists(long id)
{
    return _context.TodoItems.Any(e => e.Id == id);
}
```
<p>Is there any reason we don't use the following function instead, given we are calling it from another async function?</p>
<pre class="lang-cs prettyprint-override"><code>private async Task<bool> TodoItemExistsAsync(long id)
{
    return await _context.TodoItems.AnyAsync(e => e.Id == id);
}
</code>```

Body:
In the Microsoft tutorial for using ASP.NET Core with EF Core here, there is this sample code:

[HttpPut("{id}")]
public async Task<IActionResult> PutTodoItem(long id, TodoItem todoItem)
{
    if (id != todoItem.Id)
    {
        return BadRequest();
    }

    _context.Entry(todoItem).State = EntityState.Modified;

    try
    {
        await _context.SaveChangesAsync();
    }
    catch (DbUpdateConcurrencyException)
    {
        if (!TodoItemExists(id))
        {
            return NotFound();
        }
        else
        {
            throw;
        }
    }

    return NoContent();
}

...

private bool TodoItemExists(long id)
{
    return _context.TodoItems.Any(e => e.Id == id);
}

Is there any reason we don't use the following function instead, given we are calling it from another async function?

private async Task<bool> TodoItemExistsAsync(long id)
{
    return await _context.TodoItems.AnyAsync(e => e.Id == id);
}


问:
django how to fetch upload folder path
I know how to upload multiple files through Django, but I have a problem when uploading a folder if there are subfolders in it.
So I want the user to upload the folder and I get the root, dirs, and files of that folder the user upload.

HTML code:

```<code><input type="file" name="file_name" multiple = "true" webkitdirectory="true" directory = "true"/>
</code>```

python code:

```<code>def uploader_folder(request):
    data = {}
    if request.method == 'POST':
        file = request.FILES.getlist('file_name')
        for i in file:
            print(i)

</code>```

and here I received only file names. but I want to know the dir, or root path also

Title: django how to fetch upload folder path

Body:
I know how to upload multiple files through Django, but I have a problem when uploading a folder if there are subfolders in it.
So I want the user to upload the folder and I get the root, dirs, and files of that folder the user upload.

HTML code:

<input type="file" name="file_name" multiple = "true" webkitdirectory="true" directory = "true"/>

python code:

def uploader_folder(request):
    data = {}
    if request.method == 'POST':
        file = request.FILES.getlist('file_name')
        for i in file:
            print(i)

and here I received only file names. but I want to know the dir, or root path also


问:
How can I use the Graph API for cross-tenant user delegation？
It's very troubled. Help me.

I want to use the cross-tenant user delegation Graph API.

Tenant A:

Front App(Angular Node.js Expresss) & Back-end App(Web API C#)

Authenticate users with Azure AD for this tenant.

Tenant B:

Invite Tenant A users as guests

This tenant has Share Point.

Create an AD application to use the Graph API.

The user wants to authenticate with Azure AD using MSAL in Tenant A, obtain an access token for Tenant B with SharePoint, and use the user-delegated Graph API.

A user wants to sign in to an app in Tenant A (authenticated by MSAL) and access SharePoint in Tenant B from the app. I want to use the access rights of the user as it is, so I want to operate on SharePoint with the user-delegated Graph API. I don't want to use Graph API with application permission.

Is it possible to do the above?

I submitted a support request to Microsoft, but did not get a valid answer.

Graph API with cross-tenant application permission has been realized, but user delegation Graph API cannot be realized.


问:
Bazel test ... runs targets that are not test targets
I am getting started with Bazel, and I came across this problem:

I have a Bazel package with a python library, and it's BUILD.bazel file declares three targets: py_library, py_test, and a "my_own_target". That latter my_own_target is declared in a separate package called my_bazel_tools. That package declares a toolchain that downloads a specific executable for the current platform, which is required for the things I want to do with my library. That my_bazel_tools package also declares some custom rules and the my_own_target macro that uses those rules.

All those rules and macros work fine when I call them specifically. However, when I run bazel test ... either from the root of the project or from my python library folder, the steps of the toolchain rules and my custom rules are also run, which is not what I want.

I tried adding "test = False" to my rules declarations, but that didn't help. My py_test target does not depend on the toolchain, the py_library target does not depend on the toolchain or my custom rules either.

Is there any way I can prevent the toolchains and custom rules from running when I run bazel test ...?


问:
CN and CNAME is same while creating certificate using OPENSSL
I have created a certificate, but while hitting DNS end point is it showing issue with CNAME.

BELOW MESSAGE:
This domain is successfully pointed at WP Engine, but is not configured for an account on our platform.

If you just signed up, we're still likely creating your account.
Did you add this domain to your install?
Did you point DNS to the correct IP address or CNAME?

while creating certificate i am confused between CN and CNAME, because i have the value of CNAME but it is asking for CN only not CNAME.

where do we need to pass CNAME, and in CN what should we pass.

I want to create certificate and its created successfully but website is not loading
showing below error
If you just signed up, we're still likely creating your account.
Did you add this domain to your install?
Did you point DNS to the correct IP address or CNAME?

i have created certificate and create server.certs and server.Key and pass the path in nginx, but still getting above error


问:
How to correctly handle errors when writing data to firebase using set in Flutter
I'm trying to handle errors when a person is trying to write data to firestore through my flutter app using the following piece of ccode, but it doesn't work, where is the problem with it?

```<code>Future createTrip({
    required final String from,
    required final String to,
    required final String buscompany,
    required int price,
    required int seats,
    required DateTime date,
    required DateTime arrival,
  }) async {
    final tripDoc = FirebaseFirestore.instance.collection('trips').doc();
    final trip = Trip(
        id: tripDoc.id,
        buscompany: buscompany,
        from: from,
        seats: seats,
        to: to,
        price: price,
        date: date,
        arrival: arrival);
    final json = trip.toJson();

    await tripDoc.set(json).then((value) {
      //show trip added on dialog
      showDialog(
          context: context,
          builder: (_) => AlertDialog(
                title: const Text('Alert'),
                content: Text(' Trip from ${trip.from} to ${trip.to} added'),
              ));
      errorMessage = '';
    })
        //show error message
        .catchError((e) {
      setState(() {
        errorMessage = e.toString();
      });
      showDialog(
          context: context,
          builder: (_) => AlertDialog(
                title: const Text('Alert'),
                content: Text(' Trip not added because $errorMessage'),
              ));
    });
  }
</code>```

I'm using set so that I can write the trip id inside my document, and I wanted to show an alert that trip is added or not if error occurred using an alert dialog, but I keep getting errors as seen in below screenshot. This code is in a material button in my UI.

Here's the code in the button

```<code>MaterialButton(
                        onPressed: () {
                          final buscompany = buscompanycontroller.text;
                          final from = fromcontroller.text;
                          final to = tocontroller.text;
                          final price = pricecontroller.text;
                          final seats = seatscontroller.text;
                          final date = datecontroller.text;
                          final arrival = arrivalcontroller.text;

                          createTrip(
                            from: from,
                            to: to,
                            buscompany: buscompany,
                            price: int.parse(price),
                            seats: int.parse(seats),
                            date: DateTime.parse(date),
                            arrival: DateTime.parse(arrival),
                          );
                        },
                        color: kPrimaryColor,
                        child: const Text(
                          'SUBMIT',
                          style: TextStyle(color: Colors.white),
                        ),
                      )
</code>```

Body:
I'm trying to handle errors when a person is trying to write data to firestore through my flutter app using the following piece of ccode, but it doesn't work, where is the problem with it?

Future createTrip({
    required final String from,
    required final String to,
    required final String buscompany,
    required int price,
    required int seats,
    required DateTime date,
    required DateTime arrival,
  }) async {
    final tripDoc = FirebaseFirestore.instance.collection('trips').doc();
    final trip = Trip(
        id: tripDoc.id,
        buscompany: buscompany,
        from: from,
        seats: seats,
        to: to,
        price: price,
        date: date,
        arrival: arrival);
    final json = trip.toJson();

    await tripDoc.set(json).then((value) {
      //show trip added on dialog
      showDialog(
          context: context,
          builder: (_) => AlertDialog(
                title: const Text('Alert'),
                content: Text(' Trip from ${trip.from} to ${trip.to} added'),
              ));
      errorMessage = '';
    })
        //show error message
        .catchError((e) {
      setState(() {
        errorMessage = e.toString();
      });
      showDialog(
          context: context,
          builder: (_) => AlertDialog(
                title: const Text('Alert'),
                content: Text(' Trip not added because $errorMessage'),
              ));
    });
  }

I'm using set so that I can write the trip id inside my document, and I wanted to show an alert that trip is added or not if error occurred using an alert dialog, but I keep getting errors as seen in below screenshot. This code is in a material button in my UI.

Here's the code in the button

MaterialButton(
                        onPressed: () {
                          final buscompany = buscompanycontroller.text;
                          final from = fromcontroller.text;
                          final to = tocontroller.text;
                          final price = pricecontroller.text;
                          final seats = seatscontroller.text;
                          final date = datecontroller.text;
                          final arrival = arrivalcontroller.text;

                          createTrip(
                            from: from,
                            to: to,
                            buscompany: buscompany,
                            price: int.parse(price),
                            seats: int.parse(seats),
                            date: DateTime.parse(date),
                            arrival: DateTime.parse(arrival),
                          );
                        },
                        color: kPrimaryColor,
                        child: const Text(
                          'SUBMIT',
                          style: TextStyle(color: Colors.white),
                        ),
                      )


问:
Android studio add file for debug build
How add some file only for debug build in Android studio? Like this. I added by hand in debug folder but android studio can't see it in adnroid project.

UPD: solve problem with studio visibility. You need put file exactly the same way in main source. In example it "architecture-samples\app\src\debug\java\com\example\android\architecture\blueprints\todoapp". But i will be appreciate it if smb know how do it not by handle

Title: Android studio add file for debug build


问:
How do I find the number of order of a specific number in a sequence of numbers?
So I have a task in university. I have to write a Java program which allows to to input numbers starting from 0 and the specific count of said numbers. Then the numbers are arranged in an increasing order. If there is a number which equals zero then the output must be the number of order of the zero. If there are more than one zeros then the output must be the number of order of the last zero. If there are not any zeros, then the output is zero. I have to specifically use recursions.

I have pretty much done everything, but I have a problem with finding the zeros.

For example if I input numbers 2, 3, 4 then the output will be 0, because there aren't any zeros. If I input 0, 1, 2 the output will be 1, because that is the number of order of the zero. But if I input 1, 2, 0 or 2, 0, 0 and etc. then something goes wrong and outputs 0. For example if the numbers are 1, 2, 0 then the output should be 1, because the numbers are arranged in an increasing order and the number of order of the zero is 1.

Here is my program:

```<code>import java.util.Scanner;

public class Main {

    static Scanner sc;
    public static int[] a;

    public static void inputArr(int i) {
        if (i < a.length) {
            a[i] = sc.nextInt();
            inputArr(i+1);
        }
    }

  public static boolean checkNum(int i) {
        if (i < a.length-1) {
            if (a[i] <= a[i+1])
                return checkNum(i+1);
            else
                return false;
        }
        return true;
    }

  public static int checkZero (int i) {
    checkNum(0);
    if (a[i] == 0) return 1+checkZero(i+1);
    else return 0;
  }

    public static void main(String[] args) {
        sc = new Scanner(System.in);

        int count;
        System.out.print("count:");
        count = sc.nextInt();
        a = new int[count];

        System.out.println("numbers:");
        inputArr(0);

    System.out.print("result: ");
    boolean result = checkNum(0);
    int zero = checkZero(0);
    System.out.print(zero);

        sc.close();
    }

}
</code>```

Body:
So I have a task in university. I have to write a Java program which allows to to input numbers starting from 0 and the specific count of said numbers. Then the numbers are arranged in an increasing order. If there is a number which equals zero then the output must be the number of order of the zero. If there are more than one zeros then the output must be the number of order of the last zero. If there are not any zeros, then the output is zero. I have to specifically use recursions.

I have pretty much done everything, but I have a problem with finding the zeros.

For example if I input numbers 2, 3, 4 then the output will be 0, because there aren't any zeros. If I input 0, 1, 2 the output will be 1, because that is the number of order of the zero. But if I input 1, 2, 0 or 2, 0, 0 and etc. then something goes wrong and outputs 0. For example if the numbers are 1, 2, 0 then the output should be 1, because the numbers are arranged in an increasing order and the number of order of the zero is 1.

Here is my program:

import java.util.Scanner;

public class Main {

    static Scanner sc;
    public static int[] a;

    public static void inputArr(int i) {
        if (i < a.length) {
            a[i] = sc.nextInt();
            inputArr(i+1);
        }
    }

  public static boolean checkNum(int i) {
        if (i < a.length-1) {
            if (a[i] <= a[i+1])
                return checkNum(i+1);
            else
                return false;
        }
        return true;
    }

  public static int checkZero (int i) {
    checkNum(0);
    if (a[i] == 0) return 1+checkZero(i+1);
    else return 0;
  }

    public static void main(String[] args) {
        sc = new Scanner(System.in);

        int count;
        System.out.print("count:");
        count = sc.nextInt();
        a = new int[count];

        System.out.println("numbers:");
        inputArr(0);

    System.out.print("result: ");
    boolean result = checkNum(0);
    int zero = checkZero(0);
    System.out.print(zero);

        sc.close();
    }

}