sharjeelyunus/github-issues-dataset huggingface dataset:
Repository: flutter
Issue: [flutter_svg] Crash when have a different color format in svg
Labels: package,p: flutter_svg

_Imported from https://github.com/dnfield/flutter_svg/issues/519_

Original report by @Tryliom on Mar 16, 2021

When we have a svg with a `color="rgb(102 102 102)"` instead of `color="rgb(102, 102, 102)"`, it crash while on web navigator this is valid.

The svg:
```svg
<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
  viewBox="0 0 25 25" enable-background="new 0 0 25 25" xml:space="preserve">
  <g>
      <line fill="none" stroke="rgb(102 102 102)" stroke-width="3" stroke-miterlimit="10" x1="8.3" y1="9.8" x2="9.8" y2="1.8"/>
      <line fill="none" stroke="rgb(102 102 102)" stroke-width="3" stroke-miterlimit="10" x1="7.5" y1="15.5" x2="1.5" y2="10.2"/>
      <line fill="none" stroke="rgb(102 102 102)" stroke-width="3" stroke-miterlimit="10" x1="12.3" y1="18.8" x2="4" y2="20.1"/>
      <line fill="none" stroke="rgb(102 102 102)" stroke-width="3" stroke-miterlimit="10" x1="21.9" y1="3.7" x2="12.6" y2="9"/>
      <line fill="none" stroke="rgb(102 102 102)" stroke-width="3" stroke-miterlimit="10" x1="17.7" y1="10.4" x2="23.5" y2="17.5"/>
      <line fill="none" stroke="rgb(102 102 102)" stroke-width="3" stroke-miterlimit="10" x1="17.7" y1="16.8" x2="14.8" y2="23.2"/>
  </g>
</svg>
```


---
Comment by @dnfield on Apr 6, 2021
The spec requires a comma - that said, I'd be somewhat open to supporting this since browsers probably do.
Repository: flutter
Issue: [flutter_svg] would you please instead of throwing an error, display a svg with no load
Labels: package,p: flutter_svg

_Imported from https://github.com/dnfield/flutter_svg/issues/535_

Original report by @trailerzone on Apr 16, 2021

Instead of throwing an error when the asset could not load, would you replace the asset with no a load or error asset? That way those of us on slower computers can keep the ios app open and not having to restart to emulator every time. Thanks! I could change the code myself if I get time. 

---
Comment by @dnfield on Apr 16, 2021
I'm not quite sure what you mean here. What's the issue?

---
Comment by @NamanShergill on Apr 21, 2021
> I'm not quite sure what you mean here. What's the issue?

He means an error builder where one can show an error widget if the svg failed to load

---
Comment by @martipello on Apr 30, 2021
> > I'm not quite sure what you mean here. What's the issue?
> 
> He means an error builder where one can show an error widget if the svg failed to load

Im not sure he did but your idea is much better

---
Comment by @mekhribonu-s-codexoptimus on Jun 1, 2022

@xal why it's closed? would it be posted later? I can't find a way to catch exceptions to display errorWidget
Repository: flutter
Issue: [flutter_svg] Support loadingBuilder
Labels: package,p: flutter_svg

_Imported from https://github.com/dnfield/flutter_svg/issues/543_

Original report by @creativecreatorormaybenot on Apr 25, 2021

## Feature request

