From d560278bc2babae01c5c21a3a86fc5af371d6c3f Mon Sep 17 00:00:00 2001 From: Arnold Parge Date: Fri, 23 Aug 2019 17:28:49 +0530 Subject: [PATCH 01/23] Handled relative path in image urls: - added prefixNetworkImageRelativePath in ImageProperties. - HtmlRichTextParser: prefixed node.attributes['src'] with imageProperties.prefixNetworkImageRelativePath --- lib/image_properties.dart | 2 ++ lib/rich_text_parser.dart | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/lib/image_properties.dart b/lib/image_properties.dart index 62dfab5b63..15c4b798b8 100644 --- a/lib/image_properties.dart +++ b/lib/image_properties.dart @@ -15,6 +15,7 @@ class ImageProperties { final bool matchTextDirection; final FilterQuality filterQuality; final double scale; + final String prefixNetworkImageRelativePath; const ImageProperties({ this.scale = 1, @@ -30,5 +31,6 @@ class ImageProperties { this.centerSlice, this.matchTextDirection = false, this.filterQuality = FilterQuality.low, + this.prefixNetworkImageRelativePath = '' }); } diff --git a/lib/rich_text_parser.dart b/lib/rich_text_parser.dart index af39f02dea..1e10a6b356 100644 --- a/lib/rich_text_parser.dart +++ b/lib/rich_text_parser.dart @@ -779,6 +779,14 @@ class HtmlRichTextParser extends StatelessWidget { }, )); } else { + String imageUrl = ''; + if (!node.attributes['src'].contains('http')) { + imageUrl = imageProperties.prefixNetworkImageRelativePath + + node.attributes['src']; + } + else { + imageUrl = node.attributes['src']; + } precacheImage( NetworkImage(node.attributes['src']), buildContext, From 2039240f1c1d659f3171a9cc987ca34319ab7257 Mon Sep 17 00:00:00 2001 From: Aaron Madlon-Kay Date: Fri, 19 Jul 2019 14:02:14 +0900 Subject: [PATCH 02/23] Implement li leading char as TextSpan rather than separate widget --- lib/rich_text_parser.dart | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/lib/rich_text_parser.dart b/lib/rich_text_parser.dart index af39f02dea..d5893412c2 100644 --- a/lib/rich_text_parser.dart +++ b/lib/rich_text_parser.dart @@ -83,14 +83,12 @@ class BlockText extends StatelessWidget { final RichText child; final EdgeInsets padding; final EdgeInsets margin; - final String leadingChar; final Decoration decoration; BlockText({ @required this.child, this.padding, this.margin, - this.leadingChar = '', this.decoration, }); @@ -101,13 +99,7 @@ class BlockText extends StatelessWidget { padding: this.padding, margin: this.margin, decoration: this.decoration, - child: Row( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - leadingChar.isNotEmpty ? Text(leadingChar) : Container(), - Expanded(child: child), - ], - ), + child: child, ); } } @@ -848,12 +840,13 @@ class HtmlRichTextParser extends StatelessWidget { left: parseContext.indentLevel * indentSize, top: 3.0), child: RichText( text: TextSpan( - text: '', - style: nextContext.childStyle, - children: [], + text: '$leadingChar ', + style: DefaultTextStyle.of(buildContext).style, + children: [ + TextSpan(text: '', style: nextContext.childStyle) + ], ), ), - leadingChar: '$leadingChar ', ); parseContext.rootWidgetList.add(blockText); nextContext.parentElement = blockText.child.text; From 4ee864053da04e9e9561438f101070b1c637fdc0 Mon Sep 17 00:00:00 2001 From: Aaron Madlon-Kay Date: Fri, 19 Jul 2019 14:26:10 +0900 Subject: [PATCH 03/23] Add shrinkToFit option to shrink Html to its natural content width --- lib/flutter_html.dart | 7 +++++-- lib/rich_text_parser.dart | 19 ++++++++++++++----- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/lib/flutter_html.dart b/lib/flutter_html.dart index bfe3740595..a58ba80f20 100644 --- a/lib/flutter_html.dart +++ b/lib/flutter_html.dart @@ -3,6 +3,7 @@ library flutter_html; import 'package:flutter/material.dart'; import 'package:flutter_html/html_parser.dart'; import 'package:flutter_html/rich_text_parser.dart'; + import 'image_properties.dart'; class Html extends StatelessWidget { @@ -25,6 +26,7 @@ class Html extends StatelessWidget { decoration: TextDecoration.underline, color: Colors.blueAccent, decorationColor: Colors.blueAccent), + this.shrinkToFit = false, this.imageProperties, this.onImageTap, this.showImages = true, @@ -40,6 +42,7 @@ class Html extends StatelessWidget { final bool useRichText; final ImageErrorListener onImageError; final TextStyle linkStyle; + final bool shrinkToFit; /// Properties for the Image widget that gets rendered by the rich text parser final ImageProperties imageProperties; @@ -55,7 +58,7 @@ class Html extends StatelessWidget { @override Widget build(BuildContext context) { - final double width = MediaQuery.of(context).size.width; + final double width = shrinkToFit ? null : MediaQuery.of(context).size.width; return Container( padding: padding, @@ -65,7 +68,7 @@ class Html extends StatelessWidget { style: defaultTextStyle ?? DefaultTextStyle.of(context).style, child: (useRichText) ? HtmlRichTextParser( - width: width, + shrinkToFit: shrinkToFit, onLinkTap: onLinkTap, renderNewlines: renderNewlines, customEdgeInsets: customEdgeInsets, diff --git a/lib/rich_text_parser.dart b/lib/rich_text_parser.dart index d5893412c2..adc4ac7ab5 100644 --- a/lib/rich_text_parser.dart +++ b/lib/rich_text_parser.dart @@ -84,9 +84,11 @@ class BlockText extends StatelessWidget { final EdgeInsets padding; final EdgeInsets margin; final Decoration decoration; + final bool shrinkToFit; BlockText({ @required this.child, + @required this.shrinkToFit, this.padding, this.margin, this.decoration, @@ -95,7 +97,7 @@ class BlockText extends StatelessWidget { @override Widget build(BuildContext context) { return Container( - width: double.infinity, + width: shrinkToFit ? null : double.infinity, padding: this.padding, margin: this.margin, decoration: this.decoration, @@ -147,7 +149,7 @@ class ParseContext { class HtmlRichTextParser extends StatelessWidget { HtmlRichTextParser({ - @required this.width, + this.shrinkToFit, this.onLinkTap, this.renderNewlines = false, this.html, @@ -167,7 +169,7 @@ class HtmlRichTextParser extends StatelessWidget { final double indentSize = 10.0; - final double width; + final bool shrinkToFit; final onLinkTap; final bool renderNewlines; final String html; @@ -417,6 +419,7 @@ class HtmlRichTextParser extends StatelessWidget { )); } BlockText blockText = BlockText( + shrinkToFit: shrinkToFit, margin: EdgeInsets.only( top: 8.0, bottom: 8.0, @@ -430,8 +433,10 @@ class HtmlRichTextParser extends StatelessWidget { ); parseContext.rootWidgetList.add(blockText); } else { - parseContext.rootWidgetList - .add(BlockText(child: RichText(text: span))); + parseContext.rootWidgetList.add(BlockText( + child: RichText(text: span), + shrinkToFit: shrinkToFit, + )); } // this allows future items to be added as children of this item @@ -591,6 +596,7 @@ class HtmlRichTextParser extends StatelessWidget { } else { // start a new block element for this link and its text BlockText blockElement = BlockText( + shrinkToFit: shrinkToFit, margin: EdgeInsets.only( left: parseContext.indentLevel * indentSize, top: 10.0), child: RichText(text: span), @@ -813,6 +819,7 @@ class HtmlRichTextParser extends StatelessWidget { } if (node.attributes['alt'] != null) { parseContext.rootWidgetList.add(BlockText( + shrinkToFit: shrinkToFit, margin: EdgeInsets.symmetric(horizontal: 0.0, vertical: 10.0), padding: EdgeInsets.all(0.0), @@ -836,6 +843,7 @@ class HtmlRichTextParser extends StatelessWidget { leadingChar = parseContext.listCount.toString() + '.'; } BlockText blockText = BlockText( + shrinkToFit: shrinkToFit, margin: EdgeInsets.only( left: parseContext.indentLevel * indentSize, top: 3.0), child: RichText( @@ -907,6 +915,7 @@ class HtmlRichTextParser extends StatelessWidget { )); } BlockText blockText = BlockText( + shrinkToFit: shrinkToFit, margin: node.localName != 'body' ? _customEdgeInsets ?? EdgeInsets.only( From ac97ee9dddf48b4bc62b33334d39a904c3363f5f Mon Sep 17 00:00:00 2001 From: Aaron Madlon-Kay Date: Fri, 19 Jul 2019 14:34:55 +0900 Subject: [PATCH 04/23] Update test image URL --- example/main.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/example/main.dart b/example/main.dart index 9e91253002..4a5260c9e1 100644 --- a/example/main.dart +++ b/example/main.dart @@ -109,7 +109,7 @@ class _MyHomePageState extends State {
Second nested div
- +
Available on GitHub
From 431a08f5038ee368c280d18ef5605bc5d62ca54b Mon Sep 17 00:00:00 2001 From: Aaron Madlon-Kay Date: Fri, 19 Jul 2019 14:57:14 +0900 Subject: [PATCH 05/23] Organize imports --- lib/html_parser.dart | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/html_parser.dart b/lib/html_parser.dart index 303ad7e7ad..b89006af7f 100644 --- a/lib/html_parser.dart +++ b/lib/html_parser.dart @@ -1,9 +1,7 @@ import 'dart:convert'; -import 'package:flutter_html/rich_text_parser.dart'; -import 'image_properties.dart'; -import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_html/rich_text_parser.dart'; import 'package:html/dom.dart' as dom; import 'package:html/parser.dart' as parser; From a671d941e6e36785c97f5a0caabf5967dd288ef1 Mon Sep 17 00:00:00 2001 From: Matthew Whitaker Date: Fri, 6 Sep 2019 08:00:22 -0600 Subject: [PATCH 06/23] Create CONTRIBUTING.md --- CONTRIBUTING.md | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 CONTRIBUTING.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000000..2dc1383211 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,8 @@ +Thanks for your interest in contributing to `flutter_html`! + +I'm pretty busy, so in order to help me best make use of the time I spend working on this project, please adhere to the following guidelines when contributing: + +1. In general, don't submit a pull request without discussing the feature with me, in an issue, first. I don't want you to have to do a whole bunch of work for nothing. This also makes it so there won't be a whole bunch of changes I make you do in order to have your pull request merged. +2. Please read the [wiki](https://github.com/Sub6Resources/flutter_html/wiki) before contributing (there are only two pages at the moment). This will give you an idea of what my plans are for this repository, and what you do and don't need to work on. + +More specific guidelines will be added soon. From c5278bb83741c22b3701a1df5337d4ef18560ad6 Mon Sep 17 00:00:00 2001 From: Matthew Whitaker Date: Fri, 6 Sep 2019 08:24:53 -0600 Subject: [PATCH 07/23] change parse to tryParse in image width. Fixes #118 --- CHANGELOG.md | 4 ++++ README.md | 2 +- lib/rich_text_parser.dart | 32 ++++++++++++++++---------------- pubspec.lock | 12 ++++++------ pubspec.yaml | 2 +- 5 files changed, 28 insertions(+), 24 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cda7b09bbd..9b403ff1ba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## [0.11.0] - September 6, 2019: + +* Make it so `width=100%` doesn't throw error. Fixes [#118](https://github.com/Sub6Resources/flutter_html/issues/118). + ## [0.10.4] - June 22, 2019: * Add support for `customTextStyle` to block and specialty HTML elements. diff --git a/README.md b/README.md index 372be9549d..570ac5822d 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ A Flutter widget for rendering static html tags as Flutter widgets. (Will render Add the following to your `pubspec.yaml` file: dependencies: - flutter_html: ^0.10.4 + flutter_html: ^0.11.0 ## Currently Supported HTML Tags: `a`, `abbr`, `acronym`, `address`, `article`, `aside`, `b`, `bdi`, `bdo`, `big`, `blockquote`, `body`, `br`, `caption`, `cite`, `code`, `data`, `dd`, `del`, `dfn`, `div`, `dl`, `dt`, `em`, `figcaption`, `figure`, `footer`, `h1`, `h2`, `h3`, `h4`, `h5`, `h6`, `header`, `hr`, `i`, `img`, `ins`, `kbd`, `li`, `main`, `mark`, `nav`, `noscript`, `ol`, `p`, `pre`, `q`, `rp`, `rt`, `ruby`, `s`, `samp`, `section`, `small`, `span`, `strike`, `strong`, `sub`, `sup`, `table`, `tbody`, `td`, `template`, `tfoot`, `th`, `thead`, `time`, `tr`, `tt`, `u`, `ul`, `var` diff --git a/lib/rich_text_parser.dart b/lib/rich_text_parser.dart index af39f02dea..5632aa969a 100644 --- a/lib/rich_text_parser.dart +++ b/lib/rich_text_parser.dart @@ -732,6 +732,18 @@ class HtmlRichTextParser extends StatelessWidget { case "img": if (showImages) { if (node.attributes['src'] != null) { + + final width = imageProperties?.width ?? + ((node.attributes['width'] != null) + ? double.tryParse(node.attributes['width']) + : null + ); + final height = imageProperties?.height ?? + ((node.attributes['height'] != null) + ? double.tryParse(node.attributes['height']) + : null + ); + if (node.attributes['src'].startsWith("data:image") && node.attributes['src'].contains("base64,")) { precacheImage( @@ -747,14 +759,8 @@ class HtmlRichTextParser extends StatelessWidget { child: Image.memory( base64.decode( node.attributes['src'].split("base64,")[1].trim()), - width: imageProperties?.width ?? - ((node.attributes['width'] != null) - ? double.tryParse(node.attributes['width']) - : null), - height: imageProperties?.height ?? - ((node.attributes['height'] != null) - ? double.tryParse(node.attributes['height']) - : null), + width: width, + height: height, scale: imageProperties?.scale ?? 1.0, matchTextDirection: imageProperties?.matchTextDirection ?? false, @@ -787,14 +793,8 @@ class HtmlRichTextParser extends StatelessWidget { parseContext.rootWidgetList.add(GestureDetector( child: Image.network( node.attributes['src'], - width: imageProperties?.width ?? - ((node.attributes['width'] != null) - ? double.parse(node.attributes['width']) - : null), - height: imageProperties?.height ?? - ((node.attributes['height'] != null) - ? double.parse(node.attributes['height']) - : null), + width: width, + height: height, scale: imageProperties?.scale ?? 1.0, matchTextDirection: imageProperties?.matchTextDirection ?? false, diff --git a/pubspec.lock b/pubspec.lock index 0ea08348ac..d45ef57534 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1,5 +1,5 @@ # Generated by pub -# See https://www.dartlang.org/tools/pub/glossary#lockfile +# See https://dart.dev/tools/pub/glossary#lockfile packages: async: dependency: transitive @@ -7,7 +7,7 @@ packages: name: async url: "https://pub.dartlang.org" source: hosted - version: "2.1.0" + version: "2.2.0" boolean_selector: dependency: transitive description: @@ -80,14 +80,14 @@ packages: name: pedantic url: "https://pub.dartlang.org" source: hosted - version: "1.5.0" + version: "1.7.0" quiver: dependency: transitive description: name: quiver url: "https://pub.dartlang.org" source: hosted - version: "2.0.2" + version: "2.0.3" sky_engine: dependency: transitive description: flutter @@ -134,7 +134,7 @@ packages: name: test_api url: "https://pub.dartlang.org" source: hosted - version: "0.2.4" + version: "0.2.5" typed_data: dependency: transitive description: @@ -150,5 +150,5 @@ packages: source: hosted version: "2.0.8" sdks: - dart: ">=2.2.0 <3.0.0" + dart: ">=2.2.2 <3.0.0" flutter: ">=0.5.0" diff --git a/pubspec.yaml b/pubspec.yaml index 0a21f25fdb..9da47f8b9b 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: flutter_html description: A Flutter widget for rendering static html tags as Flutter widgets. (Will render over 70 different html tags!) -version: 0.10.4 +version: 0.11.0 author: Matthew Whitaker homepage: https://github.com/Sub6Resources/flutter_html From 247a8f3ff3d2385b4e34718b45c5c49919fcdd94 Mon Sep 17 00:00:00 2001 From: Matthew Whitaker Date: Fri, 6 Sep 2019 15:13:24 -0600 Subject: [PATCH 08/23] Allow negative numbers to fix #97 --- CHANGELOG.md | 1 + lib/rich_text_parser.dart | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9b403ff1ba..67afcd5678 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ ## [0.11.0] - September 6, 2019: * Make it so `width=100%` doesn't throw error. Fixes [#118](https://github.com/Sub6Resources/flutter_html/issues/118). +* You can now set width and/or height in `ImageProperties` to negative to ignore the `width` and/or `height` values from the html. ## [0.10.4] - June 22, 2019: diff --git a/lib/rich_text_parser.dart b/lib/rich_text_parser.dart index 5632aa969a..fa3c3e2f73 100644 --- a/lib/rich_text_parser.dart +++ b/lib/rich_text_parser.dart @@ -759,8 +759,8 @@ class HtmlRichTextParser extends StatelessWidget { child: Image.memory( base64.decode( node.attributes['src'].split("base64,")[1].trim()), - width: width, - height: height, + width: (width ?? -1) > 0? width: null, + height: (height ?? -1) > 0? width: null, scale: imageProperties?.scale ?? 1.0, matchTextDirection: imageProperties?.matchTextDirection ?? false, @@ -793,8 +793,8 @@ class HtmlRichTextParser extends StatelessWidget { parseContext.rootWidgetList.add(GestureDetector( child: Image.network( node.attributes['src'], - width: width, - height: height, + width: (width ?? -1) > 0? width: null, + height: (height ?? -1) > 0? height: null, scale: imageProperties?.scale ?? 1.0, matchTextDirection: imageProperties?.matchTextDirection ?? false, From f1fe49526a324fa384e9091302d9ec800a83d70f Mon Sep 17 00:00:00 2001 From: Matthew Whitaker Date: Mon, 9 Sep 2019 08:20:54 -0600 Subject: [PATCH 09/23] Fix image alt attribute (fixes #96) --- CHANGELOG.md | 3 ++- lib/rich_text_parser.dart | 35 ++++++++++++++++++++--------------- 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 67afcd5678..eacfe97359 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,8 @@ ## [0.11.0] - September 6, 2019: * Make it so `width=100%` doesn't throw error. Fixes [#118](https://github.com/Sub6Resources/flutter_html/issues/118). -* You can now set width and/or height in `ImageProperties` to negative to ignore the `width` and/or `height` values from the html. +* You can now set width and/or height in `ImageProperties` to negative to ignore the `width` and/or `height` values from the html. Fixes [#97](https://github.com/Sub6Resources/flutter_html/issues/97) +* The `img` `alt` property now renders correctly when the image fails to load and with the correct style. Fixes [#96](https://github.com/Sub6Resources/flutter_html/issues/96) ## [0.10.4] - June 22, 2019: diff --git a/lib/rich_text_parser.dart b/lib/rich_text_parser.dart index fa3c3e2f73..633450975d 100644 --- a/lib/rich_text_parser.dart +++ b/lib/rich_text_parser.dart @@ -1,4 +1,5 @@ import 'dart:convert'; +import 'dart:io'; import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; @@ -753,7 +754,7 @@ class HtmlRichTextParser extends StatelessWidget { ), ), buildContext, - onError: onImageError, + onError: onImageError ?? (_,__) {}, ); parseContext.rootWidgetList.add(GestureDetector( child: Image.memory( @@ -788,11 +789,28 @@ class HtmlRichTextParser extends StatelessWidget { precacheImage( NetworkImage(node.attributes['src']), buildContext, - onError: onImageError, + onError: onImageError ?? (_,__) {}, ); parseContext.rootWidgetList.add(GestureDetector( child: Image.network( node.attributes['src'], + frameBuilder: (context, child, frame, _) { + if (node.attributes['alt'] != null && frame == null) { + return BlockText( + child: RichText( + textAlign: TextAlign.center, + text: TextSpan( + text: node.attributes['alt'], + style: nextContext.childStyle, + ), + ) + ); + } + if (frame != null) { + return child; + } + return Container(); + }, width: (width ?? -1) > 0? width: null, height: (height ?? -1) > 0? height: null, scale: imageProperties?.scale ?? 1.0, @@ -819,19 +837,6 @@ class HtmlRichTextParser extends StatelessWidget { }, )); } - if (node.attributes['alt'] != null) { - parseContext.rootWidgetList.add(BlockText( - margin: - EdgeInsets.symmetric(horizontal: 0.0, vertical: 10.0), - padding: EdgeInsets.all(0.0), - child: RichText( - textAlign: TextAlign.center, - text: TextSpan( - text: node.attributes['alt'], - style: nextContext.childStyle, - children: [], - )))); - } } } break; From f38b56ff7ca9d25ef68113c52ede54779fcd5998 Mon Sep 17 00:00:00 2001 From: Matthew Whitaker Date: Mon, 9 Sep 2019 22:23:22 -0600 Subject: [PATCH 10/23] Add partial support for sub and remove unused functions --- CHANGELOG.md | 1 + lib/rich_text_parser.dart | 37 ++++++++----------------------------- 2 files changed, 9 insertions(+), 29 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index eacfe97359..3db68fa667 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ * Make it so `width=100%` doesn't throw error. Fixes [#118](https://github.com/Sub6Resources/flutter_html/issues/118). * You can now set width and/or height in `ImageProperties` to negative to ignore the `width` and/or `height` values from the html. Fixes [#97](https://github.com/Sub6Resources/flutter_html/issues/97) * The `img` `alt` property now renders correctly when the image fails to load and with the correct style. Fixes [#96](https://github.com/Sub6Resources/flutter_html/issues/96) +* Add partial support for `sub` tag. ## [0.10.4] - June 22, 2019: diff --git a/lib/rich_text_parser.dart b/lib/rich_text_parser.dart index 633450975d..2937c99583 100644 --- a/lib/rich_text_parser.dart +++ b/lib/rich_text_parser.dart @@ -1,5 +1,4 @@ import 'dart:convert'; -import 'dart:io'; import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; @@ -224,6 +223,7 @@ class HtmlRichTextParser extends StatelessWidget { "time", "span", "big", + "sub", ]; // specialty elements require unique handling @@ -523,6 +523,13 @@ class HtmlRichTextParser extends StatelessWidget { childStyle = childStyle.merge( TextStyle(backgroundColor: Colors.yellow, color: Colors.black)); break; + case "sub": + childStyle = childStyle.merge( + TextStyle( + fontSize: childStyle.fontSize * OFFSET_TAGS_FONT_SIZE_FACTOR, + ), + ); + break; case "del": case "s": case "strike": @@ -958,12 +965,6 @@ class HtmlRichTextParser extends StatelessWidget { } } - Paint _getPaint(Color color) { - Paint paint = new Paint(); - paint.color = color; - return paint; - } - String condenseHtmlWhitespace(String stringToTrim) { stringToTrim = stringToTrim.replaceAll("\n", " "); while (stringToTrim.indexOf(" ") != -1) { @@ -971,26 +972,4 @@ class HtmlRichTextParser extends StatelessWidget { } return stringToTrim; } - - bool _isNotFirstBreakTag(dom.Node node) { - int index = node.parentNode.nodes.indexOf(node); - if (index == 0) { - if (node.parentNode == null) { - return false; - } - return _isNotFirstBreakTag(node.parentNode); - } else if (node.parentNode.nodes[index - 1] is dom.Element) { - if ((node.parentNode.nodes[index - 1] as dom.Element).localName == "br") { - return true; - } - return false; - } else if (node.parentNode.nodes[index - 1] is dom.Text) { - if ((node.parentNode.nodes[index - 1] as dom.Text).text.trim() == "") { - return _isNotFirstBreakTag(node.parentNode.nodes[index - 1]); - } else { - return false; - } - } - return false; - } } From 18950afcdc77dcc1e3a7c9a778d79c4806dd93dd Mon Sep 17 00:00:00 2001 From: Matthew Whitaker Date: Mon, 9 Sep 2019 22:55:41 -0600 Subject: [PATCH 11/23] Update readme for latest merged pr to show that it fixes #75 --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3db68fa667..d9049c8014 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ * You can now set width and/or height in `ImageProperties` to negative to ignore the `width` and/or `height` values from the html. Fixes [#97](https://github.com/Sub6Resources/flutter_html/issues/97) * The `img` `alt` property now renders correctly when the image fails to load and with the correct style. Fixes [#96](https://github.com/Sub6Resources/flutter_html/issues/96) * Add partial support for `sub` tag. +* Add new option: `shrinkToFit` ([#148](https://github.com/Sub6Resources/flutter_html/pull/148)). Fixes [#75](https://github.com/Sub6Resources/flutter_html/issues/75). ## [0.10.4] - June 22, 2019: From 2e4d2ab8b43e204963fb5cb4ed31f952140ab484 Mon Sep 17 00:00:00 2001 From: Matthew Whitaker Date: Mon, 9 Sep 2019 23:11:19 -0600 Subject: [PATCH 12/23] Prepare for release --- CHANGELOG.md | 2 +- lib/rich_text_parser.dart | 22 ++++++++++------------ 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d9049c8014..2e3415bc40 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -## [0.11.0] - September 6, 2019: +## [0.11.0] - September 10, 2019: * Make it so `width=100%` doesn't throw error. Fixes [#118](https://github.com/Sub6Resources/flutter_html/issues/118). * You can now set width and/or height in `ImageProperties` to negative to ignore the `width` and/or `height` values from the html. Fixes [#97](https://github.com/Sub6Resources/flutter_html/issues/97) diff --git a/lib/rich_text_parser.dart b/lib/rich_text_parser.dart index d3d8fb07c1..6d62c536db 100644 --- a/lib/rich_text_parser.dart +++ b/lib/rich_text_parser.dart @@ -738,17 +738,14 @@ class HtmlRichTextParser extends StatelessWidget { case "img": if (showImages) { if (node.attributes['src'] != null) { - final width = imageProperties?.width ?? ((node.attributes['width'] != null) ? double.tryParse(node.attributes['width']) - : null - ); + : null); final height = imageProperties?.height ?? ((node.attributes['height'] != null) ? double.tryParse(node.attributes['height']) - : null - ); + : null); if (node.attributes['src'].startsWith("data:image") && node.attributes['src'].contains("base64,")) { @@ -759,14 +756,14 @@ class HtmlRichTextParser extends StatelessWidget { ), ), buildContext, - onError: onImageError ?? (_,__) {}, + onError: onImageError ?? (_, __) {}, ); parseContext.rootWidgetList.add(GestureDetector( child: Image.memory( base64.decode( node.attributes['src'].split("base64,")[1].trim()), - width: (width ?? -1) > 0? width: null, - height: (height ?? -1) > 0? width: null, + width: (width ?? -1) > 0 ? width : null, + height: (height ?? -1) > 0 ? width : null, scale: imageProperties?.scale ?? 1.0, matchTextDirection: imageProperties?.matchTextDirection ?? false, @@ -794,7 +791,7 @@ class HtmlRichTextParser extends StatelessWidget { precacheImage( NetworkImage(node.attributes['src']), buildContext, - onError: onImageError ?? (_,__) {}, + onError: onImageError ?? (_, __) {}, ); parseContext.rootWidgetList.add(GestureDetector( child: Image.network( @@ -808,7 +805,8 @@ class HtmlRichTextParser extends StatelessWidget { text: node.attributes['alt'], style: nextContext.childStyle, ), - ) + ), + shrinkToFit: shrinkToFit, ); } if (frame != null) { @@ -816,8 +814,8 @@ class HtmlRichTextParser extends StatelessWidget { } return Container(); }, - width: (width ?? -1) > 0? width: null, - height: (height ?? -1) > 0? height: null, + width: (width ?? -1) > 0 ? width : null, + height: (height ?? -1) > 0 ? height : null, scale: imageProperties?.scale ?? 1.0, matchTextDirection: imageProperties?.matchTextDirection ?? false, From 846ae21be2d6015670432f66b0ae5ceac29dcfd1 Mon Sep 17 00:00:00 2001 From: Matthew Whitaker Date: Tue, 10 Sep 2019 08:54:57 -0600 Subject: [PATCH 13/23] Add golden tests for all supported html elements --- test/golden_test.dart | 40 +++++++++++++++ test/goldens/a.png | Bin 0 -> 3474 bytes test/goldens/abbr.png | Bin 0 -> 3559 bytes test/goldens/acronym.png | Bin 0 -> 3485 bytes test/goldens/address.png | Bin 0 -> 3771 bytes test/goldens/article.png | Bin 0 -> 3553 bytes test/goldens/aside.png | Bin 0 -> 3537 bytes test/goldens/b.png | Bin 0 -> 3426 bytes test/goldens/bdi.png | Bin 0 -> 3465 bytes test/goldens/bdo.png | Bin 0 -> 3376 bytes test/goldens/big.png | Bin 0 -> 3446 bytes test/goldens/blockquote.png | Bin 0 -> 3465 bytes test/goldens/body.png | Bin 0 -> 3465 bytes test/goldens/br.png | Bin 0 -> 3500 bytes test/goldens/caption.png | Bin 0 -> 3465 bytes test/goldens/center.png | Bin 0 -> 3535 bytes test/goldens/cite.png | Bin 0 -> 3674 bytes test/goldens/code.png | Bin 0 -> 3465 bytes test/goldens/data.png | Bin 0 -> 3465 bytes test/goldens/dd.png | Bin 0 -> 3516 bytes test/goldens/del.png | Bin 0 -> 3560 bytes test/goldens/dfn.png | Bin 0 -> 3516 bytes test/goldens/div.png | Bin 0 -> 3516 bytes test/goldens/dl.png | Bin 0 -> 3516 bytes test/goldens/dt.png | Bin 0 -> 3516 bytes test/goldens/em.png | Bin 0 -> 3674 bytes test/goldens/figcaption.png | Bin 0 -> 3516 bytes test/goldens/figcaption_figure.png | Bin 0 -> 3516 bytes test/goldens/font.png | Bin 0 -> 3376 bytes test/goldens/footer.png | Bin 0 -> 3516 bytes test/goldens/h1.png | Bin 0 -> 3525 bytes test/goldens/h2.png | Bin 0 -> 3525 bytes test/goldens/h3.png | Bin 0 -> 3478 bytes test/goldens/h4.png | Bin 0 -> 3491 bytes test/goldens/h5.png | Bin 0 -> 3481 bytes test/goldens/h6.png | Bin 0 -> 3522 bytes test/goldens/header.png | Bin 0 -> 3516 bytes test/goldens/hr.png | Bin 0 -> 3607 bytes test/goldens/i.png | Bin 0 -> 3674 bytes test/goldens/img.png | Bin 0 -> 3478 bytes test/goldens/img_alt.png | Bin 0 -> 3478 bytes test/goldens/ins.png | Bin 0 -> 3521 bytes test/goldens/kbd.png | Bin 0 -> 3465 bytes test/goldens/li_ol.png | Bin 0 -> 3596 bytes test/goldens/li_ul.png | Bin 0 -> 3596 bytes test/goldens/main.png | Bin 0 -> 3516 bytes test/goldens/mark.png | Bin 0 -> 3487 bytes test/goldens/nav.png | Bin 0 -> 3516 bytes test/goldens/noscript.png | Bin 0 -> 3376 bytes test/goldens/p.png | Bin 0 -> 3516 bytes test/goldens/pre.png | Bin 0 -> 3516 bytes test/goldens/q.png | Bin 0 -> 3466 bytes test/goldens/rp.png | Bin 0 -> 3469 bytes test/goldens/rt.png | Bin 0 -> 3469 bytes test/goldens/ruby.png | Bin 0 -> 3469 bytes test/goldens/s.png | Bin 0 -> 3560 bytes test/goldens/samp.png | Bin 0 -> 3465 bytes test/goldens/section.png | Bin 0 -> 3516 bytes test/goldens/small.png | Bin 0 -> 3421 bytes test/goldens/span.png | Bin 0 -> 3465 bytes test/goldens/strike.png | Bin 0 -> 3560 bytes test/goldens/strong.png | Bin 0 -> 3426 bytes test/goldens/sub.png | Bin 0 -> 3534 bytes test/goldens/sup.png | Bin 0 -> 3376 bytes test/goldens/table.png | Bin 0 -> 3614 bytes test/goldens/tbody.png | Bin 0 -> 3614 bytes test/goldens/td.png | Bin 0 -> 3614 bytes test/goldens/template.png | Bin 0 -> 3376 bytes test/goldens/tfoot.png | Bin 0 -> 3614 bytes test/goldens/th.png | Bin 0 -> 3614 bytes test/goldens/thead.png | Bin 0 -> 3614 bytes test/goldens/time.png | Bin 0 -> 3462 bytes test/goldens/tr.png | Bin 0 -> 3614 bytes test/goldens/tt.png | Bin 0 -> 3465 bytes test/goldens/u.png | Bin 0 -> 3521 bytes test/goldens/var.png | Bin 0 -> 3674 bytes test/test_data.dart | 76 +++++++++++++++++++++++++++++ 77 files changed, 116 insertions(+) create mode 100644 test/golden_test.dart create mode 100644 test/goldens/a.png create mode 100644 test/goldens/abbr.png create mode 100644 test/goldens/acronym.png create mode 100644 test/goldens/address.png create mode 100644 test/goldens/article.png create mode 100644 test/goldens/aside.png create mode 100644 test/goldens/b.png create mode 100644 test/goldens/bdi.png create mode 100644 test/goldens/bdo.png create mode 100644 test/goldens/big.png create mode 100644 test/goldens/blockquote.png create mode 100644 test/goldens/body.png create mode 100644 test/goldens/br.png create mode 100644 test/goldens/caption.png create mode 100644 test/goldens/center.png create mode 100644 test/goldens/cite.png create mode 100644 test/goldens/code.png create mode 100644 test/goldens/data.png create mode 100644 test/goldens/dd.png create mode 100644 test/goldens/del.png create mode 100644 test/goldens/dfn.png create mode 100644 test/goldens/div.png create mode 100644 test/goldens/dl.png create mode 100644 test/goldens/dt.png create mode 100644 test/goldens/em.png create mode 100644 test/goldens/figcaption.png create mode 100644 test/goldens/figcaption_figure.png create mode 100644 test/goldens/font.png create mode 100644 test/goldens/footer.png create mode 100644 test/goldens/h1.png create mode 100644 test/goldens/h2.png create mode 100644 test/goldens/h3.png create mode 100644 test/goldens/h4.png create mode 100644 test/goldens/h5.png create mode 100644 test/goldens/h6.png create mode 100644 test/goldens/header.png create mode 100644 test/goldens/hr.png create mode 100644 test/goldens/i.png create mode 100644 test/goldens/img.png create mode 100644 test/goldens/img_alt.png create mode 100644 test/goldens/ins.png create mode 100644 test/goldens/kbd.png create mode 100644 test/goldens/li_ol.png create mode 100644 test/goldens/li_ul.png create mode 100644 test/goldens/main.png create mode 100644 test/goldens/mark.png create mode 100644 test/goldens/nav.png create mode 100644 test/goldens/noscript.png create mode 100644 test/goldens/p.png create mode 100644 test/goldens/pre.png create mode 100644 test/goldens/q.png create mode 100644 test/goldens/rp.png create mode 100644 test/goldens/rt.png create mode 100644 test/goldens/ruby.png create mode 100644 test/goldens/s.png create mode 100644 test/goldens/samp.png create mode 100644 test/goldens/section.png create mode 100644 test/goldens/small.png create mode 100644 test/goldens/span.png create mode 100644 test/goldens/strike.png create mode 100644 test/goldens/strong.png create mode 100644 test/goldens/sub.png create mode 100644 test/goldens/sup.png create mode 100644 test/goldens/table.png create mode 100644 test/goldens/tbody.png create mode 100644 test/goldens/td.png create mode 100644 test/goldens/template.png create mode 100644 test/goldens/tfoot.png create mode 100644 test/goldens/th.png create mode 100644 test/goldens/thead.png create mode 100644 test/goldens/time.png create mode 100644 test/goldens/tr.png create mode 100644 test/goldens/tt.png create mode 100644 test/goldens/u.png create mode 100644 test/goldens/var.png create mode 100644 test/test_data.dart diff --git a/test/golden_test.dart b/test/golden_test.dart new file mode 100644 index 0000000000..82b4f593d2 --- /dev/null +++ b/test/golden_test.dart @@ -0,0 +1,40 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_html/flutter_html.dart'; +import 'package:flutter_test/flutter_test.dart'; + +import 'test_data.dart'; + +class TestApp extends StatelessWidget { + final Widget body; + + TestApp(this.body); + + @override + Widget build(BuildContext context) { + return MaterialApp( + home: Scaffold( + body: body, + appBar: AppBar(title: Text('flutter_html')), + ), + ); + } +} + +void testHtml(String name, String htmlData) { + testWidgets('$name golden test', (WidgetTester tester) async { + await tester.pumpWidget( + TestApp( + Html( + data: htmlData, + ), + ), + ); + await expectLater(find.byType(Html), matchesGoldenFile('goldens/$name.png')); + }); +} + +void main() { + testData.forEach((key, value) { + testHtml(key, value); + }); +} diff --git a/test/goldens/a.png b/test/goldens/a.png new file mode 100644 index 0000000000000000000000000000000000000000..7eae4e38c108f48ba71f3d7b4ee99ac2b052ada3 GIT binary patch literal 3474 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sL96D#WAE}&fD7?vnD5sG(4Pa7POG#mF$$buG!Zgyn4E$tnjPU9+86w zPlj?uh4gGKEEH^?WLDdJ_VXD_`Su#`xPSKDlQ(yN1)0oOwiifkuxH_5V3;7Nz`)?( z)&LZcWMpDsNFiHr=F{A^e!ld1^Y6Xt*st^d$%Us=KhJr-XSZE`+OxOqr+!YgTjTDTtvl;&?BeqO&DFbe*z9>)+O&3a2_}XI z=XAnWU#+_C4NM2W57wi(loqiuYUXGlQ!8hWrlrxeG@6!ZRBeuCuF=djnz=?Z7uDP2 cbSqf?u(f2yWC!O)oMHe1Pgg&ebxsLQ0A2twZ~y=R literal 0 HcmV?d00001 diff --git a/test/goldens/abbr.png b/test/goldens/abbr.png new file mode 100644 index 0000000000000000000000000000000000000000..50fc49edaa4c1126bbf9b0472faa69958beb281b GIT binary patch literal 3559 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sA;07i(^Q|oVRzavlgd|G(23)t&w1m!g=`1yFE=Mo40S-JSFE)t%7Tr zKu|@2!zR7VB zFfdFIRA69maBBdHN|G&@_IKLDvsuqBA2*l%sQPLmmxie>qe(vfsEWfvN=FHu@ckkS{ukNc1 z1H+UWCemVR9`lor9}Cmc_}UN4@U@G_R{whb?)o{o{^RCn_m%7~e)nguy*|)E^&95R zjMST6TwH8C`|Puyy>GL&&U#z+d;axrzyGcYTWu-Bw|>^$yzR!u=eNgO{Vs`r{q>jY zZ`;`Fii#O$(~P^1K04Z;oA#{4>TKEWxvN*Ne*dfTW{%nBsI}+5OacaJe)`7SZ~dmn z0i9kU|A!6L>(q->S|pTFGpU>LM#FP7JgHTPkEW&3v^1KQXw*U)&0M3IYcz8a&Rl2i YH?LS694$ECi2(>aUHx3vIVCg!0F~ruEC2ui literal 0 HcmV?d00001 diff --git a/test/goldens/acronym.png b/test/goldens/acronym.png new file mode 100644 index 0000000000000000000000000000000000000000..9e760e1978c526509626b26b1a857d3040df34c3 GIT binary patch literal 3485 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sL9>a#WAE}&fB|&St5xN4G;CL8zWe4nrG-F=7px2n4UZKafMgE?BLjmG z6AJ^w2@U}U1_foZ1?Sj3`*73f^RK6i-TplJ63zGa+q0SJ_x8^-H~#$Xa9-Z^<+Irt zK3Mm!YM*}I{PVM`o0s2W?b!SOOX|JannQ~i8Gi8gCjgxy$;iaOkix>jz%W5j0q9t_ z1_mk#%84rM{u{iOQRdLUe;1?~7>+-Ca`b9?y(2IXTHH5KH7F1vdFJGqJMvYW3=9t} zb}*y*>{-d~yXVfHJsT4jXZPbn-TwJAXP$lbP`0?X*7o`H=lpi;3=Dtv-(e&zdhD5= zynC0ImUgXlZfWfQ7q`CaFZ_Qt5@`L8Ip@ygn9bg~W5WiBZqPY>=ia@4pKj%C zpPd?+7JHq2e(bcT0{g`o7%Ub{ep^;u|3Vd%NFK;imMRcILA{hVY9`s4bTsHjgO0Qk zg&I}EXsR1cb)%_{@+Q`3J{rwOqxp!Ud=$^v$v)lhd2^LN0}yz+`njxgN@xNAEmb`b literal 0 HcmV?d00001 diff --git a/test/goldens/address.png b/test/goldens/address.png new file mode 100644 index 0000000000000000000000000000000000000000..14c333d3d63d1984747a4b8019c77717c00cb22e GIT binary patch literal 3771 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq^g8)5S5QV$R#U8@oc%W!fM9f7hp?Ahz*}mq?Dzo18aHVmr5QiR*A( zchJe3S+j^;QOrr4;1FP7P*5gYFlU|dzjry$mLI=fbwu3k|I-UUTc20XdtUqc z`PnmnKK=gr=kNKV^UMrCW@TSJ{8--a`E&XG@vk;BY`p*PPj=nkYr^O5rFLuu!g^)qe>oW%l8ZmR_^Mvd3Je6HbqPRHl97plA%%s5fnkE60t17C zTLS~df-@)2ym|LaJJ6uM=6Xid@ZNkgZ~OH6AAf#+wyFM>^S=E}*=|dF`}x-8?^Jfr zoN1na@66@p{@-t{dHQ>8s`+D?YkOuF)_K26F>2o#eA>tS?*6QZ~r%sp&)19j;62g?(S}u`}E*obIJElPfuG~ zTi>qUKJESXX>*GszMuQ4yW9H9cb10a&#n!7YJY!Q&>j;Lvt+lpew@sf=+ob$PoJ|~ zQ~mtUw7asus+kUKv;?|*_sp+%Ue7Dc|7-RpZO-9Y<;LgoPu}hMZqM*wmEL{E$kTiC zzF*5f4%1ippP6CZyH8x#qTZG6-d<;2b}sR*_4Dm-&i$5WC@7uIxM^DT-FIv6_rYBA z`5!w&%-xe^yYH@j8uz`Y`t|liq#)SypONABjWcVW$8877BtMtAwzs(M^gFPy<=mN- z|Ns4Ud<+bpWxJiHp<{*`p!i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sHxl2#WAE}&f8mtdD7t`4j0|CT9yb+P?fmXAeHOzZqxQHab8wy9cmjy zZaPkIVq;2in5g+iZK`AEPL_kkzrKG=uQL|^Y%XtCZ^^^J;E+)Lju&Xhb>{{kDapvh zz>vbi!N4#x%z&z?Cie}C(ddY$`48QZtd`?}_P{d#lb&#&co|9t+n z@u+Hg8XU?9nv9mk( z_U+q10Xg?Y4dA zek%HTTH3t%^Pj(a_in{Z@5+7NGiMj_O}8 zy?@^?ckgXkym;ial)SWOK=1;Gg;|@|y?%ISHZTmTtXJNapP)XWB8)KIUC z7!A+S@C25#RH<)9)6!^K8cj>IY%h)0n^bEYj}}(Lq_FzOx+u%?PQgk+P-l+8)78&q Iol`;+079uTCjbBd literal 0 HcmV?d00001 diff --git a/test/goldens/aside.png b/test/goldens/aside.png new file mode 100644 index 0000000000000000000000000000000000000000..8a52ee53a143921692f5cd118b5731cedba4fad3 GIT binary patch literal 3537 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sHxi1#WAE}&f8mtSu*Jo4G;6fl^=OMP?m^y=+#pw-xnPvuR7Onf!zcp za}LcEj+BVE%RIQ28fl+=ANA(*m;2|B8ywwpX8+F*PhTej4QIL?tPiB-@G~+oFr=_> zFfdFIRA69maBBdHN|G&@R(bM+zqs*y`+YAu{zv{hz3}e6%5%l{zT4%eJ)3^N{PXw6 zujjHee9+Zj)!zSp`{&Qg%hzw^7Wn=4{QhUx?c+9PFfi;pD5}H2prGu)z|hdcz{tR0 z#KgkDaDqdCN`hy)nNqgbuQhE5z9H|omyw|$&rE(_%~wufFsQ^F1d>#?58{W}GcD&- zaWXJGu=&A^8sKS>*S}t|1_pZiA$e?m)G;>ReK+sjyLWwZbu~3}4nH(Fz3I<|Vq@d& z+qV~2R#sl|`5TjV@7TO&=Zf>5RlZkeI1oI$G?pI-ihK`;lpB+it&&iI11J-E;fxKiibZ zx)(cV&g|~)UY!2wxzT5{ZzkpQijB`#+cPrEyS3(ZmBm*f28IKb1+3iEj9pr!m{BvS zn*&F~b2L1$m2^}q;ztwMXaXBeU^Hq!jb^UV%r(+7*BSeHJe;;1VlhU*b~=NntDnm{ Hr-UW|)UQ!B literal 0 HcmV?d00001 diff --git a/test/goldens/b.png b/test/goldens/b.png new file mode 100644 index 0000000000000000000000000000000000000000..3c9e8d228678afbd031135c83c4c884786fa6249 GIT binary patch literal 3426 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sENnZ#WAE}&f8mtdBK4K4i^h$IHRJ<1H*(aZZyB8(|T>U!=eSHtr<#+ zA4QL6W-RDzn)~|D^Dp@(m-7EztzJF*cl%+Gq3h1=1yTi;EF26B69g3)7#!RhfC7?? zObiSuWDCxGoy@mC`h3kU+pHt;>;6Bv@OX0NvzgzoeNIc;S5rUd{_o3YnHefh27WF0 z{V>a}zNUUvY{QN1^Y=e{-7hT0%W#0(<{;31BPJFGh7%kD3=9g&4h#$pJq(Og5|j~D z==Wb9#ca{O{P0e51_r&eub%xos1FK*4=mg?vUE+_vx0Z3K!2Qmz=rCvGha99Y`*>W z*}He|uC{;w{rAk7HP^GB|J!&sFMadPJ+FG+7u+f~{{LN;fuX`WkL-|GGcDC}PBkY3 z!vmuojMNHATExz%nPkWDXwZ!Y-DuXPQ2{=hxkfYBXyzKtTvTt4jutGG6)c~5UhyO* T`tiCMGXR07tDnm{r-UW|=-C+I literal 0 HcmV?d00001 diff --git a/test/goldens/bdi.png b/test/goldens/bdi.png new file mode 100644 index 0000000000000000000000000000000000000000..acb1363400d0a86c842f09d12045d5575bd1c6c7 GIT binary patch literal 3465 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sL9yV#WAE}&f8nISyKW<8Xg+kF9j zz%W5j0VwH4wqT^Z@t-Wy&+neC5Ur2=e{$j5b9TSqRKKh>HkP-`e}4S@<+scX6{iBf z7JN>#e1CtR-POp38_U<4;1FP7P*8SYU})%JV5E|u zjHtrxyDR$`=N!(femoz2Mf)na}S6V@v-yx_)8;>P%Hy z+Rm7BZ{NN>c=-0)Z{H_-VvZ1vTH#_t|(DK=d#Wzp$Pzh-~Rdl literal 0 HcmV?d00001 diff --git a/test/goldens/bdo.png b/test/goldens/bdo.png new file mode 100644 index 0000000000000000000000000000000000000000..8520bfef788c170571af33c003be8a8ded9b98af GIT binary patch literal 3376 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefr00ir;B4q#hkad4E>xOMI0_NdTuG@Y*~6^r+M_WM?pS1cN#Y;8ctNW zaU&wIX3zcybL!&aEX|F(zm}Ct0ZnUsdWRcGU3YE(l9G%}3=AnO91IK-1Qi$<9Nfqj zjP$jvsWv|LIPFr0eb|1>5{p^s^D6(_=Jy!RyU+Ld_3xt33=HRHhVak+{j{QL$L=e7 z4sX6bF5a^zenSRO;sYztO(!@67#I|k9T*rIdKefP7>t-$s3d5t>A-i~doAOchZVD` znHe73(z$kft~SWmw6j>}n8fm((}7{Uu2~$-U#tJt*?;F_U^p=K0~58vpTg)H)lPQG z9}T+Epc~D_l-D4m`DipBjpn1#d_+krbhHc^%4Nti_VpRYrSDx<0gC|!22WQ%mvv4F FO#lmP#2Ekp literal 0 HcmV?d00001 diff --git a/test/goldens/big.png b/test/goldens/big.png new file mode 100644 index 0000000000000000000000000000000000000000..9c9ca7bbe6987339ff03c7c58077498e350855a2 GIT binary patch literal 3446 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|s7b-o#WAE}&f8mtdBKhnZWsUGoVZ}Ar+ljH$`?1JbEh3*+r+NIWhS6F z%fln0a84W3Dvuw9y^o5k>SrZ!#qW(=mnYB1%)lUUW6m$2;Rk*SC@?TMxHSOTl8j6Y z3@I!e3=9(l$rjY>`}uM9+cWL27pwg%_^913H~-De&EMC5PfN3_t(`Of_t$R>3~@yv zwlVu}pE>?L|GE{o!0%6gkJtR$mUNMUVb1|!9R>ykWd{a^h8_k+1_mQ076yhB90F7l zJQK+H>Bp99h7G|LR&#!_FdWzk3XeamK%0c-B>+jPgaKL*&P+|?TW$yRM}b@oBdVW@ zH{O2x?BBn-yu7?H>AUa08yj!FoA>rFd$qA~d3kwpW#!IO(|&*2^*!y{UVR3J{hwK> z8XAxgo;`Es*|fiWk<*Ue)4p3A|Avv_&)U@Ow`KimfhpmEO+^zc<*5QKL}(Gpqh^i< zGTEipXwZ!Y9RqDj|Iu=3G;@t+uF=dj+K8g0TS0soGLLaiXW~RX)y?yOX^z3u)z4*} HQ$iB}H39GD literal 0 HcmV?d00001 diff --git a/test/goldens/blockquote.png b/test/goldens/blockquote.png new file mode 100644 index 0000000000000000000000000000000000000000..acb1363400d0a86c842f09d12045d5575bd1c6c7 GIT binary patch literal 3465 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sL9yV#WAE}&f8nISyKW<8Xg+kF9j zz%W5j0VwH4wqT^Z@t-Wy&+neC5Ur2=e{$j5b9TSqRKKh>HkP-`e}4S@<+scX6{iBf z7JN>#e1CtR-POp38_U<4;1FP7P*8SYU})%JV5E|u zjHtrxyDR$`=N!(femoz2Mf)na}S6V@v-yx_)8;>P%Hy z+Rm7BZ{NN>c=-0)Z{H_-VvZ1vTH#_t|(DK=d#Wzp$Pzh-~Rdl literal 0 HcmV?d00001 diff --git a/test/goldens/body.png b/test/goldens/body.png new file mode 100644 index 0000000000000000000000000000000000000000..acb1363400d0a86c842f09d12045d5575bd1c6c7 GIT binary patch literal 3465 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sL9yV#WAE}&f8nISyKW<8Xg+kF9j zz%W5j0VwH4wqT^Z@t-Wy&+neC5Ur2=e{$j5b9TSqRKKh>HkP-`e}4S@<+scX6{iBf z7JN>#e1CtR-POp38_U<4;1FP7P*8SYU})%JV5E|u zjHtrxyDR$`=N!(femoz2Mf)na}S6V@v-yx_)8;>P%Hy z+Rm7BZ{NN>c=-0)Z{H_-VvZ1vTH#_t|(DK=d#Wzp$Pzh-~Rdl literal 0 HcmV?d00001 diff --git a/test/goldens/br.png b/test/goldens/br.png new file mode 100644 index 0000000000000000000000000000000000000000..dbb0acaff8c1aa550c6bbeae598dd21513268b46 GIT binary patch literal 3500 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|s42|T#WAE}&f8mtd8)1=4i}%7c?(1;l~~N;wfM+&;)e7~omO89cO`|g zCJq}Rp?KTerp5+Ox8AdVFMYTCS-on*x>f7$)&BTl12nqv=^b_;b&rpciGd-7g@b`% zf}jEegM(WGP*jp^!L-_wAIz^C+wZBr*i|3-|J=gd?dR=&|9f9+Y;6B`*V*~=wib3GbZi-^Y8edKex5Tco`0a|7c>Rri;)$R2kTi^E+FX*`odL z&pYbC5SX>PT;6V16VTh7@f#Qz8hRKQ85oS1SQr>ia0oCkC@4EnE_mkZ8JqdPfuloS6}PvY_r7-Zj`+Iu>-ox&+UL=@WG76 zF-?v1jGlT%&7`b+7!6Odi`LPg8x1;YRnwzsX*4a3rX|XoyQBGN=;xzi1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sL9yV#WAE}&f8nISyKW<8Xg+kF9j zz%W5j0VwH4wqT^Z@t-Wy&+neC5Ur2=e{$j5b9TSqRKKh>HkP-`e}4S@<+scX6{iBf z7JN>#e1CtR-POp38_U<4;1FP7P*8SYU})%JV5E|u zjHtrxyDR$`=N!(femoz2Mf)na}S6V@v-yx_)8;>P%Hy z+Rm7BZ{NN>c=-0)Z{H_-VvZ1vTH#_t|(DK=d#Wzp$Pzh-~Rdl literal 0 HcmV?d00001 diff --git a/test/goldens/center.png b/test/goldens/center.png new file mode 100644 index 0000000000000000000000000000000000000000..121355c43e69b0ee81f927ab338e13bf9fcd0820 GIT binary patch literal 3535 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sHxJ^#WAE}&fB|&S;^rd4G)zg)mHLE9x{+Fc+6`N`)yj;v`Oc*3+xSC z%LJBvIN%_+X^NWfs)sjE=_l95*XyzC*?jpdm+|@GT|MhwBTc#uXYW~{I|8JFek%8e)gZ~D~-GRp&>$xWUeHfC> z@VvlcUNtkrgG)JfHNT#zb1*PW_`oR!Bn1^17#!RhfT1JF$i%>q!UB?_Q1IrNGav7G z1C5-1P#P_)cc(_4+sn+rP@uSn5lh&gd3T4KVa}<#{qx(~+piX%KYza1MlOAO^mmV% z_r=D>-@kt^uC3jhbChM?+hQpa;K$!^nY<+_lGZEOv=m4S3l=#KYZp)&i2=F zT>HQ8oH_IO@#8yp?u;~jEazu!{&`b1L&fTvCRR#3I`i&MaR!U2Z_BK=Z{NQ9`M2MH z&zyNv_FAs(r8+uyh$>ek4E#+Xg(sGk7m|0{I@^TAKdo6odF0uUHx3vIVCg! E0MPt3Q2+n{ literal 0 HcmV?d00001 diff --git a/test/goldens/cite.png b/test/goldens/cite.png new file mode 100644 index 0000000000000000000000000000000000000000..3aa5f8ec781c56e93c39c92c4ab727c8d69985a0 GIT binary patch literal 3674 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq{?3)5S5QV$R#U8@*D}B^n;qm#8$Rc1P^Gx~ZwR^{!c2qi#`t=69!U zCrooTPGbvt!soOtf+J{UYz~JE40CX-@1m#2(UY`x=XS8WQ`)%iZ28N1Ev3&cw&*~tn zK5&Uq-$Jk_B6|$Co&O6A=L4r7*rR!9+Ul#XejUDg^{R!fZS4oe+i%O(Tz_3yP>}F$ zn*V&e-pP|Ev!C73p85RPjkj_P3^VS1`Y*4iuU~GRvQwt}=%G8h>*MxH9Y21Ye_k>F z<#TVVfD!BS{+M<|{Jxr-FDEQstXy1fVQ(-0`}c1Y6>beR|Nc}icQ%{dyVH74{r|e< zmfsED-dXn@=*BN%tFLBRx9x3S`TW?1|Ay^54d2u=Fq}F0m9JxObLR6m^=FdL{bOf1 zuqS4JQ|kMKTb94&KhN0wpOL{p|2kt5szCSEtgTzifhJ3Qvwvn_-u9QDpi1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sL9yV#WAE}&f8nISyKW<8Xg+kF9j zz%W5j0VwH4wqT^Z@t-Wy&+neC5Ur2=e{$j5b9TSqRKKh>HkP-`e}4S@<+scX6{iBf z7JN>#e1CtR-POp38_U<4;1FP7P*8SYU})%JV5E|u zjHtrxyDR$`=N!(femoz2Mf)na}S6V@v-yx_)8;>P%Hy z+Rm7BZ{NN>c=-0)Z{H_-VvZ1vTH#_t|(DK=d#Wzp$Pzh-~Rdl literal 0 HcmV?d00001 diff --git a/test/goldens/data.png b/test/goldens/data.png new file mode 100644 index 0000000000000000000000000000000000000000..acb1363400d0a86c842f09d12045d5575bd1c6c7 GIT binary patch literal 3465 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sL9yV#WAE}&f8nISyKW<8Xg+kF9j zz%W5j0VwH4wqT^Z@t-Wy&+neC5Ur2=e{$j5b9TSqRKKh>HkP-`e}4S@<+scX6{iBf z7JN>#e1CtR-POp38_U<4;1FP7P*8SYU})%JV5E|u zjHtrxyDR$`=N!(femoz2Mf)na}S6V@v-yx_)8;>P%Hy z+Rm7BZ{NN>c=-0)Z{H_-VvZ1vTH#_t|(DK=d#Wzp$Pzh-~Rdl literal 0 HcmV?d00001 diff --git a/test/goldens/dd.png b/test/goldens/dd.png new file mode 100644 index 0000000000000000000000000000000000000000..a748917da1e7d5e46ca0b8cd1435abaca07f1bc6 GIT binary patch literal 3516 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|s430U#WAE}&f8mtSux=v4G)bMt3UF3pem8?&}*hpelI#oUv+NSf_oE` ztT{AOI8rKRc}_GbOm>s{%RKY_>+??!2LrUFZ2+OXz#@LI+> zhyNA4<7H^@-u&~!)7kz4z#w_ZDMpdsaa(%x%$bLGyn$gn{h&O^CS?Z(hK3#nMg|6> z(|Oyizw-fOqV)qi3j@Om4s`i5XLhao{NY2vmk*ymf0p5EkDPY&PWij{@1Otr^=pOX z_kvqHXHLJ%%)pSJzWMfBK7W7z;_~wHFCXgm&!0K-?YABBn*YD=oH_IO@#8yp?zGH0 zW;>@W?^)`1poOH#EqKS08F)1DH%osS%Io0?Pz$8hUaMB uq-9fKwD4~jO<i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sA-a?i(^Q|oVRx!y_UF3G(7arHBjKNJY*m)a8Nj9`tDR~_mir3ycD|c zD5N}0NT{>A8|jm#p#5`e?QO~V=}!->*I41Zx8&x$J-7Myvuxb6J;w7R*>>{uTGnDIPrPfyfQup zhCMR#LD4kx>~#5WzrV(}eN9b!`v#`zYyZN& zk6)g@dzYuDrx$kC#>U2?o%tLi!-roryc0fu{(SZD{Zp=AB*gE(e*IegFKvX{EYgfW|9tJce%-n-{`~E?&v)mT_5XQxd)Dlkme$tMwvT1_tj#}fDP~}J z@N|yO=|}gynHd;3{Wk!8+rt2iTq7pbAQ%-K4G?&K7)=bLiD5J`j24xn)dX@YVYE~n jEfq&g#lci6{^8D;Bo_91Zek3uJgTe~DWM4fnMPad literal 0 HcmV?d00001 diff --git a/test/goldens/dfn.png b/test/goldens/dfn.png new file mode 100644 index 0000000000000000000000000000000000000000..a748917da1e7d5e46ca0b8cd1435abaca07f1bc6 GIT binary patch literal 3516 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|s430U#WAE}&f8mtSux=v4G)bMt3UF3pem8?&}*hpelI#oUv+NSf_oE` ztT{AOI8rKRc}_GbOm>s{%RKY_>+??!2LrUFZ2+OXz#@LI+> zhyNA4<7H^@-u&~!)7kz4z#w_ZDMpdsaa(%x%$bLGyn$gn{h&O^CS?Z(hK3#nMg|6> z(|Oyizw-fOqV)qi3j@Om4s`i5XLhao{NY2vmk*ymf0p5EkDPY&PWij{@1Otr^=pOX z_kvqHXHLJ%%)pSJzWMfBK7W7z;_~wHFCXgm&!0K-?YABBn*YD=oH_IO@#8yp?zGH0 zW;>@W?^)`1poOH#EqKS08F)1DH%osS%Io0?Pz$8hUaMB uq-9fKwD4~jO<i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|s430U#WAE}&f8mtSux=v4G)bMt3UF3pem8?&}*hpelI#oUv+NSf_oE` ztT{AOI8rKRc}_GbOm>s{%RKY_>+??!2LrUFZ2+OXz#@LI+> zhyNA4<7H^@-u&~!)7kz4z#w_ZDMpdsaa(%x%$bLGyn$gn{h&O^CS?Z(hK3#nMg|6> z(|Oyizw-fOqV)qi3j@Om4s`i5XLhao{NY2vmk*ymf0p5EkDPY&PWij{@1Otr^=pOX z_kvqHXHLJ%%)pSJzWMfBK7W7z;_~wHFCXgm&!0K-?YABBn*YD=oH_IO@#8yp?zGH0 zW;>@W?^)`1poOH#EqKS08F)1DH%osS%Io0?Pz$8hUaMB uq-9fKwD4~jO<i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|s430U#WAE}&f8mtSux=v4G)bMt3UF3pem8?&}*hpelI#oUv+NSf_oE` ztT{AOI8rKRc}_GbOm>s{%RKY_>+??!2LrUFZ2+OXz#@LI+> zhyNA4<7H^@-u&~!)7kz4z#w_ZDMpdsaa(%x%$bLGyn$gn{h&O^CS?Z(hK3#nMg|6> z(|Oyizw-fOqV)qi3j@Om4s`i5XLhao{NY2vmk*ymf0p5EkDPY&PWij{@1Otr^=pOX z_kvqHXHLJ%%)pSJzWMfBK7W7z;_~wHFCXgm&!0K-?YABBn*YD=oH_IO@#8yp?zGH0 zW;>@W?^)`1poOH#EqKS08F)1DH%osS%Io0?Pz$8hUaMB uq-9fKwD4~jO<i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|s430U#WAE}&f8mtSux=v4G)bMt3UF3pem8?&}*hpelI#oUv+NSf_oE` ztT{AOI8rKRc}_GbOm>s{%RKY_>+??!2LrUFZ2+OXz#@LI+> zhyNA4<7H^@-u&~!)7kz4z#w_ZDMpdsaa(%x%$bLGyn$gn{h&O^CS?Z(hK3#nMg|6> z(|Oyizw-fOqV)qi3j@Om4s`i5XLhao{NY2vmk*ymf0p5EkDPY&PWij{@1Otr^=pOX z_kvqHXHLJ%%)pSJzWMfBK7W7z;_~wHFCXgm&!0K-?YABBn*YD=oH_IO@#8yp?zGH0 zW;>@W?^)`1poOH#EqKS08F)1DH%osS%Io0?Pz$8hUaMB uq-9fKwD4~jO<i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq{?3)5S5QV$R#U8@*D}B^n;qm#8$Rc1P^Gx~ZwR^{!c2qi#`t=69!U zCrooTPGbvt!soOtf+J{UYz~JE40CX-@1m#2(UY`x=XS8WQ`)%iZ28N1Ev3&cw&*~tn zK5&Uq-$Jk_B6|$Co&O6A=L4r7*rR!9+Ul#XejUDg^{R!fZS4oe+i%O(Tz_3yP>}F$ zn*V&e-pP|Ev!C73p85RPjkj_P3^VS1`Y*4iuU~GRvQwt}=%G8h>*MxH9Y21Ye_k>F z<#TVVfD!BS{+M<|{Jxr-FDEQstXy1fVQ(-0`}c1Y6>beR|Nc}icQ%{dyVH74{r|e< zmfsED-dXn@=*BN%tFLBRx9x3S`TW?1|Ay^54d2u=Fq}F0m9JxObLR6m^=FdL{bOf1 zuqS4JQ|kMKTb94&KhN0wpOL{p|2kt5szCSEtgTzifhJ3Qvwvn_-u9QDpi1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|s430U#WAE}&f8mtSux=v4G)bMt3UF3pem8?&}*hpelI#oUv+NSf_oE` ztT{AOI8rKRc}_GbOm>s{%RKY_>+??!2LrUFZ2+OXz#@LI+> zhyNA4<7H^@-u&~!)7kz4z#w_ZDMpdsaa(%x%$bLGyn$gn{h&O^CS?Z(hK3#nMg|6> z(|Oyizw-fOqV)qi3j@Om4s`i5XLhao{NY2vmk*ymf0p5EkDPY&PWij{@1Otr^=pOX z_kvqHXHLJ%%)pSJzWMfBK7W7z;_~wHFCXgm&!0K-?YABBn*YD=oH_IO@#8yp?zGH0 zW;>@W?^)`1poOH#EqKS08F)1DH%osS%Io0?Pz$8hUaMB uq-9fKwD4~jO<i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|s430U#WAE}&f8mtSux=v4G)bMt3UF3pem8?&}*hpelI#oUv+NSf_oE` ztT{AOI8rKRc}_GbOm>s{%RKY_>+??!2LrUFZ2+OXz#@LI+> zhyNA4<7H^@-u&~!)7kz4z#w_ZDMpdsaa(%x%$bLGyn$gn{h&O^CS?Z(hK3#nMg|6> z(|Oyizw-fOqV)qi3j@Om4s`i5XLhao{NY2vmk*ymf0p5EkDPY&PWij{@1Otr^=pOX z_kvqHXHLJ%%)pSJzWMfBK7W7z;_~wHFCXgm&!0K-?YABBn*YD=oH_IO@#8yp?zGH0 zW;>@W?^)`1poOH#EqKS08F)1DH%osS%Io0?Pz$8hUaMB uq-9fKwD4~jO<i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefr00ir;B4q#hkad4E>xOMI0_NdTuG@Y*~6^r+M_WM?pS1cN#Y;8ctNW zaU&wIX3zcybL!&aEX|F(zm}Ct0ZnUsdWRcGU3YE(l9G%}3=AnO91IK-1Qi$<9Nfqj zjP$jvsWv|LIPFr0eb|1>5{p^s^D6(_=Jy!RyU+Ld_3xt33=HRHhVak+{j{QL$L=e7 z4sX6bF5a^zenSRO;sYztO(!@67#I|k9T*rIdKefP7>t-$s3d5t>A-i~doAOchZVD` znHe73(z$kft~SWmw6j>}n8fm((}7{Uu2~$-U#tJt*?;F_U^p=K0~58vpTg)H)lPQG z9}T+Epc~D_l-D4m`DipBjpn1#d_+krbhHc^%4Nti_VpRYrSDx<0gC|!22WQ%mvv4F FO#lmP#2Ekp literal 0 HcmV?d00001 diff --git a/test/goldens/footer.png b/test/goldens/footer.png new file mode 100644 index 0000000000000000000000000000000000000000..a748917da1e7d5e46ca0b8cd1435abaca07f1bc6 GIT binary patch literal 3516 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|s430U#WAE}&f8mtSux=v4G)bMt3UF3pem8?&}*hpelI#oUv+NSf_oE` ztT{AOI8rKRc}_GbOm>s{%RKY_>+??!2LrUFZ2+OXz#@LI+> zhyNA4<7H^@-u&~!)7kz4z#w_ZDMpdsaa(%x%$bLGyn$gn{h&O^CS?Z(hK3#nMg|6> z(|Oyizw-fOqV)qi3j@Om4s`i5XLhao{NY2vmk*ymf0p5EkDPY&PWij{@1Otr^=pOX z_kvqHXHLJ%%)pSJzWMfBK7W7z;_~wHFCXgm&!0K-?YABBn*YD=oH_IO@#8yp?zGH0 zW;>@W?^)`1poOH#EqKS08F)1DH%osS%Io0?Pz$8hUaMB uq-9fKwD4~jO<i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|s43sm#WAE}&f8mtezPMb+Af~&R1KQZG|A|cUdH9KdN-JFd(55|d&X^o z+bkv9qZv}pM5MW?X zPHa;GBGfuuy8OiOb}FHU~q7207_9PIP>Zm zo%Vgeuq}}J!-Q&l+TPo5`D)pLk>T-!6u1=!wX@O1TaS?83{1OPf+Rl5KH literal 0 HcmV?d00001 diff --git a/test/goldens/h2.png b/test/goldens/h2.png new file mode 100644 index 0000000000000000000000000000000000000000..2d595be890c48a471c0af9840f924a74ae6cafa0 GIT binary patch literal 3525 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|s43sm#WAE}&f8mte#+@G?GN{xdn`HN>UHXBSOM#)lATgsyWLOn?r;j| z`XUmjp`(-}sOCE>L_6i#)|UCpzvu6Jr2Qu=?eovqd6Ena4F{Gd%LA>jkY!?FU^u}c zz`&rO>;M$+VPIrnFd|#<%uPjmyZ?F5mg}?o{yBfM-tx<*tn>5sZvCE?R`>I7>c4-_ z|9)d&*!Ofn)sIhym;d~E{QdpcIu38P+y9>x|G(n+B1VQEZ1WR5cvj40C3keZJnh-Vx~e7XJ;D2LaX)Jd>6- zEmxLJ7xxk0;N5SSOWjd%`<2I{{4IB?%lQDCbYM=M@~!C)7O7n zf8g)TnX_ll-nna6RO;=&Tk2PszE@}XV3uxd+~40{TwT5Umh-&%^V2uqJoEGC&cFOS z?2U_SYxmyT_B-=`K=wUG(w)y`1>38$Yci+w1+HPZOdv=pfabaQN zf97}R&*W^seKT+S>YUy4zwvK<_Lqg>9#}Or@azr(!;t*si8XFU1=7cQ}6%) literal 0 HcmV?d00001 diff --git a/test/goldens/h3.png b/test/goldens/h3.png new file mode 100644 index 0000000000000000000000000000000000000000..b40b401a30a2e1c76b9b047ad23a3483a9c26339 GIT binary patch literal 3478 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sL8?8#WAE}&f8mtewPzvjz5gw=ou?1$+Qs} zk?i5_Jjk}PneWvhhu@k@&TsxcyS$>k?$bZ<<>BSC85tNjWZwP;T5#Z@fC2-9gIfcT zEy>8lz>vbi!N4#l7FhV%gMdHxq18Ry)$R_$ICrCe*W!S zMh2UwkzWhSYE0zs?Y(;~vf;+_{QJ)@U)L4mWjG*Q)5J=-BXIknGOWSIChxVx0Xv(# zZ?#Me4=(8Vt$+826&NByb_ap}H)3L8U^u}cz`&rO?7+a#(8B&M@}e|5yVBiDwN#b11P=FHcx zU+2u9pI>^}cJuH3v3HCa9;ALovx9n(i#1%Q85IY}Jt8TpP`sqj_`Wzopr04;J3 AYybcN literal 0 HcmV?d00001 diff --git a/test/goldens/h4.png b/test/goldens/h4.png new file mode 100644 index 0000000000000000000000000000000000000000..72ea6fc02d3c4f9282ea43f5f2d7394c029b543d GIT binary patch literal 3491 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sL9vU#WAE}&f8mtSu&9lZWs4QH5I;c*;%m6R%6zg>f%>RE0}LJCp6t` zF!1AH4qkD^Pv*wNgk8_fR-8Zi`!TEj3-7&8zkUAx7-TZvb2}haV9CP4z%W5jfq}un ztpO+?$;iaOkV3ZL%-6wne~w>0bDUq@_s_Fm>3p{PZ){F~|Nq|XnLj^$|NLk7+wJTO zA7)K{_3-fT!!^G?-;GOWOscQ_oi4ZkU4#h(!}<>_+zbpSI0P6N6qFqp7#eyQ7#SFh zm{_PJSRB+~v;R#g&jXpbzUOv~3DJTJ zet+8bJ?-0GeFld8QP)as?QCt&{{8zmZ}IJIXV1L()qee6rktGIvuDrJrt5xxn*09j zo9cK5hPtPmV$_UvbYDL+FfO)ub6@fFrW@6ZtKW6oGBo_pioE`{;+-?ltJ4n(>(D5A zm9d54s33Lo&}ev$h9|Yk(r9f+^@iSP!7^H~;4fG{GtcMmuivT3yAs$Y OW$<+Mb6Mw<&;$UzemvL! literal 0 HcmV?d00001 diff --git a/test/goldens/h5.png b/test/goldens/h5.png new file mode 100644 index 0000000000000000000000000000000000000000..fef0c30145d2cd8e3194fd667592f0996cc86373 GIT binary patch literal 3481 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 literal 0 HcmV?d00001 diff --git a/test/goldens/img_alt.png b/test/goldens/img_alt.png new file mode 100644 index 0000000000000000000000000000000000000000..ac1f24abf2369a085bfba44a4db7d5b67fe1aeaa GIT binary patch literal 3478 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sL8?8#WAE}&f8nQS;2`S4G$;FUkE&?Iwfzx+IFQn7XJBMtFk)h1U^u}c zz`&rO?7+a#&_lN1X1lZ>XS1FiJ{#!%C;6{=`!?(6mgg(~|K2lmrhokQ&#%9~JjcvX zaVqd@!RI_n`TP5Auj)CxIsJY9=byJZyV)2XaM~SYqNaP$y(1&4aQp7cYYgWSx7&Yb zV>qxhGUopO58^=Yd;DPGrcxlFTdI?mR{u^F7_O%u@NzIPOb}FHU~q7200#feuW6et zzwhV{reZKWPElo~N?%AtXuNFvtFSxaH=JUJE2fUx6 znIXvt46zgzRD&Uc*Ph2QJP4U~`stl}_vCE0-_1);OWSMrM*ZW~^JmYj30vKqe&=xJ z^R#*8{0#b6lQ!RcbAB%{Bnl*JnpkleiPfG_L3oVfiH*@v8Vx02o*zviqZwf|BaCK* o(Ha)HB{W(pj+TmaC>8%Pgeo^Ij1p;T2NpmKp00i_>zopr09W4#)c^nh literal 0 HcmV?d00001 diff --git a/test/goldens/ins.png b/test/goldens/ins.png new file mode 100644 index 0000000000000000000000000000000000000000..9bb4f88b9272a41534680f91fe27e41f1b03fc36 GIT binary patch literal 3521 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|s43gi#WAE}&fB|&S<#Uq4G)u})7X-EKJxigmB%^mdZU{=ZIbT}d5I5i z6nqkAA2`u9N6B;IDUE6Msf*sP4tWuycjwvPJ>2gfJood0t^fa z$_@++4LuA%0V5_B28I*l3wA%}`Cn-A`Pvbi!N4#k zl`sRtfw~WDr~!N?X=lv2w{PFZ#Kz{@?1@{Sp7!iR!REf7cb})Fty{nT`I|R6izT0L zxVv-ad~0?FhPXa+(gG#zBae z3=DhbG(Ro+x#P7jFxY+{oGV7vG=vs-R7sbkW>PnwkA~-Hc+#k_9L?{enQJt2jb<*& l8>6H7Xfz*@k&ogTLJd|Wo(;SJY}_(1c)I$ztaD0e0sw^FRc!zO literal 0 HcmV?d00001 diff --git a/test/goldens/kbd.png b/test/goldens/kbd.png new file mode 100644 index 0000000000000000000000000000000000000000..acb1363400d0a86c842f09d12045d5575bd1c6c7 GIT binary patch literal 3465 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sL9yV#WAE}&f8nISyKW<8Xg+kF9j zz%W5j0VwH4wqT^Z@t-Wy&+neC5Ur2=e{$j5b9TSqRKKh>HkP-`e}4S@<+scX6{iBf z7JN>#e1CtR-POp38_U<4;1FP7P*8SYU})%JV5E|u zjHtrxyDR$`=N!(femoz2Mf)na}S6V@v-yx_)8;>P%Hy z+Rm7BZ{NN>c=-0)Z{H_-VvZ1vTH#_t|(DK=d#Wzp$Pzh-~Rdl literal 0 HcmV?d00001 diff --git a/test/goldens/li_ol.png b/test/goldens/li_ol.png new file mode 100644 index 0000000000000000000000000000000000000000..067295a5b757cb1d385260d09c184099c938d56f GIT binary patch literal 3596 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sA-$0i(^Q|oVT|P^Q7G+8ZHWYDz4;s!qKLGpiO+j?mN0``yctKC&(+f z<_RoW(8!<|mcq3&P*rbfP0Nz+ul}Z|8}`~2lze{q`uk;|;T$^a_A)XsJa{aiz`)?( z)&LZeWMpDsNMYe%V3;6CwqTgP%aG3_ZlACZomBF z`@^r-vNL>`BYySp^LVkx+x6}DUyEzFAz%OBxbFXJ(QY<|2a@X&fG(qoYp{AIPDJ7I z$F18KV-9~Tc`M7nAb*Cc3@y==wSf5hf+cF zfU*z_67{Xd?x4%sL7o&$Zt&(N^_u&542LA>T%WyZ#c zp0jDj)gLow$;EH7dTr{jGyU{Ui1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sA-$0i(^Q|oVT|P^O8eF8XgMY77UpfaVW!V!ZB$M+3Lk}mtII^eK}F% z2IHa+9v%^WzKmx@7OUt#+^+U-->v8Sl=rLcuPOfe@bdG^Aj89+#{sDwGE6KC3@11Q z7#I|k9T*rIdKefP7>vjkJoC)-@cp&vb-#YBQr@@Wr+z!1`*X|lmH)q28XNEbQ#WJ3 z{QY+}3=PZotdg_)w_(=&`al2HmN6#n|NHa$pI^tN#dsMG2*(^`qQnV=e6UB$f$#YC zC}xZH$1m?lGcZhl_UiER^Z!_Y{uWx703;+2@D z-(kN@dc}>RFsIzb1zFow==K5>bVsD+hp9?I`oH>*BdCmIAvuDrF zywA+QP;>Tb-F|zhYj-rU0s~`S>GbD7g@6D4UBrIp?%lIrzkXeGb9&US=Z_yhp5wP% zJU+MTeX;S|-^>gT{#IWTU4zpz`~N#9z4LwwR#?o+O;OS#;GHB;h_N#q_+7sB{(JxD zallC3!9%kMrZ9bsYNu{~8x7CV@T6ARJ(`wA)6!^KqPz_>nvX{F(MZcjGwT^ruI}9J UtT)9Dn1L8PUHx3vIVCg!0B8DKf&c&j literal 0 HcmV?d00001 diff --git a/test/goldens/main.png b/test/goldens/main.png new file mode 100644 index 0000000000000000000000000000000000000000..a748917da1e7d5e46ca0b8cd1435abaca07f1bc6 GIT binary patch literal 3516 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|s430U#WAE}&f8mtSux=v4G)bMt3UF3pem8?&}*hpelI#oUv+NSf_oE` ztT{AOI8rKRc}_GbOm>s{%RKY_>+??!2LrUFZ2+OXz#@LI+> zhyNA4<7H^@-u&~!)7kz4z#w_ZDMpdsaa(%x%$bLGyn$gn{h&O^CS?Z(hK3#nMg|6> z(|Oyizw-fOqV)qi3j@Om4s`i5XLhao{NY2vmk*ymf0p5EkDPY&PWij{@1Otr^=pOX z_kvqHXHLJ%%)pSJzWMfBK7W7z;_~wHFCXgm&!0K-?YABBn*YD=oH_IO@#8yp?zGH0 zW;>@W?^)`1poOH#EqKS08F)1DH%osS%Io0?Pz$8hUaMB uq-9fKwD4~jO<i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|q{-98F{EP7+gls6CMSwCJk2ILur@z z5<#ve!`zr%FM^ydnP<#Pw^wgZIeGfOe_Tw=dUgf|hX)z=ffPf#a|4i+WMpDsNMYe% zV3;7N0F-niTX1HsagB}a|bpgTe>x##P?eqcEBHLIfqZ`$dnMLJ^Lg+)c1-beq_4xb<2 z|MT)qH{rAJ5Wk zkEQgyym;hJ{IcWv$E$v2ES|ae`2J%*Z(i@Ue;xlb?%PM}GijT9(-{~lEG9oK+IjE0 zAOpjJ#1C9zl&22#fT2c;8#R;c%sLu$qd`Zlf`2qEji#m1v@}{pQqp)FEkj1j5IU71 ZGw;VuNv&>RSzp2c1fH&bF6*2Ung9U)3fcew literal 0 HcmV?d00001 diff --git a/test/goldens/nav.png b/test/goldens/nav.png new file mode 100644 index 0000000000000000000000000000000000000000..a748917da1e7d5e46ca0b8cd1435abaca07f1bc6 GIT binary patch literal 3516 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|s430U#WAE}&f8mtSux=v4G)bMt3UF3pem8?&}*hpelI#oUv+NSf_oE` ztT{AOI8rKRc}_GbOm>s{%RKY_>+??!2LrUFZ2+OXz#@LI+> zhyNA4<7H^@-u&~!)7kz4z#w_ZDMpdsaa(%x%$bLGyn$gn{h&O^CS?Z(hK3#nMg|6> z(|Oyizw-fOqV)qi3j@Om4s`i5XLhao{NY2vmk*ymf0p5EkDPY&PWij{@1Otr^=pOX z_kvqHXHLJ%%)pSJzWMfBK7W7z;_~wHFCXgm&!0K-?YABBn*YD=oH_IO@#8yp?zGH0 zW;>@W?^)`1poOH#EqKS08F)1DH%osS%Io0?Pz$8hUaMB uq-9fKwD4~jO<i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefr00ir;B4q#hkad4E>xOMI0_NdTuG@Y*~6^r+M_WM?pS1cN#Y;8ctNW zaU&wIX3zcybL!&aEX|F(zm}Ct0ZnUsdWRcGU3YE(l9G%}3=AnO91IK-1Qi$<9Nfqj zjP$jvsWv|LIPFr0eb|1>5{p^s^D6(_=Jy!RyU+Ld_3xt33=HRHhVak+{j{QL$L=e7 z4sX6bF5a^zenSRO;sYztO(!@67#I|k9T*rIdKefP7>t-$s3d5t>A-i~doAOchZVD` znHe73(z$kft~SWmw6j>}n8fm((}7{Uu2~$-U#tJt*?;F_U^p=K0~58vpTg)H)lPQG z9}T+Epc~D_l-D4m`DipBjpn1#d_+krbhHc^%4Nti_VpRYrSDx<0gC|!22WQ%mvv4F FO#lmP#2Ekp literal 0 HcmV?d00001 diff --git a/test/goldens/p.png b/test/goldens/p.png new file mode 100644 index 0000000000000000000000000000000000000000..a748917da1e7d5e46ca0b8cd1435abaca07f1bc6 GIT binary patch literal 3516 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|s430U#WAE}&f8mtSux=v4G)bMt3UF3pem8?&}*hpelI#oUv+NSf_oE` ztT{AOI8rKRc}_GbOm>s{%RKY_>+??!2LrUFZ2+OXz#@LI+> zhyNA4<7H^@-u&~!)7kz4z#w_ZDMpdsaa(%x%$bLGyn$gn{h&O^CS?Z(hK3#nMg|6> z(|Oyizw-fOqV)qi3j@Om4s`i5XLhao{NY2vmk*ymf0p5EkDPY&PWij{@1Otr^=pOX z_kvqHXHLJ%%)pSJzWMfBK7W7z;_~wHFCXgm&!0K-?YABBn*YD=oH_IO@#8yp?zGH0 zW;>@W?^)`1poOH#EqKS08F)1DH%osS%Io0?Pz$8hUaMB uq-9fKwD4~jO<i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|s430U#WAE}&f8mtSux=v4G)bMt3UF3pem8?&}*hpelI#oUv+NSf_oE` ztT{AOI8rKRc}_GbOm>s{%RKY_>+??!2LrUFZ2+OXz#@LI+> zhyNA4<7H^@-u&~!)7kz4z#w_ZDMpdsaa(%x%$bLGyn$gn{h&O^CS?Z(hK3#nMg|6> z(|Oyizw-fOqV)qi3j@Om4s`i5XLhao{NY2vmk*ymf0p5EkDPY&PWij{@1Otr^=pOX z_kvqHXHLJ%%)pSJzWMfBK7W7z;_~wHFCXgm&!0K-?YABBn*YD=oH_IO@#8yp?zGH0 zW;>@W?^)`1poOH#EqKS08F)1DH%osS%Io0?Pz$8hUaMB uq-9fKwD4~jO<i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sL90B#WAE}&f8nISyKW<8Xg+kF9fkc#1BWMW`QVc}q4m>{UY zz~JE402GxZTQIHm%!k!i&+MMPIP6dAU-kBF*1z9ueqaB7_ROCjDy{A7=H*2vny+A=Iq|RyScr5_uVsR zbf&kL_Ux>$uBe!?diCn&v^)1t&zN0#?=K@mj8MG;(49RDj0_A$Oe_oxCpZKc7!;HV z2)>><^J$Ug_U+r*`SZ8mzVCf4yI6h3?3s~k!`RR7*gxIS{PUjQ%nUnJy3eLRevhW5(X=$0mT1%v7|mRxnQJt2(LHm`jNfv!XW{*z SxO8CGhQZU-&t;ucLK6Tw5&3NZ literal 0 HcmV?d00001 diff --git a/test/goldens/rp.png b/test/goldens/rp.png new file mode 100644 index 0000000000000000000000000000000000000000..6dadba122c215b8091eab2cea2e3a49a4e5c8925 GIT binary patch literal 3469 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sL9;Z#WAE}&fD9DS+f#l8a`eR$+#}3_(bK>+UF-Ga94C)Ftw;)-@fkN zq6-VnGj_2siAwLD;^fG&qE_b5U$fT#zyBS7|M2q3uZJ(^fec@FZZD83uw>z2V3;7N zz`)?()&LZcWMpDsNFiHr=1arF`S*K1etfn<`Jdt6$3HQ2@q<&0nqh$ylrwt_%bv#p z{k4PV9$F~R%rl$4U;f(buRC_{mfpU7d$Qg9_p&?o@0UOQv`9y++i>>TzFmJV{C;K0 z!0^Ci4i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sL9;Z#WAE}&fD9DS+f#l8a`eR$+#}3_(bK>+UF-Ga94C)Ftw;)-@fkN zq6-VnGj_2siAwLD;^fG&qE_b5U$fT#zyBS7|M2q3uZJ(^fec@FZZD83uw>z2V3;7N zz`)?()&LZcWMpDsNFiHr=1arF`S*K1etfn<`Jdt6$3HQ2@q<&0nqh$ylrwt_%bv#p z{k4PV9$F~R%rl$4U;f(buRC_{mfpU7d$Qg9_p&?o@0UOQv`9y++i>>TzFmJV{C;K0 z!0^Ci4i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sL9;Z#WAE}&fD9DS+f#l8a`eR$+#}3_(bK>+UF-Ga94C)Ftw;)-@fkN zq6-VnGj_2siAwLD;^fG&qE_b5U$fT#zyBS7|M2q3uZJ(^fec@FZZD83uw>z2V3;7N zz`)?()&LZcWMpDsNFiHr=1arF`S*K1etfn<`Jdt6$3HQ2@q<&0nqh$ylrwt_%bv#p z{k4PV9$F~R%rl$4U;f(buRC_{mfpU7d$Qg9_p&?o@0UOQv`9y++i>>TzFmJV{C;K0 z!0^Ci4i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sA-a?i(^Q|oVRx!y_UF3G(7arHBjKNJY*m)a8Nj9`tDR~_mir3ycD|c zD5N}0NT{>A8|jm#p#5`e?QO~V=}!->*I41Zx8&x$J-7Myvuxb6J;w7R*>>{uTGnDIPrPfyfQup zhCMR#LD4kx>~#5WzrV(}eN9b!`v#`zYyZN& zk6)g@dzYuDrx$kC#>U2?o%tLi!-roryc0fu{(SZD{Zp=AB*gE(e*IegFKvX{EYgfW|9tJce%-n-{`~E?&v)mT_5XQxd)Dlkme$tMwvT1_tj#}fDP~}J z@N|yO=|}gynHd;3{Wk!8+rt2iTq7pbAQ%-K4G?&K7)=bLiD5J`j24xn)dX@YVYE~n jEfq&g#lci6{^8D;Bo_91Zek3uJgTe~DWM4fnMPad literal 0 HcmV?d00001 diff --git a/test/goldens/samp.png b/test/goldens/samp.png new file mode 100644 index 0000000000000000000000000000000000000000..acb1363400d0a86c842f09d12045d5575bd1c6c7 GIT binary patch literal 3465 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sL9yV#WAE}&f8nISyKW<8Xg+kF9j zz%W5j0VwH4wqT^Z@t-Wy&+neC5Ur2=e{$j5b9TSqRKKh>HkP-`e}4S@<+scX6{iBf z7JN>#e1CtR-POp38_U<4;1FP7P*8SYU})%JV5E|u zjHtrxyDR$`=N!(femoz2Mf)na}S6V@v-yx_)8;>P%Hy z+Rm7BZ{NN>c=-0)Z{H_-VvZ1vTH#_t|(DK=d#Wzp$Pzh-~Rdl literal 0 HcmV?d00001 diff --git a/test/goldens/section.png b/test/goldens/section.png new file mode 100644 index 0000000000000000000000000000000000000000..a748917da1e7d5e46ca0b8cd1435abaca07f1bc6 GIT binary patch literal 3516 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|s430U#WAE}&f8mtSux=v4G)bMt3UF3pem8?&}*hpelI#oUv+NSf_oE` ztT{AOI8rKRc}_GbOm>s{%RKY_>+??!2LrUFZ2+OXz#@LI+> zhyNA4<7H^@-u&~!)7kz4z#w_ZDMpdsaa(%x%$bLGyn$gn{h&O^CS?Z(hK3#nMg|6> z(|Oyizw-fOqV)qi3j@Om4s`i5XLhao{NY2vmk*ymf0p5EkDPY&PWij{@1Otr^=pOX z_kvqHXHLJ%%)pSJzWMfBK7W7z;_~wHFCXgm&!0K-?YABBn*YD=oH_IO@#8yp?zGH0 zW;>@W?^)`1poOH#EqKS08F)1DH%osS%Io0?Pz$8hUaMB uq-9fKwD4~jO<i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sEOUv#WAE}&fD9DeU}4794@|B6w;9OmN?6`iOuSpo3(eM^vekvHy9U5 zY6^vQXf9Z&=z3;rz`2$6^XA1oeRcctN9zNrJN%4H3=AnO91IK-1Qi$< z9NZd!qLO3_rj?)WkKZr#`0r(3<$oJ~&vky@UHNS0_w~0J*lV{5qEaR_5G2b|pdb5g|;lVwh z{`30(nt*=hT%W*5iO;cG2Ns-}*|RZcFAD=hf&3k`(7k!~vyI>K%N81*CV zpL{>aORea{?J4q;$f%iQ=dRJ98x6YAtW9|>HJXn`^U-KN8qG(vY443Tji}b0z+F(! aoPRq!F|lTs^)g_Km%-E3&t;ucLK6T=+T9)i literal 0 HcmV?d00001 diff --git a/test/goldens/span.png b/test/goldens/span.png new file mode 100644 index 0000000000000000000000000000000000000000..acb1363400d0a86c842f09d12045d5575bd1c6c7 GIT binary patch literal 3465 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sL9yV#WAE}&f8nISyKW<8Xg+kF9j zz%W5j0VwH4wqT^Z@t-Wy&+neC5Ur2=e{$j5b9TSqRKKh>HkP-`e}4S@<+scX6{iBf z7JN>#e1CtR-POp38_U<4;1FP7P*8SYU})%JV5E|u zjHtrxyDR$`=N!(femoz2Mf)na}S6V@v-yx_)8;>P%Hy z+Rm7BZ{NN>c=-0)Z{H_-VvZ1vTH#_t|(DK=d#Wzp$Pzh-~Rdl literal 0 HcmV?d00001 diff --git a/test/goldens/strike.png b/test/goldens/strike.png new file mode 100644 index 0000000000000000000000000000000000000000..01fc1c07be8b0fca1bf9f572984dfe47e101f50e GIT binary patch literal 3560 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sA-a?i(^Q|oVRx!y_UF3G(7arHBjKNJY*m)a8Nj9`tDR~_mir3ycD|c zD5N}0NT{>A8|jm#p#5`e?QO~V=}!->*I41Zx8&x$J-7Myvuxb6J;w7R*>>{uTGnDIPrPfyfQup zhCMR#LD4kx>~#5WzrV(}eN9b!`v#`zYyZN& zk6)g@dzYuDrx$kC#>U2?o%tLi!-roryc0fu{(SZD{Zp=AB*gE(e*IegFKvX{EYgfW|9tJce%-n-{`~E?&v)mT_5XQxd)Dlkme$tMwvT1_tj#}fDP~}J z@N|yO=|}gynHd;3{Wk!8+rt2iTq7pbAQ%-K4G?&K7)=bLiD5J`j24xn)dX@YVYE~n jEfq&g#lci6{^8D;Bo_91Zek3uJgTe~DWM4fnMPad literal 0 HcmV?d00001 diff --git a/test/goldens/strong.png b/test/goldens/strong.png new file mode 100644 index 0000000000000000000000000000000000000000..3c9e8d228678afbd031135c83c4c884786fa6249 GIT binary patch literal 3426 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sENnZ#WAE}&f8mtdBK4K4i^h$IHRJ<1H*(aZZyB8(|T>U!=eSHtr<#+ zA4QL6W-RDzn)~|D^Dp@(m-7EztzJF*cl%+Gq3h1=1yTi;EF26B69g3)7#!RhfC7?? zObiSuWDCxGoy@mC`h3kU+pHt;>;6Bv@OX0NvzgzoeNIc;S5rUd{_o3YnHefh27WF0 z{V>a}zNUUvY{QN1^Y=e{-7hT0%W#0(<{;31BPJFGh7%kD3=9g&4h#$pJq(Og5|j~D z==Wb9#ca{O{P0e51_r&eub%xos1FK*4=mg?vUE+_vx0Z3K!2Qmz=rCvGha99Y`*>W z*}He|uC{;w{rAk7HP^GB|J!&sFMadPJ+FG+7u+f~{{LN;fuX`WkL-|GGcDC}PBkY3 z!vmuojMNHATExz%nPkWDXwZ!Y-DuXPQ2{=hxkfYBXyzKtTvTt4jutGG6)c~5UhyO* T`tiCMGXR07tDnm{r-UW|=-C+I literal 0 HcmV?d00001 diff --git a/test/goldens/sub.png b/test/goldens/sub.png new file mode 100644 index 0000000000000000000000000000000000000000..f62f928bbeb6e78964831ce6ab467fc94417f46c GIT binary patch literal 3534 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sHwu!#WAE}&f8mtS<;yj4G-hHHuPGDuXC+ols}l0c;ar;LDvtSV&(f> z6Ao50ICpe6B(^@jnKnDuh)Hujm%abrm-F*yxak{rf1NIW8E8C*4*y;t^`VYKfPq0l z*@1zfp@)Hyfx(E0g@NG&`GTus>uUZa_V~+}TRo}|`~UR9>)D^@Jl}J__MSxYpP%1f z|9JlV-#KQ68JmM`Yiy$X&ezX*lP#|B?fUoWAHUv~>ti#6+s*SGgw zW8iz3YxRYV;Xw7~i29!o^*IFwvwojdmV^XE5rjvhT)QByN#?(SW?r1<&yHy1yD z{`~RFmoKLqUpDE@oOP_|=j&xr>#sll_pk2TEOT@7$M4?dmAw=AzTy4zg6eAPb?eus zKWAV_2uHUK-5=AEdp1VsY?HFHw7i-1?#GXc^~Ja2%B7btUmkr{R#rCGw7jGG#`ofg zwPCy0Ff%YjN9UN$etE$g7&z~nX&g~lV{cSYfU5a*G(1PclcvS(XaXBeV513)@`lxD kJ{rwOqxp#L`REV##BCWN8JTxnfK6ToPgg&ebxsLQ0Hiul4*&oF literal 0 HcmV?d00001 diff --git a/test/goldens/sup.png b/test/goldens/sup.png new file mode 100644 index 0000000000000000000000000000000000000000..8520bfef788c170571af33c003be8a8ded9b98af GIT binary patch literal 3376 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefr00ir;B4q#hkad4E>xOMI0_NdTuG@Y*~6^r+M_WM?pS1cN#Y;8ctNW zaU&wIX3zcybL!&aEX|F(zm}Ct0ZnUsdWRcGU3YE(l9G%}3=AnO91IK-1Qi$<9Nfqj zjP$jvsWv|LIPFr0eb|1>5{p^s^D6(_=Jy!RyU+Ld_3xt33=HRHhVak+{j{QL$L=e7 z4sX6bF5a^zenSRO;sYztO(!@67#I|k9T*rIdKefP7>t-$s3d5t>A-i~doAOchZVD` znHe73(z$kft~SWmw6j>}n8fm((}7{Uu2~$-U#tJt*?;F_U^p=K0~58vpTg)H)lPQG z9}T+Epc~D_l-D4m`DipBjpn1#d_+krbhHc^%4Nti_VpRYrSDx<0gC|!22WQ%mvv4F FO#lmP#2Ekp literal 0 HcmV?d00001 diff --git a/test/goldens/table.png b/test/goldens/table.png new file mode 100644 index 0000000000000000000000000000000000000000..cd76f966a7b68967ba7f300ce90f084daf1fb340 GIT binary patch literal 3614 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sOf~Ki(^Q|oVU04X3YtgaJyJu=hJksZOgl!Xz{!f#^qNC!ytR8b0 zWHV_pt&8at5#lg9lM$rit7V+Asr^Ot>UzHA*0;_qzk2%n_T!8U3><6pYk^dPB?|`w z!vsN~V;tNXfc8o;Boyd2hqekY5>KyXRM;t^NNWe|NrPI#T!habDeCyX1=u3^mRE8yFZGdKiGNGh$+4 zU^u}cz`&rO>_9C+ey$0B|L$DJ7<1_F$4ll64AauSe)_xC-Vtbi3(c%Plah75{udlCv zesgoW`g?|H2YwgcyW3OF9?^Dnx_*3L{{4Nnl@%5;X=!PjZ`y#=9`BcbezaR0r1k+& z-{Zd)_w$bJX4auf*q_PTep^<*mJ^t|B)9$kTW44Equ|qr0*f;rf$6vGw??_K@%wvw zXRG_qo3n>Gg6aM7%5vj-vI&x5*RNkczIyfQ$?f02e>XPX95?@)==J}p=Ek32US3}L z@6XSZ)(xsVcJ7pXfBa_|SjQiJ$`bFk*I%pd?WrvORIva4|Jnl(x6MBL>zz2kw|B7$vx0x<3<%p#-O$u3<+gKjkFs8v&qrlrxeG@6zuZ}E-h jqtSdcnvaOhN6++4R|A6^>bP0l+XkK`=Ddo literal 0 HcmV?d00001 diff --git a/test/goldens/tbody.png b/test/goldens/tbody.png new file mode 100644 index 0000000000000000000000000000000000000000..cd76f966a7b68967ba7f300ce90f084daf1fb340 GIT binary patch literal 3614 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sOf~Ki(^Q|oVU04X3YtgaJyJu=hJksZOgl!Xz{!f#^qNC!ytR8b0 zWHV_pt&8at5#lg9lM$rit7V+Asr^Ot>UzHA*0;_qzk2%n_T!8U3><6pYk^dPB?|`w z!vsN~V;tNXfc8o;Boyd2hqekY5>KyXRM;t^NNWe|NrPI#T!habDeCyX1=u3^mRE8yFZGdKiGNGh$+4 zU^u}cz`&rO>_9C+ey$0B|L$DJ7<1_F$4ll64AauSe)_xC-Vtbi3(c%Plah75{udlCv zesgoW`g?|H2YwgcyW3OF9?^Dnx_*3L{{4Nnl@%5;X=!PjZ`y#=9`BcbezaR0r1k+& z-{Zd)_w$bJX4auf*q_PTep^<*mJ^t|B)9$kTW44Equ|qr0*f;rf$6vGw??_K@%wvw zXRG_qo3n>Gg6aM7%5vj-vI&x5*RNkczIyfQ$?f02e>XPX95?@)==J}p=Ek32US3}L z@6XSZ)(xsVcJ7pXfBa_|SjQiJ$`bFk*I%pd?WrvORIva4|Jnl(x6MBL>zz2kw|B7$vx0x<3<%p#-O$u3<+gKjkFs8v&qrlrxeG@6zuZ}E-h jqtSdcnvaOhN6++4R|A6^>bP0l+XkK`=Ddo literal 0 HcmV?d00001 diff --git a/test/goldens/td.png b/test/goldens/td.png new file mode 100644 index 0000000000000000000000000000000000000000..cd76f966a7b68967ba7f300ce90f084daf1fb340 GIT binary patch literal 3614 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sOf~Ki(^Q|oVU04X3YtgaJyJu=hJksZOgl!Xz{!f#^qNC!ytR8b0 zWHV_pt&8at5#lg9lM$rit7V+Asr^Ot>UzHA*0;_qzk2%n_T!8U3><6pYk^dPB?|`w z!vsN~V;tNXfc8o;Boyd2hqekY5>KyXRM;t^NNWe|NrPI#T!habDeCyX1=u3^mRE8yFZGdKiGNGh$+4 zU^u}cz`&rO>_9C+ey$0B|L$DJ7<1_F$4ll64AauSe)_xC-Vtbi3(c%Plah75{udlCv zesgoW`g?|H2YwgcyW3OF9?^Dnx_*3L{{4Nnl@%5;X=!PjZ`y#=9`BcbezaR0r1k+& z-{Zd)_w$bJX4auf*q_PTep^<*mJ^t|B)9$kTW44Equ|qr0*f;rf$6vGw??_K@%wvw zXRG_qo3n>Gg6aM7%5vj-vI&x5*RNkczIyfQ$?f02e>XPX95?@)==J}p=Ek32US3}L z@6XSZ)(xsVcJ7pXfBa_|SjQiJ$`bFk*I%pd?WrvORIva4|Jnl(x6MBL>zz2kw|B7$vx0x<3<%p#-O$u3<+gKjkFs8v&qrlrxeG@6zuZ}E-h jqtSdcnvaOhN6++4R|A6^>bP0l+XkK`=Ddo literal 0 HcmV?d00001 diff --git a/test/goldens/template.png b/test/goldens/template.png new file mode 100644 index 0000000000000000000000000000000000000000..8520bfef788c170571af33c003be8a8ded9b98af GIT binary patch literal 3376 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefr00ir;B4q#hkad4E>xOMI0_NdTuG@Y*~6^r+M_WM?pS1cN#Y;8ctNW zaU&wIX3zcybL!&aEX|F(zm}Ct0ZnUsdWRcGU3YE(l9G%}3=AnO91IK-1Qi$<9Nfqj zjP$jvsWv|LIPFr0eb|1>5{p^s^D6(_=Jy!RyU+Ld_3xt33=HRHhVak+{j{QL$L=e7 z4sX6bF5a^zenSRO;sYztO(!@67#I|k9T*rIdKefP7>t-$s3d5t>A-i~doAOchZVD` znHe73(z$kft~SWmw6j>}n8fm((}7{Uu2~$-U#tJt*?;F_U^p=K0~58vpTg)H)lPQG z9}T+Epc~D_l-D4m`DipBjpn1#d_+krbhHc^%4Nti_VpRYrSDx<0gC|!22WQ%mvv4F FO#lmP#2Ekp literal 0 HcmV?d00001 diff --git a/test/goldens/tfoot.png b/test/goldens/tfoot.png new file mode 100644 index 0000000000000000000000000000000000000000..cd76f966a7b68967ba7f300ce90f084daf1fb340 GIT binary patch literal 3614 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sOf~Ki(^Q|oVU04X3YtgaJyJu=hJksZOgl!Xz{!f#^qNC!ytR8b0 zWHV_pt&8at5#lg9lM$rit7V+Asr^Ot>UzHA*0;_qzk2%n_T!8U3><6pYk^dPB?|`w z!vsN~V;tNXfc8o;Boyd2hqekY5>KyXRM;t^NNWe|NrPI#T!habDeCyX1=u3^mRE8yFZGdKiGNGh$+4 zU^u}cz`&rO>_9C+ey$0B|L$DJ7<1_F$4ll64AauSe)_xC-Vtbi3(c%Plah75{udlCv zesgoW`g?|H2YwgcyW3OF9?^Dnx_*3L{{4Nnl@%5;X=!PjZ`y#=9`BcbezaR0r1k+& z-{Zd)_w$bJX4auf*q_PTep^<*mJ^t|B)9$kTW44Equ|qr0*f;rf$6vGw??_K@%wvw zXRG_qo3n>Gg6aM7%5vj-vI&x5*RNkczIyfQ$?f02e>XPX95?@)==J}p=Ek32US3}L z@6XSZ)(xsVcJ7pXfBa_|SjQiJ$`bFk*I%pd?WrvORIva4|Jnl(x6MBL>zz2kw|B7$vx0x<3<%p#-O$u3<+gKjkFs8v&qrlrxeG@6zuZ}E-h jqtSdcnvaOhN6++4R|A6^>bP0l+XkK`=Ddo literal 0 HcmV?d00001 diff --git a/test/goldens/th.png b/test/goldens/th.png new file mode 100644 index 0000000000000000000000000000000000000000..cd76f966a7b68967ba7f300ce90f084daf1fb340 GIT binary patch literal 3614 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sOf~Ki(^Q|oVU04X3YtgaJyJu=hJksZOgl!Xz{!f#^qNC!ytR8b0 zWHV_pt&8at5#lg9lM$rit7V+Asr^Ot>UzHA*0;_qzk2%n_T!8U3><6pYk^dPB?|`w z!vsN~V;tNXfc8o;Boyd2hqekY5>KyXRM;t^NNWe|NrPI#T!habDeCyX1=u3^mRE8yFZGdKiGNGh$+4 zU^u}cz`&rO>_9C+ey$0B|L$DJ7<1_F$4ll64AauSe)_xC-Vtbi3(c%Plah75{udlCv zesgoW`g?|H2YwgcyW3OF9?^Dnx_*3L{{4Nnl@%5;X=!PjZ`y#=9`BcbezaR0r1k+& z-{Zd)_w$bJX4auf*q_PTep^<*mJ^t|B)9$kTW44Equ|qr0*f;rf$6vGw??_K@%wvw zXRG_qo3n>Gg6aM7%5vj-vI&x5*RNkczIyfQ$?f02e>XPX95?@)==J}p=Ek32US3}L z@6XSZ)(xsVcJ7pXfBa_|SjQiJ$`bFk*I%pd?WrvORIva4|Jnl(x6MBL>zz2kw|B7$vx0x<3<%p#-O$u3<+gKjkFs8v&qrlrxeG@6zuZ}E-h jqtSdcnvaOhN6++4R|A6^>bP0l+XkK`=Ddo literal 0 HcmV?d00001 diff --git a/test/goldens/thead.png b/test/goldens/thead.png new file mode 100644 index 0000000000000000000000000000000000000000..cd76f966a7b68967ba7f300ce90f084daf1fb340 GIT binary patch literal 3614 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sOf~Ki(^Q|oVU04X3YtgaJyJu=hJksZOgl!Xz{!f#^qNC!ytR8b0 zWHV_pt&8at5#lg9lM$rit7V+Asr^Ot>UzHA*0;_qzk2%n_T!8U3><6pYk^dPB?|`w z!vsN~V;tNXfc8o;Boyd2hqekY5>KyXRM;t^NNWe|NrPI#T!habDeCyX1=u3^mRE8yFZGdKiGNGh$+4 zU^u}cz`&rO>_9C+ey$0B|L$DJ7<1_F$4ll64AauSe)_xC-Vtbi3(c%Plah75{udlCv zesgoW`g?|H2YwgcyW3OF9?^Dnx_*3L{{4Nnl@%5;X=!PjZ`y#=9`BcbezaR0r1k+& z-{Zd)_w$bJX4auf*q_PTep^<*mJ^t|B)9$kTW44Equ|qr0*f;rf$6vGw??_K@%wvw zXRG_qo3n>Gg6aM7%5vj-vI&x5*RNkczIyfQ$?f02e>XPX95?@)==J}p=Ek32US3}L z@6XSZ)(xsVcJ7pXfBa_|SjQiJ$`bFk*I%pd?WrvORIva4|Jnl(x6MBL>zz2kw|B7$vx0x<3<%p#-O$u3<+gKjkFs8v&qrlrxeG@6zuZ}E-h jqtSdcnvaOhN6++4R|A6^>bP0l+XkK`=Ddo literal 0 HcmV?d00001 diff --git a/test/goldens/time.png b/test/goldens/time.png new file mode 100644 index 0000000000000000000000000000000000000000..eace62a0dc137ca3bce2f3d64e8f902e23d61292 GIT binary patch literal 3462 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sL8<7#WAE}&f8nIdBThW4HrN5vxKVj2^2P(STf3%FFqT%!=*}vE3ZLA zh?Dd54Ur20u6<|ImG)mhpRwg?-L2S|`?l}c85k5c*nDSXU^wtp0BE~|TLaJ{Nk%3H zh7=YK28IcOWD8z9&a*%2?4J7SD_#57{C{$xEPa0Mx4*Azjg95^=R7}t{_#u zd-INc)nB-P9#^5A&0@xz?Y|2G13UEtD+>d|2@U~Z_$xawFf^R0+I;iO;lqdT+`A`d zv*-5Pw6wIHHfxe!?VLID_wV03ckQyuSXQTJe15ku14A5FJV;9q12Ec*m{85ZBlvpe z%%??`=H}+?{Q28&-}k=u`hQhkTH4kqS({+{=`)|-S#>n%MuU!lO2z(YS{hADqiKnjEtki1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sOf~Ki(^Q|oVU04X3YtgaJyJu=hJksZOgl!Xz{!f#^qNC!ytR8b0 zWHV_pt&8at5#lg9lM$rit7V+Asr^Ot>UzHA*0;_qzk2%n_T!8U3><6pYk^dPB?|`w z!vsN~V;tNXfc8o;Boyd2hqekY5>KyXRM;t^NNWe|NrPI#T!habDeCyX1=u3^mRE8yFZGdKiGNGh$+4 zU^u}cz`&rO>_9C+ey$0B|L$DJ7<1_F$4ll64AauSe)_xC-Vtbi3(c%Plah75{udlCv zesgoW`g?|H2YwgcyW3OF9?^Dnx_*3L{{4Nnl@%5;X=!PjZ`y#=9`BcbezaR0r1k+& z-{Zd)_w$bJX4auf*q_PTep^<*mJ^t|B)9$kTW44Equ|qr0*f;rf$6vGw??_K@%wvw zXRG_qo3n>Gg6aM7%5vj-vI&x5*RNkczIyfQ$?f02e>XPX95?@)==J}p=Ek32US3}L z@6XSZ)(xsVcJ7pXfBa_|SjQiJ$`bFk*I%pd?WrvORIva4|Jnl(x6MBL>zz2kw|B7$vx0x<3<%p#-O$u3<+gKjkFs8v&qrlrxeG@6zuZ}E-h jqtSdcnvaOhN6++4R|A6^>bP0l+XkK`=Ddo literal 0 HcmV?d00001 diff --git a/test/goldens/tt.png b/test/goldens/tt.png new file mode 100644 index 0000000000000000000000000000000000000000..acb1363400d0a86c842f09d12045d5575bd1c6c7 GIT binary patch literal 3465 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sL9yV#WAE}&f8nISyKW<8Xg+kF9j zz%W5j0VwH4wqT^Z@t-Wy&+neC5Ur2=e{$j5b9TSqRKKh>HkP-`e}4S@<+scX6{iBf z7JN>#e1CtR-POp38_U<4;1FP7P*8SYU})%JV5E|u zjHtrxyDR$`=N!(femoz2Mf)na}S6V@v-yx_)8;>P%Hy z+Rm7BZ{NN>c=-0)Z{H_-VvZ1vTH#_t|(DK=d#Wzp$Pzh-~Rdl literal 0 HcmV?d00001 diff --git a/test/goldens/u.png b/test/goldens/u.png new file mode 100644 index 0000000000000000000000000000000000000000..9bb4f88b9272a41534680f91fe27e41f1b03fc36 GIT binary patch literal 3521 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|s43gi#WAE}&fB|&S<#Uq4G)u})7X-EKJxigmB%^mdZU{=ZIbT}d5I5i z6nqkAA2`u9N6B;IDUE6Msf*sP4tWuycjwvPJ>2gfJood0t^fa z$_@++4LuA%0V5_B28I*l3wA%}`Cn-A`Pvbi!N4#k zl`sRtfw~WDr~!N?X=lv2w{PFZ#Kz{@?1@{Sp7!iR!REf7cb})Fty{nT`I|R6izT0L zxVv-ad~0?FhPXa+(gG#zBae z3=DhbG(Ro+x#P7jFxY+{oGV7vG=vs-R7sbkW>PnwkA~-Hc+#k_9L?{enQJt2jb<*& l8>6H7Xfz*@k&ogTLJd|Wo(;SJY}_(1c)I$ztaD0e0sw^FRc!zO literal 0 HcmV?d00001 diff --git a/test/goldens/var.png b/test/goldens/var.png new file mode 100644 index 0000000000000000000000000000000000000000..3aa5f8ec781c56e93c39c92c4ab727c8d69985a0 GIT binary patch literal 3674 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq{?3)5S5QV$R#U8@*D}B^n;qm#8$Rc1P^Gx~ZwR^{!c2qi#`t=69!U zCrooTPGbvt!soOtf+J{UYz~JE40CX-@1m#2(UY`x=XS8WQ`)%iZ28N1Ev3&cw&*~tn zK5&Uq-$Jk_B6|$Co&O6A=L4r7*rR!9+Ul#XejUDg^{R!fZS4oe+i%O(Tz_3yP>}F$ zn*V&e-pP|Ev!C73p85RPjkj_P3^VS1`Y*4iuU~GRvQwt}=%G8h>*MxH9Y21Ye_k>F z<#TVVfD!BS{+M<|{Jxr-FDEQstXy1fVQ(-0`}c1Y6>beR|Nc}icQ%{dyVH74{r|e< zmfsED-dXn@=*BN%tFLBRx9x3S`TW?1|Ay^54d2u=Fq}F0m9JxObLR6m^=FdL{bOf1 zuqS4JQ|kMKTb94&KhN0wpOL{p|2kt5szCSEtgTzifhJ3Qvwvn_-u9QDp{ + 'a': 'Hello, World!', + 'abbr': 'HLO-WRLD', + 'acronym': 'HW', + 'address': '
123 United States, World
', + 'article': '
123 United States, World
', + 'aside': '', + 'b': 'Hello, World!', + 'bdi': 'Hello, World!', + 'bdo': 'Hello, World!', + 'big': 'Hello, World!', + 'blockquote': '
Hello, World!
', + 'body': 'Hello, World!', + 'br': 'Hello,
World!
', + 'caption': 'Hello, World!', + 'center': '
Hello, World!
', + 'cite': 'Hello, World!', + 'code': 'Hello, World!', + 'data': 'Hello, World!', + 'dd': '
Hello, World!
', + 'del': 'Hello, World!', + 'dfn': 'Hello, World!', + 'div': '
Hello, World!
', + 'dl': '
Hello, World!
', + 'dt': '
Hello, World!
', + 'em': 'Hello, World!', + 'figcaption_figure': '
Hello, World!
', + 'font': 'Hello, World!', + 'footer': '
Hello, World!
', + 'h1': '

Hello, World!

', + 'h2': '

Hello, World!

', + 'h3': '

Hello, World!

', + 'h4': '

Hello, World!

', + 'h5': '
Hello, World!
', + 'h6': '
Hello, World!
', + 'header': '
Hello, World!
', + 'hr': '
Hello

World!
', + 'i': 'Hello, World!', + 'img': 'Hello, World!', + 'img_alt': 'Hello, World!', + 'ins': 'Hello, World!', + 'kbd': 'Hello, World!', + 'li_ul': '
  • Hello
  • World!
', + 'li_ol': '
  1. Hello
  2. World!
', + 'main': '
Hello, World!
', + 'mark': 'Hello, World!', + 'nav': '', + 'noscript': '', + 'p': '

Hello, World!

', + 'pre': '
Hello, World!
', + 'q': 'Hello, World!', + 'rp': ' ㄏㄢˋ ', + 'rt': ' ㄏㄢˋ ', + 'ruby': ' ㄏㄢˋ ', + 's': 'Hello, World!', + 'samp': 'Hello, World!', + 'section': '
Hello, World!
', + 'small': 'Hello, World!', + 'span': 'Hello, World!', + 'strike': 'Hello, World!', + 'strong': 'Hello, World!', + 'sub': 'Hello, World!', + 'sup': 'Hello, World!', + 'table': '
HelloWorld!
HelloWorld!
', + 'tbody': '
HelloWorld!
HelloWorld!
', + 'td': '
HelloWorld!
HelloWorld!
', + 'template': '', + 'tfoot': '
HelloWorld!
HelloWorld!
', + 'th': '
HelloWorld!
HelloWorld!
', + 'thead': '
HelloWorld!
HelloWorld!
', + 'time': '', + 'tr': '
HelloWorld!
HelloWorld!
', + 'tt': 'Hello, World!', + 'u': 'Hello, World!', + 'var': 'Hello, World!', +}; \ No newline at end of file From c28db9f5bb790288dfe95c41f0807ac62613d69d Mon Sep 17 00:00:00 2001 From: Matthew Whitaker Date: Tue, 10 Sep 2019 08:59:01 -0600 Subject: [PATCH 14/23] Add check for flutter version in tests --- .circleci/config.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index dc93507cce..10d516f594 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -5,4 +5,5 @@ jobs: - image: cirrusci/flutter steps: - checkout + - run: flutter --version - run: flutter test \ No newline at end of file From b8644ec897080ceec1ea364650b09d127b30da13 Mon Sep 17 00:00:00 2001 From: Matthew Whitaker Date: Tue, 10 Sep 2019 17:53:11 -0600 Subject: [PATCH 15/23] Add screenshot to readme --- .github/flutter_html_screenshot.png | Bin 0 -> 121846 bytes README.md | 6 ++++-- 2 files changed, 4 insertions(+), 2 deletions(-) create mode 100644 .github/flutter_html_screenshot.png diff --git a/.github/flutter_html_screenshot.png b/.github/flutter_html_screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..dabafb08076121964dddd0241c5fdd6f0f568a51 GIT binary patch literal 121846 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%0Dt&H$YJMDpk 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%0D69$kBSnvp4Rp)ruDH{GX~P;Z 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 X-EvXQ-Auht27jtbS{GiPzZ&>IYncI` literal 0 HcmV?d00001 diff --git a/README.md b/README.md index 570ac5822d..3c0aa06378 100644 --- a/README.md +++ b/README.md @@ -4,8 +4,7 @@ A Flutter widget for rendering static html tags as Flutter widgets. (Will render over 70 different html tags!) -## Roadmap -[View the development roadmap in the wiki](https://github.com/Sub6Resources/flutter_html/wiki/Roadmap) +A Screenshot of flutter_html ## Installing: @@ -17,6 +16,9 @@ Add the following to your `pubspec.yaml` file: ## Currently Supported HTML Tags: `a`, `abbr`, `acronym`, `address`, `article`, `aside`, `b`, `bdi`, `bdo`, `big`, `blockquote`, `body`, `br`, `caption`, `cite`, `code`, `data`, `dd`, `del`, `dfn`, `div`, `dl`, `dt`, `em`, `figcaption`, `figure`, `footer`, `h1`, `h2`, `h3`, `h4`, `h5`, `h6`, `header`, `hr`, `i`, `img`, `ins`, `kbd`, `li`, `main`, `mark`, `nav`, `noscript`, `ol`, `p`, `pre`, `q`, `rp`, `rt`, `ruby`, `s`, `samp`, `section`, `small`, `span`, `strike`, `strong`, `sub`, `sup`, `table`, `tbody`, `td`, `template`, `tfoot`, `th`, `thead`, `time`, `tr`, `tt`, `u`, `ul`, `var` +## Roadmap +[View the development roadmap in the wiki](https://github.com/Sub6Resources/flutter_html/wiki/Roadmap) + ### Partially supported elements: > These are common elements that aren't yet fully supported, but won't be ignored and will still render somewhat correctly. From d55aa45921f7cad0033229ebed4c6c5998324580 Mon Sep 17 00:00:00 2001 From: Matthew Whitaker Date: Wed, 11 Sep 2019 07:53:11 -0600 Subject: [PATCH 16/23] Add check for null onLinkTap callback --- lib/rich_text_parser.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/rich_text_parser.dart b/lib/rich_text_parser.dart index 6d62c536db..25258e2ae1 100644 --- a/lib/rich_text_parser.dart +++ b/lib/rich_text_parser.dart @@ -47,7 +47,7 @@ class LinkTextSpan extends TextSpan { children: children ?? [], recognizer: TapGestureRecognizer() ..onTap = () { - onLinkTap(url); + onLinkTap?.call(url); }, ); } From 9892279be922305e4078804fc344360a2d842ee8 Mon Sep 17 00:00:00 2001 From: Matthew Whitaker Date: Fri, 13 Sep 2019 17:19:56 -0600 Subject: [PATCH 17/23] Try to fix golden tests --- test/golden_test.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/golden_test.dart b/test/golden_test.dart index 82b4f593d2..6d25996c85 100644 --- a/test/golden_test.dart +++ b/test/golden_test.dart @@ -29,7 +29,7 @@ void testHtml(String name, String htmlData) { ), ), ); - await expectLater(find.byType(Html), matchesGoldenFile('goldens/$name.png')); + await expectLater(find.byType(Html), matchesGoldenFile('./goldens/$name.png')); }); } From 213efa08999f8d63b424221cb76425a2a0ba51c4 Mon Sep 17 00:00:00 2001 From: Matthew Whitaker Date: Fri, 13 Sep 2019 17:25:51 -0600 Subject: [PATCH 18/23] Check that files are loaded correctly in circleci --- test/golden_test.dart | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test/golden_test.dart b/test/golden_test.dart index 6d25996c85..9dd6595996 100644 --- a/test/golden_test.dart +++ b/test/golden_test.dart @@ -1,3 +1,5 @@ +import 'dart:io'; + import 'package:flutter/material.dart'; import 'package:flutter_html/flutter_html.dart'; import 'package:flutter_test/flutter_test.dart'; @@ -37,4 +39,5 @@ void main() { testData.forEach((key, value) { testHtml(key, value); }); + File.fromUri(Uri(path: './goldens/a.png')).readAsBytesSync(); } From 68542290acdbc2b94acd7848627c71ca42f280e1 Mon Sep 17 00:00:00 2001 From: Matthew Whitaker Date: Mon, 16 Sep 2019 09:35:35 -0600 Subject: [PATCH 19/23] Update golden files --- test/goldens/a.png | Bin 3474 -> 3367 bytes test/goldens/abbr.png | Bin 3559 -> 3375 bytes test/goldens/acronym.png | Bin 3485 -> 3361 bytes test/goldens/address.png | Bin 3771 -> 3681 bytes test/goldens/article.png | Bin 3553 -> 3354 bytes test/goldens/aside.png | Bin 3537 -> 3349 bytes test/goldens/b.png | Bin 3426 -> 3411 bytes test/goldens/bdi.png | Bin 3465 -> 3342 bytes test/goldens/bdo.png | Bin 3376 -> 3312 bytes test/goldens/big.png | Bin 3446 -> 3343 bytes test/goldens/blockquote.png | Bin 3465 -> 3342 bytes test/goldens/body.png | Bin 3465 -> 3342 bytes test/goldens/br.png | Bin 3500 -> 3335 bytes test/goldens/caption.png | Bin 3465 -> 3342 bytes test/goldens/center.png | Bin 3535 -> 3345 bytes test/goldens/cite.png | Bin 3674 -> 3596 bytes test/goldens/code.png | Bin 3465 -> 3342 bytes test/goldens/data.png | Bin 3465 -> 3342 bytes test/goldens/dd.png | Bin 3516 -> 3345 bytes test/goldens/del.png | Bin 3560 -> 3393 bytes test/goldens/dfn.png | Bin 3516 -> 3345 bytes test/goldens/div.png | Bin 3516 -> 3345 bytes test/goldens/dl.png | Bin 3516 -> 3345 bytes test/goldens/dt.png | Bin 3516 -> 3345 bytes test/goldens/em.png | Bin 3674 -> 3596 bytes test/goldens/figcaption_figure.png | Bin 3516 -> 3345 bytes test/goldens/font.png | Bin 3376 -> 3312 bytes test/goldens/footer.png | Bin 3516 -> 3345 bytes test/goldens/h1.png | Bin 3525 -> 3458 bytes test/goldens/h2.png | Bin 3525 -> 3458 bytes test/goldens/h3.png | Bin 3478 -> 3457 bytes test/goldens/h4.png | Bin 3491 -> 3344 bytes test/goldens/h5.png | Bin 3481 -> 3458 bytes test/goldens/h6.png | Bin 3522 -> 3345 bytes test/goldens/header.png | Bin 3516 -> 3345 bytes test/goldens/hr.png | Bin 3607 -> 3366 bytes test/goldens/i.png | Bin 3674 -> 3596 bytes test/goldens/img.png | Bin 3478 -> 3342 bytes test/goldens/img_alt.png | Bin 3478 -> 3342 bytes test/goldens/ins.png | Bin 3521 -> 3376 bytes test/goldens/kbd.png | Bin 3465 -> 3342 bytes test/goldens/li_ol.png | Bin 3596 -> 3369 bytes test/goldens/li_ul.png | Bin 3596 -> 3369 bytes test/goldens/main.png | Bin 3516 -> 3345 bytes test/goldens/mark.png | Bin 3487 -> 3366 bytes test/goldens/nav.png | Bin 3516 -> 3345 bytes test/goldens/noscript.png | Bin 3376 -> 3312 bytes test/goldens/p.png | Bin 3516 -> 3345 bytes test/goldens/pre.png | Bin 3516 -> 3345 bytes test/goldens/q.png | Bin 3466 -> 3343 bytes test/goldens/rp.png | Bin 3469 -> 3408 bytes test/goldens/rt.png | Bin 3469 -> 3408 bytes test/goldens/ruby.png | Bin 3469 -> 3408 bytes test/goldens/s.png | Bin 3560 -> 3393 bytes test/goldens/samp.png | Bin 3465 -> 3342 bytes test/goldens/section.png | Bin 3516 -> 3345 bytes test/goldens/small.png | Bin 3421 -> 3337 bytes test/goldens/span.png | Bin 3465 -> 3342 bytes test/goldens/strike.png | Bin 3560 -> 3393 bytes test/goldens/strong.png | Bin 3426 -> 3411 bytes test/goldens/sub.png | Bin 3534 -> 3423 bytes test/goldens/sup.png | Bin 3376 -> 3312 bytes test/goldens/table.png | Bin 3614 -> 3486 bytes test/goldens/tbody.png | Bin 3614 -> 3486 bytes test/goldens/td.png | Bin 3614 -> 3486 bytes test/goldens/template.png | Bin 3376 -> 3312 bytes test/goldens/tfoot.png | Bin 3614 -> 3486 bytes test/goldens/th.png | Bin 3614 -> 3486 bytes test/goldens/thead.png | Bin 3614 -> 3486 bytes test/goldens/time.png | Bin 3462 -> 3341 bytes test/goldens/tr.png | Bin 3614 -> 3486 bytes test/goldens/tt.png | Bin 3465 -> 3342 bytes test/goldens/u.png | Bin 3521 -> 3376 bytes test/goldens/var.png | Bin 3674 -> 3596 bytes 74 files changed, 0 insertions(+), 0 deletions(-) diff --git a/test/goldens/a.png b/test/goldens/a.png index 7eae4e38c108f48ba71f3d7b4ee99ac2b052ada3..69250f4facc324ad981e8ffda0bd9d4455a95f06 100644 GIT binary patch delta 263 zcmbOvy#3f}=HC%^-~RF~ zVFrc=k2oe6S5^T{1Dc?BZi`O0ekucl!bADZfy~-mlLMF+i~hfGMdq|m&z3?4An53KvWGpNklK&9`iksKq>gBk0arGL! z6v4sCRSH^EjJ0ub5r>jCeS^*O%sC&2d`n*bKZ}#Ii}e5i00a(py#N3Jus@OhPDPpJ zZHA8yXP%$l>WIHA|K!l+mGhkEyt_VcX6EgO%lYwZd*=ZFT<2ExaQft6UOjubtzCfF z`}1$}?$Z{F1_0n1UcmyBVFO$q+$umWueP-YunSk~U2gyY?3=~O*@d4V002P3D_D{6 zS3YJjGwWS10RRB(2Two%0Dz1D0RR9p0t5g6$ShZ@)trBwdGY$eu6Mat-n{%dPmed7 zaSz*flY0OF;O=+=lMewdN|w7`;J*5JzL+oHH=Fsq;pYJW;D586nK?X|d33b-@OnKn zi^^3Z~mPw+`~5KW@eU$Hy8o{;La>otJQkfO8@`>`@w&+@d6i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefr00yr;B4q#hkY{4TBB^Ft}dicYdk1B{4V8?I=u!+|Oe0R{#IWe1>04+BuZh>3-P;RJ<(Z}R>g z`2G5_Z5ac1h2@-S^B5S`^hndd9&~5!j<)|$WN|l{oq=HkQyz8wgs|&OT2EnY6)>1K z@S)rBW?80Ga?i&5@5SdG((OC`_>wRK!-H^iRS2W72KkxthB@b-8y=JRY|~#k@BiDI zPm6vUN588CCW-!p?_W3F&8xSWYkN(Sfx)KftcmaSrS8CV@%q7cO9qAsf(i@_4sH!V z0ZB$C28I+Cj#0tU02xgTqZwheWEd?KM{9)9+HkZs9IXw9Ky5hFzc1*XP*k+=8DLwM N!PC{xWt~$(69A5`%KiWV literal 3559 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sA;07i(^Q|oVRzavlgd|G(23)t&w1m!g=`1yFE=Mo40S-JSFE)t%7Tr zKu|@2!zR7VB zFfdFIRA69maBBdHN|G&@_IKLDvsuqBA2*l%sQPLmmxie>qe(vfsEWfvN=FHu@ckkS{ukNc1 z1H+UWCemVR9`lor9}Cmc_}UN4@U@G_R{whb?)o{o{^RCn_m%7~e)nguy*|)E^&95R zjMST6TwH8C`|Puyy>GL&&U#z+d;axrzyGcYTWu-Bw|>^$yzR!u=eNgO{Vs`r{q>jY zZ`;`Fii#O$(~P^1K04Z;oA#{4>TKEWxvN*Ne*dfTW{%nBsI}+5OacaJe)`7SZ~dmn z0i9kU|A!6L>(q->S|pTFGpU>LM#FP7JgHTPkEW&3v^1KQXw*U)&0M3IYcz8a&Rl2i YH?LS694$ECi2(>aUHx3vIVCg!0F~ruEC2ui diff --git a/test/goldens/acronym.png b/test/goldens/acronym.png index 9e760e1978c526509626b26b1a857d3040df34c3..43b503400e5e0f52e254464e43477f5571fe06c1 100644 GIT binary patch delta 266 zcmbO$y-;d`gA>nbPZ!6KiaBp@8s;5x5OBD7v}mSxOWWqcg#~7_Vw6JM#8wJvnm*b6 zp}KdiZrSp`vkw10em$9ifq`Y&T6Q4y&3UpfqsinPMo}Q<5>2c7)^z^!ZS7|aW(9lh zY?EVTxFIP$IgvS;@AGDH8U5|yXBZh6-Zbz|)?*AdW#M38m|)psC>PBS5^d%M@dXta z7#!RhfJV=(jGSh8Ok(+E&DtMTdzZZjs=2+HadIQGp5A`OqW$-eOC+y(ZFQ~m?{{Mc zhJ^ZO^XF&I`d70W#Iff)y~$>q91{b>4ffR>n-?-aYppIvujMT@~K;s!a MUHx3vIVCg!0QN6thX4Qo delta 401 zcmV;C0dD@G8l4-EKvNAzNklSzn(WU^Y+7TZr7)q2LSLpkE(~4&o}et)w8GC1&F=> z^kv?Ce8Qpu0Qe1$U;&en0V0vm1(CoNk-!y^zzZH86(GC)Q>_6U!v6ly8vp>u=H$iI zXMaHe0Dy!?u#*7;S3=Cm%-kP(2><}#IJg4>003kJ2mk<(5g-5nK<0G2-OkO;&0Jny zKKSr{zn__z&F0}9bA5e1=jZ1SJ_i5*{J-1*lkoyBQ$GUa?(S}8X4Z9`bzT4H+V?M^ z|IJwd0O0tX&dh8!o4L5Sn6tC9A91iO%iP}H{_@&xx0_{IW?k0@pIw&a5Wg1y063tN v?RI;A=p_IEfaBmDv(W-O3X|XhlNMhAi3gWX=Yx7r00000NkvXXu0mjfHg~|~ diff --git a/test/goldens/address.png b/test/goldens/address.png index 14c333d3d63d1984747a4b8019c77717c00cb22e..ae397472883d017856dc5904d095996762a73b17 100644 GIT binary patch delta 623 zcmdlj`%q?rV+6OSi(^Q|oVT|X{d6)V94L4gwn( zS(11TK76*)tVcQ1v}Et8xBo6b_c(NY!22sS2p?|IKJ$_b=*^6$4QC0Yq4; zzSzX~^7D22ObiSbJo^|K85oS1SQr>ia0oCkC=_psTW?-hP+o3sYh#o1*D*Xi{PO3| z#b)2Xd@-3jZ(g3Q`KiCXM(O;?=WpKMR9rk?ok3<&Z@z<_on6}B;KJHk+t>YH@9dmC zdv;{~6Zf6_1E0M~d}H}Lx-9SAXO;%%&4LQ+*VnJ#Y?rb%YH9KG>C-nqbHk=cUtfRs zuD-Q%=FdMrOZw?Qw?zKr&HGc&*3M%n$S`9{Ik&MnbJnu$+qajzd-Epe+8vGW=BMV^ z_SmM^pFRgsw2vueO7Y!uYu_J-iC6w-X4v;$+riDU{`%WHzv|B1Jba`0+x9nezS}cA z_zhRjUM(^EukPvJ@(dqp;~9-k?aX_A?R)Y$xnuKy4tT!jKO@8aavR^rb6%I_)!M^6 zcMhn0!`#Q2QqNbl98H{86VO}(3YYY9Sqea>?@KhD`CBdI-1PJKxc zv;0B-4yt=vexD3)M)2-*YO?Oz%`^N`mVBrqh`sS|}dKxkAscy$sp0Xz(d*Eu>_|R>;&!^*Xu> zN0GV}GAOEK9kQG_2>^9$z0uGs^9B9hYm$Aw8+M5hdVc;3h8Ryr)M}bw!?Zk9MtmP} z1V-y=cCuySd9$<>=OqSmA=?^19D$Q4dF1_`MIMXA(xWIM#uk(r61T+@vgn10&JFr> zy-W;;HK2(<^|5mgM-jz&k8M`bN_ZSbI)m{;Vob;*%O|u}BUq*qB$eAL=~ zgyRjz0XDiILeNnMhvE`5tR diff --git a/test/goldens/article.png b/test/goldens/article.png index e4be9999bafe690c7568f8df5bea25fc6f0df136..c45a8244178adf083f63d743bfe025870e7ce022 100644 GIT binary patch literal 3354 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefr00Ur;B4q#hkY{4gC%~2si{v?|dS(X{Doi1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sHxl2#WAE}&f8mtdD7t`4j0|CT9yb+P?fmXAeHOzZqxQHab8wy9cmjy zZaPkIVq;2in5g+iZK`AEPL_kkzrKG=uQL|^Y%XtCZ^^^J;E+)Lju&Xhb>{{kDapvh zz>vbi!N4#x%z&z?Cie}C(ddY$`48QZtd`?}_P{d#lb&#&co|9t+n z@u+Hg8XU?9nv9mk( z_U+q10Xg?Y4dA zek%HTTH3t%^Pj(a_in{Z@5+7NGiMj_O}8 zy?@^?ckgXkym;ial)SWOK=1;Gg;|@|y?%ISHZTmTtXJNapP)XWB8)KIUC z7!A+S@C25#RH<)9)6!^K8cj>IY%h)0n^bEYj}}(Lq_FzOx+u%?PQgk+P-l+8)78&q Iol`;+079uTCjbBd diff --git a/test/goldens/aside.png b/test/goldens/aside.png index 8a52ee53a143921692f5cd118b5731cedba4fad3..9006d77628fe45c105eb7a221770ce052def800a 100644 GIT binary patch literal 3349 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq`egr;B4q#hkY{H|8D+kZ=pME}E(8bT}tcU+nDF{dF~e?}#xlG#t47f{}sYfDH==1H%MCpq&nG4M5{18JQRuQYaMMmLC7% z@6Uf-vIiKJpDz8v!jNF3M_n7RIuK}W!LFG2jm!)TGa9&Q;4iSPk<(Lm_R0an?#w|} z76yhB90Cjs3d#<^AU#tibNmG_Fi=%uK-?Y%pduqCbT#!B^Uo`n|Jhl4U;bC@-`Ibr z{hob!@n4wX!8tVJu<9oyxaN4_9k+g9L_T}KM1`2d8qTAFbV$sjfjk<>z-&yF@^~~Y uji#m1v_yHkW;7p-=A+SkM9qBkOgvLi=GlIgBbR~U%HZkh=d#Wzp$Py{mbxSW literal 3537 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sHxi1#WAE}&f8mtSu*Jo4G;6fl^=OMP?m^y=+#pw-xnPvuR7Onf!zcp za}LcEj+BVE%RIQ28fl+=ANA(*m;2|B8ywwpX8+F*PhTej4QIL?tPiB-@G~+oFr=_> zFfdFIRA69maBBdHN|G&@R(bM+zqs*y`+YAu{zv{hz3}e6%5%l{zT4%eJ)3^N{PXw6 zujjHee9+Zj)!zSp`{&Qg%hzw^7Wn=4{QhUx?c+9PFfi;pD5}H2prGu)z|hdcz{tR0 z#KgkDaDqdCN`hy)nNqgbuQhE5z9H|omyw|$&rE(_%~wufFsQ^F1d>#?58{W}GcD&- zaWXJGu=&A^8sKS>*S}t|1_pZiA$e?m)G;>ReK+sjyLWwZbu~3}4nH(Fz3I<|Vq@d& z+qV~2R#sl|`5TjV@7TO&=Zf>5RlZkeI1oI$G?pI-ihK`;lpB+it&&iI11J-E;fxKiibZ zx)(cV&g|~)UY!2wxzT5{ZzkpQijB`#+cPrEyS3(ZmBm*f28IKb1+3iEj9pr!m{BvS zn*&F~b2L1$m2^}q;ztwMXaXBeU^Hq!jb^UV%r(+7*BSeHJe;;1VlhU*b~=NntDnm{ Hr-UW|)UQ!B diff --git a/test/goldens/b.png b/test/goldens/b.png index 3c9e8d228678afbd031135c83c4c884786fa6249..61384dbd6bea29aa052d35cc975c28d32ecb1407 100644 GIT binary patch literal 3411 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefr00*r;B4q#hkad46~vG1spC0Zg6bVIq1uCtJiE2?@{TCc`PgUG)t)L z<62s-9=%Vi#Ls?y<4V2v>+AmhESFx1lIN4G<6TI$Tdb@sR4etY!r@=FtA@# My85}Sb4q9e0GiF#i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sENnZ#WAE}&f8mtdBK4K4i^h$IHRJ<1H*(aZZyB8(|T>U!=eSHtr<#+ zA4QL6W-RDzn)~|D^Dp@(m-7EztzJF*cl%+Gq3h1=1yTi;EF26B69g3)7#!RhfC7?? zObiSuWDCxGoy@mC`h3kU+pHt;>;6Bv@OX0NvzgzoeNIc;S5rUd{_o3YnHefh27WF0 z{V>a}zNUUvY{QN1^Y=e{-7hT0%W#0(<{;31BPJFGh7%kD3=9g&4h#$pJq(Og5|j~D z==Wb9#ca{O{P0e51_r&eub%xos1FK*4=mg?vUE+_vx0Z3K!2Qmz=rCvGha99Y`*>W z*}He|uC{;w{rAk7HP^GB|J!&sFMadPJ+FG+7u+f~{{LN;fuX`WkL-|GGcDC}PBkY3 z!vmuojMNHATExz%nPkWDXwZ!Y-DuXPQ2{=hxkfYBXyzKtTvTt4jutGG6)c~5UhyO* T`tiCMGXR07tDnm{r-UW|=-C+I diff --git a/test/goldens/bdi.png b/test/goldens/bdi.png index acb1363400d0a86c842f09d12045d5575bd1c6c7..3b4446b10f55b0f59131fbb1420b6283019acba3 100644 GIT binary patch delta 237 zcmVEr8X9{>OVfw!{<0002jA(JryPLn_Z1r;;D`h)M!_ak-yC%D}oXHNhC zF2)6uu>nJqKmi{Q%>3#PZuiF#I{*NH3vdCG!2vUqKmjE-(->nvdjtRga1AaX002Nn zfB*mh836(S0A%KE+r}7UEX#88l>cR2*QdVo4##@-9RL9M8!nT<133()ZQJ&C4_7sO;%v%-fXiJH<4bj za0g-$L2wvnEVR)kOlI;9IM36c!-d;?FW+5U-+$W=002N>dF}%M005UmlOY36Ls=g) z{AxAx?&hc!e_8*@q3zB-`|Nw^eKRv3K5ys8&(rM#0C>t#^>FiMIq%=TKGj)(*r%`G z=i`?X77YNv6Fk8Jk+33@kO3f*5CIw<92Fqj-KmZNoWpK^?h^n2mu7K&|IH@|005Bi z1PhU%GLw)2Ad?UQ1xzevW`FKO0001&!5gwvC8TWA7xtZtP0{{Ro#~+gc0W&nrdS+(1T+Z$7 z?ZLy_?e_PQ_1fG&R;$&)Gw$KEb2HDo2LJ$G&SJCK?9Y7&007`Jc!CA9K?1i5lOO{X a7UmcEG=QNu7fyBn0000OxG_mGcYt%PS$61nHKF$P}SA^YkX2{TG#i0+v4-fW}EOGBGfuuy8OiOo;qmE5DbKfni1q l|K^EIom`U(n3~0A+KWHo|1tZ<&uc)%44$rjF6*2UngGbgMFao< delta 264 zcmew$xj|}zqx&sS7srr_Id5+n`Z+m@I9z1(+)~Qfvh>DI^XO@hf_!xDG;UNhoTzZ) zMnquEp8XHz)WyYFnj3e2Ei0E|U|?u`dWRcGU3Z@B$mHi3>1$b2ZG7x;+NBQru>F=L z7PHdlRsOfl?=hTrpYQSO-$kDp7|zWM;h+8cX+_nJ-B3*=3&LGYG#H9w{))Eo~zBlz%T)>NK{?tn8fm((}A|HYZez^ zU{FwYU|?wIVPIrnFk1b$&i*?e1H*x-ADA{5GG%g2HegyT_KbafhH>e8msLzaO$?r{ KelF{r5}E*)vTNi3 diff --git a/test/goldens/big.png b/test/goldens/big.png index 9c9ca7bbe6987339ff03c7c58077498e350855a2..eb736d45d7c5e5fb29e4118943a417a366b0ce4d 100644 GIT binary patch delta 232 zcmew+)h{){!GUL|r;B4q#hkY{HwGSd5OKXIx_E+G!J=Ck9M_k%s1+=6>05E&Q5M_W z-~;El&31lX-oJi+Edv7s%e`}QKq{tvvOS~SWIIMt(KCNuG2fs6-u(@OU%_tsbMt_b zJ=~KYG9~fP{CSl<@B48L|DSyK|Kbb{@p_XlGDYyD-P)E5)4Ta1Q$N?l d1@dCgIQLGMd~)D>+)|)H44$rjF6*2UngC^+To?cV delta 358 zcmV-s0h#`f8ul8HKv4}KNklX^q7)H_m*^!{7Ngrh$sp!}nZI;3YvIisz zHV`42NJv<5oQ49bNceG$;&Xa`nqmrHy;-hq9}WWm01()m`Tzg`!1)l9aRW|5E{^%} zo9)bp>!T+AaPcdL9-r*lv-hv}W@bKpeVm{B_4WV&UUF1DT)*4Q$MEr8X9{>OVfw!{<0002jA(JryPLn_Z1r;;D`h)M!_ak-yC%D}oXHNhC zF2)6uu>nJqKmi{Q%>3#PZuiF#I{*NH3vdCG!2vUqKmjE-(->nvdjtRga1AaX002Nn zfB*mh836(S0A%KE+r}7UEX#88l>cR2*QdVo4##@-9RL9M8!nT<133()ZQJ&C4_7sO;%v%-fXiJH<4bj za0g-$L2wvnEVR)kOlI;9IM36c!-d;?FW+5U-+$W=002N>dF}%M005UmlOY36Ls=g) z{AxAx?&hc!e_8*@q3zB-`|Nw^eKRv3K5ys8&(rM#0C>t#^>FiMIq%=TKGj)(*r%`G z=i`?X77YNv6Fk8Jk+33@kO3f*5CIw<92Fqj-KmZNoWpK^?h^n2mu7K&|IH@|005Bi z1PhU%GLw)2Ad?UQ1xzevW`FKO0001&!5gwvC8TWA7xtZtP0{{Ro#~+gc0W&nrdS+(1T+Z$7 z?ZLy_?e_PQ_1fG&R;$&)Gw$KEb2HDo2LJ$G&SJCK?9Y7&007`Jc!CA9K?1i5lOO{X a7UmcEG=QNu7fyBn0000Er8X9{>OVfw!{<0002jA(JryPLn_Z1r;;D`h)M!_ak-yC%D}oXHNhC zF2)6uu>nJqKmi{Q%>3#PZuiF#I{*NH3vdCG!2vUqKmjE-(->nvdjtRga1AaX002Nn zfB*mh836(S0A%KE+r}7UEX#88l>cR2*QdVo4##@-9RL9M8!nT<133()ZQJ&C4_7sO;%v%-fXiJH<4bj za0g-$L2wvnEVR)kOlI;9IM36c!-d;?FW+5U-+$W=002N>dF}%M005UmlOY36Ls=g) z{AxAx?&hc!e_8*@q3zB-`|Nw^eKRv3K5ys8&(rM#0C>t#^>FiMIq%=TKGj)(*r%`G z=i`?X77YNv6Fk8Jk+33@kO3f*5CIw<92Fqj-KmZNoWpK^?h^n2mu7K&|IH@|005Bi z1PhU%GLw)2Ad?UQ1xzevW`FKO0001&!5gwvC8TWA7xtZtP0{{Ro#~+gc0W&nrdS+(1T+Z$7 z?ZLy_?e_PQ_1fG&R;$&)Gw$KEb2HDo2LJ$G&SJCK?9Y7&007`Jc!CA9K?1i5lOO{X a7UmcEG=QNu7fyBn0000oecgrz4m^(KTwhVarVjknKXeqwLn-9tXk)I;hfFxAg4TF k-Wzopr04&j4WB>pF delta 426 zcmV;b0agBo8mt?TKvfM^NklWPA6hP7Ec1sXhB6K*K4LI=%$k-d{EQL)t zM4O%KKuUfeKRvZ{kqMcpI&bt0KnJ0s2<*bx6F^S|M+bb3g0KixHf(4TS16&??QGjgwYaIhPhyD57CjbE6nyYsoKDvSc000SJ zu#<5CJ(F(%8br+1%sij_5C8zc+u#KR0077c5C8xmBR~KEfXsS2o#yH3Y3}du4-fDA zJ~K1Ra;#%6eQsvv;o)I!Zf*|G0RX@y^8%B>0y8>UXJ+<&pWEBp!^7LQeO|Jz=Dx7+ z`{5Y?0JwDP%*?VZ^Z599c=(@7_Ocv%NV)X6|2hKz0GG}!8IzF#9g}YXAS>(4%(5(V zcXxMqc-ywmOV-ug7p||b56=Jqz@@u7olei^J_G;&@HY5@1+xJI@ClQ!0+Sa00%Jmh U1`x9zH~;_u07*qoM6N<$f~-cxZ2$lO diff --git a/test/goldens/caption.png b/test/goldens/caption.png index acb1363400d0a86c842f09d12045d5575bd1c6c7..3b4446b10f55b0f59131fbb1420b6283019acba3 100644 GIT binary patch delta 237 zcmVEr8X9{>OVfw!{<0002jA(JryPLn_Z1r;;D`h)M!_ak-yC%D}oXHNhC zF2)6uu>nJqKmi{Q%>3#PZuiF#I{*NH3vdCG!2vUqKmjE-(->nvdjtRga1AaX002Nn zfB*mh836(S0A%KE+r}7UEX#88l>cR2*QdVo4##@-9RL9M8!nT<133()ZQJ&C4_7sO;%v%-fXiJH<4bj za0g-$L2wvnEVR)kOlI;9IM36c!-d;?FW+5U-+$W=002N>dF}%M005UmlOY36Ls=g) z{AxAx?&hc!e_8*@q3zB-`|Nw^eKRv3K5ys8&(rM#0C>t#^>FiMIq%=TKGj)(*r%`G z=i`?X77YNv6Fk8Jk+33@kO3f*5CIw<92Fqj-KmZNoWpK^?h^n2mu7K&|IH@|005Bi z1PhU%GLw)2Ad?UQ1xzevW`FKO0001&!5gwvC8TWA7xtZtP0{{Ro#~+gc0W&nrdS+(1T+Z$7 z?ZLy_?e_PQ_1fG&R;$&)Gw$KEb2HDo2LJ$G&SJCK?9Y7&007`Jc!CA9K?1i5lOO{X a7UmcEG=QNu7fyBn0000vJyB|cgFVk~PZ!6KiaBp@Zp>{CkZ=p^(Aey9#~@m)D}C`vp+Z;ZvJDq&11*-b z*Irt^?%&VHubM1ZVIJh+c4V7eMVqi#_ zR(sz)AIQ@?#5y^iQBq0=XyKg9*y|UC|4q%kJ@3~!>p8D)mNWe52ASr}b7s%`-!PLl kGqP;wocw_Ktymr7+{=>Bc)w?f0!?D@boFyt=akR{04vpCbN~PV delta 461 zcmV;;0W$uP8qXV$KvxZUNkloaa2}{om)!%>41^e*S(w-FW~2Kk}-2`1s3qe*g97 zQ|$u8zI^>YpZ_{x(EtGafKRZKApt0pfB`R)Z~+D$uL_X;;Z$n?=WsZldjkOA(ri9_ z`sODH005Bi2^N#l0#_&5%*^rJO8@`>m%$ql001B(KmY)Mi~s=u05ZE}SeGc))1_j7%Hy=ulioOW*J zW%mH^R&ADL@lWW$yYTe%G~`xOiSK=GX6EYZYW0kJIPKib z%kBZ-t=cThay<7E006*c@Cg>P(E=(8laK;<7ny$m|3A!+Q-=4400000NkvXXu0mjf D@RQ;M diff --git a/test/goldens/cite.png b/test/goldens/cite.png index 3aa5f8ec781c56e93c39c92c4ab727c8d69985a0..2987852081c61cfb348b0483ef315c929b5d6904 100644 GIT binary patch literal 3596 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sA-$0i(^Q|oVT|X{Zu1G8Xh(&9A7YhmY4(!UsH8)q1_py`*Tg4m-@e^dfA93^)4Sui>c8(? zy?Ql}`!4a#olDgW3<-PIGE~;p#eJD@HZA#``nmJx#n0|+-&pMZo{^#9<2I%zFJESc zKmVaSciud`S;hRxx_j9f7>?cMnxJZ*KXX}TRb{2&cVTsP_3meP4&T_h^gA%dE94oI z-Y2}7^S8hB%+3D{3=z}&88((1l%4x`-0InzdIp9yr`;QFSWBD+@^4_5e`s>kTEaH{ zf3j@xH+u$#YtIX2y^-yixB36ZKFiyQ5iwr?3cUHx3vIVCg! E01Y60y#N3J literal 3674 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq{?3)5S5QV$R#U8@*D}B^n;qm#8$Rc1P^Gx~ZwR^{!c2qi#`t=69!U zCrooTPGbvt!soOtf+J{UYz~JE40CX-@1m#2(UY`x=XS8WQ`)%iZ28N1Ev3&cw&*~tn zK5&Uq-$Jk_B6|$Co&O6A=L4r7*rR!9+Ul#XejUDg^{R!fZS4oe+i%O(Tz_3yP>}F$ zn*V&e-pP|Ev!C73p85RPjkj_P3^VS1`Y*4iuU~GRvQwt}=%G8h>*MxH9Y21Ye_k>F z<#TVVfD!BS{+M<|{Jxr-FDEQstXy1fVQ(-0`}c1Y6>beR|Nc}icQ%{dyVH74{r|e< zmfsED-dXn@=*BN%tFLBRx9x3S`TW?1|Ay^54d2u=Fq}F0m9JxObLR6m^=FdL{bOf1 zuqS4JQ|kMKTb94&KhN0wpOL{p|2kt5szCSEtgTzifhJ3Qvwvn_-u9QDpEr8X9{>OVfw!{<0002jA(JryPLn_Z1r;;D`h)M!_ak-yC%D}oXHNhC zF2)6uu>nJqKmi{Q%>3#PZuiF#I{*NH3vdCG!2vUqKmjE-(->nvdjtRga1AaX002Nn zfB*mh836(S0A%KE+r}7UEX#88l>cR2*QdVo4##@-9RL9M8!nT<133()ZQJ&C4_7sO;%v%-fXiJH<4bj za0g-$L2wvnEVR)kOlI;9IM36c!-d;?FW+5U-+$W=002N>dF}%M005UmlOY36Ls=g) z{AxAx?&hc!e_8*@q3zB-`|Nw^eKRv3K5ys8&(rM#0C>t#^>FiMIq%=TKGj)(*r%`G z=i`?X77YNv6Fk8Jk+33@kO3f*5CIw<92Fqj-KmZNoWpK^?h^n2mu7K&|IH@|005Bi z1PhU%GLw)2Ad?UQ1xzevW`FKO0001&!5gwvC8TWA7xtZtP0{{Ro#~+gc0W&nrdS+(1T+Z$7 z?ZLy_?e_PQ_1fG&R;$&)Gw$KEb2HDo2LJ$G&SJCK?9Y7&007`Jc!CA9K?1i5lOO{X a7UmcEG=QNu7fyBn0000Er8X9{>OVfw!{<0002jA(JryPLn_Z1r;;D`h)M!_ak-yC%D}oXHNhC zF2)6uu>nJqKmi{Q%>3#PZuiF#I{*NH3vdCG!2vUqKmjE-(->nvdjtRga1AaX002Nn zfB*mh836(S0A%KE+r}7UEX#88l>cR2*QdVo4##@-9RL9M8!nT<133()ZQJ&C4_7sO;%v%-fXiJH<4bj za0g-$L2wvnEVR)kOlI;9IM36c!-d;?FW+5U-+$W=002N>dF}%M005UmlOY36Ls=g) z{AxAx?&hc!e_8*@q3zB-`|Nw^eKRv3K5ys8&(rM#0C>t#^>FiMIq%=TKGj)(*r%`G z=i`?X77YNv6Fk8Jk+33@kO3f*5CIw<92Fqj-KmZNoWpK^?h^n2mu7K&|IH@|005Bi z1PhU%GLw)2Ad?UQ1xzevW`FKO0001&!5gwvC8TWA7xtZtP0{{Ro#~+gc0W&nrdS+(1T+Z$7 z?ZLy_?e_PQ_1fG&R;$&)Gw$KEb2HDo2LJ$G&SJCK?9Y7&007`Jc!CA9K?1i5lOO{X a7UmcEG=QNu7fyBn0000{?kZ=u@2~6wUk+@Aq&ZN#-R{MnmC?ON$z`)SZ!@$VE zV8q12z;NQs?QOmHfL6|F;htQ`EGap&UVd7tp5`Tb9Ovh8nq28JKfdXp2G xoq3*Z%Drt@1=Lr-r?)wg*_CT@0CT*kTzZ@2vtZ7*RzPzYJYD@<);T3K0RVavW&i*H delta 432 zcmV;h0Z;ys8oV2jKvxZBNkl6%*^53O8@`>m%$$p001B(KmY)Mi~s=u05Z#Nw>$R^006*+@CT8h6kf~B z%(|}g@bGZ-@bmNY91e$Bmc`t6?(gsC`uh5)8TWA7xtW*U0{{STXS3Vw4o^={b9Z-l z^zeSapP8BM_P8G@|M$6>na9V+xw*MHYQ{aBc5dcn_W%IE+wlYok?%b-%goGnyPezH z+oOlqb^Yg%Wij`itE;P{XWYYS=Vo4Z4*&qXoy~5yJDht7007`Jc!CA9Ap_e9lh6Xk a7Upl=e$0=&s5E>40000GfNkl002PXY3Ts~0D#9KlfeU17Bk)YfseQ6d&~hW;C27C z^audJgRudV@dIKHGu`@u*ZtQ$<^TWy9)Jy#VF4+VU;!$VU;zbx*^DtROAi4606Yd8 z5C8xmBR~KEfQ$eE001)6JkMi{F}B<7!lSIq;c&R>oO`&hYwrO7fWKh_0ssJH1PA~C zkP#pN06=E?`EfpqFw=iCDT0BiOeAg9x5$vIYMx7%HH&OHDCux6Wio-bo~ zed*r3g7rUm1q%QK;D7NSlhFei3iJC4761UiU$X(T@dM!rlh6a~7V`~2O*826W3;LO O0000z@NgeO>&kO3%@jsYrv5g-5nK;~p-_Q&1?008hd_yhz10LTas001B(KmY)M z%w}1Zxxc@ko12@}!@J#XW@b)L*LBSIJ~uOSdwV;VmzS$%oWo(~W}bEq006ukpMU@W z0GZ8~ANKq8UxxK%X6@|vJ~uP7EXyp*vU+9<${SAn7INTfn0I!c59g|@J z9X4h&^ZDydudc3E4{x{I&x>p}kNoD_nwyz9J3CuF;~Wkz!d-00000NkvXXu0mjf%Ln0i diff --git a/test/goldens/dfn.png b/test/goldens/dfn.png index a748917da1e7d5e46ca0b8cd1435abaca07f1bc6..86c9318cc93dedbae723448e7baf7cec3a3bd635 100644 GIT binary patch delta 266 zcmdlZJyB|cgCoywPZ!6KiaBp@Zp>{?kZ=u@2~6wUk+@Aq&ZN#-R{MnmC?ON$z`)SZ!@$VE zV8q12z;NQs?QOmHfL6|F;htQ`EGap&UVd7tp5`Tb9Ovh8nq28JKfdXp2G xoq3*Z%Drt@1=Lr-r?)wg*_CT@0CT*kTzZ@2vtZ7*RzPzYJYD@<);T3K0RVavW&i*H delta 432 zcmV;h0Z;ys8oV2jKvxZBNkl6%*^53O8@`>m%$$p001B(KmY)Mi~s=u05Z#Nw>$R^006*+@CT8h6kf~B z%(|}g@bGZ-@bmNY91e$Bmc`t6?(gsC`uh5)8TWA7xtW*U0{{STXS3Vw4o^={b9Z-l z^zeSapP8BM_P8G@|M$6>na9V+xw*MHYQ{aBc5dcn_W%IE+wlYok?%b-%goGnyPezH z+oOlqb^Yg%Wij`itE;P{XWYYS=Vo4Z4*&qXoy~5yJDht7007`Jc!CA9Ap_e9lh6Xk a7Upl=e$0=&s5E>40000{?kZ=u@2~6wUk+@Aq&ZN#-R{MnmC?ON$z`)SZ!@$VE zV8q12z;NQs?QOmHfL6|F;htQ`EGap&UVd7tp5`Tb9Ovh8nq28JKfdXp2G xoq3*Z%Drt@1=Lr-r?)wg*_CT@0CT*kTzZ@2vtZ7*RzPzYJYD@<);T3K0RVavW&i*H delta 432 zcmV;h0Z;ys8oV2jKvxZBNkl6%*^53O8@`>m%$$p001B(KmY)Mi~s=u05Z#Nw>$R^006*+@CT8h6kf~B z%(|}g@bGZ-@bmNY91e$Bmc`t6?(gsC`uh5)8TWA7xtW*U0{{STXS3Vw4o^={b9Z-l z^zeSapP8BM_P8G@|M$6>na9V+xw*MHYQ{aBc5dcn_W%IE+wlYok?%b-%goGnyPezH z+oOlqb^Yg%Wij`itE;P{XWYYS=Vo4Z4*&qXoy~5yJDht7007`Jc!CA9Ap_e9lh6Xk a7Upl=e$0=&s5E>40000{?kZ=u@2~6wUk+@Aq&ZN#-R{MnmC?ON$z`)SZ!@$VE zV8q12z;NQs?QOmHfL6|F;htQ`EGap&UVd7tp5`Tb9Ovh8nq28JKfdXp2G xoq3*Z%Drt@1=Lr-r?)wg*_CT@0CT*kTzZ@2vtZ7*RzPzYJYD@<);T3K0RVavW&i*H delta 432 zcmV;h0Z;ys8oV2jKvxZBNkl6%*^53O8@`>m%$$p001B(KmY)Mi~s=u05Z#Nw>$R^006*+@CT8h6kf~B z%(|}g@bGZ-@bmNY91e$Bmc`t6?(gsC`uh5)8TWA7xtW*U0{{STXS3Vw4o^={b9Z-l z^zeSapP8BM_P8G@|M$6>na9V+xw*MHYQ{aBc5dcn_W%IE+wlYok?%b-%goGnyPezH z+oOlqb^Yg%Wij`itE;P{XWYYS=Vo4Z4*&qXoy~5yJDht7007`Jc!CA9Ap_e9lh6Xk a7Upl=e$0=&s5E>40000{?kZ=u@2~6wUk+@Aq&ZN#-R{MnmC?ON$z`)SZ!@$VE zV8q12z;NQs?QOmHfL6|F;htQ`EGap&UVd7tp5`Tb9Ovh8nq28JKfdXp2G xoq3*Z%Drt@1=Lr-r?)wg*_CT@0CT*kTzZ@2vtZ7*RzPzYJYD@<);T3K0RVavW&i*H delta 432 zcmV;h0Z;ys8oV2jKvxZBNkl6%*^53O8@`>m%$$p001B(KmY)Mi~s=u05Z#Nw>$R^006*+@CT8h6kf~B z%(|}g@bGZ-@bmNY91e$Bmc`t6?(gsC`uh5)8TWA7xtW*U0{{STXS3Vw4o^={b9Z-l z^zeSapP8BM_P8G@|M$6>na9V+xw*MHYQ{aBc5dcn_W%IE+wlYok?%b-%goGnyPezH z+oOlqb^Yg%Wij`itE;P{XWYYS=Vo4Z4*&qXoy~5yJDht7007`Jc!CA9Ap_e9lh6Xk a7Upl=e$0=&s5E>40000i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sA-$0i(^Q|oVT|X{Zu1G8Xh(&9A7YhmY4(!UsH8)q1_py`*Tg4m-@e^dfA93^)4Sui>c8(? zy?Ql}`!4a#olDgW3<-PIGE~;p#eJD@HZA#``nmJx#n0|+-&pMZo{^#9<2I%zFJESc zKmVaSciud`S;hRxx_j9f7>?cMnxJZ*KXX}TRb{2&cVTsP_3meP4&T_h^gA%dE94oI z-Y2}7^S8hB%+3D{3=z}&88((1l%4x`-0InzdIp9yr`;QFSWBD+@^4_5e`s>kTEaH{ zf3j@xH+u$#YtIX2y^-yixB36ZKFiyQ5iwr?3cUHx3vIVCg! E01Y60y#N3J literal 3674 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq{?3)5S5QV$R#U8@*D}B^n;qm#8$Rc1P^Gx~ZwR^{!c2qi#`t=69!U zCrooTPGbvt!soOtf+J{UYz~JE40CX-@1m#2(UY`x=XS8WQ`)%iZ28N1Ev3&cw&*~tn zK5&Uq-$Jk_B6|$Co&O6A=L4r7*rR!9+Ul#XejUDg^{R!fZS4oe+i%O(Tz_3yP>}F$ zn*V&e-pP|Ev!C73p85RPjkj_P3^VS1`Y*4iuU~GRvQwt}=%G8h>*MxH9Y21Ye_k>F z<#TVVfD!BS{+M<|{Jxr-FDEQstXy1fVQ(-0`}c1Y6>beR|Nc}icQ%{dyVH74{r|e< zmfsED-dXn@=*BN%tFLBRx9x3S`TW?1|Ay^54d2u=Fq}F0m9JxObLR6m^=FdL{bOf1 zuqS4JQ|kMKTb94&KhN0wpOL{p|2kt5szCSEtgTzifhJ3Qvwvn_-u9QDp{?kZ=u@2~6wUk+@Aq&ZN#-R{MnmC?ON$z`)SZ!@$VE zV8q12z;NQs?QOmHfL6|F;htQ`EGap&UVd7tp5`Tb9Ovh8nq28JKfdXp2G xoq3*Z%Drt@1=Lr-r?)wg*_CT@0CT*kTzZ@2vtZ7*RzPzYJYD@<);T3K0RVavW&i*H delta 432 zcmV;h0Z;ys8oV2jKvxZBNkl6%*^53O8@`>m%$$p001B(KmY)Mi~s=u05Z#Nw>$R^006*+@CT8h6kf~B z%(|}g@bGZ-@bmNY91e$Bmc`t6?(gsC`uh5)8TWA7xtW*U0{{STXS3Vw4o^={b9Z-l z^zeSapP8BM_P8G@|M$6>na9V+xw*MHYQ{aBc5dcn_W%IE+wlYok?%b-%goGnyPezH z+oOlqb^Yg%Wij`itE;P{XWYYS=Vo4Z4*&qXoy~5yJDht7007`Jc!CA9Ap_e9lh6Xk a7Upl=e$0=&s5E>40000OxG_mGcYt%PS$61nHKF$P}SA^YkX2{TG#i0+v4-fW}EOGBGfuuy8OiOo;qmE5DbKfni1q l|K^EIom`U(n3~0A+KWHo|1tZ<&uc)%44$rjF6*2UngGbgMFao< delta 264 zcmew$xj|}zqx&sS7srr_Id5+n`Z+m@I9z1(+)~Qfvh>DI^XO@hf_!xDG;UNhoTzZ) zMnquEp8XHz)WyYFnj3e2Ei0E|U|?u`dWRcGU3Z@B$mHi3>1$b2ZG7x;+NBQru>F=L z7PHdlRsOfl?=hTrpYQSO-$kDp7|zWM;h+8cX+_nJ-B3*=3&LGYG#H9w{))Eo~zBlz%T)>NK{?tn8fm((}A|HYZez^ zU{FwYU|?wIVPIrnFk1b$&i*?e1H*x-ADA{5GG%g2HegyT_KbafhH>e8msLzaO$?r{ KelF{r5}E*)vTNi3 diff --git a/test/goldens/footer.png b/test/goldens/footer.png index a748917da1e7d5e46ca0b8cd1435abaca07f1bc6..86c9318cc93dedbae723448e7baf7cec3a3bd635 100644 GIT binary patch delta 266 zcmdlZJyB|cgCoywPZ!6KiaBp@Zp>{?kZ=u@2~6wUk+@Aq&ZN#-R{MnmC?ON$z`)SZ!@$VE zV8q12z;NQs?QOmHfL6|F;htQ`EGap&UVd7tp5`Tb9Ovh8nq28JKfdXp2G xoq3*Z%Drt@1=Lr-r?)wg*_CT@0CT*kTzZ@2vtZ7*RzPzYJYD@<);T3K0RVavW&i*H delta 432 zcmV;h0Z;ys8oV2jKvxZBNkl6%*^53O8@`>m%$$p001B(KmY)Mi~s=u05Z#Nw>$R^006*+@CT8h6kf~B z%(|}g@bGZ-@bmNY91e$Bmc`t6?(gsC`uh5)8TWA7xtW*U0{{STXS3Vw4o^={b9Z-l z^zeSapP8BM_P8G@|M$6>na9V+xw*MHYQ{aBc5dcn_W%IE+wlYok?%b-%goGnyPezH z+oOlqb^Yg%Wij`itE;P{XWYYS=Vo4Z4*&qXoy~5yJDht7007`Jc!CA9Ap_e9lh6Xk a7Upl=e$0=&s5E>40000#KrDOxK zT)c)X!sa6M&RGE86jN|DZ}aQVzv}=100e&A`v3p{znn!zX1y-+04xK-iH7H0M@|^ z2mk<(5g-5nKt_N7005covMl#L0{{T95?+%50~A`botZhG&-4ENe)F-*uI?c<=%gx6=KR;(?X1CkfS@F)y%9tpER1V8~6{0F*# VmBO75n|}ZR002ovPDHLkV1nBXvrzy5 delta 444 zcmV;t0Ym0o0eV7 zMvz9DB0a@u8bicbgg-^nOqBxsSj6Y_-1io@;F15;`_J2D00002Zw`F{007{4lTidu zM(gMN@yXknKR!I`i2qst%%R68=Q+=L`#x`G=FcyW^WV3ZI}ZThSDsZ5AI{#)r;qPm z>MlU+?|;9}U;n&d(EtGaf={rMaRXf+&kB&orF^H9Glhq&s+b300009 zpI`x#u>vBKe*rWonbpiJhrR>=0B{`q0s;U4WCRER0FV(N002N{z1!^$eFp#l;7Ird zlTiZ{U+bBf?RGnNcXxXqyT8AmWm#sk+1NSaotc@Bi@<$@#cyR@7m7q_O1cowOj3WyXDZA0001v mgHN!taRd7alRyJx7T*B}kLfwG+>(?40000i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|s7c4u#WAE}&f8lXbEO>x94;meh=u!9l}`syLs+ROS%5f z|NiZ}rMUcZW?EX=?zunBE$Y*ry?mMZ?e|};&3FAj>u-JbmxWi1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|s43sm#WAE}&f8mte#+@G?GN{xdn`HN>UHXBSOM#)lATgsyWLOn?r;j| z`XUmjp`(-}sOCE>L_6i#)|UCpzvu6Jr2Qu=?eovqd6Ena4F{Gd%LA>jkY!?FU^u}c zz`&rO>;M$+VPIrnFd|#<%uPjmyZ?F5mg}?o{yBfM-tx<*tn>5sZvCE?R`>I7>c4-_ z|9)d&*!Ofn)sIhym;d~E{QdpcIu38P+y9>x|G(n+B1VQEZ1WR5cvj40C3keZJnh-Vx~e7XJ;D2LaX)Jd>6- zEmxLJ7xxk0;N5SSOWjd%`<2I{{4IB?%lQDCbYM=M@~!C)7O7n zf8g)TnX_ll-nna6RO;=&Tk2PszE@}XV3uxd+~40{TwT5Umh-&%^V2uqJoEGC&cFOS z?2U_SYxmyT_B-=`K=wUG(w)y`1>38$Yci+w1+HPZOdv=pfabaQN zf97}R&*W^seKT+S>YUy4zwvK<_Lqg>9#}Or@azr(!;t*si8XFU1=7cQ}6%) diff --git a/test/goldens/h3.png b/test/goldens/h3.png index b40b401a30a2e1c76b9b047ad23a3483a9c26339..f5848c920484dc38d657a6aba193203c4f927498 100644 GIT binary patch delta 373 zcmV-*0gC>X8-W{;K}jn~L_t(|obB2%P8(4eM$zAqE0h(u3z7v}OV2W>!`6%}rSt}Z zD5i0GTE^EPpR<5ZuXx2=z1jTw^Y1(W004m>*FFFM0B}2#fdW((wx1pN`}^k_=K!wY z{^jl3M*skBj2Dx?0XdV-0V)vN&ko$bysdE#007_ycmV;Ep#fJWo0&OZ`w##Cz-{mX z0ssJH1PA~CkP#pN06=EDEX%de0002o2rrYd0u))<&deN-$9a8yU48s?I?c??Znv}h zjdo{d9v&WMzu&LA>7LpB=o0q~0QlOrGc$+7VV<6zRv&+Vf1jC|ySqEP-)MJc=K1+~ z^$$b$%2lfVHulgcT+#DWuP{_nUWkhko+@7pGTun*jg-2psME0002M;SiGn15QJh z&-wA{&CL6=XHEQL`6q`S9_`t)x9h!`nU7x{=Eu+N?EwHhA+-o4${S%BE* zZ{O$B*DV$e0KgM`f(4Ud16&_@R)9P_ZtEDpK0I#reF6aB&@4``?)(J-000s`!2*+U z0!)*h0ShOKnc3|75C8zcVekS1003kJ2mk<(5g-5nKxVmKulIch007`Xcmb1;0U0pM znVFlLo4L5S*!uYW{rxN!i&?E!c3;u%%*^%m^_-udZ*|i>v-`hY+%o{+W%B})Ap>nV zmNPTQ$H#MddAarR+uPgOY&LUpa$@%t?autZ6T8@S&+Ptf7xxSRc-a=~^?I}KLjV8( nhruUUvq1wY3X@O-Nfw!3^p>FM^CuU-00000NkvXXu0mjf7t^{; diff --git a/test/goldens/h4.png b/test/goldens/h4.png index 72ea6fc02d3c4f9282ea43f5f2d7394c029b543d..b622477051904e6a52982d5043e820dec1b2e60f 100644 GIT binary patch literal 3344 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq`e2r;B4q#hkY{H|916NVo-dXl!=5V-PLYmA?3-P@$`{mVZLge35f2 zSIpbj^z7Aq`+aqNoD2*KAIz$Nh84&%u`n>4;1B?cC_6APH1seqGB6lXD0q4`e@*?q z`5T!f9+cJh%wu4P>EY&JV3;7Nz`)?()&R6ul97plA%%sif-|39WzYM5T+$lo4ekO) zD)<9yFnl)gJ^n(Ff#HDZ4m6)ceyf$=3$%6zhd9pg+-zfityFerv;DT*+biGyjQ_WN z^M7%M26fyzs244t_r1sAa@s}=Eh2l=OzLKy(eNA%Pnwp_qX}#@fsH0G8Z~`JGuLS5 e8giLyX1trEi1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sL9vU#WAE}&f8mtSu&9lZWs4QH5I;c*;%m6R%6zg>f%>RE0}LJCp6t` zF!1AH4qkD^Pv*wNgk8_fR-8Zi`!TEj3-7&8zkUAx7-TZvb2}haV9CP4z%W5jfq}un ztpO+?$;iaOkV3ZL%-6wne~w>0bDUq@_s_Fm>3p{PZ){F~|Nq|XnLj^$|NLk7+wJTO zA7)K{_3-fT!!^G?-;GOWOscQ_oi4ZkU4#h(!}<>_+zbpSI0P6N6qFqp7#eyQ7#SFh zm{_PJSRB+~v;R#g&jXpbzUOv~3DJTJ zet+8bJ?-0GeFld8QP)as?QCt&{{8zmZ}IJIXV1L()qee6rktGIvuDrJrt5xxn*09j zo9cK5hPtPmV$_UvbYDL+FfO)ub6@fFrW@6ZtKW6oGBo_pioE`{;+-?ltJ4n(>(D5A zm9d54s33Lo&}ev$h9|Yk(r9f+^@iSP!7^H~;4fG{GtcMmuivT3yAs$Y OW$<+Mb6Mw<&;$UzemvL! diff --git a/test/goldens/h5.png b/test/goldens/h5.png index fef0c30145d2cd8e3194fd667592f0996cc86373..9da4a6149f99408b0b67edce357b47359b31d056 100644 GIT binary patch literal 3458 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|s7c4u#WAE}&f8lDGo=$n+%7IxNahY|GBeyEZ9b{(kz0&^*kwl^p~tO3 zEl;c^<^~@)-dtZg^XA`QpWhn+O>2~omIqRI_!*fP7*bd`7#Jo9DljlOxHSMpB`Fh} z`FAUGef|GEM`aJN&AV^6&5n^_hw(lt7);1rH{-28{P|YcZOy>YVEurbs-8l!`{vm* zsjroRcKk-SW9Hvo>!R-iL+}n~yaP}{4+A3ugAo%81H*|o>1lq;FYBBx`g-GM&AhvL z=KcNsW%~-!)1Fn>oO@WXBkS<)`t@^X-ri%)aA4XuW8>4C&b)s8`fBq0`SXp9KY#d; z@SM9mE$!a@`_G>~eY%SG{lC3sX?dUDF)&1b;ufQ3>>+s+oFdY;uY3Kp#OmxOo$&s- z=bz72s^KvGMW8g?#OYL#6Nit$usv&a=CW4BNIuU;n!4s~`izf!YtWbrv-e zD!Nxk&7>^jkA^383)0c>91TweDpks(X=yYqjix1F(`+;&jJS;O%znM{G%lfaPSU{m OXYh3Ob6Mw<&;$ThasC|u literal 3481 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sL9#W#WAE}&f8lH{bmQsv_Gs5pX8e$Cev4-nv&PYJ^QIy!R9+hCv`?% znW3n2Q+$E3ad5}9?TWQ>_v8JFeD2T5FD)zGFUi2raA0?>JkWRx873A6h7%kD3=9g& z4nXl921W)3BeDh0Tr{(<+duDT&AzKg>ihmZz3_OmZS}Xf>io24ultYx{JdqiEkncf zoKXJf^7qe9_m?j#6;t^3_xk&v--_E^nHfGX%})T@FUiQnz>vbi!N4#$ z#xlC6H@!Co`i}h&H#YC~rKP=l_wL!RUsbO+wzs$6%rPsjsmXaRTAr4sr?3C~$&-}T zyx;$AD@!XYe$T-0drQ=`)Z*%DYjJV$=zd#U+p}lRRPEjNxy#zv*xcN_xTm{*DCt>*jYwpl1(1V5MpbqcDMvY9~8yj|San&{3i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq`eYr;B4q#hkY{H|916NVo-dXl!=5V-PLYmA?3-P@!w{Y90Z}yURO@ zwN@?nU$pDj^ZxbolbIM8IQI0)0Zof(XJBMtFk)h1U^u}cz`&rO?7+a#&_kKvnNP2n z@6Ugq{)T~V$6fiw>I@9xkC}jWrm%1@Fia3sU|?`?YXDj<$w*bfw92oIxBnI%<6~fW zz!XCTe_#!UGd8}L4Xc3RRluu<=96i)_ucb>{?a?diY+`(zdycfopSjH_uJd%e(L-G zZ~vUH_Zb=73K^*%14u4E^LwBCVt1gcu0Nnd9MB?ON6n;eJ{b+q(eR{cK|GqkMiba* n0;5qYXEbw-X0G9pxt?*#he$pv@9zM0br?Kd{an^LB{Ts5o&&X^ literal 3522 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|s42(O#WAE}&f8miGjqZv+AiilNnGR5>Bt+CC&@K;C+F4$ZfibFd&GC8 z>0qO^fS(>m%@SksU8zyBA#czSl8ZMFPfbK}pq=j(s| z{`%!N28Mf^SIO=BS7NyTUrptz%?umu|5eSpFYg~=!ocwU0}D3;!wC)n1_lLX2L^_Q z9tK7R1|udGDhY1Za)`U(%RXJoe9 z0liQlSHpRg7ma! z@80FDTemJOcgOehTaAlnRkJhPxRe(;?J*GCxpQZYTy<^j+`D<^;^MFE*4(JPfB5j> znE3ehw+i0R&rW}4@|}-igR1`q8iertnLGFFnREO0?W@VBH=Q|i=3&8x&yCi`|L@(@ zG`sWr`OTS@XZJEQ{?kZ=u@2~6wUk+@Aq&ZN#-R{MnmC?ON$z`)SZ!@$VE zV8q12z;NQs?QOmHfL6|F;htQ`EGap&UVd7tp5`Tb9Ovh8nq28JKfdXp2G xoq3*Z%Drt@1=Lr-r?)wg*_CT@0CT*kTzZ@2vtZ7*RzPzYJYD@<);T3K0RVavW&i*H delta 432 zcmV;h0Z;ys8oV2jKvxZBNkl6%*^53O8@`>m%$$p001B(KmY)Mi~s=u05Z#Nw>$R^006*+@CT8h6kf~B z%(|}g@bGZ-@bmNY91e$Bmc`t6?(gsC`uh5)8TWA7xtW*U0{{STXS3Vw4o^={b9Z-l z^zeSapP8BM_P8G@|M$6>na9V+xw*MHYQ{aBc5dcn_W%IE+wlYok?%b-%goGnyPezH z+oOlqb^Yg%Wij`itE;P{XWYYS=Vo4Z4*&qXoy~5yJDht7007`Jc!CA9Ap_e9lh6Xk a7Upl=e$0=&s5E>40000eHA zU)0o}Z|2(HzWn-lDKi5Dhs_x|1_p*T&XXUq1dFEqf60C?Uamfw-QeKo+t1%{G8{;X znY@unWby_kQ6wzD|Hl6B0icTfH$cr|511wkvPP(GyZyH8tQ;fIw1ccH3=AhY1Q-|; zlpPot8qU}qo3R%t5z)dunUPsi_~w53)3` y4QS<$VszKC@|;2FV%jXo`krI*1(rWzGxhI%P+r>nxn&v9JO)o!KbLh*2~7ZWV1w-d delta 607 zcmV-l0-*h-8kZc9KvxaHNklYK{7>410#@B+%5=)4(0XN=&>DU`>`fP&E zD{zlQ!443GBO!5hJwp*15~OGp^N#R5PyZdA^1ixf_vYP);{X5v1or2?0001RIg`-? zPDh#LYsTMP&HV88tB&}G+#%|0000k zgC|&#ku4f#dH??Xx$gh~09=UOx~|7_UjhICxD1|P0h4hACr)OWnc22&9v&V}9zQ=n z&+&MiWm)V#aese5*Vor4?*IVcHQTN0dVG3%n!CHZlgEd{VP<}#GI)Xovtb0U2(#b=I{_D&zW}-`&OFD0k8%J2002ovPDHLkV1nuNB3u9f diff --git a/test/goldens/i.png b/test/goldens/i.png index 3aa5f8ec781c56e93c39c92c4ab727c8d69985a0..2987852081c61cfb348b0483ef315c929b5d6904 100644 GIT binary patch literal 3596 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sA-$0i(^Q|oVT|X{Zu1G8Xh(&9A7YhmY4(!UsH8)q1_py`*Tg4m-@e^dfA93^)4Sui>c8(? zy?Ql}`!4a#olDgW3<-PIGE~;p#eJD@HZA#``nmJx#n0|+-&pMZo{^#9<2I%zFJESc zKmVaSciud`S;hRxx_j9f7>?cMnxJZ*KXX}TRb{2&cVTsP_3meP4&T_h^gA%dE94oI z-Y2}7^S8hB%+3D{3=z}&88((1l%4x`-0InzdIp9yr`;QFSWBD+@^4_5e`s>kTEaH{ zf3j@xH+u$#YtIX2y^-yixB36ZKFiyQ5iwr?3cUHx3vIVCg! E01Y60y#N3J literal 3674 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq{?3)5S5QV$R#U8@*D}B^n;qm#8$Rc1P^Gx~ZwR^{!c2qi#`t=69!U zCrooTPGbvt!soOtf+J{UYz~JE40CX-@1m#2(UY`x=XS8WQ`)%iZ28N1Ev3&cw&*~tn zK5&Uq-$Jk_B6|$Co&O6A=L4r7*rR!9+Ul#XejUDg^{R!fZS4oe+i%O(Tz_3yP>}F$ zn*V&e-pP|Ev!C73p85RPjkj_P3^VS1`Y*4iuU~GRvQwt}=%G8h>*MxH9Y21Ye_k>F z<#TVVfD!BS{+M<|{Jxr-FDEQstXy1fVQ(-0`}c1Y6>beR|Nc}icQ%{dyVH74{r|e< zmfsED-dXn@=*BN%tFLBRx9x3S`TW?1|Ay^54d2u=Fq}F0m9JxObLR6m^=FdL{bOf1 zuqS4JQ|kMKTb94&KhN0wpOL{p|2kt5szCSEtgTzifhJ3Qvwvn_-u9QDpi1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq`d-r;B4q#hkY{H|916NVo-dXl!=5V-PLYmA?3-P@$`H*@la?ffmcz zYcH){_wVQ9*Ux7F4PnY(%nqckD>^VRH1seqGB6l1u`n>4;1FP7P*A2!aPyvD&F{~D zH!fpfzVojCqA){4cOfHHZNTb4khQn}79QhcV0ge3Lzx$_S^yS2W8-_-unHJd1-yC+ z3=9r#4Gatnl8j6Y3@OuU@4M$SSe)IpZn63w?c3XIzs@bUxW4&4!w2!52vsZ`3=9(l z(X^ro&aAxuJ^2ez;R7j}d4$T5jyuFgEuvb^8VzLXmQi1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sL8?8#WAE}&f8nQS;2`S4G$;FUkE&?Iwfzx+IFQn7XJBMtFk)h1U^u}c zz`&rO?7+a#&_lN1X1lZ>XS1FiJ{#!%C;6{=`!?(6mgg(~|K2lmrhokQ&#%9~JjcvX zaVqd@!RI_n`TP5Auj)CxIsJY9=byJZyV)2XaM~SYqNaP$y(1&4aQp7cYYgWSx7&Yb zV>qxhGUopO58^=Yd;DPGrcxlFTdI?mR{u^F7_O%u@NzIPOb}FHU~q7200#feuW6et zzwhV{reZKWPElo~N?%AtXuNFvtFSxaH=JUJE2fUx6 znIXvt46zgzRD&Uc*Ph2QJP4U~`stl}_vCE0-_1);OWSMrM*ZW~^JmYj30vKqe&=xJ z^R#*8{0#b6lQ!RcbAB%{Bnl*JnpkleiPfG_L3oVfiH*@v8Vx02o*zviqZwf|BaCK* o(Ha)HB{W(pj+TmaC>8%Pgeo^Ij1p;T2NpmKp00i_>zopr09W4#)c^nh diff --git a/test/goldens/img_alt.png b/test/goldens/img_alt.png index ac1f24abf2369a085bfba44a4db7d5b67fe1aeaa..6e4b17577d1e5565d69675739b2eedf06474e183 100644 GIT binary patch literal 3342 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq`d-r;B4q#hkY{H|916NVo-dXl!=5V-PLYmA?3-P@$`H*@la?ffmcz zYcH){_wVQ9*Ux7F4PnY(%nqckD>^VRH1seqGB6l1u`n>4;1FP7P*A2!aPyvD&F{~D zH!fpfzVojCqA){4cOfHHZNTb4khQn}79QhcV0ge3Lzx$_S^yS2W8-_-unHJd1-yC+ z3=9r#4Gatnl8j6Y3@OuU@4M$SSe)IpZn63w?c3XIzs@bUxW4&4!w2!52vsZ`3=9(l z(X^ro&aAxuJ^2ez;R7j}d4$T5jyuFgEuvb^8VzLXmQi1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sL8?8#WAE}&f8nQS;2`S4G$;FUkE&?Iwfzx+IFQn7XJBMtFk)h1U^u}c zz`&rO?7+a#&_lN1X1lZ>XS1FiJ{#!%C;6{=`!?(6mgg(~|K2lmrhokQ&#%9~JjcvX zaVqd@!RI_n`TP5Auj)CxIsJY9=byJZyV)2XaM~SYqNaP$y(1&4aQp7cYYgWSx7&Yb zV>qxhGUopO58^=Yd;DPGrcxlFTdI?mR{u^F7_O%u@NzIPOb}FHU~q7200#feuW6et zzwhV{reZKWPElo~N?%AtXuNFvtFSxaH=JUJE2fUx6 znIXvt46zgzRD&Uc*Ph2QJP4U~`stl}_vCE0-_1);OWSMrM*ZW~^JmYj30vKqe&=xJ z^R#*8{0#b6lQ!RcbAB%{Bnl*JnpkleiPfG_L3oVfiH*@v8Vx02o*zviqZwf|BaCK* o(Ha)HB{W(pj+TmaC>8%Pgeo^Ij1p;T2NpmKp00i_>zopr09W4#)c^nh diff --git a/test/goldens/ins.png b/test/goldens/ins.png index 9bb4f88b9272a41534680f91fe27e41f1b03fc36..d4220c574bd60abcbae0d60e4126a1739dcd5081 100644 GIT binary patch delta 277 zcmV+w0qXw28?YLXKtl}LNkls7kquZJ!1}F0sG@+=@9^c zm9YVnQ3GNQGd+62{&;!D8~^~o3fPlR0XdUi0UtP-%^2gh^bi05z&hA~0000P0RjL3 zWCRER0FasHc^+eoaX1_n9_6*1PN%!hd57n^_Z=xL&VI z&hc{2=ks0XyaNCLuk0^Cwp+`PXWH#{cb)SN006wQ%{ zx3w1__V>S^=C6-iEE)iSC%A$IlZ^o};bM=dj(mnV&lc003T&H9*y7yG%+b-&#xno_yqtsOa{0LHO#lD@`@x+Sv*7|d f3X`w`lNMh9RWPby%~8+*00000NkvXXu0mjftk&2# diff --git a/test/goldens/kbd.png b/test/goldens/kbd.png index acb1363400d0a86c842f09d12045d5575bd1c6c7..3b4446b10f55b0f59131fbb1420b6283019acba3 100644 GIT binary patch delta 237 zcmVEr8X9{>OVfw!{<0002jA(JryPLn_Z1r;;D`h)M!_ak-yC%D}oXHNhC zF2)6uu>nJqKmi{Q%>3#PZuiF#I{*NH3vdCG!2vUqKmjE-(->nvdjtRga1AaX002Nn zfB*mh836(S0A%KE+r}7UEX#88l>cR2*QdVo4##@-9RL9M8!nT<133()ZQJ&C4_7sO;%v%-fXiJH<4bj za0g-$L2wvnEVR)kOlI;9IM36c!-d;?FW+5U-+$W=002N>dF}%M005UmlOY36Ls=g) z{AxAx?&hc!e_8*@q3zB-`|Nw^eKRv3K5ys8&(rM#0C>t#^>FiMIq%=TKGj)(*r%`G z=i`?X77YNv6Fk8Jk+33@kO3f*5CIw<92Fqj-KmZNoWpK^?h^n2mu7K&|IH@|005Bi z1PhU%GLw)2Ad?UQ1xzevW`FKO0001&!5gwvC8TWA7xtZtP0{{Ro#~+gc0W&nrdS+(1T+Z$7 z?ZLy_?e_PQ_1fG&R;$&)Gw$KEb2HDo2LJ$G&SJCK?9Y7&007`Jc!CA9K?1i5lOO{X a7UmcEG=QNu7fyBn0000i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefr00;r;B4q#hkY{4f75;2si{@^my}Ar-wOtMV$e;&aX6hg+Azh zsQ!A&T01=6xW49Zj2Z(&!-3n^n1ROqR&)SzdKefP7>t-$7#L1)2rw`xC{rd_yyGkL z{rT^|&tSfB;A6?XDi(%>^c>2JB+5lHd4GZS?K>{Rz;J-?Mgs!_gCrvp149Z62Lri1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sA-$0i(^Q|oVT|P^Q7G+8ZHWYDz4;s!qKLGpiO+j?mN0``yctKC&(+f z<_RoW(8!<|mcq3&P*rbfP0Nz+ul}Z|8}`~2lze{q`uk;|;T$^a_A)XsJa{aiz`)?( z)&LZeWMpDsNMYe%V3;6CwqTgP%aG3_ZlACZomBF z`@^r-vNL>`BYySp^LVkx+x6}DUyEzFAz%OBxbFXJ(QY<|2a@X&fG(qoYp{AIPDJ7I z$F18KV-9~Tc`M7nAb*Cc3@y==wSf5hf+cF zfU*z_67{Xd?x4%sL7o&$Zt&(N^_u&542LA>T%WyZ#c zp0jDj)gLow$;EH7dTr{jGyU{Ui1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefr00;r;B4q#hkY{H|8F85MXe;6!1cAP0QAuimT1k@(y*`O_UB$2sk7p zke>AKb3?zFdHvr%chwje8V(%4#|$*?xS|7))5E~Xz+lA0!oYBXLx6!nL76ha;;L^= z_uronKg0OuLCwy0woD8K24)Hj3=VD$3=9mCj7$s+DJ&ce3=;&YE9iGVu3%qGydgUS zLjeQLEKHlX?B%xaz+gIHcmvHpmc52@zX~F!`PxTZFTK2T?Y472-@Pga25@zb14Y4X z+;5my%@2$unPy&iz&-o&qW$!yoL>ibt($!=cWbHNyVdvk85+K)F;gLcpBWy@eXj^~ zbn*s9swNH!)7GeV>gLta@Ei?KYL)w=X=yYqjix2a+fSqUXfz*<;C%F7?wRtXg4%$0 Qz|I1Lr>mdKI;Vst0A4EY&j0`b literal 3596 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sA-$0i(^Q|oVT|P^O8eF8XgMY77UpfaVW!V!ZB$M+3Lk}mtII^eK}F% z2IHa+9v%^WzKmx@7OUt#+^+U-->v8Sl=rLcuPOfe@bdG^Aj89+#{sDwGE6KC3@11Q z7#I|k9T*rIdKefP7>vjkJoC)-@cp&vb-#YBQr@@Wr+z!1`*X|lmH)q28XNEbQ#WJ3 z{QY+}3=PZotdg_)w_(=&`al2HmN6#n|NHa$pI^tN#dsMG2*(^`qQnV=e6UB$f$#YC zC}xZH$1m?lGcZhl_UiER^Z!_Y{uWx703;+2@D z-(kN@dc}>RFsIzb1zFow==K5>bVsD+hp9?I`oH>*BdCmIAvuDrF zywA+QP;>Tb-F|zhYj-rU0s~`S>GbD7g@6D4UBrIp?%lIrzkXeGb9&US=Z_yhp5wP% zJU+MTeX;S|-^>gT{#IWTU4zpz`~N#9z4LwwR#?o+O;OS#;GHB;h_N#q_+7sB{(JxD zallC3!9%kMrZ9bsYNu{~8x7CV@T6ARJ(`wA)6!^KqPz_>nvX{F(MZcjGwT^ruI}9J UtT)9Dn1L8PUHx3vIVCg!0B8DKf&c&j diff --git a/test/goldens/main.png b/test/goldens/main.png index a748917da1e7d5e46ca0b8cd1435abaca07f1bc6..86c9318cc93dedbae723448e7baf7cec3a3bd635 100644 GIT binary patch delta 266 zcmdlZJyB|cgCoywPZ!6KiaBp@Zp>{?kZ=u@2~6wUk+@Aq&ZN#-R{MnmC?ON$z`)SZ!@$VE zV8q12z;NQs?QOmHfL6|F;htQ`EGap&UVd7tp5`Tb9Ovh8nq28JKfdXp2G xoq3*Z%Drt@1=Lr-r?)wg*_CT@0CT*kTzZ@2vtZ7*RzPzYJYD@<);T3K0RVavW&i*H delta 432 zcmV;h0Z;ys8oV2jKvxZBNkl6%*^53O8@`>m%$$p001B(KmY)Mi~s=u05Z#Nw>$R^006*+@CT8h6kf~B z%(|}g@bGZ-@bmNY91e$Bmc`t6?(gsC`uh5)8TWA7xtW*U0{{STXS3Vw4o^={b9Z-l z^zeSapP8BM_P8G@|M$6>na9V+xw*MHYQ{aBc5dcn_W%IE+wlYok?%b-%goGnyPezH z+oOlqb^Yg%Wij`itE;P{XWYYS=Vo4Z4*&qXoy~5yJDht7007`Jc!CA9Ap_e9lh6Xk a7Upl=e$0=&s5E>40000i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefr00Or;B4q#hkadHu@fRU}(F@?XogMvcbdWpo@-++9@d=2Tv{YWl4=k ze#snt|F!%VxB2{YySJ~uUkNg5-ZeQOmDA3^$iQI4#KOREfk8C^0jp~V+e@%Rodkp#751$H_JN@T#;nkgYUspaj+Bey6PR8_k=ed2=*xQr?Ih%||0HAAM$jbVd5o#-DE%0$bM%p00i_ I>zopr0EBPs<^TWy literal 3487 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|q{-98F{EP7+gls6CMSwCJk2ILur@z z5<#ve!`zr%FM^ydnP<#Pw^wgZIeGfOe_Tw=dUgf|hX)z=ffPf#a|4i+WMpDsNMYe% zV3;7N0F-niTX1HsagB}a|bpgTe>x##P?eqcEBHLIfqZ`$dnMLJ^Lg+)c1-beq_4xb<2 z|MT)qH{rAJ5Wk zkEQgyym;hJ{IcWv$E$v2ES|ae`2J%*Z(i@Ue;xlb?%PM}GijT9(-{~lEG9oK+IjE0 zAOpjJ#1C9zl&22#fT2c;8#R;c%sLu$qd`Zlf`2qEji#m1v@}{pQqp)FEkj1j5IU71 ZGw;VuNv&>RSzp2c1fH&bF6*2Ung9U)3fcew diff --git a/test/goldens/nav.png b/test/goldens/nav.png index a748917da1e7d5e46ca0b8cd1435abaca07f1bc6..86c9318cc93dedbae723448e7baf7cec3a3bd635 100644 GIT binary patch delta 266 zcmdlZJyB|cgCoywPZ!6KiaBp@Zp>{?kZ=u@2~6wUk+@Aq&ZN#-R{MnmC?ON$z`)SZ!@$VE zV8q12z;NQs?QOmHfL6|F;htQ`EGap&UVd7tp5`Tb9Ovh8nq28JKfdXp2G xoq3*Z%Drt@1=Lr-r?)wg*_CT@0CT*kTzZ@2vtZ7*RzPzYJYD@<);T3K0RVavW&i*H delta 432 zcmV;h0Z;ys8oV2jKvxZBNkl6%*^53O8@`>m%$$p001B(KmY)Mi~s=u05Z#Nw>$R^006*+@CT8h6kf~B z%(|}g@bGZ-@bmNY91e$Bmc`t6?(gsC`uh5)8TWA7xtW*U0{{STXS3Vw4o^={b9Z-l z^zeSapP8BM_P8G@|M$6>na9V+xw*MHYQ{aBc5dcn_W%IE+wlYok?%b-%goGnyPezH z+oOlqb^Yg%Wij`itE;P{XWYYS=Vo4Z4*&qXoy~5yJDht7007`Jc!CA9Ap_e9lh6Xk a7Upl=e$0=&s5E>40000OxG_mGcYt%PS$61nHKF$P}SA^YkX2{TG#i0+v4-fW}EOGBGfuuy8OiOo;qmE5DbKfni1q l|K^EIom`U(n3~0A+KWHo|1tZ<&uc)%44$rjF6*2UngGbgMFao< delta 264 zcmew$xj|}zqx&sS7srr_Id5+n`Z+m@I9z1(+)~Qfvh>DI^XO@hf_!xDG;UNhoTzZ) zMnquEp8XHz)WyYFnj3e2Ei0E|U|?u`dWRcGU3Z@B$mHi3>1$b2ZG7x;+NBQru>F=L z7PHdlRsOfl?=hTrpYQSO-$kDp7|zWM;h+8cX+_nJ-B3*=3&LGYG#H9w{))Eo~zBlz%T)>NK{?tn8fm((}A|HYZez^ zU{FwYU|?wIVPIrnFk1b$&i*?e1H*x-ADA{5GG%g2HegyT_KbafhH>e8msLzaO$?r{ KelF{r5}E*)vTNi3 diff --git a/test/goldens/p.png b/test/goldens/p.png index a748917da1e7d5e46ca0b8cd1435abaca07f1bc6..86c9318cc93dedbae723448e7baf7cec3a3bd635 100644 GIT binary patch delta 266 zcmdlZJyB|cgCoywPZ!6KiaBp@Zp>{?kZ=u@2~6wUk+@Aq&ZN#-R{MnmC?ON$z`)SZ!@$VE zV8q12z;NQs?QOmHfL6|F;htQ`EGap&UVd7tp5`Tb9Ovh8nq28JKfdXp2G xoq3*Z%Drt@1=Lr-r?)wg*_CT@0CT*kTzZ@2vtZ7*RzPzYJYD@<);T3K0RVavW&i*H delta 432 zcmV;h0Z;ys8oV2jKvxZBNkl6%*^53O8@`>m%$$p001B(KmY)Mi~s=u05Z#Nw>$R^006*+@CT8h6kf~B z%(|}g@bGZ-@bmNY91e$Bmc`t6?(gsC`uh5)8TWA7xtW*U0{{STXS3Vw4o^={b9Z-l z^zeSapP8BM_P8G@|M$6>na9V+xw*MHYQ{aBc5dcn_W%IE+wlYok?%b-%goGnyPezH z+oOlqb^Yg%Wij`itE;P{XWYYS=Vo4Z4*&qXoy~5yJDht7007`Jc!CA9Ap_e9lh6Xk a7Upl=e$0=&s5E>40000{?kZ=u@2~6wUk+@Aq&ZN#-R{MnmC?ON$z`)SZ!@$VE zV8q12z;NQs?QOmHfL6|F;htQ`EGap&UVd7tp5`Tb9Ovh8nq28JKfdXp2G xoq3*Z%Drt@1=Lr-r?)wg*_CT@0CT*kTzZ@2vtZ7*RzPzYJYD@<);T3K0RVavW&i*H delta 432 zcmV;h0Z;ys8oV2jKvxZBNkl6%*^53O8@`>m%$$p001B(KmY)Mi~s=u05Z#Nw>$R^006*+@CT8h6kf~B z%(|}g@bGZ-@bmNY91e$Bmc`t6?(gsC`uh5)8TWA7xtW*U0{{STXS3Vw4o^={b9Z-l z^zeSapP8BM_P8G@|M$6>na9V+xw*MHYQ{aBc5dcn_W%IE+wlYok?%b-%goGnyPezH z+oOlqb^Yg%Wij`itE;P{XWYYS=Vo4Z4*&qXoy~5yJDht7007`Jc!CA9Ap_e9lh6Xk a7Upl=e$0=&s5E>40000i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq`eIr;B4q#hkY{H|8En5OKTsyu--5rS0aXfEj0fr*TY`zQK5*RAv6< z+rO6V-&J+``uY2{Ktq`1tNDRcpK}9{lw@RLU`S!%U|^UasKCJB;6|C?voEjs>-O8< z-^hI9;Lobt)l3Wp26|L5myomk*8h7@vv+SYI|D-j1I;Wq9MJ!J-lhU5Z9Mg|5W zCKd*U6C45z3<|}!w&kX!=}kXi1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sL90B#WAE}&f8nISyKW<8Xg+kF9fkc#1BWMW`QVc}q4m>{UY zz~JE402GxZTQIHm%!k!i&+MMPIP6dAU-kBF*1z9ueqaB7_ROCjDy{A7=H*2vny+A=Iq|RyScr5_uVsR zbf&kL_Ux>$uBe!?diCn&v^)1t&zN0#?=K@mj8MG;(49RDj0_A$Oe_oxCpZKc7!;HV z2)>><^J$Ug_U+r*`SZ8mzVCf4yI6h3?3s~k!`RR7*gxIS{PUjQ%nUnJy3eLRevhW5(X=$0mT1%v7|mRxnQJt2(LHm`jNfv!XW{*z SxO8CGhQZU-&t;ucLK6Tw5&3NZ diff --git a/test/goldens/rp.png b/test/goldens/rp.png index 6dadba122c215b8091eab2cea2e3a49a4e5c8925..a65dffce57267701dc11d67244d9b502ae16e4d2 100644 GIT binary patch delta 310 zcmV-60m=T28_*h%Kuiq!NklM8Yp{J+Gbv005rD4U^6R9yn%u@8#uk8S^~f9r*umd!Oae^XfSO0AQWF0WwX~ zn5HRP;?eW!IRF4)oz1c=w^uI#006uPzX7v>1NI4%kPPS*1z|9EZ1FmhQUCw|07*qo IM6N<$f(<5(i2wiq delta 380 zcmV-?0fYX~8jTx}KvxYnNkl0D&9DwoHRA|>8A><^|t>?&)3wVmqH8^+& zx31oz(4jYIxh8@rT3K?taQ9Q^$@h5!5h$M50O$@Rn2ZU6uP1g_4#0001RIgz11 zk;@N8ndvdZZ{LjZ@#d%_{xSWNL)#bUInR0j`@Av6`21}n;fIjSCR-d~MR zAKsm67a;ca$Mg8|{e(pW0PqSw!2*-<0$d&(6(HM}Q>_78W^(=TQ0ssJH1PA~CkeO~ao4+5{>-D(1 zyBoK+w_`q^?;W_mzaPuxax4~$F`Lbfy8O`l>Nx-a;557elK}x9Hca<@xm+&CYPH%s z@c8(6@+A(vubu+{0FJXaK*s1F#1Fl%o&x{?4ma6sHoJ2#0RRA82LA!Gu>y$-laK;b a7W@W0Y>gqf0*vMW0000M8Yp{J+Gbv005rD4U^6R9yn%u@8#uk8S^~f9r*umd!Oae^XfSO0AQWF0WwX~ zn5HRP;?eW!IRF4)oz1c=w^uI#006uPzX7v>1NI4%kPPS*1z|9EZ1FmhQUCw|07*qo IM6N<$f(<5(i2wiq delta 380 zcmV-?0fYX~8jTx}KvxYnNkl0D&9DwoHRA|>8A><^|t>?&)3wVmqH8^+& zx31oz(4jYIxh8@rT3K?taQ9Q^$@h5!5h$M50O$@Rn2ZU6uP1g_4#0001RIgz11 zk;@N8ndvdZZ{LjZ@#d%_{xSWNL)#bUInR0j`@Av6`21}n;fIjSCR-d~MR zAKsm67a;ca$Mg8|{e(pW0PqSw!2*-<0$d&(6(HM}Q>_78W^(=TQ0ssJH1PA~CkeO~ao4+5{>-D(1 zyBoK+w_`q^?;W_mzaPuxax4~$F`Lbfy8O`l>Nx-a;557elK}x9Hca<@xm+&CYPH%s z@c8(6@+A(vubu+{0FJXaK*s1F#1Fl%o&x{?4ma6sHoJ2#0RRA82LA!Gu>y$-laK;b a7W@W0Y>gqf0*vMW0000M8Yp{J+Gbv005rD4U^6R9yn%u@8#uk8S^~f9r*umd!Oae^XfSO0AQWF0WwX~ zn5HRP;?eW!IRF4)oz1c=w^uI#006uPzX7v>1NI4%kPPS*1z|9EZ1FmhQUCw|07*qo IM6N<$f(<5(i2wiq delta 380 zcmV-?0fYX~8jTx}KvxYnNkl0D&9DwoHRA|>8A><^|t>?&)3wVmqH8^+& zx31oz(4jYIxh8@rT3K?taQ9Q^$@h5!5h$M50O$@Rn2ZU6uP1g_4#0001RIgz11 zk;@N8ndvdZZ{LjZ@#d%_{xSWNL)#bUInR0j`@Av6`21}n;fIjSCR-d~MR zAKsm67a;ca$Mg8|{e(pW0PqSw!2*-<0$d&(6(HM}Q>_78W^(=TQ0ssJH1PA~CkeO~ao4+5{>-D(1 zyBoK+w_`q^?;W_mzaPuxax4~$F`Lbfy8O`l>Nx-a;557elK}x9Hca<@xm+&CYPH%s z@c8(6@+A(vubu+{0FJXaK*s1F#1Fl%o&x{?4ma6sHoJ2#0RRA82LA!Gu>y$-laK;b a7W@W0Y>gqf0*vMW0000GfNkl002PXY3Ts~0D#9KlfeU17Bk)YfseQ6d&~hW;C27C z^audJgRudV@dIKHGu`@u*ZtQ$<^TWy9)Jy#VF4+VU;!$VU;zbx*^DtROAi4606Yd8 z5C8xmBR~KEfQ$eE001)6JkMi{F}B<7!lSIq;c&R>oO`&hYwrO7fWKh_0ssJH1PA~C zkP#pN06=E?`EfpqFw=iCDT0BiOeAg9x5$vIYMx7%HH&OHDCux6Wio-bo~ zed*r3g7rUm1q%QK;D7NSlhFei3iJC4761UiU$X(T@dM!rlh6a~7V`~2O*826W3;LO O0000z@NgeO>&kO3%@jsYrv5g-5nK;~p-_Q&1?008hd_yhz10LTas001B(KmY)M z%w}1Zxxc@ko12@}!@J#XW@b)L*LBSIJ~uOSdwV;VmzS$%oWo(~W}bEq006ukpMU@W z0GZ8~ANKq8UxxK%X6@|vJ~uP7EXyp*vU+9<${SAn7INTfn0I!c59g|@J z9X4h&^ZDydudc3E4{x{I&x>p}kNoD_nwyz9J3CuF;~Wkz!d-00000NkvXXu0mjf%Ln0i diff --git a/test/goldens/samp.png b/test/goldens/samp.png index acb1363400d0a86c842f09d12045d5575bd1c6c7..3b4446b10f55b0f59131fbb1420b6283019acba3 100644 GIT binary patch delta 237 zcmVEr8X9{>OVfw!{<0002jA(JryPLn_Z1r;;D`h)M!_ak-yC%D}oXHNhC zF2)6uu>nJqKmi{Q%>3#PZuiF#I{*NH3vdCG!2vUqKmjE-(->nvdjtRga1AaX002Nn zfB*mh836(S0A%KE+r}7UEX#88l>cR2*QdVo4##@-9RL9M8!nT<133()ZQJ&C4_7sO;%v%-fXiJH<4bj za0g-$L2wvnEVR)kOlI;9IM36c!-d;?FW+5U-+$W=002N>dF}%M005UmlOY36Ls=g) z{AxAx?&hc!e_8*@q3zB-`|Nw^eKRv3K5ys8&(rM#0C>t#^>FiMIq%=TKGj)(*r%`G z=i`?X77YNv6Fk8Jk+33@kO3f*5CIw<92Fqj-KmZNoWpK^?h^n2mu7K&|IH@|005Bi z1PhU%GLw)2Ad?UQ1xzevW`FKO0001&!5gwvC8TWA7xtZtP0{{Ro#~+gc0W&nrdS+(1T+Z$7 z?ZLy_?e_PQ_1fG&R;$&)Gw$KEb2HDo2LJ$G&SJCK?9Y7&007`Jc!CA9K?1i5lOO{X a7UmcEG=QNu7fyBn0000{?kZ=u@2~6wUk+@Aq&ZN#-R{MnmC?ON$z`)SZ!@$VE zV8q12z;NQs?QOmHfL6|F;htQ`EGap&UVd7tp5`Tb9Ovh8nq28JKfdXp2G xoq3*Z%Drt@1=Lr-r?)wg*_CT@0CT*kTzZ@2vtZ7*RzPzYJYD@<);T3K0RVavW&i*H delta 432 zcmV;h0Z;ys8oV2jKvxZBNkl6%*^53O8@`>m%$$p001B(KmY)Mi~s=u05Z#Nw>$R^006*+@CT8h6kf~B z%(|}g@bGZ-@bmNY91e$Bmc`t6?(gsC`uh5)8TWA7xtW*U0{{STXS3Vw4o^={b9Z-l z^zeSapP8BM_P8G@|M$6>na9V+xw*MHYQ{aBc5dcn_W%IE+wlYok?%b-%goGnyPezH z+oOlqb^Yg%Wij`itE;P{XWYYS=Vo4Z4*&qXoy~5yJDht7007`Jc!CA9Ap_e9lh6Xk a7Upl=e$0=&s5E>40000!GUM9r;B4q#hkY{H|8F85Me#I_}~TK2+r(c=dfI#J1wGy6Qc|ilJp<= z_{hl3(Ea!6>*wz>3=9m7{WqBz7#dy+Ob%oY7KyxH`{4WU&pomSShoL8{>H-aASq_D z6_fmA7bZ~{7G`2$U^ubny`*SxK85m+3xF;tvM;JvOlQ@4<8E9B`0V7b@2&|4n zfPq0_v)pmRV-m@?x19`*`n~V}YwQ243=HQUGfkYR%#&u>_t>%;Xk-De-sV8&Z=912 cnBR)Vd99Ir^6qn@573DWp00i_>zopr0GyFo8vpR@Ku`?_NklI9-iJlj1TYLthEae`~2-R zK7C!WXaE4N@Cp`_VFFwp=B5BSU)EX!*urJmdIJF9-b|0rFaCl6000TEU;&eX0#-wr zX^gRKy#xRNa39=&0000P0RjL3WCRER0Fc?u^E^(c(>NRsR}U}Cug^uMY5K3vjWNdY zcpUrv{;y{|7XScQmm8BI0VE95JkQJ4O8@`>_rVRbAp+A1lOO^Q7MY*hS7Bj%x;v%- O0000Er8X9{>OVfw!{<0002jA(JryPLn_Z1r;;D`h)M!_ak-yC%D}oXHNhC zF2)6uu>nJqKmi{Q%>3#PZuiF#I{*NH3vdCG!2vUqKmjE-(->nvdjtRga1AaX002Nn zfB*mh836(S0A%KE+r}7UEX#88l>cR2*QdVo4##@-9RL9M8!nT<133()ZQJ&C4_7sO;%v%-fXiJH<4bj za0g-$L2wvnEVR)kOlI;9IM36c!-d;?FW+5U-+$W=002N>dF}%M005UmlOY36Ls=g) z{AxAx?&hc!e_8*@q3zB-`|Nw^eKRv3K5ys8&(rM#0C>t#^>FiMIq%=TKGj)(*r%`G z=i`?X77YNv6Fk8Jk+33@kO3f*5CIw<92Fqj-KmZNoWpK^?h^n2mu7K&|IH@|005Bi z1PhU%GLw)2Ad?UQ1xzevW`FKO0001&!5gwvC8TWA7xtZtP0{{Ro#~+gc0W&nrdS+(1T+Z$7 z?ZLy_?e_PQ_1fG&R;$&)Gw$KEb2HDo2LJ$G&SJCK?9Y7&007`Jc!CA9K?1i5lOO{X a7UmcEG=QNu7fyBn0000GfNkl002PXY3Ts~0D#9KlfeU17Bk)YfseQ6d&~hW;C27C z^audJgRudV@dIKHGu`@u*ZtQ$<^TWy9)Jy#VF4+VU;!$VU;zbx*^DtROAi4606Yd8 z5C8xmBR~KEfQ$eE001)6JkMi{F}B<7!lSIq;c&R>oO`&hYwrO7fWKh_0ssJH1PA~C zkP#pN06=E?`EfpqFw=iCDT0BiOeAg9x5$vIYMx7%HH&OHDCux6Wio-bo~ zed*r3g7rUm1q%QK;D7NSlhFei3iJC4761UiU$X(T@dM!rlh6a~7V`~2O*826W3;LO O0000z@NgeO>&kO3%@jsYrv5g-5nK;~p-_Q&1?008hd_yhz10LTas001B(KmY)M z%w}1Zxxc@ko12@}!@J#XW@b)L*LBSIJ~uOSdwV;VmzS$%oWo(~W}bEq006ukpMU@W z0GZ8~ANKq8UxxK%X6@|vJ~uP7EXyp*vU+9<${SAn7INTfn0I!c59g|@J z9X4h&^ZDydudc3E4{x{I&x>p}kNoD_nwyz9J3CuF;~Wkz!d-00000NkvXXu0mjf%Ln0i diff --git a/test/goldens/strong.png b/test/goldens/strong.png index 3c9e8d228678afbd031135c83c4c884786fa6249..61384dbd6bea29aa052d35cc975c28d32ecb1407 100644 GIT binary patch literal 3411 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefr00*r;B4q#hkad46~vG1spC0Zg6bVIq1uCtJiE2?@{TCc`PgUG)t)L z<62s-9=%Vi#Ls?y<4V2v>+AmhESFx1lIN4G<6TI$Tdb@sR4etY!r@=FtA@# My85}Sb4q9e0GiF#i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sENnZ#WAE}&f8mtdBK4K4i^h$IHRJ<1H*(aZZyB8(|T>U!=eSHtr<#+ zA4QL6W-RDzn)~|D^Dp@(m-7EztzJF*cl%+Gq3h1=1yTi;EF26B69g3)7#!RhfC7?? zObiSuWDCxGoy@mC`h3kU+pHt;>;6Bv@OX0NvzgzoeNIc;S5rUd{_o3YnHefh27WF0 z{V>a}zNUUvY{QN1^Y=e{-7hT0%W#0(<{;31BPJFGh7%kD3=9g&4h#$pJq(Og5|j~D z==Wb9#ca{O{P0e51_r&eub%xos1FK*4=mg?vUE+_vx0Z3K!2Qmz=rCvGha99Y`*>W z*}He|uC{;w{rAk7HP^GB|J!&sFMadPJ+FG+7u+f~{{LN;fuX`WkL-|GGcDC}PBkY3 z!vmuojMNHATExz%nPkWDXwZ!Y-DuXPQ2{=hxkfYBXyzKtTvTt4jutGG6)c~5UhyO* T`tiCMGXR07tDnm{r-UW|=-C+I diff --git a/test/goldens/sub.png b/test/goldens/sub.png index f62f928bbeb6e78964831ce6ab467fc94417f46c..4cba49cd8b271e28ed9ab52e21234c999bbe8980 100644 GIT binary patch literal 3423 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sEO0l#WAE}&fA+CbCm)`94^{xAIeRdJ0YM|IO&O&S%Dj`NyCVr8yUcT;C+f{XWz5V}n%nS?)A0A)i2AY1}xdBK@GBPnRq_A)> zFia3sU|?`?qf9WZ@HKON{r^43R)Xiw4;W-+fv?}CA^E(|XtkFOo4P;=AO}(bqXpJyhBaDn1;UDvgBUVo~&B*|D PoESV^{an^LB{Ts5{%_s- literal 3534 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sHwu!#WAE}&f8mtS<;yj4G-hHHuPGDuXC+ols}l0c;ar;LDvtSV&(f> z6Ao50ICpe6B(^@jnKnDuh)Hujm%abrm-F*yxak{rf1NIW8E8C*4*y;t^`VYKfPq0l z*@1zfp@)Hyfx(E0g@NG&`GTus>uUZa_V~+}TRo}|`~UR9>)D^@Jl}J__MSxYpP%1f z|9JlV-#KQ68JmM`Yiy$X&ezX*lP#|B?fUoWAHUv~>ti#6+s*SGgw zW8iz3YxRYV;Xw7~i29!o^*IFwvwojdmV^XE5rjvhT)QByN#?(SW?r1<&yHy1yD z{`~RFmoKLqUpDE@oOP_|=j&xr>#sll_pk2TEOT@7$M4?dmAw=AzTy4zg6eAPb?eus zKWAV_2uHUK-5=AEdp1VsY?HFHw7i-1?#GXc^~Ja2%B7btUmkr{R#rCGw7jGG#`ofg zwPCy0Ff%YjN9UN$etE$g7&z~nX&g~lV{cSYfU5a*G(1PclcvS(XaXBeV513)@`lxD kJ{rwOqxp#L`REV##BCWN8JTxnfK6ToPgg&ebxsLQ0Hiul4*&oF diff --git a/test/goldens/sup.png b/test/goldens/sup.png index 8520bfef788c170571af33c003be8a8ded9b98af..3da5bf131b90683a507de025a4278f45bae75ff9 100644 GIT binary patch delta 188 zcmdlW^+9riqs1&w7srr_Id5-nOxG_mGcYt%PS$61nHKF$P}SA^YkX2{TG#i0+v4-fW}EOGBGfuuy8OiOo;qmE5DbKfni1q l|K^EIom`U(n3~0A+KWHo|1tZ<&uc)%44$rjF6*2UngGbgMFao< delta 264 zcmew$xj|}zqx&sS7srr_Id5+n`Z+m@I9z1(+)~Qfvh>DI^XO@hf_!xDG;UNhoTzZ) zMnquEp8XHz)WyYFnj3e2Ei0E|U|?u`dWRcGU3Z@B$mHi3>1$b2ZG7x;+NBQru>F=L z7PHdlRsOfl?=hTrpYQSO-$kDp7|zWM;h+8cX+_nJ-B3*=3&LGYG#H9w{))Eo~zBlz%T)>NK{?tn8fm((}A|HYZez^ zU{FwYU|?wIVPIrnFk1b$&i*?e1H*x-ADA{5GG%g2HegyT_KbafhH>e8msLzaO$?r{ KelF{r5}E*)vTNi3 diff --git a/test/goldens/table.png b/test/goldens/table.png index cd76f966a7b68967ba7f300ce90f084daf1fb340..4a2baae45aeabba75efa38ba4422408a2018f80e 100644 GIT binary patch literal 3486 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sL8|A#WAE}&fD7uGnF$18ZKT^O6E3WiA_6TA*sHJ^R3FGl$x89g$#@p zF4|=z3n=fCyYv3;>Xp$SKYH)Z|Nn0f9|MEKgY{d*fhKQrZUB;!j7$s+DJ&ce3=;$u zfRb*M38wwuE&t>F{Qd7YvTta5Z(p}|FB8KC!#D>9hK3#nMg|5WCKd*U6C45z3<}EB z6?{|wo%w$KpIyi07#I$)RWQ=ZvfVRxuG08d=TGz>uK4hnPUTIsg1~ z%ej8${Be5IZ@w-2{Nu+D)#qtxea9cm@U_o=&amyk-yQGo^z3HNIsC80>g?;+ug^Bm zpFiK&`16MkA3!Sa-Mjbf=g*(dEE{wS?B7|NKYqt>`+<4{6(aHb$B%`!P^ZnDSy@%} zYf`bX@$tuneC>zN7BfT_*v&uwcgKB*y}sqmz`$^O!~B_*m6egz{q~oB|NebT zo8iyJJN>_l${Tb)$WtN4H%Cugj2(eR{Iy)jy_ wP@xK-a+_f^zmMkk(fm%M2Kk`QTxb4Q+?f1B$+3?a*l=a=boFyt=akR{0B$lqIsgCw literal 3614 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sOf~Ki(^Q|oVU04X3YtgaJyJu=hJksZOgl!Xz{!f#^qNC!ytR8b0 zWHV_pt&8at5#lg9lM$rit7V+Asr^Ot>UzHA*0;_qzk2%n_T!8U3><6pYk^dPB?|`w z!vsN~V;tNXfc8o;Boyd2hqekY5>KyXRM;t^NNWe|NrPI#T!habDeCyX1=u3^mRE8yFZGdKiGNGh$+4 zU^u}cz`&rO>_9C+ey$0B|L$DJ7<1_F$4ll64AauSe)_xC-Vtbi3(c%Plah75{udlCv zesgoW`g?|H2YwgcyW3OF9?^Dnx_*3L{{4Nnl@%5;X=!PjZ`y#=9`BcbezaR0r1k+& z-{Zd)_w$bJX4auf*q_PTep^<*mJ^t|B)9$kTW44Equ|qr0*f;rf$6vGw??_K@%wvw zXRG_qo3n>Gg6aM7%5vj-vI&x5*RNkczIyfQ$?f02e>XPX95?@)==J}p=Ek32US3}L z@6XSZ)(xsVcJ7pXfBa_|SjQiJ$`bFk*I%pd?WrvORIva4|Jnl(x6MBL>zz2kw|B7$vx0x<3<%p#-O$u3<+gKjkFs8v&qrlrxeG@6zuZ}E-h jqtSdcnvaOhN6++4R|A6^>bP0l+XkK`=Ddo diff --git a/test/goldens/tbody.png b/test/goldens/tbody.png index cd76f966a7b68967ba7f300ce90f084daf1fb340..4a2baae45aeabba75efa38ba4422408a2018f80e 100644 GIT binary patch literal 3486 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sL8|A#WAE}&fD7uGnF$18ZKT^O6E3WiA_6TA*sHJ^R3FGl$x89g$#@p zF4|=z3n=fCyYv3;>Xp$SKYH)Z|Nn0f9|MEKgY{d*fhKQrZUB;!j7$s+DJ&ce3=;$u zfRb*M38wwuE&t>F{Qd7YvTta5Z(p}|FB8KC!#D>9hK3#nMg|5WCKd*U6C45z3<}EB z6?{|wo%w$KpIyi07#I$)RWQ=ZvfVRxuG08d=TGz>uK4hnPUTIsg1~ z%ej8${Be5IZ@w-2{Nu+D)#qtxea9cm@U_o=&amyk-yQGo^z3HNIsC80>g?;+ug^Bm zpFiK&`16MkA3!Sa-Mjbf=g*(dEE{wS?B7|NKYqt>`+<4{6(aHb$B%`!P^ZnDSy@%} zYf`bX@$tuneC>zN7BfT_*v&uwcgKB*y}sqmz`$^O!~B_*m6egz{q~oB|NebT zo8iyJJN>_l${Tb)$WtN4H%Cugj2(eR{Iy)jy_ wP@xK-a+_f^zmMkk(fm%M2Kk`QTxb4Q+?f1B$+3?a*l=a=boFyt=akR{0B$lqIsgCw literal 3614 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sOf~Ki(^Q|oVU04X3YtgaJyJu=hJksZOgl!Xz{!f#^qNC!ytR8b0 zWHV_pt&8at5#lg9lM$rit7V+Asr^Ot>UzHA*0;_qzk2%n_T!8U3><6pYk^dPB?|`w z!vsN~V;tNXfc8o;Boyd2hqekY5>KyXRM;t^NNWe|NrPI#T!habDeCyX1=u3^mRE8yFZGdKiGNGh$+4 zU^u}cz`&rO>_9C+ey$0B|L$DJ7<1_F$4ll64AauSe)_xC-Vtbi3(c%Plah75{udlCv zesgoW`g?|H2YwgcyW3OF9?^Dnx_*3L{{4Nnl@%5;X=!PjZ`y#=9`BcbezaR0r1k+& z-{Zd)_w$bJX4auf*q_PTep^<*mJ^t|B)9$kTW44Equ|qr0*f;rf$6vGw??_K@%wvw zXRG_qo3n>Gg6aM7%5vj-vI&x5*RNkczIyfQ$?f02e>XPX95?@)==J}p=Ek32US3}L z@6XSZ)(xsVcJ7pXfBa_|SjQiJ$`bFk*I%pd?WrvORIva4|Jnl(x6MBL>zz2kw|B7$vx0x<3<%p#-O$u3<+gKjkFs8v&qrlrxeG@6zuZ}E-h jqtSdcnvaOhN6++4R|A6^>bP0l+XkK`=Ddo diff --git a/test/goldens/td.png b/test/goldens/td.png index cd76f966a7b68967ba7f300ce90f084daf1fb340..4a2baae45aeabba75efa38ba4422408a2018f80e 100644 GIT binary patch literal 3486 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sL8|A#WAE}&fD7uGnF$18ZKT^O6E3WiA_6TA*sHJ^R3FGl$x89g$#@p zF4|=z3n=fCyYv3;>Xp$SKYH)Z|Nn0f9|MEKgY{d*fhKQrZUB;!j7$s+DJ&ce3=;$u zfRb*M38wwuE&t>F{Qd7YvTta5Z(p}|FB8KC!#D>9hK3#nMg|5WCKd*U6C45z3<}EB z6?{|wo%w$KpIyi07#I$)RWQ=ZvfVRxuG08d=TGz>uK4hnPUTIsg1~ z%ej8${Be5IZ@w-2{Nu+D)#qtxea9cm@U_o=&amyk-yQGo^z3HNIsC80>g?;+ug^Bm zpFiK&`16MkA3!Sa-Mjbf=g*(dEE{wS?B7|NKYqt>`+<4{6(aHb$B%`!P^ZnDSy@%} zYf`bX@$tuneC>zN7BfT_*v&uwcgKB*y}sqmz`$^O!~B_*m6egz{q~oB|NebT zo8iyJJN>_l${Tb)$WtN4H%Cugj2(eR{Iy)jy_ wP@xK-a+_f^zmMkk(fm%M2Kk`QTxb4Q+?f1B$+3?a*l=a=boFyt=akR{0B$lqIsgCw literal 3614 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sOf~Ki(^Q|oVU04X3YtgaJyJu=hJksZOgl!Xz{!f#^qNC!ytR8b0 zWHV_pt&8at5#lg9lM$rit7V+Asr^Ot>UzHA*0;_qzk2%n_T!8U3><6pYk^dPB?|`w z!vsN~V;tNXfc8o;Boyd2hqekY5>KyXRM;t^NNWe|NrPI#T!habDeCyX1=u3^mRE8yFZGdKiGNGh$+4 zU^u}cz`&rO>_9C+ey$0B|L$DJ7<1_F$4ll64AauSe)_xC-Vtbi3(c%Plah75{udlCv zesgoW`g?|H2YwgcyW3OF9?^Dnx_*3L{{4Nnl@%5;X=!PjZ`y#=9`BcbezaR0r1k+& z-{Zd)_w$bJX4auf*q_PTep^<*mJ^t|B)9$kTW44Equ|qr0*f;rf$6vGw??_K@%wvw zXRG_qo3n>Gg6aM7%5vj-vI&x5*RNkczIyfQ$?f02e>XPX95?@)==J}p=Ek32US3}L z@6XSZ)(xsVcJ7pXfBa_|SjQiJ$`bFk*I%pd?WrvORIva4|Jnl(x6MBL>zz2kw|B7$vx0x<3<%p#-O$u3<+gKjkFs8v&qrlrxeG@6zuZ}E-h jqtSdcnvaOhN6++4R|A6^>bP0l+XkK`=Ddo diff --git a/test/goldens/template.png b/test/goldens/template.png index 8520bfef788c170571af33c003be8a8ded9b98af..3da5bf131b90683a507de025a4278f45bae75ff9 100644 GIT binary patch delta 188 zcmdlW^+9riqs1&w7srr_Id5-nOxG_mGcYt%PS$61nHKF$P}SA^YkX2{TG#i0+v4-fW}EOGBGfuuy8OiOo;qmE5DbKfni1q l|K^EIom`U(n3~0A+KWHo|1tZ<&uc)%44$rjF6*2UngGbgMFao< delta 264 zcmew$xj|}zqx&sS7srr_Id5+n`Z+m@I9z1(+)~Qfvh>DI^XO@hf_!xDG;UNhoTzZ) zMnquEp8XHz)WyYFnj3e2Ei0E|U|?u`dWRcGU3Z@B$mHi3>1$b2ZG7x;+NBQru>F=L z7PHdlRsOfl?=hTrpYQSO-$kDp7|zWM;h+8cX+_nJ-B3*=3&LGYG#H9w{))Eo~zBlz%T)>NK{?tn8fm((}A|HYZez^ zU{FwYU|?wIVPIrnFk1b$&i*?e1H*x-ADA{5GG%g2HegyT_KbafhH>e8msLzaO$?r{ KelF{r5}E*)vTNi3 diff --git a/test/goldens/tfoot.png b/test/goldens/tfoot.png index cd76f966a7b68967ba7f300ce90f084daf1fb340..4a2baae45aeabba75efa38ba4422408a2018f80e 100644 GIT binary patch literal 3486 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sL8|A#WAE}&fD7uGnF$18ZKT^O6E3WiA_6TA*sHJ^R3FGl$x89g$#@p zF4|=z3n=fCyYv3;>Xp$SKYH)Z|Nn0f9|MEKgY{d*fhKQrZUB;!j7$s+DJ&ce3=;$u zfRb*M38wwuE&t>F{Qd7YvTta5Z(p}|FB8KC!#D>9hK3#nMg|5WCKd*U6C45z3<}EB z6?{|wo%w$KpIyi07#I$)RWQ=ZvfVRxuG08d=TGz>uK4hnPUTIsg1~ z%ej8${Be5IZ@w-2{Nu+D)#qtxea9cm@U_o=&amyk-yQGo^z3HNIsC80>g?;+ug^Bm zpFiK&`16MkA3!Sa-Mjbf=g*(dEE{wS?B7|NKYqt>`+<4{6(aHb$B%`!P^ZnDSy@%} zYf`bX@$tuneC>zN7BfT_*v&uwcgKB*y}sqmz`$^O!~B_*m6egz{q~oB|NebT zo8iyJJN>_l${Tb)$WtN4H%Cugj2(eR{Iy)jy_ wP@xK-a+_f^zmMkk(fm%M2Kk`QTxb4Q+?f1B$+3?a*l=a=boFyt=akR{0B$lqIsgCw literal 3614 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sOf~Ki(^Q|oVU04X3YtgaJyJu=hJksZOgl!Xz{!f#^qNC!ytR8b0 zWHV_pt&8at5#lg9lM$rit7V+Asr^Ot>UzHA*0;_qzk2%n_T!8U3><6pYk^dPB?|`w z!vsN~V;tNXfc8o;Boyd2hqekY5>KyXRM;t^NNWe|NrPI#T!habDeCyX1=u3^mRE8yFZGdKiGNGh$+4 zU^u}cz`&rO>_9C+ey$0B|L$DJ7<1_F$4ll64AauSe)_xC-Vtbi3(c%Plah75{udlCv zesgoW`g?|H2YwgcyW3OF9?^Dnx_*3L{{4Nnl@%5;X=!PjZ`y#=9`BcbezaR0r1k+& z-{Zd)_w$bJX4auf*q_PTep^<*mJ^t|B)9$kTW44Equ|qr0*f;rf$6vGw??_K@%wvw zXRG_qo3n>Gg6aM7%5vj-vI&x5*RNkczIyfQ$?f02e>XPX95?@)==J}p=Ek32US3}L z@6XSZ)(xsVcJ7pXfBa_|SjQiJ$`bFk*I%pd?WrvORIva4|Jnl(x6MBL>zz2kw|B7$vx0x<3<%p#-O$u3<+gKjkFs8v&qrlrxeG@6zuZ}E-h jqtSdcnvaOhN6++4R|A6^>bP0l+XkK`=Ddo diff --git a/test/goldens/th.png b/test/goldens/th.png index cd76f966a7b68967ba7f300ce90f084daf1fb340..4a2baae45aeabba75efa38ba4422408a2018f80e 100644 GIT binary patch literal 3486 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sL8|A#WAE}&fD7uGnF$18ZKT^O6E3WiA_6TA*sHJ^R3FGl$x89g$#@p zF4|=z3n=fCyYv3;>Xp$SKYH)Z|Nn0f9|MEKgY{d*fhKQrZUB;!j7$s+DJ&ce3=;$u zfRb*M38wwuE&t>F{Qd7YvTta5Z(p}|FB8KC!#D>9hK3#nMg|5WCKd*U6C45z3<}EB z6?{|wo%w$KpIyi07#I$)RWQ=ZvfVRxuG08d=TGz>uK4hnPUTIsg1~ z%ej8${Be5IZ@w-2{Nu+D)#qtxea9cm@U_o=&amyk-yQGo^z3HNIsC80>g?;+ug^Bm zpFiK&`16MkA3!Sa-Mjbf=g*(dEE{wS?B7|NKYqt>`+<4{6(aHb$B%`!P^ZnDSy@%} zYf`bX@$tuneC>zN7BfT_*v&uwcgKB*y}sqmz`$^O!~B_*m6egz{q~oB|NebT zo8iyJJN>_l${Tb)$WtN4H%Cugj2(eR{Iy)jy_ wP@xK-a+_f^zmMkk(fm%M2Kk`QTxb4Q+?f1B$+3?a*l=a=boFyt=akR{0B$lqIsgCw literal 3614 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sOf~Ki(^Q|oVU04X3YtgaJyJu=hJksZOgl!Xz{!f#^qNC!ytR8b0 zWHV_pt&8at5#lg9lM$rit7V+Asr^Ot>UzHA*0;_qzk2%n_T!8U3><6pYk^dPB?|`w z!vsN~V;tNXfc8o;Boyd2hqekY5>KyXRM;t^NNWe|NrPI#T!habDeCyX1=u3^mRE8yFZGdKiGNGh$+4 zU^u}cz`&rO>_9C+ey$0B|L$DJ7<1_F$4ll64AauSe)_xC-Vtbi3(c%Plah75{udlCv zesgoW`g?|H2YwgcyW3OF9?^Dnx_*3L{{4Nnl@%5;X=!PjZ`y#=9`BcbezaR0r1k+& z-{Zd)_w$bJX4auf*q_PTep^<*mJ^t|B)9$kTW44Equ|qr0*f;rf$6vGw??_K@%wvw zXRG_qo3n>Gg6aM7%5vj-vI&x5*RNkczIyfQ$?f02e>XPX95?@)==J}p=Ek32US3}L z@6XSZ)(xsVcJ7pXfBa_|SjQiJ$`bFk*I%pd?WrvORIva4|Jnl(x6MBL>zz2kw|B7$vx0x<3<%p#-O$u3<+gKjkFs8v&qrlrxeG@6zuZ}E-h jqtSdcnvaOhN6++4R|A6^>bP0l+XkK`=Ddo diff --git a/test/goldens/thead.png b/test/goldens/thead.png index cd76f966a7b68967ba7f300ce90f084daf1fb340..4a2baae45aeabba75efa38ba4422408a2018f80e 100644 GIT binary patch literal 3486 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sL8|A#WAE}&fD7uGnF$18ZKT^O6E3WiA_6TA*sHJ^R3FGl$x89g$#@p zF4|=z3n=fCyYv3;>Xp$SKYH)Z|Nn0f9|MEKgY{d*fhKQrZUB;!j7$s+DJ&ce3=;$u zfRb*M38wwuE&t>F{Qd7YvTta5Z(p}|FB8KC!#D>9hK3#nMg|5WCKd*U6C45z3<}EB z6?{|wo%w$KpIyi07#I$)RWQ=ZvfVRxuG08d=TGz>uK4hnPUTIsg1~ z%ej8${Be5IZ@w-2{Nu+D)#qtxea9cm@U_o=&amyk-yQGo^z3HNIsC80>g?;+ug^Bm zpFiK&`16MkA3!Sa-Mjbf=g*(dEE{wS?B7|NKYqt>`+<4{6(aHb$B%`!P^ZnDSy@%} zYf`bX@$tuneC>zN7BfT_*v&uwcgKB*y}sqmz`$^O!~B_*m6egz{q~oB|NebT zo8iyJJN>_l${Tb)$WtN4H%Cugj2(eR{Iy)jy_ wP@xK-a+_f^zmMkk(fm%M2Kk`QTxb4Q+?f1B$+3?a*l=a=boFyt=akR{0B$lqIsgCw literal 3614 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sOf~Ki(^Q|oVU04X3YtgaJyJu=hJksZOgl!Xz{!f#^qNC!ytR8b0 zWHV_pt&8at5#lg9lM$rit7V+Asr^Ot>UzHA*0;_qzk2%n_T!8U3><6pYk^dPB?|`w z!vsN~V;tNXfc8o;Boyd2hqekY5>KyXRM;t^NNWe|NrPI#T!habDeCyX1=u3^mRE8yFZGdKiGNGh$+4 zU^u}cz`&rO>_9C+ey$0B|L$DJ7<1_F$4ll64AauSe)_xC-Vtbi3(c%Plah75{udlCv zesgoW`g?|H2YwgcyW3OF9?^Dnx_*3L{{4Nnl@%5;X=!PjZ`y#=9`BcbezaR0r1k+& z-{Zd)_w$bJX4auf*q_PTep^<*mJ^t|B)9$kTW44Equ|qr0*f;rf$6vGw??_K@%wvw zXRG_qo3n>Gg6aM7%5vj-vI&x5*RNkczIyfQ$?f02e>XPX95?@)==J}p=Ek32US3}L z@6XSZ)(xsVcJ7pXfBa_|SjQiJ$`bFk*I%pd?WrvORIva4|Jnl(x6MBL>zz2kw|B7$vx0x<3<%p#-O$u3<+gKjkFs8v&qrlrxeG@6zuZ}E-h jqtSdcnvaOhN6++4R|A6^>bP0l+XkK`=Ddo diff --git a/test/goldens/time.png b/test/goldens/time.png index eace62a0dc137ca3bce2f3d64e8f902e23d61292..70cd8df8c297d99781e7aa653b97398ad5563c9e 100644 GIT binary patch literal 3341 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq`ecr;B4q#hkY{H~Jn9kZ`*w{$!G>$K#t39cP}ksd{{s+UzW}uC>PR z{c`_z>;9cSe*L^1&=974cYYvs&ba|dN-{DrFr=_>FfdFIRA69maHC8xt@2yr`}5z! z-!SkM?7iDRkAY!M4>z?8$L+S6Pj9lX+x}a-4Co{E2TWA;5|XWY$vuBx2r@7nu-t(b zOp(v#B=;CzE48gSb^q43w+r9D`v2*L9|OY={ul=ahK3#nMg|5WCKd*U6C45z3<}D` z2*x~{^ZTMQPw`f!)G0`y^N~57Pnhi-R!A7&pXqFkxGNW0B$Og}7aWOKA ai_hGx`z4BjHE@ literal 3462 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sL8<7#WAE}&f8nIdBThW4HrN5vxKVj2^2P(STf3%FFqT%!=*}vE3ZLA zh?Dd54Ur20u6<|ImG)mhpRwg?-L2S|`?l}c85k5c*nDSXU^wtp0BE~|TLaJ{Nk%3H zh7=YK28IcOWD8z9&a*%2?4J7SD_#57{C{$xEPa0Mx4*Azjg95^=R7}t{_#u zd-INc)nB-P9#^5A&0@xz?Y|2G13UEtD+>d|2@U~Z_$xawFf^R0+I;iO;lqdT+`A`d zv*-5Pw6wIHHfxe!?VLID_wV03ckQyuSXQTJe15ku14A5FJV;9q12Ec*m{85ZBlvpe z%%??`=H}+?{Q28&-}k=u`hQhkTH4kqS({+{=`)|-S#>n%MuU!lO2z(YS{hADqiKnjEtki1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sL8|A#WAE}&fD7uGnF$18ZKT^O6E3WiA_6TA*sHJ^R3FGl$x89g$#@p zF4|=z3n=fCyYv3;>Xp$SKYH)Z|Nn0f9|MEKgY{d*fhKQrZUB;!j7$s+DJ&ce3=;$u zfRb*M38wwuE&t>F{Qd7YvTta5Z(p}|FB8KC!#D>9hK3#nMg|5WCKd*U6C45z3<}EB z6?{|wo%w$KpIyi07#I$)RWQ=ZvfVRxuG08d=TGz>uK4hnPUTIsg1~ z%ej8${Be5IZ@w-2{Nu+D)#qtxea9cm@U_o=&amyk-yQGo^z3HNIsC80>g?;+ug^Bm zpFiK&`16MkA3!Sa-Mjbf=g*(dEE{wS?B7|NKYqt>`+<4{6(aHb$B%`!P^ZnDSy@%} zYf`bX@$tuneC>zN7BfT_*v&uwcgKB*y}sqmz`$^O!~B_*m6egz{q~oB|NebT zo8iyJJN>_l${Tb)$WtN4H%Cugj2(eR{Iy)jy_ wP@xK-a+_f^zmMkk(fm%M2Kk`QTxb4Q+?f1B$+3?a*l=a=boFyt=akR{0B$lqIsgCw literal 3614 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sOf~Ki(^Q|oVU04X3YtgaJyJu=hJksZOgl!Xz{!f#^qNC!ytR8b0 zWHV_pt&8at5#lg9lM$rit7V+Asr^Ot>UzHA*0;_qzk2%n_T!8U3><6pYk^dPB?|`w z!vsN~V;tNXfc8o;Boyd2hqekY5>KyXRM;t^NNWe|NrPI#T!habDeCyX1=u3^mRE8yFZGdKiGNGh$+4 zU^u}cz`&rO>_9C+ey$0B|L$DJ7<1_F$4ll64AauSe)_xC-Vtbi3(c%Plah75{udlCv zesgoW`g?|H2YwgcyW3OF9?^Dnx_*3L{{4Nnl@%5;X=!PjZ`y#=9`BcbezaR0r1k+& z-{Zd)_w$bJX4auf*q_PTep^<*mJ^t|B)9$kTW44Equ|qr0*f;rf$6vGw??_K@%wvw zXRG_qo3n>Gg6aM7%5vj-vI&x5*RNkczIyfQ$?f02e>XPX95?@)==J}p=Ek32US3}L z@6XSZ)(xsVcJ7pXfBa_|SjQiJ$`bFk*I%pd?WrvORIva4|Jnl(x6MBL>zz2kw|B7$vx0x<3<%p#-O$u3<+gKjkFs8v&qrlrxeG@6zuZ}E-h jqtSdcnvaOhN6++4R|A6^>bP0l+XkK`=Ddo diff --git a/test/goldens/tt.png b/test/goldens/tt.png index acb1363400d0a86c842f09d12045d5575bd1c6c7..3b4446b10f55b0f59131fbb1420b6283019acba3 100644 GIT binary patch delta 237 zcmVEr8X9{>OVfw!{<0002jA(JryPLn_Z1r;;D`h)M!_ak-yC%D}oXHNhC zF2)6uu>nJqKmi{Q%>3#PZuiF#I{*NH3vdCG!2vUqKmjE-(->nvdjtRga1AaX002Nn zfB*mh836(S0A%KE+r}7UEX#88l>cR2*QdVo4##@-9RL9M8!nT<133()ZQJ&C4_7sO;%v%-fXiJH<4bj za0g-$L2wvnEVR)kOlI;9IM36c!-d;?FW+5U-+$W=002N>dF}%M005UmlOY36Ls=g) z{AxAx?&hc!e_8*@q3zB-`|Nw^eKRv3K5ys8&(rM#0C>t#^>FiMIq%=TKGj)(*r%`G z=i`?X77YNv6Fk8Jk+33@kO3f*5CIw<92Fqj-KmZNoWpK^?h^n2mu7K&|IH@|005Bi z1PhU%GLw)2Ad?UQ1xzevW`FKO0001&!5gwvC8TWA7xtZtP0{{Ro#~+gc0W&nrdS+(1T+Z$7 z?ZLy_?e_PQ_1fG&R;$&)Gw$KEb2HDo2LJ$G&SJCK?9Y7&007`Jc!CA9K?1i5lOO{X a7UmcEG=QNu7fyBn0000s7kquZJ!1}F0sG@+=@9^c zm9YVnQ3GNQGd+62{&;!D8~^~o3fPlR0XdUi0UtP-%^2gh^bi05z&hA~0000P0RjL3 zWCRER0FasHc^+eoaX1_n9_6*1PN%!hd57n^_Z=xL&VI z&hc{2=ks0XyaNCLuk0^Cwp+`PXWH#{cb)SN006wQ%{ zx3w1__V>S^=C6-iEE)iSC%A$IlZ^o};bM=dj(mnV&lc003T&H9*y7yG%+b-&#xno_yqtsOa{0LHO#lD@`@x+Sv*7|d f3X`w`lNMh9RWPby%~8+*00000NkvXXu0mjftk&2# diff --git a/test/goldens/var.png b/test/goldens/var.png index 3aa5f8ec781c56e93c39c92c4ab727c8d69985a0..2987852081c61cfb348b0483ef315c929b5d6904 100644 GIT binary patch literal 3596 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9ji|sA-$0i(^Q|oVT|X{Zu1G8Xh(&9A7YhmY4(!UsH8)q1_py`*Tg4m-@e^dfA93^)4Sui>c8(? zy?Ql}`!4a#olDgW3<-PIGE~;p#eJD@HZA#``nmJx#n0|+-&pMZo{^#9<2I%zFJESc zKmVaSciud`S;hRxx_j9f7>?cMnxJZ*KXX}TRb{2&cVTsP_3meP4&T_h^gA%dE94oI z-Y2}7^S8hB%+3D{3=z}&88((1l%4x`-0InzdIp9yr`;QFSWBD+@^4_5e`s>kTEaH{ zf3j@xH+u$#YtIX2y^-yixB36ZKFiyQ5iwr?3cUHx3vIVCg! E01Y60y#N3J literal 3674 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV2a>i1B%QlYbpRzjKx9jP7LeL$-D$|Sc;uI zLpXq-h9jkefq{?3)5S5QV$R#U8@*D}B^n;qm#8$Rc1P^Gx~ZwR^{!c2qi#`t=69!U zCrooTPGbvt!soOtf+J{UYz~JE40CX-@1m#2(UY`x=XS8WQ`)%iZ28N1Ev3&cw&*~tn zK5&Uq-$Jk_B6|$Co&O6A=L4r7*rR!9+Ul#XejUDg^{R!fZS4oe+i%O(Tz_3yP>}F$ zn*V&e-pP|Ev!C73p85RPjkj_P3^VS1`Y*4iuU~GRvQwt}=%G8h>*MxH9Y21Ye_k>F z<#TVVfD!BS{+M<|{Jxr-FDEQstXy1fVQ(-0`}c1Y6>beR|Nc}icQ%{dyVH74{r|e< zmfsED-dXn@=*BN%tFLBRx9x3S`TW?1|Ay^54d2u=Fq}F0m9JxObLR6m^=FdL{bOf1 zuqS4JQ|kMKTb94&KhN0wpOL{p|2kt5szCSEtgTzifhJ3Qvwvn_-u9QDp Date: Wed, 18 Sep 2019 14:55:06 +0530 Subject: [PATCH 20/23] - Refactored prefixNetworkImageRelativePath -> prefixImagePath - added interpolation to prepend image source with prefixImagePath --- lib/image_properties.dart | 4 ++-- lib/rich_text_parser.dart | 13 ++++++------- pubspec.lock | 20 ++++++++++---------- 3 files changed, 18 insertions(+), 19 deletions(-) diff --git a/lib/image_properties.dart b/lib/image_properties.dart index 15c4b798b8..1505996a56 100644 --- a/lib/image_properties.dart +++ b/lib/image_properties.dart @@ -15,7 +15,7 @@ class ImageProperties { final bool matchTextDirection; final FilterQuality filterQuality; final double scale; - final String prefixNetworkImageRelativePath; + final String prefixImagePath; const ImageProperties({ this.scale = 1, @@ -31,6 +31,6 @@ class ImageProperties { this.centerSlice, this.matchTextDirection = false, this.filterQuality = FilterQuality.low, - this.prefixNetworkImageRelativePath = '' + this.prefixImagePath = '' }); } diff --git a/lib/rich_text_parser.dart b/lib/rich_text_parser.dart index 1e10a6b356..cf4104bf34 100644 --- a/lib/rich_text_parser.dart +++ b/lib/rich_text_parser.dart @@ -781,20 +781,19 @@ class HtmlRichTextParser extends StatelessWidget { } else { String imageUrl = ''; if (!node.attributes['src'].contains('http')) { - imageUrl = imageProperties.prefixNetworkImageRelativePath + - node.attributes['src']; - } - else { + imageUrl = + "${imageProperties.prefixImagePath} ${node.attributes['src']}"; + } else { imageUrl = node.attributes['src']; } precacheImage( - NetworkImage(node.attributes['src']), + NetworkImage(imageUrl), buildContext, onError: onImageError, ); parseContext.rootWidgetList.add(GestureDetector( child: Image.network( - node.attributes['src'], + imageUrl, width: imageProperties?.width ?? ((node.attributes['width'] != null) ? double.parse(node.attributes['width']) @@ -822,7 +821,7 @@ class HtmlRichTextParser extends StatelessWidget { ), onTap: () { if (onImageTap != null) { - onImageTap(node.attributes['src']); + onImageTap(imageUrl); } }, )); diff --git a/pubspec.lock b/pubspec.lock index 0ea08348ac..97830c4b11 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1,5 +1,5 @@ # Generated by pub -# See https://www.dartlang.org/tools/pub/glossary#lockfile +# See https://dart.dev/tools/pub/glossary#lockfile packages: async: dependency: transitive @@ -7,14 +7,14 @@ packages: name: async url: "https://pub.dartlang.org" source: hosted - version: "2.1.0" + version: "2.3.0" boolean_selector: dependency: transitive description: name: boolean_selector url: "https://pub.dartlang.org" source: hosted - version: "1.0.4" + version: "1.0.5" charcode: dependency: transitive description: @@ -66,28 +66,28 @@ packages: name: meta url: "https://pub.dartlang.org" source: hosted - version: "1.1.6" + version: "1.1.7" path: dependency: transitive description: name: path url: "https://pub.dartlang.org" source: hosted - version: "1.6.2" + version: "1.6.4" pedantic: dependency: transitive description: name: pedantic url: "https://pub.dartlang.org" source: hosted - version: "1.5.0" + version: "1.8.0+1" quiver: dependency: transitive description: name: quiver url: "https://pub.dartlang.org" source: hosted - version: "2.0.2" + version: "2.0.5" sky_engine: dependency: transitive description: flutter @@ -120,7 +120,7 @@ packages: name: string_scanner url: "https://pub.dartlang.org" source: hosted - version: "1.0.4" + version: "1.0.5" term_glyph: dependency: transitive description: @@ -134,7 +134,7 @@ packages: name: test_api url: "https://pub.dartlang.org" source: hosted - version: "0.2.4" + version: "0.2.5" typed_data: dependency: transitive description: @@ -150,5 +150,5 @@ packages: source: hosted version: "2.0.8" sdks: - dart: ">=2.2.0 <3.0.0" + dart: ">=2.2.2 <3.0.0" flutter: ">=0.5.0" From fe51711dacdccb158b9f774c6d7917a92f6be6fb Mon Sep 17 00:00:00 2001 From: Arnold Parge Date: Fri, 23 Aug 2019 17:28:49 +0530 Subject: [PATCH 21/23] Handled relative path in image urls: - added prefixNetworkImageRelativePath in ImageProperties. - HtmlRichTextParser: prefixed node.attributes['src'] with imageProperties.prefixNetworkImageRelativePath --- lib/image_properties.dart | 2 ++ lib/rich_text_parser.dart | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/lib/image_properties.dart b/lib/image_properties.dart index 62dfab5b63..15c4b798b8 100644 --- a/lib/image_properties.dart +++ b/lib/image_properties.dart @@ -15,6 +15,7 @@ class ImageProperties { final bool matchTextDirection; final FilterQuality filterQuality; final double scale; + final String prefixNetworkImageRelativePath; const ImageProperties({ this.scale = 1, @@ -30,5 +31,6 @@ class ImageProperties { this.centerSlice, this.matchTextDirection = false, this.filterQuality = FilterQuality.low, + this.prefixNetworkImageRelativePath = '' }); } diff --git a/lib/rich_text_parser.dart b/lib/rich_text_parser.dart index 25258e2ae1..ddb84bee47 100644 --- a/lib/rich_text_parser.dart +++ b/lib/rich_text_parser.dart @@ -788,6 +788,14 @@ class HtmlRichTextParser extends StatelessWidget { }, )); } else { + String imageUrl = ''; + if (!node.attributes['src'].contains('http')) { + imageUrl = imageProperties.prefixNetworkImageRelativePath + + node.attributes['src']; + } + else { + imageUrl = node.attributes['src']; + } precacheImage( NetworkImage(node.attributes['src']), buildContext, From 2d0bb5e84eea635afb6d6c9896f4a649b36a2f16 Mon Sep 17 00:00:00 2001 From: Arnold Parge Date: Wed, 18 Sep 2019 14:55:06 +0530 Subject: [PATCH 22/23] - Refactored prefixNetworkImageRelativePath -> prefixImagePath - added interpolation to prepend image source with prefixImagePath --- lib/image_properties.dart | 4 ++-- lib/rich_text_parser.dart | 41 +++++++++++++-------------------------- pubspec.lock | 14 ++++++------- 3 files changed, 23 insertions(+), 36 deletions(-) diff --git a/lib/image_properties.dart b/lib/image_properties.dart index 15c4b798b8..1505996a56 100644 --- a/lib/image_properties.dart +++ b/lib/image_properties.dart @@ -15,7 +15,7 @@ class ImageProperties { final bool matchTextDirection; final FilterQuality filterQuality; final double scale; - final String prefixNetworkImageRelativePath; + final String prefixImagePath; const ImageProperties({ this.scale = 1, @@ -31,6 +31,6 @@ class ImageProperties { this.centerSlice, this.matchTextDirection = false, this.filterQuality = FilterQuality.low, - this.prefixNetworkImageRelativePath = '' + this.prefixImagePath = '' }); } diff --git a/lib/rich_text_parser.dart b/lib/rich_text_parser.dart index ddb84bee47..6fc30a71e7 100644 --- a/lib/rich_text_parser.dart +++ b/lib/rich_text_parser.dart @@ -790,40 +790,27 @@ class HtmlRichTextParser extends StatelessWidget { } else { String imageUrl = ''; if (!node.attributes['src'].contains('http')) { - imageUrl = imageProperties.prefixNetworkImageRelativePath + - node.attributes['src']; - } - else { + imageUrl = + "${imageProperties.prefixImagePath} ${node.attributes['src']}"; + } else { imageUrl = node.attributes['src']; } precacheImage( - NetworkImage(node.attributes['src']), + NetworkImage(imageUrl), buildContext, onError: onImageError ?? (_, __) {}, ); parseContext.rootWidgetList.add(GestureDetector( child: Image.network( - node.attributes['src'], - frameBuilder: (context, child, frame, _) { - if (node.attributes['alt'] != null && frame == null) { - return BlockText( - child: RichText( - textAlign: TextAlign.center, - text: TextSpan( - text: node.attributes['alt'], - style: nextContext.childStyle, - ), - ), - shrinkToFit: shrinkToFit, - ); - } - if (frame != null) { - return child; - } - return Container(); - }, - width: (width ?? -1) > 0 ? width : null, - height: (height ?? -1) > 0 ? height : null, + imageUrl, + width: imageProperties?.width ?? + ((node.attributes['width'] != null) + ? double.parse(node.attributes['width']) + : null), + height: imageProperties?.height ?? + ((node.attributes['height'] != null) + ? double.parse(node.attributes['height']) + : null), scale: imageProperties?.scale ?? 1.0, matchTextDirection: imageProperties?.matchTextDirection ?? false, @@ -843,7 +830,7 @@ class HtmlRichTextParser extends StatelessWidget { ), onTap: () { if (onImageTap != null) { - onImageTap(node.attributes['src']); + onImageTap(imageUrl); } }, )); diff --git a/pubspec.lock b/pubspec.lock index d45ef57534..97830c4b11 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -7,14 +7,14 @@ packages: name: async url: "https://pub.dartlang.org" source: hosted - version: "2.2.0" + version: "2.3.0" boolean_selector: dependency: transitive description: name: boolean_selector url: "https://pub.dartlang.org" source: hosted - version: "1.0.4" + version: "1.0.5" charcode: dependency: transitive description: @@ -66,28 +66,28 @@ packages: name: meta url: "https://pub.dartlang.org" source: hosted - version: "1.1.6" + version: "1.1.7" path: dependency: transitive description: name: path url: "https://pub.dartlang.org" source: hosted - version: "1.6.2" + version: "1.6.4" pedantic: dependency: transitive description: name: pedantic url: "https://pub.dartlang.org" source: hosted - version: "1.7.0" + version: "1.8.0+1" quiver: dependency: transitive description: name: quiver url: "https://pub.dartlang.org" source: hosted - version: "2.0.3" + version: "2.0.5" sky_engine: dependency: transitive description: flutter @@ -120,7 +120,7 @@ packages: name: string_scanner url: "https://pub.dartlang.org" source: hosted - version: "1.0.4" + version: "1.0.5" term_glyph: dependency: transitive description: From b0df4a3e0e8cbc10ee25fe14e63cc2103d32cb8b Mon Sep 17 00:00:00 2001 From: Arnold Parge Date: Wed, 18 Sep 2019 18:08:59 +0530 Subject: [PATCH 23/23] fixed space in imageUrl --- lib/rich_text_parser.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/rich_text_parser.dart b/lib/rich_text_parser.dart index 6fc30a71e7..b7a653635f 100644 --- a/lib/rich_text_parser.dart +++ b/lib/rich_text_parser.dart @@ -791,7 +791,7 @@ class HtmlRichTextParser extends StatelessWidget { String imageUrl = ''; if (!node.attributes['src'].contains('http')) { imageUrl = - "${imageProperties.prefixImagePath} ${node.attributes['src']}"; + "${imageProperties.prefixImagePath}${node.attributes['src']}"; } else { imageUrl = node.attributes['src']; }