The Flutter framework has support for an [`Image.loadingBuilder`](https://api.flutter.dev/flutter/widgets/Image/loadingBuilder.html). It would be very useful to have this for `SvgPicture` as well.

## Use case

Currently, we only have [`SvgPicture.placeholderBuilder`](https://pub.dev/documentation/flutter_svg/latest/svg/SvgPicture/placeholderBuilder.html). However, when we want to show loading progress, we cannot use it.  
The best I can think of right now is doing the network (and possibly parsing) calls myself and retrieving the loading progress from there.

---
Comment by @dnfield on Apr 26, 2021
I'm not opposed to this, but I'm also not sure when I'll get to it right now. I'd be happy to review a PR - it's probably a pretty straightforward porting of the framework impl to here.
Repository: flutter
Issue: [flutter_svg] SvgPicture.network errorBuilder
Labels: package,p: flutter_svg

_Imported from https://github.com/dnfield/flutter_svg/issues/544_

Original report by @KristianBalaj on Apr 30, 2021

Is there any option to use e.g. `errorBuilder` in case of network fetch or svg parse error?

Something like currently the `placeholderBuilder` but in case of an error?

---
Comment by @khaitran1234 on May 7, 2021
The same problem

---
Comment by @qcks on May 17, 2021
SvgPicture.*** .errorBuilder

---
Comment by @yohantsn on Sep 8, 2021
any news about it?

---
Comment by @CelticMajora on Nov 23, 2021
Would also love this!

---
Comment by @mstich-mcmservices on Oct 27, 2023
Same.  I have several SVGs that throw an exception while parsing and I have no way to detect this condition.

---
Comment by @animator on Dec 16, 2023
Same here.

---
Comment by @omarahmedx14 on Jan 10, 2024
same here ..

---
Comment by @Reprevise on Jan 10, 2024
This would be very nice to have. I know the underlying `VectorGraphics` widget takes an `errorBuilder`, and I was considering submitting a PR, but I couldn't get it the `errorBuilder` callback to trigger when I set the status code of the fake http response to 400 in the tests. Does VG's `errorBuilder` only trigger on decode failures?

@dnfield
Repository: flutter
Issue: [flutter_svg] stroke-width doesn't work with <g/>
Labels: package,p: flutter_svg

_Imported from https://github.com/dnfield/flutter_svg/issues/551_

Original report by @vishna on May 11, 2021

## The Problem

stroke width that doesn't get applied when used with a `g` tag (this renders fine on web)

<img width="78" alt="Screenshot 2021-05-11 at 11 28 45" src="https://user-images.githubusercontent.com/121164/117792966-108f0880-b24c-11eb-8ca8-9f747fd20329.png">


```svg
<svg width="64" height="64" xmlns="http://www.w3.org/2000/svg"><g stroke-width="3" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"><path stroke="#000" d="M21 26h22v32H21z"/></g></svg>
```

Move stroke width down to `path` tag, and tada 🎉 

<img width="80" alt="Screenshot 2021-05-11 at 11 31 23" src="https://user-images.githubusercontent.com/121164/117793345-6cf22800-b24c-11eb-9713-018f8516e863.png">

```svg
<svg width="64" height="64" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"><path stroke-width="3" stroke="#000" d="M21 26h22v32H21z"/></g></svg>
```

## Expected behaviour

Both svg sources render exactly same bitmap
Repository: flutter
Issue: [flutter_svg] Blend mode between two SVG
Labels: package,p: flutter_svg

_Imported from https://github.com/dnfield/flutter_svg/issues/557_

Original report by @dan-leech on May 22, 2021

Maybe I do not understand blending right...
I have two svg with shapes of different colors.
```svg
<svg width="22" height="19" viewBox="0 0 22 19" fill="#00FF00" xmlns="http://www.w3.org/2000/svg">
    <path d="M11.3044 18.8246H3.61473C1.51756 18.8246 0.219298 16.5277 1.21795 14.7302L5.11271 8.03916L9.00746 1.34818C10.106 -0.449394 12.7025 -0.449394 13.7011 1.34818L17.5959 8.03916L21.4906 14.7302C22.5891 16.5277 21.191 18.8246 19.0939 18.8246H11.3044Z"/>
</svg>
```

- They all are in Stack.
- I apply colorBlendMode: BlendMode.color to each or any other.
- Nothing changes.

What is working and how:
- If I add `color:` param I see blend effect like colored squares instead shapes and no blending between different SvgPicture widgets.

What's the proper way to achieve something like this between two different SvgPicture widgets?
![](https://i.stack.imgur.com/OeTdh.png)

---
Comment by @dan-leech on May 22, 2021
I've found the way to achieve this:
```dart
BlendMask(
  opacity: _spotOpacity.value,
  blendMode: _blendMode,
  child: SvgPicture.asset('assets/triangle.svg'));
```

```dart
class BlendMask extends SingleChildRenderObjectWidget {
  final BlendMode blendMode;
  final double opacity;

  const BlendMask({
    required this.blendMode,
    required Widget child,
    this.opacity = 1.0,
    Key? key,
  }) : super(key: key, child: child);

  @override
  RenderObject createRenderObject(BuildContext context) =>
      RenderBlendMask(blendMode, opacity);

  @override
  void updateRenderObject(BuildContext context, RenderBlendMask renderObject) {
    renderObject
      ..blendMode = blendMode
      ..opacity = opacity;
  }
}

class RenderBlendMask extends RenderProxyBox {
  BlendMode blendMode;
  double opacity;

  RenderBlendMask(this.blendMode, this.opacity);

  @override
  void paint(PaintingContext context, Offset offset) {
    context.canvas.saveLayer(
        offset & size,
        Paint()
          ..blendMode = blendMode
          ..color = Color.fromARGB((opacity * 255).round(), 255, 255, 255));

    super.paint(context, offset);

    context.canvas.restore();
  }
}
```
Repository: flutter
Issue: [flutter_svg] text dominant-baseline, letter-spacing attributes do not work
Labels: package,p: flutter_svg

_Imported from https://github.com/dnfield/flutter_svg/issues/561_

Original report by @jangho-chu on May 27, 2021

I'm using flutter_svg package version 0.19.1

```
<text dominant-baseline="hanging" text-anchor="start" x="30" y="161"
    font-size="32" font-family="East Sea Dokdo" font-weight="normal"
    letter-spacing="-0.04em" fill="#151515">
MyText
</text>
```

* dominant-baseline, letter-spacing do not work

Is there any solution?

---
Comment by @dnfield on May 27, 2021
They aren't implemented. Letter spacing is probably a matter of just using https://api.flutter.dev/flutter/painting/TextStyle/letterSpacing.html, not sure about dominant-baseline. Happy to review a patch that adds this.

---
Comment by @jangho-chu on May 27, 2021
Thank you for your reply :)
Repository: flutter
Issue: [flutter_svg] PowerPoint export / clipPath not shown
Labels: package,p: flutter_svg

_Imported from https://github.com/dnfield/flutter_svg/issues/566_

Original report by @adrianvintu on Jun 7, 2021

I have exported two objects from PowerPoint and ```SvgPicture.asset``` does not display them. I assume it's the same issue as https://github.com/dnfield/flutter_svg/issues/343 and/or https://github.com/dnfield/flutter_svg/issues/136 .

Is there a way for you to check and maybe do the magical simplification on them? Magical - also because I have no clue how SVGs work.

Thank you very much!

BLUE
```
<svg width="67" height="141" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" overflow="hidden"><defs><clipPath id="clip0"><rect x="162" y="195" width="67" height="141"/></clipPath></defs><g clip-path="url(#clip0)" transform="translate(-162 -195)"><path d="M179.25 265.5 179.25 228.706C179.25 219.712 186.562 212.353 195.5 212.353 204.438 212.353 211.75 219.712 211.75 228.706L211.75 265.5 179.25 265.5ZM228 302.294 228 228.706C228 210.718 213.375 196 195.5 196 177.625 196 163 210.718 163 228.706L163 302.294C163 320.282 177.625 335 195.5 335 213.375 335 228 320.282 228 302.294Z" fill="#00B0F0" fill-rule="evenodd"/></g></svg>
```

BOTTLE
```
<svg width="181" height="296" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" overflow="hidden"><defs><clipPath id="clip0"><rect x="407" y="171" width="181" height="296"/></clipPath></defs><g clip-path="url(#clip0)" transform="translate(-407 -171)"><path d="M587 416.833 587 384.056 447.909 384.056C443.409 384.056 439.727 380.368 439.727 375.861L439.727 293.917C439.727 289.41 443.409 285.722 447.909 285.722L587 285.722 587 252.945C587 243.931 579.636 236.556 570.636 236.556L556.318 236.556C555.091 236.556 554.273 235.736 554.273 234.507L554.273 222.215C554.273 220.986 555.091 220.167 556.318 220.167L566.546 220.167C569 220.167 570.636 218.528 570.636 216.069L570.636 187.389C570.636 178.375 563.273 171 554.273 171L439.727 171C430.727 171 423.364 178.375 423.364 187.389L423.364 216.069C423.364 218.528 425 220.167 427.455 220.167L437.682 220.167C438.909 220.167 439.727 220.986 439.727 222.215L439.727 234.507C439.727 235.736 438.909 236.556 437.682 236.556L423.364 236.556C414.364 236.556 407 243.931 407 252.945L407 449.611C407 458.625 414.364 466 423.364 466L480.636 466C480.636 438.958 502.727 416.833 529.727 416.833L587 416.833Z" fill="#00B0F0" fill-rule="evenodd"/><path d="M457 306.125 457 363.875C457 366.35 458.625 368 461.062 368L587 368 587 302 461.062 302C458.625 302 457 303.65 457 306.125Z" fill="#00B0F0" fill-rule="evenodd"/><path d="M457 411.833C457 405.85 461.85 401 467.833 401L576.167 401C582.15 401 587 405.85 587 411.833L587 455.166C587 461.15 582.15 466 576.167 466L467.833 466C461.85 466 457 461.15 457 455.166Z" fill="#00B0F0" fill-rule="evenodd"/></g></svg>
```

---
Comment by @adrianvintu on Aug 24, 2022
For people who need to simplify their SVGs

https://github.com/RazrFalcon/svgcleaner-gui/releases

https://stackoverflow.com/questions/66649982/flutter-web-unhandled-element-filter-on-svg
Repository: flutter
Issue: [flutter_svg] Nested Svg's
Labels: package,p: flutter_svg

_Imported from https://github.com/dnfield/flutter_svg/issues/570_

Original report by @Howmuchadollarcost on Jun 17, 2021

Multiple nested svg's and parsing svg height and width are not working. Any workarounds? OR if there is any thoughts about adding it?

---
Comment by @jakusb on Jun 25, 2021
Yes please!
Repository: flutter
Issue: [flutter_svg] Add Support for vector-effects
Labels: package,p: flutter_svg

_Imported from https://github.com/dnfield/flutter_svg/issues/571_

Original report by @Rossdex on Jun 18, 2021

I have an app that requires viewing large scale svg's in high detail. 

Below I have an example SVG that has _non-scaling-stroke_ attribute on one of the boxes, if I display this using SVGPicture.asset when I increase the size of the SVG by putting it into an overflow box the scaling is wrong. Is there a way we can get the package to listen to _vector-effect="non-scaling-stroke"_ ?


Any help/ Advise would be much appreciated. 

``<svg viewBox="0 0 90 45" xmlns="http://www.w3.org/2000/svg">
    <rect x="1" y="1" width="40" height="40" fill="white" stroke="blue" stroke-width="1px" vector-effect="non-scaling-stroke"/>
     <rect x="45" y="1" width="40" height="40" fill="white" stroke="green" stroke-width="1px" />
</svg>``


**Example Code**

`Container( 
      clipBehavior: Clip.none,
     child: new OverflowBox(
               minWidth: 0.0,
               minHeight: 0.0,
               maxWidth: double.infinity,
               child: SvgPicture.asset(
                             'assets/example.svg',
                             fit: BoxFit.cover,
                             width: 800 * 30, 
                             height: 600 * 30,
                ),
              ),
            )`

---
Comment by @dnfield on Jun 18, 2021
I have mixed feelings about implementing anything from the SVG 2 spec - its browser support is really limited and I'm worried about it causing more confusion than help.

I'm also not quite sure what would be necessary to support this attribute.

That said, I'd be happy to review aPR that attempts it.
Repository: flutter
Issue: [flutter_svg] Package is not compatible with Stacking operation.
Labels: package,p: flutter_svg

_Imported from https://github.com/dnfield/flutter_svg/issues/577_

Original report by @dopaminista on Jul 18, 2021

Stack widget is not compatible with flutter_svg. Svg images are always rendered in front. I can't stack text widget SVG images.

---
Comment by @dnfield on Jul 19, 2021
Please share a reproduction.
Repository: flutter
Issue: [flutter_svg] Provide option to ignore errors
Labels: package,p: flutter_svg

_Imported from https://github.com/dnfield/flutter_svg/issues/580_

Original report by @martin-robert-fink on Aug 3, 2021

I'm using Omnigraffle to create SVG assets and it provides extra elements (example: "metadata" is used to include version information) and it also includes "font-face" (I'm using a font loaded from assets, so it's not an issue).  But, these cause flutter_svg to output errors as these are not supported elements.  My stuff renders fine, I just want to have the ability to remove these parsing errors as they are not helpful. 

---
Comment by @dnfield on Aug 16, 2021
Is there some reason that you can't just remove the unused tags from your file? It would both reduce the parse time and the bundle size of your application.

---
Comment by @martin-robert-fink on Aug 16, 2021
Hi Dan - Thanks for checking in.  No, technically, there's no reason and that is my current workaround.  The issue is that I do all of my app icons this way (I have about 50 of them so far), and it was a bit tedious to manually go remove all the unused/unsupported tags by hand.  My next move is to write a dart based command line tool to automate the process.  If you tell this is not something worth dealing with, I'll do that.  I guess I was always of a mind that unsupported tags are just ignored rather than generate error messages, but maybe there's a good reason for it and I'm not aware.

---
Comment by @dnfield on Aug 16, 2021
I've found `svgcleaner` to be pretty good at cleaning a lot of that stuff up and compressing the SVG down a bit further. If you have a build rule set up for that it'd be cool to add here or in another package.

---
Comment by @martin-robert-fink on Aug 16, 2021
Thanks for the pointer, I will give it a try.  In my read through the docs though, it looks like it won't remove font-face which is one of the problem elements.  Thanks again!

---
Comment by @dnfield on Aug 16, 2021
Ahhh yes you are right.

---
Comment by @dnfield on Aug 16, 2021
....the other option is of course to just support font-face :)

---
Comment by @martin-robert-fink on Aug 16, 2021
Well, get on that :)....
Repository: flutter
Issue: [flutter_svg] A valid SVG is throwing exception: Flutter SVG only supports the following formats for `width` and `height`
Labels: package,p: flutter_svg

_Imported from https://github.com/dnfield/flutter_svg/issues/607_

Original report by @prolificcoder on Oct 11, 2021

I have an SVG file that is exported from figma (cannot add the file here on github)

google drive link: https://drive.google.com/file/d/1Q0zZQo8hxkHlQOIrF1-FLTGYnlAMigK6/view?usp=sharing 

it looks like this: 
```
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="16" cy="16" r="16" fill="#F2F2F2"/>
<g clip-path="url(#clip0)">
<path d="M23.8965 8.1416C23.8465 8.09069 23.7823 8.05608 23.7123 8.04231C23.6422 8.02853 23.5697 8.03623 23.5041 8.06439L7.21246 15.0762C7.15133 15.1027 7.09893 15.1459 7.06127 15.2009C7.0236 15.2559 7.00221 15.3203 6.99955 15.3869C6.99689 15.4535 7.01306 15.5195 7.04621 15.5773C7.07936 15.6351 7.12814 15.6824 7.18696 15.7137L11.9115 18.2148C11.9419 18.232 11.9767 18.2397 12.0115 18.237C12.0463 18.2344 12.0796 18.2215 12.107 18.1999L19.3958 12.3208C19.4298 12.2926 19.473 12.2782 19.517 12.2803C19.5611 12.2823 19.6028 12.3008 19.6339 12.3319C19.6651 12.3631 19.6836 12.4048 19.6856 12.4489C19.6877 12.4929 19.6732 12.5361 19.6451 12.5701L13.766 19.8589C13.7441 19.8858 13.7308 19.9186 13.7275 19.9531C13.7242 19.9876 13.7312 20.0224 13.7475 20.0529L16.2487 24.7775C16.2788 24.8344 16.3239 24.882 16.379 24.9152C16.4342 24.9484 16.4974 24.966 16.5617 24.9659H16.5752C16.6418 24.9633 16.7063 24.942 16.7613 24.9044C16.8163 24.8669 16.8596 24.8145 16.8862 24.7534L23.9695 8.5326C23.9979 8.46762 24.0061 8.3956 23.9931 8.32589C23.9801 8.25618 23.9464 8.19198 23.8965 8.1416V8.1416Z" fill="#121212"/>
</g>
<defs>
<clipPath id="clip0">
<rect width="17" height="17" fill="white" transform="translate(7 8)"/>
</clipPath>
</defs>
</svg>
```

When I am loading this I get the following error

```
 Another exception was thrown: Unable to load asset: packages/sofi_x_package/lib/icons/p2p_135degree.svg
I/flutter (15078): Warning: Flutter SVG only supports the following formats for `width` and `height` on the SVG root:
I/flutter (15078):   width="100%"
I/flutter (15078):   width="100px"
I/flutter (15078):   width="100" (where the number will be treated as pixels).
I/flutter (15078): The supplied value (3em) will be discarded and treated as if it had not been specified.
I/flutter (15078): Warning: Flutter SVG only supports the following formats for `width` and `height` on the SVG root:
I/flutter (15078):   width="100%"
I/flutter (15078):   width="100px"
I/flutter (15078):   width="100" (where the number will be treated as pixels).
I/flutter (15078): The supplied value (3em) will be discarded and treated as if it had not been specified.
```

I tried added px to the width but that doesn't seem to help. This SVG loads fine in chrome or in finder. 

---
Comment by @dnfield on Oct 12, 2021
I think your error is coming from a different svg. See #605 for fix though.
Repository: flutter
Issue: [flutter_svg] Avoid saveLayer with colorFilter when a single path/shape is drawn
Labels: package,p: flutter_svg

_Imported from https://github.com/dnfield/flutter_svg/issues/615_

Original report by @goderbauer on Nov 2, 2021

From discussion it seems like the saveLayer call is unnecessary when the drawn content is just a single path/shape. The saveLayer call should be omitted in that case.

Related: https://github.com/flutter/flutter/issues/92874

Internal: b/204888249

---
Comment by @dnfield on Nov 2, 2021
We can probably even do better if flutter_svg keeps an RTree to track overlapping draws.

---
Comment by @flar on Nov 2, 2021
Doing this here when the Picture is generated amortizes the cost well. It would be even better if there was an off-line tool that could optimize an SVG file.

---
Comment by @dnfield on Nov 2, 2021
Yes.  Something to render optimize svg would be really cool.
Repository: flutter
Issue: [flutter_svg] Transparent problem in SVG pictures
Labels: package,p: flutter_svg

_Imported from https://github.com/dnfield/flutter_svg/issues/616_

Original report by @MuhmdHsn313 on Nov 11, 2021

I have svg picture with transparent, when I used this package for showing my svg pictures, the transparent not appeared! 

The actual svg:
![weather_night](https://user-images.githubusercontent.com/33749659/141257538-cf9987cb-a48b-44f1-94c1-1130d96ff026.png)

Flutter svg
![Screenshot from 2021-11-11 10-37-57](https://user-images.githubusercontent.com/33749659/141257687-a821ea2d-daf7-42d4-82f7-e104415c9fd1.png)
:


---
Comment by @dnfield on Nov 11, 2021
Please share the source SVG and if applicable anything else needed to reproduce tihis.

However, based on your screenshot I'm going to guess that this is using unsupported filter effects.
Repository: flutter
Issue: [flutter_svg] Add tracing to parsing
Labels: package,team-engine,p: flutter_svg

_Imported from https://github.com/dnfield/flutter_svg/issues/623_

Original report by @dnfield on Dec 2, 2021

Make it easier for developers to see how long SVG parsing is taking.

/cc @jiahaog
Repository: flutter
Issue: [flutter_svg] After version 1.0.0 colorBlendMode: BlendMode.luminosity does not grey out svgs
Labels: package,p: flutter_svg

_Imported from https://github.com/dnfield/flutter_svg/issues/628_

Original report by @aytunch on Dec 9, 2021

I haven't changed my code just upgraded the package and previously my colored svg was rendering as grey and now it renders with full color.
Is there another way to accomplish single color effect?
Thanks
```
             SvgPicture.asset(
                "assets/svg/cart.svg",
                colorBlendMode: BlendMode.luminosity,
                fit: BoxFit.scaleDown,
              ),
```

---
Comment by @dnfield on Dec 10, 2021
Can you share a complete reproduction?

The implementation around color filtering changed for sure. I would not expect it to have broken this way though.