Skip to content

Instantly share code, notes, and snippets.

@pramsey
Created July 7, 2021 23:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pramsey/2fbf9e7b11229da6a1a70e689571e69d to your computer and use it in GitHub Desktop.
Save pramsey/2fbf9e7b11229da6a1a70e689571e69d to your computer and use it in GitHub Desktop.
<html>
<head>
<style>
html {
font-family: sans-serif;
}
.geomA {
marker-end: url(#vertexA); marker-mid: url(#vertexA); fill:#bbbbff; fill-opacity:0.5; stroke:#0000ff; stroke-width:1; stroke-opacity:1; stroke-miterlimit:4; stroke-linejoin:miter; stroke-linecap:square;
}
.geomB {
marker-end: url(#vertexB); marker-mid: url(#vertexB); fill:#ffbbbb; fill-opacity:0.5; stroke:#ff0000; stroke-width:1; stroke-opacity:1; stroke-miterlimit:4; stroke-linejoin:miter; stroke-linecap:square;
}
</style>
</head>
<body>
<h3>Polygon - Exverted shell, point touch</h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Exverted shell, point touch</desc><path class="geomA" fill-rule="evenodd" d="M 10 -90 L 50 -70 90 -90 90 -10 50 -70 10 -10 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Exverted shell, point touch</desc><g class="geomB">
<path fill-rule="evenodd" d="M 10 -10 L 10 -90 50 -70 Z" />
<path fill-rule="evenodd" d="M 90 -10 L 50 -70 90 -90 Z" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Exverted shell, point touch</desc><g class="geomB">
<path fill-rule="evenodd" d="M 10 -90 L 50 -70 10 -10 Z" />
<path fill-rule="evenodd" d="M 50 -70 L 90 -90 90 -10 Z" />
</g></svg></td></tr></table><hr/>
<h3>Polygon - Exverted shell, point-line touch</h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Exverted shell, point-line touch</desc><path class="geomA" fill-rule="evenodd" d="M 10 -90 L 90 -90 90 -10 50 -90 10 -10 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Exverted shell, point-line touch</desc><g class="geomB">
<path fill-rule="evenodd" d="M 10 -10 L 10 -90 50 -90 Z" />
<path fill-rule="evenodd" d="M 90 -10 L 50 -90 90 -90 Z" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Exverted shell, point-line touch</desc><g class="geomB">
<path fill-rule="evenodd" d="M 10 -90 L 50 -90 10 -10 Z" />
<path fill-rule="evenodd" d="M 50 -90 L 90 -90 90 -10 Z" />
</g></svg></td></tr></table><hr/>
<h3>Polygon - Exverted shell, line touch</h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Exverted shell, line touch</desc><path class="geomA" fill-rule="evenodd" d="M 10 -90 L 90 -90 90 -10 60 -90 40 -90 10 -10 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Exverted shell, line touch</desc><g class="geomB">
<path fill-rule="evenodd" d="M 10 -10 L 10 -90 40 -90 Z" />
<path fill-rule="evenodd" d="M 90 -10 L 60 -90 90 -90 Z" />
<path fill-rule="evenodd" d="M 40 -90 L 60 -90" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Exverted shell, line touch</desc><g class="geomB">
<path fill-rule="evenodd" d="M 10 -90 L 40 -90 10 -10 Z" />
<path fill-rule="evenodd" d="M 60 -90 L 90 -90 90 -10 Z" />
</g></svg></td></tr></table><hr/>
<h3>Polygon - Inverted shell, point touch</h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Inverted shell, point touch</desc><path class="geomA" fill-rule="evenodd" d="M 10 -90 L 50 -90 30 -50 70 -50 50 -90 90 -90 90 -10 10 -10 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Inverted shell, point touch</desc><path class="geomB" fill-rule="evenodd" d="M 50 -90 L 90 -90 90 -10 10 -10 10 -90 Z M 30 -50 L 70 -50 50 -90 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Inverted shell, point touch</desc><path class="geomB" fill-rule="evenodd" d="M 10 -90 L 50 -90 90 -90 90 -10 10 -10 Z M 50 -90 L 30 -50 70 -50 Z" /></svg></td></tr></table><hr/>
<h3>Polygon - Inverted shell, point-line touch</h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Inverted shell, point-line touch</desc><path class="geomA" fill-rule="evenodd" d="M 10 -90 L 40 -90 40 -30 80 -30 40 -70 90 -70 90 -10 10 -10 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Inverted shell, point-line touch</desc><path class="geomB" fill-rule="evenodd" d="M 40 -90 L 40 -70 90 -70 90 -10 10 -10 10 -90 Z M 40 -30 L 80 -30 40 -70 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Inverted shell, point-line touch</desc><path class="geomB" fill-rule="evenodd" d="M 10 -90 L 40 -90 40 -70 90 -70 90 -10 10 -10 Z M 40 -70 L 40 -30 80 -30 Z" /></svg></td></tr></table><hr/>
<h3>Polygon - Inverted shell, line touch, exterior</h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Inverted shell, line touch, exterior</desc><path class="geomA" fill-rule="evenodd" d="M 10 -90 L 70 -90 40 -90 40 -60 70 -60 70 -90 90 -90 90 -10 10 -10 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Inverted shell, line touch, exterior</desc><g class="geomB">
<path fill-rule="evenodd" d="M 70 -90 L 90 -90 90 -10 10 -10 10 -90 40 -90 Z" />
<path fill-rule="evenodd" d="M 40 -90 L 40 -60 70 -60 70 -90" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Inverted shell, line touch, exterior</desc><path class="geomB" fill-rule="evenodd" d="M 10 -90 L 40 -90 40 -60 70 -60 70 -90 90 -90 90 -10 10 -10 Z" /></svg></td></tr></table><hr/>
<h3>Polygon - Inverted shell, line touch, interior</h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Inverted shell, line touch, interior</desc><path class="geomA" fill-rule="evenodd" d="M 10 -90 L 50 -90 50 -70 30 -40 70 -40 50 -70 50 -90 90 -90 90 -10 10 -10 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Inverted shell, line touch, interior</desc><g class="geomB">
<path fill-rule="evenodd" d="M 50 -90 L 90 -90 90 -10 10 -10 10 -90 Z M 30 -40 L 70 -40 50 -70 Z" />
<path fill-rule="evenodd" d="M 50 -90 L 50 -70" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Inverted shell, line touch, interior</desc><path class="geomB" fill-rule="evenodd" d="M 10 -90 L 50 -90 90 -90 90 -10 10 -10 Z M 50 -70 L 30 -40 70 -40 Z" /></svg></td></tr></table><hr/>
<h3>Polygon/Hole - Exverted hole, point touch</h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Exverted hole, point touch</desc><path class="geomA" fill-rule="evenodd" d="M 10 -90 L 90 -90 90 -10 10 -10 Z M 20 -80 L 50 -60 80 -80 80 -20 50 -60 20 -20 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Exverted hole, point touch</desc><path class="geomB" fill-rule="evenodd" d="M 90 -90 L 90 -10 10 -10 10 -90 Z M 20 -80 L 20 -20 50 -60 Z M 80 -20 L 80 -80 50 -60 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Exverted hole, point touch</desc><path class="geomB" fill-rule="evenodd" d="M 90 -90 L 90 -10 10 -10 10 -90 Z M 20 -80 L 20 -20 50 -60 Z M 80 -20 L 80 -80 50 -60 Z" /></svg></td></tr></table><hr/>
<h3>Polygon/Hole - Exverted hole, point-line touch</h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Exverted hole, point-line touch</desc><path class="geomA" fill-rule="evenodd" d="M 10 -90 L 90 -90 90 -10 10 -10 Z M 20 -80 L 80 -80 80 -20 50 -80 20 -20 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Exverted hole, point-line touch</desc><path class="geomB" fill-rule="evenodd" d="M 90 -90 L 90 -10 10 -10 10 -90 Z M 20 -80 L 20 -20 50 -80 Z M 80 -20 L 80 -80 50 -80 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Exverted hole, point-line touch</desc><path class="geomB" fill-rule="evenodd" d="M 90 -90 L 90 -10 10 -10 10 -90 Z M 20 -80 L 20 -20 50 -80 Z M 80 -20 L 80 -80 50 -80 Z" /></svg></td></tr></table><hr/>
<h3>Polygon/Hole - Exverted hole, line touch </h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Exverted hole, line touch </desc><path class="geomA" fill-rule="evenodd" d="M 10 -90 L 90 -90 90 -10 10 -10 Z M 80 -80 L 60 -50 40 -50 20 -80 20 -20 40 -50 60 -50 80 -20 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Exverted hole, line touch </desc><g class="geomB">
<path fill-rule="evenodd" d="M 90 -90 L 90 -10 10 -10 10 -90 Z M 60 -50 L 80 -20 80 -80 Z M 20 -80 L 20 -20 40 -50 Z" />
<path fill-rule="evenodd" d="M 60 -50 L 40 -50" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Exverted hole, line touch </desc><path class="geomB" fill-rule="evenodd" d="M 90 -90 L 90 -10 10 -10 10 -90 Z M 20 -80 L 20 -20 40 -50 Z M 80 -20 L 80 -80 60 -50 Z" /></svg></td></tr></table><hr/>
<h3>Polygon/Hole - Inverted hole, point touch</h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Inverted hole, point touch</desc><path class="geomA" fill-rule="evenodd" d="M 10 -90 L 90 -90 90 -10 10 -10 Z M 20 -80 L 50 -80 30 -50 70 -50 50 -80 80 -80 80 -20 20 -20 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Inverted hole, point touch</desc><g class="geomB">
<path fill-rule="evenodd" d="M 90 -10 L 10 -10 10 -90 90 -90 Z M 20 -20 L 80 -20 80 -80 50 -80 20 -80 Z" />
<path fill-rule="evenodd" d="M 30 -50 L 50 -80 70 -50 Z" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Inverted hole, point touch</desc><g class="geomB">
<path fill-rule="evenodd" d="M 90 -90 L 90 -10 10 -10 10 -90 Z M 20 -80 L 20 -20 80 -20 80 -80 50 -80 Z" />
<path fill-rule="evenodd" d="M 70 -50 L 30 -50 50 -80 Z" />
</g></svg></td></tr></table><hr/>
<h3>Polygon/Hole - Inverted hole, point-line touch</h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Inverted hole, point-line touch</desc><path class="geomA" fill-rule="evenodd" d="M 10 -90 L 90 -90 90 -10 10 -10 Z M 20 -80 L 40 -80 40 -40 70 -40 40 -70 80 -70 80 -20 20 -20 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Inverted hole, point-line touch</desc><g class="geomB">
<path fill-rule="evenodd" d="M 90 -10 L 10 -10 10 -90 90 -90 Z M 20 -80 L 20 -20 80 -20 80 -70 40 -70 40 -80 Z" />
<path fill-rule="evenodd" d="M 40 -40 L 40 -70 70 -40 Z" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Inverted hole, point-line touch</desc><g class="geomB">
<path fill-rule="evenodd" d="M 90 -90 L 90 -10 10 -10 10 -90 Z M 40 -80 L 20 -80 20 -20 80 -20 80 -70 40 -70 Z" />
<path fill-rule="evenodd" d="M 70 -40 L 40 -40 40 -70 Z" />
</g></svg></td></tr></table><hr/>
<h3>Polygon/Hole - Inverted hole, line touch, interior </h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Inverted hole, line touch, interior </desc><path class="geomA" fill-rule="evenodd" d="M 10 -90 L 90 -90 90 -10 10 -10 Z M 20 -80 L 60 -80 40 -80 40 -40 60 -40 60 -80 80 -80 80 -20 20 -20 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Inverted hole, line touch, interior </desc><g class="geomB">
<path fill-rule="evenodd" d="M 10 -10 L 10 -90 90 -90 90 -10 Z M 20 -80 L 20 -20 80 -20 80 -80 60 -80 40 -80 Z" />
<path fill-rule="evenodd" d="M 40 -80 L 40 -40 60 -40 60 -80" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Inverted hole, line touch, interior </desc><path class="geomB" fill-rule="evenodd" d="M 90 -90 L 90 -10 10 -10 10 -90 Z M 20 -20 L 80 -20 80 -80 60 -80 60 -40 40 -40 40 -80 20 -80 Z" /></svg></td></tr></table><hr/>
<h3>Polygon/Hole - Inverted hole, line touch, exterior </h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Inverted hole, line touch, exterior </desc><path class="geomA" fill-rule="evenodd" d="M 10 -90 L 90 -90 90 -10 10 -10 Z M 50 -80 L 50 -60 40 -40 60 -40 50 -60 50 -80 80 -30 20 -30 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Inverted hole, line touch, exterior </desc><g class="geomB">
<path fill-rule="evenodd" d="M 90 -10 L 10 -10 10 -90 90 -90 Z M 80 -30 L 50 -80 20 -30 Z" />
<path fill-rule="evenodd" d="M 40 -40 L 50 -60 60 -40 Z" />
<path fill-rule="evenodd" d="M 50 -80 L 50 -60" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Inverted hole, line touch, exterior </desc><g class="geomB">
<path fill-rule="evenodd" d="M 90 -90 L 90 -10 10 -10 10 -90 Z M 20 -30 L 80 -30 50 -80 Z" />
<path fill-rule="evenodd" d="M 60 -40 L 40 -40 50 -60 Z" />
</g></svg></td></tr></table><hr/>
<h3>Polygon/Hole - Exverted shell, point touch; exverted hole, point touch </h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Exverted shell, point touch; exverted hole, point touch </desc><path class="geomA" fill-rule="evenodd" d="M 10 -10 L 10 -90 50 -50 90 -90 90 -10 50 -50 Z M 80 -60 L 50 -50 20 -60 20 -40 50 -50 80 -40 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Exverted shell, point touch; exverted hole, point touch </desc><g class="geomB">
<path fill-rule="evenodd" d="M 50 -50 L 10 -10 10 -90 Z M 20 -60 L 20 -40 50 -50 Z" />
<path fill-rule="evenodd" d="M 90 -10 L 50 -50 90 -90 Z M 80 -40 L 80 -60 50 -50 Z" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Exverted shell, point touch; exverted hole, point touch </desc><g class="geomB">
<path fill-rule="evenodd" d="M 10 -90 L 50 -50 10 -10 Z M 20 -60 L 20 -40 50 -50 Z" />
<path fill-rule="evenodd" d="M 90 -90 L 90 -10 50 -50 Z M 80 -40 L 80 -60 50 -50 Z" />
</g></svg></td></tr></table><hr/>
<h3>Polygon/Hole - Exverted shell, point touch; exverted hole, line touch </h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Exverted shell, point touch; exverted hole, line touch </desc><path class="geomA" fill-rule="evenodd" d="M 10 -10 L 10 -90 50 -50 90 -90 90 -10 50 -50 Z M 80 -60 L 60 -50 40 -50 20 -60 20 -40 40 -50 60 -50 80 -40 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Exverted shell, point touch; exverted hole, line touch </desc><g class="geomB">
<path fill-rule="evenodd" d="M 50 -50 L 10 -10 10 -90 Z M 20 -40 L 40 -50 20 -60 Z" />
<path fill-rule="evenodd" d="M 90 -10 L 50 -50 90 -90 Z M 80 -40 L 80 -60 60 -50 Z" />
<path fill-rule="evenodd" d="M 60 -50 L 50 -50" />
<path fill-rule="evenodd" d="M 50 -50 L 40 -50" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Exverted shell, point touch; exverted hole, line touch </desc><g class="geomB">
<path fill-rule="evenodd" d="M 10 -90 L 50 -50 10 -10 Z M 20 -60 L 20 -40 40 -50 Z" />
<path fill-rule="evenodd" d="M 90 -90 L 90 -10 50 -50 Z M 80 -40 L 80 -60 60 -50 Z" />
</g></svg></td></tr></table><hr/>
<h3>Polygon/Hole - Exverted shell, line touch; exverted hole, line touch </h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Exverted shell, line touch; exverted hole, line touch </desc><path class="geomA" fill-rule="evenodd" d="M 10 -10 L 10 -90 40 -50 60 -50 90 -90 90 -10 60 -50 40 -50 Z M 80 -60 L 70 -50 30 -50 20 -60 20 -40 30 -50 70 -50 80 -40 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Exverted shell, line touch; exverted hole, line touch </desc><g class="geomB">
<path fill-rule="evenodd" d="M 40 -50 L 10 -10 10 -90 Z M 20 -40 L 30 -50 20 -60 Z" />
<path fill-rule="evenodd" d="M 90 -10 L 60 -50 90 -90 Z M 80 -40 L 80 -60 70 -50 Z" />
<path fill-rule="evenodd" d="M 40 -50 L 60 -50" />
<path fill-rule="evenodd" d="M 70 -50 L 60 -50" />
<path fill-rule="evenodd" d="M 40 -50 L 30 -50" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Exverted shell, line touch; exverted hole, line touch </desc><g class="geomB">
<path fill-rule="evenodd" d="M 10 -90 L 40 -50 10 -10 Z M 20 -60 L 20 -40 30 -50 Z" />
<path fill-rule="evenodd" d="M 90 -90 L 90 -10 60 -50 Z M 80 -40 L 80 -60 70 -50 Z" />
</g></svg></td></tr></table><hr/>
<h3>Polygon/Hole - Adjacent </h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Adjacent </desc><path class="geomA" fill-rule="evenodd" d="M 10 -90 L 90 -90 90 -10 10 -10 Z M 50 -70 L 90 -70 90 -30 50 -30 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Adjacent </desc><g class="geomB">
<path fill-rule="evenodd" d="M 90 -70 L 90 -30 90 -10 10 -10 10 -90 90 -90 Z" />
<path fill-rule="evenodd" d="M 50 -70 L 90 -70" />
<path fill-rule="evenodd" d="M 90 -30 L 50 -30 50 -70" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Adjacent </desc><path class="geomB" fill-rule="evenodd" d="M 90 -90 L 90 -70 50 -70 50 -30 90 -30 90 -10 10 -10 10 -90 Z" /></svg></td></tr></table><hr/>
<h3>Polygon/Holes - Adjacent holes </h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Holes - Adjacent holes </desc><path class="geomA" fill-rule="evenodd" d="M 10 -90 L 90 -90 90 -10 10 -10 Z M 30 -70 L 50 -70 50 -30 30 -30 Z M 70 -60 L 70 -40 50 -40 50 -60 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Holes - Adjacent holes </desc><g class="geomB">
<path fill-rule="evenodd" d="M 10 -90 L 90 -90 90 -10 10 -10 Z M 30 -70 L 30 -30 50 -30 50 -40 70 -40 70 -60 50 -60 50 -70 Z" />
<path fill-rule="evenodd" d="M 50 -60 L 50 -40" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Holes - Adjacent holes </desc><path class="geomB" fill-rule="evenodd" d="M 90 -90 L 90 -10 10 -10 10 -90 Z M 30 -70 L 30 -30 50 -30 50 -40 70 -40 70 -60 50 -60 50 -70 Z" /></svg></td></tr></table><hr/>
<h3>Polygon/Holes - Exverted holes crossing at point </h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Holes - Exverted holes crossing at point </desc><path class="geomA" fill-rule="evenodd" d="M 10 -90 L 90 -90 90 -10 10 -10 Z M 80 -60 L 50 -50 20 -60 20 -40 50 -50 80 -40 Z M 60 -80 L 40 -80 50 -50 40 -20 60 -20 50 -50 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Holes - Exverted holes crossing at point </desc><path class="geomB" fill-rule="evenodd" d="M 90 -90 L 90 -10 10 -10 10 -90 Z M 50 -50 L 80 -40 80 -60 Z M 60 -80 L 40 -80 50 -50 Z M 20 -60 L 20 -40 50 -50 Z M 40 -20 L 60 -20 50 -50 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Holes - Exverted holes crossing at point </desc><path class="geomB" fill-rule="evenodd" d="M 90 -90 L 90 -10 10 -10 10 -90 Z M 40 -20 L 60 -20 50 -50 Z M 80 -40 L 80 -60 50 -50 Z M 60 -80 L 40 -80 50 -50 Z M 20 -60 L 20 -40 50 -50 Z" /></svg></td></tr></table><hr/>
<h3>Polygon/Holes - Exverted holes crossing at line </h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Holes - Exverted holes crossing at line </desc><path class="geomA" fill-rule="evenodd" d="M 10 -90 L 90 -90 90 -10 10 -10 Z M 80 -60 L 60 -50 50 -50 40 -50 20 -60 20 -40 40 -50 50 -50 60 -50 80 -40 Z M 60 -80 L 40 -80 50 -60 50 -50 50 -40 40 -20 60 -20 50 -40 50 -50 50 -60 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Holes - Exverted holes crossing at line </desc><g class="geomB">
<path fill-rule="evenodd" d="M 90 -90 L 90 -10 10 -10 10 -90 Z M 60 -50 L 80 -40 80 -60 Z M 20 -60 L 20 -40 40 -50 Z M 40 -80 L 50 -60 60 -80 Z M 40 -20 L 60 -20 50 -40 Z" />
<path fill-rule="evenodd" d="M 60 -50 L 50 -50" />
<path fill-rule="evenodd" d="M 50 -50 L 40 -50" />
<path fill-rule="evenodd" d="M 50 -60 L 50 -50" />
<path fill-rule="evenodd" d="M 50 -50 L 50 -40" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Holes - Exverted holes crossing at line </desc><path class="geomB" fill-rule="evenodd" d="M 90 -90 L 90 -10 10 -10 10 -90 Z M 60 -20 L 50 -40 40 -20 Z M 20 -40 L 40 -50 20 -60 Z M 80 -60 L 60 -50 80 -40 Z M 40 -80 L 50 -60 60 -80 Z" /></svg></td></tr></table><hr/>
<h3>Polygon - Zero area </h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Zero area </desc><path class="geomA" fill-rule="evenodd" d="M 10 -90 L 90 -90 90 -90 10 -90 10 -10 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Zero area </desc><g class="geomB">
<path fill="none" d="M 10 -90 L 90 -90" />
<path fill="none" d="M 10 -90 L 10 -10" />
</g></svg></td><td>POLYGON EMPTY</td></tr></table><hr/>
<h3>Polygon - Zero-width gore </h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Zero-width gore </desc><path class="geomA" fill-rule="evenodd" d="M 10 -90 L 90 -90 50 -50 90 -90 90 -10 10 -10 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Zero-width gore </desc><g class="geomB">
<path fill-rule="evenodd" d="M 90 -90 L 90 -10 10 -10 10 -90 Z" />
<path fill-rule="evenodd" d="M 90 -90 L 50 -50" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Zero-width gore </desc><path class="geomB" fill-rule="evenodd" d="M 10 -90 L 90 -90 90 -10 10 -10 Z" /></svg></td></tr></table><hr/>
<h3>Polygon - Zero-width gore splitting </h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Zero-width gore splitting </desc><path class="geomA" fill-rule="evenodd" d="M 10 -90 L 90 -90 10 -10 90 -90 90 -10 10 -10 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Zero-width gore splitting </desc><g class="geomB">
<path fill-rule="evenodd" d="M 90 -10 L 10 -10 10 -90 90 -90 Z" />
<path fill-rule="evenodd" d="M 90 -90 L 10 -10" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Zero-width gore splitting </desc><path class="geomB" fill-rule="evenodd" d="M 10 -10 L 10 -90 90 -90 90 -10 Z" /></svg></td></tr></table><hr/>
<h3>Polygon - Zero-width spike </h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Zero-width spike </desc><path class="geomA" fill-rule="evenodd" d="M 10 -50 L 50 -50 90 -90 50 -50 50 -10 10 -10 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Zero-width spike </desc><g class="geomB">
<path fill-rule="evenodd" d="M 50 -50 L 50 -10 10 -10 10 -50 Z" />
<path fill-rule="evenodd" d="M 50 -50 L 90 -90" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Zero-width spike </desc><path class="geomB" fill-rule="evenodd" d="M 10 -50 L 50 -50 50 -10 10 -10 Z" /></svg></td></tr></table><hr/>
<h3>Polygon - Zero-width spike along boundary </h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Zero-width spike along boundary </desc><path class="geomA" fill-rule="evenodd" d="M 10 -90 L 80 -90 20 -90 90 -90 90 -10 10 -10 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Zero-width spike along boundary </desc><path class="geomB" fill-rule="evenodd" d="M 20 -90 L 80 -90 90 -90 90 -10 10 -10 10 -90 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Zero-width spike along boundary </desc><path class="geomB" fill-rule="evenodd" d="M 10 -90 L 20 -90 80 -90 90 -90 90 -10 10 -10 Z" /></svg></td></tr></table><hr/>
<h3>Polygon/Hole - Zero-width spike splitting hole</h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Zero-width spike splitting hole</desc><path class="geomA" fill-rule="evenodd" d="M 10 -90 L 90 -90 90 -10 10 -10 Z M 80 -80 L 20 -80 20 -50 50 -20 20 -50 20 -20 80 -20 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Zero-width spike splitting hole</desc><g class="geomB">
<path fill-rule="evenodd" d="M 10 -90 L 90 -90 90 -10 10 -10 Z M 50 -20 L 80 -20 80 -80 20 -80 20 -50 20 -20 Z" />
<path fill-rule="evenodd" d="M 20 -50 L 50 -20" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Zero-width spike splitting hole</desc><path class="geomB" fill-rule="evenodd" d="M 90 -90 L 90 -10 10 -10 10 -90 Z M 20 -20 L 50 -20 80 -20 80 -80 20 -80 20 -50 Z" /></svg></td></tr></table><hr/>
<h3>Polygon - Zero-width spike enclosing area </h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Zero-width spike enclosing area </desc><path class="geomA" fill-rule="evenodd" d="M 10 -10 L 10 -90 60 -90 90 -50 60 -10 90 -50 60 -90 60 -10 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Zero-width spike enclosing area </desc><g class="geomB">
<path fill-rule="evenodd" d="M 60 -90 L 90 -50 60 -10 10 -10 10 -90 Z" />
<path fill-rule="evenodd" d="M 60 -90 L 60 -10" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Zero-width spike enclosing area </desc><path class="geomB" fill-rule="evenodd" d="M 10 -10 L 10 -90 60 -90 60 -10 Z" /></svg></td></tr></table><hr/>
<h3>MultiPolygon - Adjacent </h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>MultiPolygon - Adjacent </desc><g class="geomA">
<path fill-rule="evenodd" d="M 10 -90 L 50 -90 50 -10 10 -10 Z" />
<path fill-rule="evenodd" d="M 90 -70 L 90 -30 50 -30 50 -70 Z" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>MultiPolygon - Adjacent </desc><g class="geomB">
<path fill-rule="evenodd" d="M 50 -70 L 90 -70 90 -30 50 -30 50 -10 10 -10 10 -90 50 -90 Z" />
<path fill-rule="evenodd" d="M 50 -70 L 50 -30" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>MultiPolygon - Adjacent </desc><path class="geomB" fill-rule="evenodd" d="M 50 -90 L 50 -70 90 -70 90 -30 50 -30 50 -10 10 -10 10 -90 Z" /></svg></td></tr></table><hr/>
<h3>MultiPolygon - Exverted crossing at point </h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>MultiPolygon - Exverted crossing at point </desc><g class="geomA">
<path fill-rule="evenodd" d="M 10 -80 L 50 -50 90 -80 90 -20 50 -50 10 -20 Z" />
<path fill-rule="evenodd" d="M 20 -90 L 80 -90 50 -50 80 -10 20 -10 50 -50 Z" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>MultiPolygon - Exverted crossing at point </desc><g class="geomB">
<path fill-rule="evenodd" d="M 50 -50 L 80 -10 20 -10 Z" />
<path fill-rule="evenodd" d="M 10 -80 L 50 -50 10 -20 Z" />
<path fill-rule="evenodd" d="M 50 -50 L 90 -80 90 -20 Z" />
<path fill-rule="evenodd" d="M 20 -90 L 80 -90 50 -50 Z" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>MultiPolygon - Exverted crossing at point </desc><g class="geomB">
<path fill-rule="evenodd" d="M 20 -10 L 50 -50 80 -10 Z" />
<path fill-rule="evenodd" d="M 10 -20 L 10 -80 50 -50 Z" />
<path fill-rule="evenodd" d="M 90 -20 L 50 -50 90 -80 Z" />
<path fill-rule="evenodd" d="M 50 -50 L 20 -90 80 -90 Z" />
</g></svg></td></tr></table><hr/>
<h3>MultiPolygon - Exverted crossing at line </h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>MultiPolygon - Exverted crossing at line </desc><g class="geomA">
<path fill-rule="evenodd" d="M 10 -80 L 40 -50 50 -50 60 -50 90 -80 90 -20 60 -50 50 -50 40 -50 10 -20 Z" />
<path fill-rule="evenodd" d="M 20 -90 L 80 -90 50 -60 50 -50 50 -40 80 -10 20 -10 50 -40 50 -50 50 -60 Z" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>MultiPolygon - Exverted crossing at line </desc><g class="geomB">
<path fill-rule="evenodd" d="M 50 -40 L 80 -10 20 -10 Z" />
<path fill-rule="evenodd" d="M 10 -80 L 40 -50 10 -20 Z" />
<path fill-rule="evenodd" d="M 60 -50 L 90 -80 90 -20 Z" />
<path fill-rule="evenodd" d="M 20 -90 L 80 -90 50 -60 Z" />
<path fill-rule="evenodd" d="M 40 -50 L 50 -50" />
<path fill-rule="evenodd" d="M 50 -50 L 60 -50" />
<path fill-rule="evenodd" d="M 50 -60 L 50 -50" />
<path fill-rule="evenodd" d="M 50 -50 L 50 -40" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>MultiPolygon - Exverted crossing at line </desc><g class="geomB">
<path fill-rule="evenodd" d="M 20 -10 L 50 -40 80 -10 Z" />
<path fill-rule="evenodd" d="M 10 -20 L 10 -80 40 -50 Z" />
<path fill-rule="evenodd" d="M 90 -20 L 60 -50 90 -80 Z" />
<path fill-rule="evenodd" d="M 50 -60 L 20 -90 80 -90 Z" />
</g></svg></td></tr></table><hr/>
<h3>Polygon - Bowtie (Figure 8)</h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Bowtie (Figure 8)</desc><path class="geomA" fill-rule="evenodd" d="M 10 -90 L 90 -10 90 -90 10 -10 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Bowtie (Figure 8)</desc><g class="geomB">
<path fill-rule="evenodd" d="M 10 -10 L 10 -90 50 -50 Z" />
<path fill-rule="evenodd" d="M 90 -10 L 50 -50 90 -90 Z" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Bowtie (Figure 8)</desc><g class="geomB">
<path fill-rule="evenodd" d="M 10 -90 L 50 -50 10 -10 Z" />
<path fill-rule="evenodd" d="M 50 -50 L 90 -90 90 -10 Z" />
</g></svg></td></tr></table><hr/>
<h3>Polygon - Bowtie Multiple</h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Bowtie Multiple</desc><path class="geomA" fill-rule="evenodd" d="M 40 -90 L 60 -90 10 -40 10 -60 60 -10 40 -10 90 -60 90 -40 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Bowtie Multiple</desc><g class="geomB">
<path fill-rule="evenodd" d="M 50 -20 L 60 -10 40 -10 Z" />
<path fill-rule="evenodd" d="M 20 -50 L 10 -40 10 -60 Z" />
<path fill-rule="evenodd" d="M 50 -20 L 20 -50 50 -80 80 -50 Z" />
<path fill-rule="evenodd" d="M 90 -60 L 90 -40 80 -50 Z" />
<path fill-rule="evenodd" d="M 60 -90 L 50 -80 40 -90 Z" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Bowtie Multiple</desc><g class="geomB">
<path fill-rule="evenodd" d="M 20 -50 L 50 -80 80 -50 50 -20 Z" />
<path fill-rule="evenodd" d="M 20 -50 L 10 -40 10 -60 Z" />
<path fill-rule="evenodd" d="M 50 -20 L 60 -10 40 -10 Z" />
<path fill-rule="evenodd" d="M 80 -50 L 90 -60 90 -40 Z" />
<path fill-rule="evenodd" d="M 50 -80 L 40 -90 60 -90 Z" />
</g></svg></td></tr></table><hr/>
<h3>Polygon - Bowtie, self-overlap</h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Bowtie, self-overlap</desc><path class="geomA" fill-rule="evenodd" d="M 10 -90 L 70 -90 70 -10 90 -10 90 -50 40 -50 40 -30 80 -30 80 -20 10 -20 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Bowtie, self-overlap</desc><g class="geomB">
<path fill-rule="evenodd" d="M 70 -10 L 70 -20 80 -20 80 -30 70 -30 70 -50 90 -50 90 -10 Z" />
<path fill-rule="evenodd" d="M 10 -20 L 10 -90 70 -90 70 -50 40 -50 40 -30 70 -30 70 -20 Z" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Bowtie, self-overlap</desc><g class="geomB">
<path fill-rule="evenodd" d="M 10 -90 L 70 -90 70 -50 40 -50 40 -30 70 -30 70 -20 10 -20 Z" />
<path fill-rule="evenodd" d="M 70 -20 L 80 -20 80 -30 70 -30 70 -50 90 -50 90 -10 70 -10 Z" />
</g></svg></td></tr></table><hr/>
<h3>Polygon - Self-overlap - interior </h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Self-overlap - interior </desc><path class="geomA" fill-rule="evenodd" d="M 10 -70 L 90 -70 90 -50 30 -50 30 -30 50 -30 50 -90 70 -90 70 -10 10 -10 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Self-overlap - interior </desc><g class="geomB">
<path fill-rule="evenodd" d="M 10 -70 L 50 -70 50 -50 70 -50 70 -10 10 -10 Z M 30 -50 L 30 -30 50 -30 50 -50 Z" />
<path fill-rule="evenodd" d="M 50 -90 L 70 -90 70 -70 50 -70 Z" />
<path fill-rule="evenodd" d="M 90 -70 L 90 -50 70 -50 70 -70 Z" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Self-overlap - interior </desc><path class="geomB" fill-rule="evenodd" d="M 10 -70 L 50 -70 50 -90 70 -90 70 -70 90 -70 90 -50 70 -50 70 -10 10 -10 Z M 50 -50 L 30 -50 30 -30 50 -30 Z" /></svg></td></tr></table><hr/>
<h3>Polygon - Self-overlap Multiple </h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Self-overlap Multiple </desc><path class="geomA" fill-rule="evenodd" d="M 10 -50 L 80 -50 80 -70 40 -70 40 -30 30 -30 30 -80 90 -80 90 -40 20 -40 20 -20 50 -20 50 -90 60 -90 60 -10 10 -10 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Self-overlap Multiple </desc><g class="geomB">
<path fill-rule="evenodd" d="M 30 -50 L 30 -40 20 -40 20 -20 50 -20 50 -40 60 -40 60 -10 10 -10 10 -50 Z" />
<path fill-rule="evenodd" d="M 50 -80 L 50 -70 40 -70 40 -50 30 -50 30 -80 Z" />
<path fill-rule="evenodd" d="M 60 -90 L 60 -80 50 -80 50 -90 Z" />
<path fill-rule="evenodd" d="M 90 -40 L 60 -40 60 -50 80 -50 80 -70 60 -70 60 -80 90 -80 Z" />
<path fill-rule="evenodd" d="M 30 -30 L 30 -40 40 -40 40 -30 Z" />
<path fill-rule="evenodd" d="M 40 -40 L 40 -50 50 -50 50 -40 Z" />
<path fill-rule="evenodd" d="M 60 -70 L 60 -50 50 -50 50 -70 Z" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Self-overlap Multiple </desc><path class="geomB" fill-rule="evenodd" d="M 10 -50 L 30 -50 30 -80 50 -80 50 -90 60 -90 60 -80 90 -80 90 -40 60 -40 60 -10 10 -10 Z M 50 -40 L 40 -40 40 -30 30 -30 30 -40 20 -40 20 -20 50 -20 Z M 40 -50 L 50 -50 50 -70 40 -70 Z M 60 -50 L 80 -50 80 -70 60 -70 Z" /></svg></td></tr></table><hr/>
<h3>Polygon - Self-overlap; Pos and Neg winding </h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Self-overlap; Pos and Neg winding </desc><path class="geomA" fill-rule="evenodd" d="M 10 -90 L 50 -90 50 -30 70 -30 70 -50 30 -50 30 -70 90 -70 90 -10 10 -10 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Self-overlap; Pos and Neg winding </desc><path class="geomB" fill-rule="evenodd" d="M 50 -90 L 50 -70 90 -70 90 -10 10 -10 10 -90 Z M 30 -70 L 30 -50 50 -50 50 -70 Z M 50 -30 L 70 -30 70 -50 50 -50 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Self-overlap; Pos and Neg winding </desc><path class="geomB" fill-rule="evenodd" d="M 10 -90 L 50 -90 50 -70 90 -70 90 -10 10 -10 Z M 50 -50 L 50 -30 70 -30 70 -50 Z" /></svg></td></tr></table><hr/>
<h3>Polygon - Self-overlap; double Pos and single Neg winding </h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Self-overlap; double Pos and single Neg winding </desc><path class="geomA" fill-rule="evenodd" d="M 10 -90 L 70 -90 70 -10 20 -10 20 -80 60 -80 60 -20 30 -20 30 -70 51 -70 50 -30 90 -30 90 -60 10 -60 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Self-overlap; double Pos and single Neg winding </desc><g class="geomB">
<path fill-rule="evenodd" d="M 70 -90 L 70 -60 60 -60 60 -80 20 -80 20 -60 10 -60 10 -90 Z" />
<path fill-rule="evenodd" d="M 90 -30 L 70 -30 70 -60 90 -60 Z" />
<path fill-rule="evenodd" d="M 20 -10 L 20 -60 30 -60 30 -20 60 -20 60 -30 70 -30 70 -10 Z" />
<path fill-rule="evenodd" d="M 50 -30 L 50.75 -60 60 -60 60 -30 Z" />
<path fill-rule="evenodd" d="M 51 -70 L 50.75 -60 30 -60 30 -70 Z" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Self-overlap; double Pos and single Neg winding </desc><g class="geomB">
<path fill-rule="evenodd" d="M 10 -90 L 70 -90 70 -60 60 -60 60 -30 70 -30 70 -10 20 -10 20 -60 10 -60 Z" />
<path fill-rule="evenodd" d="M 70 -30 L 70 -60 90 -60 90 -30 Z" />
</g></svg></td></tr></table><hr/>
<h3>Polygon - Self-overlap - Pos and Neg winding </h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Self-overlap - Pos and Neg winding </desc><path class="geomA" fill-rule="evenodd" d="M 10 -90 L 90 -90 90 -10 60 -10 40 -30 70 -60 60 -80 40 -60 60 -60 40 -80 30 -60 60 -30 40 -10 10 -10 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Self-overlap - Pos and Neg winding </desc><g class="geomB">
<path fill-rule="evenodd" d="M 90 -10 L 60 -10 50 -20 40 -10 10 -10 10 -90 90 -90 Z M 60 -30 L 50 -40 40 -30 50 -20 Z M 70 -60 L 60 -80 50 -70 40 -80 30 -60 50 -40 Z" />
<path fill-rule="evenodd" d="M 40 -60 L 50 -70 60 -60 Z" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Self-overlap - Pos and Neg winding </desc><g class="geomB">
<path fill-rule="evenodd" d="M 10 -90 L 90 -90 90 -10 60 -10 50 -20 40 -10 10 -10 Z M 50 -40 L 70 -60 60 -80 50 -70 40 -80 30 -60 Z" />
<path fill-rule="evenodd" d="M 50 -70 L 60 -60 40 -60 Z" />
</g></svg></td></tr></table><hr/>
<h3>Polygon - Self-overlap; exterior </h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Self-overlap; exterior </desc><path class="geomA" fill-rule="evenodd" d="M 10 -90 L 10 -70 80 -70 80 -40 10 -40 10 -10 90 -10 90 -90 60 -90 60 -20 30 -20 30 -90 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Self-overlap; exterior </desc><g class="geomB">
<path fill-rule="evenodd" d="M 90 -10 L 10 -10 10 -40 30 -40 30 -20 60 -20 60 -40 80 -40 80 -70 60 -70 60 -90 90 -90 Z" />
<path fill-rule="evenodd" d="M 30 -70 L 60 -70 60 -40 30 -40 Z" />
<path fill-rule="evenodd" d="M 10 -70 L 10 -90 30 -90 30 -70 Z" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Self-overlap; exterior </desc><g class="geomB">
<path fill-rule="evenodd" d="M 10 -90 L 30 -90 30 -70 10 -70 Z" />
<path fill-rule="evenodd" d="M 30 -40 L 30 -20 60 -20 60 -40 80 -40 80 -70 60 -70 60 -90 90 -90 90 -10 10 -10 10 -40 Z" />
<path fill-rule="evenodd" d="M 30 -70 L 60 -70 60 -40 30 -40 Z" />
</g></svg></td></tr></table><hr/>
<h3>Polygon - Self-overlap; Spiral with Pos winding </h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Self-overlap; Spiral with Pos winding </desc><path class="geomA" fill-rule="evenodd" d="M 60 -10 L 10 -10 10 -90 90 -90 90 -20 20 -20 20 -80 80 -80 80 -30 30 -30 30 -70 70 -70 70 -40 40 -40 40 -60 60 -60 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Self-overlap; Spiral with Pos winding </desc><g class="geomB">
<path fill-rule="evenodd" d="M 10 -90 L 90 -90 90 -20 60 -20 60 -10 10 -10 Z M 60 -30 L 80 -30 80 -80 20 -80 20 -20 60 -20 Z" />
<path fill-rule="evenodd" d="M 30 -70 L 70 -70 70 -40 60 -40 60 -30 30 -30 Z M 60 -60 L 40 -60 40 -40 60 -40 Z" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon - Self-overlap; Spiral with Pos winding </desc><path class="geomB" fill-rule="evenodd" d="M 60 -10 L 10 -10 10 -90 90 -90 90 -20 60 -20 Z" /></svg></td></tr></table><hr/>
<h3>Polygon/Hole - Bowties </h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Bowties </desc><path class="geomA" fill-rule="evenodd" d="M 10 -10 L 90 -10 10 -90 90 -90 Z M 70 -80 L 30 -80 70 -20 30 -20 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Bowties </desc><g class="geomB">
<path fill-rule="evenodd" d="M 10 -10 L 50 -50 90 -10 Z M 30 -20 L 70 -20 50 -50 Z" />
<path fill-rule="evenodd" d="M 90 -90 L 50 -50 10 -90 Z M 70 -80 L 30 -80 50 -50 Z" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Bowties </desc><g class="geomB">
<path fill-rule="evenodd" d="M 10 -90 L 90 -90 50 -50 Z M 70 -80 L 30 -80 50 -50 Z" />
<path fill-rule="evenodd" d="M 50 -50 L 90 -10 10 -10 Z M 30 -20 L 70 -20 50 -50 Z" />
</g></svg></td></tr></table><hr/>
<h3>Polygon/Hole - Bowties, overlap </h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Bowties, overlap </desc><path class="geomA" fill-rule="evenodd" d="M 10 -10 L 90 -10 10 -90 90 -90 Z M 50 -70 L 10 -70 50 -30 10 -30 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Bowties, overlap </desc><g class="geomB">
<path fill-rule="evenodd" d="M 10 -30 L 30 -50 40 -40 30 -30 Z" />
<path fill-rule="evenodd" d="M 10 -70 L 30 -70 40 -60 30 -50 Z" />
<path fill-rule="evenodd" d="M 10 -90 L 90 -90 50 -50 40 -60 50 -70 30 -70 Z" />
<path fill-rule="evenodd" d="M 90 -10 L 10 -10 30 -30 50 -30 40 -40 50 -50 Z" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Bowties, overlap </desc><g class="geomB">
<path fill-rule="evenodd" d="M 40 -60 L 50 -70 30 -70 10 -90 90 -90 50 -50 Z" />
<path fill-rule="evenodd" d="M 30 -30 L 50 -30 40 -40 50 -50 90 -10 10 -10 Z" />
</g></svg></td></tr></table><hr/>
<h3>Polygon/Hole - Hole Self-overlap - interior </h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Hole Self-overlap - interior </desc><path class="geomA" fill-rule="evenodd" d="M 10 -90 L 90 -90 90 -10 10 -10 Z M 80 -70 L 20 -70 20 -20 70 -20 70 -80 50 -80 50 -30 30 -30 30 -50 80 -50 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Hole Self-overlap - interior </desc><g class="geomB">
<path fill-rule="evenodd" d="M 90 -90 L 90 -10 10 -10 10 -90 Z M 70 -50 L 80 -50 80 -70 70 -70 70 -80 50 -80 50 -70 20 -70 20 -20 70 -20 Z" />
<path fill-rule="evenodd" d="M 30 -50 L 50 -50 50 -30 30 -30 Z" />
<path fill-rule="evenodd" d="M 70 -70 L 70 -50 50 -50 50 -70 Z" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Hole Self-overlap - interior </desc><g class="geomB">
<path fill-rule="evenodd" d="M 90 -90 L 90 -10 10 -10 10 -90 Z M 20 -70 L 20 -20 70 -20 70 -50 80 -50 80 -70 70 -70 70 -80 50 -80 50 -70 Z" />
<path fill-rule="evenodd" d="M 50 -30 L 30 -30 30 -50 50 -50 Z" />
</g></svg></td></tr></table><hr/>
<h3>Polygon/Hole - Hole Self-overlap - Spiral with Neg winding </h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="0 -100 100 100"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Hole Self-overlap - Spiral with Neg winding </desc><path class="geomA" fill-rule="evenodd" d="M 0 -100 L 100 -100 100 0 0 0 Z M 60 -10 L 60 -60 40 -60 40 -40 70 -40 70 -70 30 -70 30 -30 80 -30 80 -80 20 -80 20 -20 90 -20 90 -90 10 -90 10 -10 Z" /></svg></td><td><svg width="200" height="200" viewBox="0 -100 100 100"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Hole Self-overlap - Spiral with Neg winding </desc><g class="geomB">
<path fill-rule="evenodd" d="M 100 0 L 0 0 0 -100 100 -100 Z M 90 -20 L 90 -90 10 -90 10 -10 60 -10 60 -20 Z" />
<path fill-rule="evenodd" d="M 20 -80 L 80 -80 80 -30 60 -30 60 -20 20 -20 Z M 60 -40 L 70 -40 70 -70 30 -70 30 -30 60 -30 Z" />
<path fill-rule="evenodd" d="M 60 -60 L 60 -40 40 -40 40 -60 Z" />
</g></svg></td><td><svg width="200" height="200" viewBox="0 -100 100 100"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Hole Self-overlap - Spiral with Neg winding </desc><path class="geomB" fill-rule="evenodd" d="M 100 -100 L 100 0 0 0 0 -100 Z M 60 -20 L 90 -20 90 -90 10 -90 10 -10 60 -10 Z" /></svg></td></tr></table><hr/>
<h3>Polygon/Hole - Hole Self-overlap - exterior </h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Hole Self-overlap - exterior </desc><path class="geomA" fill-rule="evenodd" d="M 10 -90 L 90 -90 90 -10 10 -10 Z M 80 -80 L 60 -80 60 -30 40 -30 40 -80 20 -80 20 -20 80 -20 80 -40 30 -40 30 -60 80 -60 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Hole Self-overlap - exterior </desc><g class="geomB">
<path fill-rule="evenodd" d="M 90 -90 L 90 -10 10 -10 10 -90 Z M 60 -80 L 60 -60 80 -60 80 -80 Z M 40 -60 L 40 -80 20 -80 20 -20 80 -20 80 -40 60 -40 60 -60 Z" />
<path fill-rule="evenodd" d="M 40 -30 L 40 -40 60 -40 60 -30 Z" />
<path fill-rule="evenodd" d="M 30 -40 L 30 -60 40 -60 40 -40 Z" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Hole Self-overlap - exterior </desc><g class="geomB">
<path fill-rule="evenodd" d="M 90 -90 L 90 -10 10 -10 10 -90 Z M 40 -80 L 20 -80 20 -20 80 -20 80 -40 60 -40 60 -60 40 -60 Z M 80 -60 L 80 -80 60 -80 60 -60 Z" />
<path fill-rule="evenodd" d="M 60 -30 L 40 -30 40 -40 60 -40 Z" />
<path fill-rule="evenodd" d="M 30 -40 L 30 -60 40 -60 40 -40 Z" />
</g></svg></td></tr></table><hr/>
<h3>Polygon/Hole - Outside </h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 40 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Outside </desc><path class="geomA" fill-rule="evenodd" d="M 10 -90 L 50 -90 50 -10 10 -10 Z M 60 -80 L 90 -80 90 -20 60 -20 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 40 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Outside </desc><g class="geomB">
<path fill-rule="evenodd" d="M 50 -10 L 10 -10 10 -90 50 -90 Z" />
<path fill-rule="evenodd" d="M 90 -20 L 60 -20 60 -80 90 -80 Z" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 40 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Outside </desc><path class="geomB" fill-rule="evenodd" d="M 50 -90 L 50 -10 10 -10 10 -90 Z" /></svg></td></tr></table><hr/>
<h3>Polygon/Hole - Overlap </h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 50 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Overlap </desc><path class="geomA" fill-rule="evenodd" d="M 10 -90 L 60 -90 60 -10 10 -10 Z M 30 -70 L 90 -70 90 -30 30 -30 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 50 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Overlap </desc><g class="geomB">
<path fill-rule="evenodd" d="M 90 -70 L 90 -30 60 -30 60 -70 Z" />
<path fill-rule="evenodd" d="M 60 -10 L 10 -10 10 -90 60 -90 60 -70 30 -70 30 -30 60 -30 Z" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 50 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Overlap </desc><path class="geomB" fill-rule="evenodd" d="M 60 -90 L 60 -70 30 -70 30 -30 60 -30 60 -10 10 -10 10 -90 Z" /></svg></td></tr></table><hr/>
<h3>Polygon/Hole - Equal </h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Equal </desc><path class="geomA" fill-rule="evenodd" d="M 10 -90 L 90 -90 90 -10 10 -10 Z M 10 -90 L 90 -90 90 -10 10 -10 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Equal </desc><path class="geomB" fill-rule="evenodd" d="M 90 -90 L 90 -10 10 -10 10 -90 Z" /></svg></td><td>POLYGON EMPTY</td></tr></table><hr/>
<h3>Polygon/Hole - Covers </h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="30 -70 40 40"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Covers </desc><path class="geomA" fill-rule="evenodd" d="M 30 -70 L 70 -70 70 -30 30 -30 Z M 10 -90 L 90 -90 90 -10 10 -10 Z" /></svg></td><td><svg width="200" height="200" viewBox="30 -70 40 40"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Covers </desc><path class="geomB" fill-rule="evenodd" d="M 90 -90 L 90 -10 10 -10 10 -90 Z M 30 -30 L 70 -30 70 -70 30 -70 Z" /></svg></td><td>POLYGON EMPTY</td></tr></table><hr/>
<h3>Polygon/Hole - Disconnected interior </h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Disconnected interior </desc><path class="geomA" fill-rule="evenodd" d="M 10 -90 L 90 -90 90 -10 10 -10 Z M 30 -30 L 50 -90 90 -50 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Disconnected interior </desc><g class="geomB">
<path fill-rule="evenodd" d="M 90 -50 L 50 -90 90 -90 Z" />
<path fill-rule="evenodd" d="M 90 -10 L 10 -10 10 -90 50 -90 30 -30 90 -50 Z" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Disconnected interior </desc><g class="geomB">
<path fill-rule="evenodd" d="M 50 -90 L 30 -30 90 -50 90 -10 10 -10 10 -90 Z" />
<path fill-rule="evenodd" d="M 90 -90 L 90 -50 50 -90 Z" />
</g></svg></td></tr></table><hr/>
<h3>Polygon/Hole - Collapsed shell </h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Collapsed shell </desc><path class="geomA" fill-rule="evenodd" d="M 10 -10 L 10 -90 90 -90 10 -90 Z M 20 -80 L 60 -80 60 -40 20 -40 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Collapsed shell </desc><g class="geomB">
<path fill-rule="evenodd" d="M 60 -80 L 60 -40 20 -40 20 -80 Z" />
<path fill-rule="evenodd" d="M 10 -10 L 10 -90" />
<path fill-rule="evenodd" d="M 10 -90 L 90 -90" />
</g></svg></td><td>POLYGON EMPTY</td></tr></table><hr/>
<h3>Polygon/Hole - Collapsed hole </h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Collapsed hole </desc><path class="geomA" fill-rule="evenodd" d="M 10 -90 L 90 -90 90 -10 10 -10 Z M 80 -80 L 20 -80 20 -20 20 -80 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Collapsed hole </desc><g class="geomB">
<path fill-rule="evenodd" d="M 90 -90 L 90 -10 10 -10 10 -90 Z" />
<path fill-rule="evenodd" d="M 80 -80 L 20 -80" />
<path fill-rule="evenodd" d="M 20 -80 L 20 -20" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Hole - Collapsed hole </desc><path class="geomB" fill-rule="evenodd" d="M 10 -90 L 90 -90 90 -10 10 -10 Z" /></svg></td></tr></table><hr/>
<h3>Polygon/Holes - Overlap </h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Holes - Overlap </desc><path class="geomA" fill-rule="evenodd" d="M 10 -90 L 90 -90 90 -10 10 -10 Z M 80 -80 L 80 -30 30 -30 30 -80 Z M 20 -20 L 20 -70 70 -70 70 -20 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Holes - Overlap </desc><g class="geomB">
<path fill-rule="evenodd" d="M 90 -90 L 90 -10 10 -10 10 -90 Z M 80 -30 L 80 -80 30 -80 30 -70 20 -70 20 -20 70 -20 70 -30 Z" />
<path fill-rule="evenodd" d="M 30 -30 L 30 -70 70 -70 70 -30 Z" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Holes - Overlap </desc><path class="geomB" fill-rule="evenodd" d="M 90 -90 L 90 -10 10 -10 10 -90 Z M 20 -20 L 70 -20 70 -30 80 -30 80 -80 30 -80 30 -70 20 -70 Z" /></svg></td></tr></table><hr/>
<h3>Polygon/Holes - Cover Exactly </h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Holes - Cover Exactly </desc><path class="geomA" fill-rule="evenodd" d="M 10 -90 L 90 -90 90 -10 10 -10 Z M 50 -50 L 50 -10 10 -10 10 -50 Z M 50 -50 L 90 -50 90 -10 50 -10 Z M 50 -50 L 10 -50 10 -90 50 -90 Z M 50 -50 L 50 -90 90 -90 90 -50 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Holes - Cover Exactly </desc><g class="geomB">
<path fill-rule="evenodd" d="M 10 -90 L 50 -90 90 -90 90 -50 90 -10 50 -10 10 -10 10 -50 Z" />
<path fill-rule="evenodd" d="M 50 -50 L 50 -10" />
<path fill-rule="evenodd" d="M 10 -50 L 50 -50" />
<path fill-rule="evenodd" d="M 50 -50 L 90 -50" />
<path fill-rule="evenodd" d="M 50 -90 L 50 -50" />
</g></svg></td><td>POLYGON EMPTY</td></tr></table><hr/>
<h3>Polygon/Holes - Nested </h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Holes - Nested </desc><path class="geomA" fill-rule="evenodd" d="M 10 -90 L 90 -90 90 -10 10 -10 Z M 30 -70 L 70 -70 70 -30 30 -30 Z M 20 -80 L 80 -80 80 -20 20 -20 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Holes - Nested </desc><g class="geomB">
<path fill-rule="evenodd" d="M 90 -10 L 10 -10 10 -90 90 -90 Z M 80 -20 L 80 -80 20 -80 20 -20 Z" />
<path fill-rule="evenodd" d="M 70 -30 L 30 -30 30 -70 70 -70 Z" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Holes - Nested </desc><path class="geomB" fill-rule="evenodd" d="M 90 -90 L 90 -10 10 -10 10 -90 Z M 20 -80 L 20 -20 80 -20 80 -80 Z" /></svg></td></tr></table><hr/>
<h3>Polygon/Holes - Disconnected interior, point touch</h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Holes - Disconnected interior, point touch</desc><path class="geomA" fill-rule="evenodd" d="M 10 -90 L 90 -90 90 -10 10 -10 Z M 30 -60 L 70 -60 50 -81 Z M 20 -50 L 30 -60 50 -20 Z M 80 -50 L 70 -60 50 -20 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Holes - Disconnected interior, point touch</desc><g class="geomB">
<path fill-rule="evenodd" d="M 90 -10 L 10 -10 10 -90 90 -90 Z M 80 -50 L 70 -60 50 -81 30 -60 20 -50 50 -20 Z" />
<path fill-rule="evenodd" d="M 70 -60 L 50 -20 30 -60 Z" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Holes - Disconnected interior, point touch</desc><g class="geomB">
<path fill-rule="evenodd" d="M 90 -90 L 90 -10 10 -10 10 -90 Z M 20 -50 L 50 -20 80 -50 70 -60 50 -81 30 -60 Z" />
<path fill-rule="evenodd" d="M 30 -60 L 70 -60 50 -20 Z" />
</g></svg></td></tr></table><hr/>
<h3>Polygon/Holes - Disconnected interior, point-line touch </h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Holes - Disconnected interior, point-line touch </desc><path class="geomA" fill-rule="evenodd" d="M 10 -90 L 90 -90 90 -10 10 -10 Z M 20 -60 L 70 -60 70 -80 Z M 30 -30 L 30 -60 60 -30 Z M 80 -40 L 80 -70 50 -40 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Holes - Disconnected interior, point-line touch </desc><g class="geomB">
<path fill-rule="evenodd" d="M 90 -90 L 90 -10 10 -10 10 -90 Z M 80 -40 L 80 -70 70 -60 70 -80 20 -60 30 -60 30 -30 60 -30 50 -40 Z" />
<path fill-rule="evenodd" d="M 70 -60 L 50 -40 30 -60 Z" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Holes - Disconnected interior, point-line touch </desc><g class="geomB">
<path fill-rule="evenodd" d="M 90 -90 L 90 -10 10 -10 10 -90 Z M 30 -30 L 60 -30 50 -40 80 -40 80 -70 70 -60 70 -80 20 -60 30 -60 Z" />
<path fill-rule="evenodd" d="M 30 -60 L 70 -60 50 -40 Z" />
</g></svg></td></tr></table><hr/>
<h3>Polygon/Holes - Disconnected interior, line touch </h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Holes - Disconnected interior, line touch </desc><path class="geomA" fill-rule="evenodd" d="M 10 -90 L 90 -90 90 -10 10 -10 Z M 20 -70 L 30 -60 70 -60 80 -70 50 -80 Z M 20 -20 L 20 -70 50 -40 50 -20 Z M 80 -20 L 80 -70 50 -40 50 -20 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Holes - Disconnected interior, line touch </desc><g class="geomB">
<path fill-rule="evenodd" d="M 90 -90 L 90 -10 10 -10 10 -90 Z M 50 -80 L 20 -70 20 -20 50 -20 80 -20 80 -70 Z" />
<path fill-rule="evenodd" d="M 70 -60 L 50 -40 30 -60 Z" />
<path fill-rule="evenodd" d="M 20 -70 L 30 -60" />
<path fill-rule="evenodd" d="M 70 -60 L 80 -70" />
<path fill-rule="evenodd" d="M 50 -40 L 50 -20" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Holes - Disconnected interior, line touch </desc><g class="geomB">
<path fill-rule="evenodd" d="M 90 -90 L 90 -10 10 -10 10 -90 Z M 20 -20 L 50 -20 80 -20 80 -70 50 -80 20 -70 Z" />
<path fill-rule="evenodd" d="M 30 -60 L 70 -60 50 -40 Z" />
</g></svg></td></tr></table><hr/>
<h3>Polygon/Holes - Disconnected interior, overlapping bowtie holes </h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Holes - Disconnected interior, overlapping bowtie holes </desc><path class="geomA" fill-rule="evenodd" d="M 10 -90 L 90 -90 90 -10 10 -10 Z M 70 -80 L 20 -80 70 -20 20 -20 Z M 80 -70 L 40 -70 80 -30 40 -30 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Holes - Disconnected interior, overlapping bowtie holes </desc><g class="geomB">
<path fill-rule="evenodd" d="M 90 -10 L 10 -10 10 -90 90 -90 Z M 80 -70 L 61.666666666666664 -70 70 -80 20 -80 45 -50 20 -20 70 -20 61.666666666666664 -30 80 -30 60 -50 Z" />
<path fill-rule="evenodd" d="M 40 -30 L 51.81818181818182 -41.81818181818182 61.666666666666664 -30 Z" />
<path fill-rule="evenodd" d="M 60 -50 L 51.81818181818182 -41.81818181818182 45 -50 51.81818181818182 -58.18181818181818 Z" />
<path fill-rule="evenodd" d="M 61.666666666666664 -70 L 51.81818181818182 -58.18181818181818 40 -70 Z" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Holes - Disconnected interior, overlapping bowtie holes </desc><g class="geomB">
<path fill-rule="evenodd" d="M 90 -90 L 90 -10 10 -10 10 -90 Z M 20 -20 L 70 -20 61.666666666666664 -30 80 -30 60 -50 80 -70 61.666666666666664 -70 70 -80 20 -80 45 -50 Z" />
<path fill-rule="evenodd" d="M 51.81818181818182 -41.81818181818182 L 45 -50 51.81818181818182 -58.18181818181818 60 -50 Z" />
</g></svg></td></tr></table><hr/>
<h3>Polygon/Holes - Disconnected interior, overlapping zero-area holes </h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Holes - Disconnected interior, overlapping zero-area holes </desc><path class="geomA" fill-rule="evenodd" d="M 10 -90 L 90 -90 90 -10 10 -10 Z M 80 -70 L 30 -70 30 -20 30 -70 Z M 70 -80 L 70 -30 20 -30 70 -30 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Holes - Disconnected interior, overlapping zero-area holes </desc><g class="geomB">
<path fill-rule="evenodd" d="M 90 -90 L 90 -10 10 -10 10 -90 Z M 30 -70 L 30 -30 70 -30 70 -70 Z" />
<path fill-rule="evenodd" d="M 80 -70 L 70 -70" />
<path fill-rule="evenodd" d="M 30 -30 L 30 -20" />
<path fill-rule="evenodd" d="M 70 -80 L 70 -70" />
<path fill-rule="evenodd" d="M 30 -30 L 20 -30" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Holes - Disconnected interior, overlapping zero-area holes </desc><path class="geomB" fill-rule="evenodd" d="M 10 -90 L 90 -90 90 -10 10 -10 Z" /></svg></td></tr></table><hr/>
<h3>Polygon/Holes - Disconnected interior, overlapping holes </h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Holes - Disconnected interior, overlapping holes </desc><path class="geomA" fill-rule="evenodd" d="M 10 -90 L 90 -90 90 -10 10 -10 Z M 80 -70 L 30 -70 30 -20 40 -20 40 -60 80 -60 Z M 70 -80 L 60 -80 60 -40 20 -40 20 -30 70 -30 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Holes - Disconnected interior, overlapping holes </desc><g class="geomB">
<path fill-rule="evenodd" d="M 10 -10 L 10 -90 90 -90 90 -10 Z M 40 -20 L 40 -30 70 -30 70 -60 80 -60 80 -70 70 -70 70 -80 60 -80 60 -70 30 -70 30 -40 20 -40 20 -30 30 -30 30 -20 Z" />
<path fill-rule="evenodd" d="M 40 -40 L 40 -30 30 -30 30 -40 Z" />
<path fill-rule="evenodd" d="M 60 -40 L 40 -40 40 -60 60 -60 Z" />
<path fill-rule="evenodd" d="M 60 -60 L 60 -70 70 -70 70 -60 Z" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>Polygon/Holes - Disconnected interior, overlapping holes </desc><g class="geomB">
<path fill-rule="evenodd" d="M 90 -90 L 90 -10 10 -10 10 -90 Z M 80 -70 L 70 -70 70 -80 60 -80 60 -70 30 -70 30 -40 20 -40 20 -30 30 -30 30 -20 40 -20 40 -30 70 -30 70 -60 80 -60 Z" />
<path fill-rule="evenodd" d="M 60 -60 L 60 -40 40 -40 40 -60 Z" />
</g></svg></td></tr></table><hr/>
<h3>MultiPolygon - Nested Polygons </h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>MultiPolygon - Nested Polygons </desc><g class="geomA">
<path fill-rule="evenodd" d="M 30 -70 L 70 -70 70 -30 30 -30 Z" />
<path fill-rule="evenodd" d="M 10 -90 L 90 -90 90 -10 10 -10 Z" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>MultiPolygon - Nested Polygons </desc><path class="geomB" fill-rule="evenodd" d="M 90 -90 L 90 -10 10 -10 10 -90 Z M 30 -30 L 70 -30 70 -70 30 -70 Z" /></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>MultiPolygon - Nested Polygons </desc><path class="geomB" fill-rule="evenodd" d="M 90 -90 L 90 -10 10 -10 10 -90 Z" /></svg></td></tr></table><hr/>
<h3>MultiPolygon - Multiple Nested Polygons </h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>MultiPolygon - Multiple Nested Polygons </desc><g class="geomA">
<path fill-rule="evenodd" d="M 40 -60 L 60 -60 60 -40 40 -40 Z" />
<path fill-rule="evenodd" d="M 30 -70 L 70 -70 70 -30 30 -30 Z" />
<path fill-rule="evenodd" d="M 20 -80 L 80 -80 80 -20 20 -20 Z" />
<path fill-rule="evenodd" d="M 10 -90 L 90 -90 90 -10 10 -10 Z" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>MultiPolygon - Multiple Nested Polygons </desc><g class="geomB">
<path fill-rule="evenodd" d="M 90 -10 L 10 -10 10 -90 90 -90 Z M 80 -20 L 80 -80 20 -80 20 -20 Z" />
<path fill-rule="evenodd" d="M 70 -30 L 30 -30 30 -70 70 -70 Z M 60 -40 L 60 -60 40 -60 40 -40 Z" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>MultiPolygon - Multiple Nested Polygons </desc><path class="geomB" fill-rule="evenodd" d="M 90 -10 L 10 -10 10 -90 90 -90 Z" /></svg></td></tr></table><hr/>
<h3>MultiPolygon - Overlapping Polygons </h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>MultiPolygon - Overlapping Polygons </desc><g class="geomA">
<path fill-rule="evenodd" d="M 10 -90 L 60 -90 60 -10 10 -10 Z" />
<path fill-rule="evenodd" d="M 90 -80 L 90 -20 40 -20 40 -80 Z" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>MultiPolygon - Overlapping Polygons </desc><g class="geomB">
<path fill-rule="evenodd" d="M 90 -80 L 90 -20 60 -20 60 -80 Z" />
<path fill-rule="evenodd" d="M 60 -10 L 10 -10 10 -90 60 -90 60 -80 40 -80 40 -20 60 -20 Z" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>MultiPolygon - Overlapping Polygons </desc><path class="geomB" fill-rule="evenodd" d="M 60 -90 L 60 -80 90 -80 90 -20 60 -20 60 -10 10 -10 10 -90 Z" /></svg></td></tr></table><hr/>
<h3>MultiPolygon - Multiple Overlapping Polygons </h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>MultiPolygon - Multiple Overlapping Polygons </desc><g class="geomA">
<path fill-rule="evenodd" d="M 90 -90 L 90 -30 30 -30 30 -90 Z" />
<path fill-rule="evenodd" d="M 20 -20 L 20 -80 80 -80 80 -20 Z" />
<path fill-rule="evenodd" d="M 10 -10 L 10 -70 70 -70 70 -10 Z" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>MultiPolygon - Multiple Overlapping Polygons </desc><g class="geomB">
<path fill-rule="evenodd" d="M 10 -10 L 10 -70 20 -70 20 -20 70 -20 70 -10 Z" />
<path fill-rule="evenodd" d="M 30 -80 L 30 -70 20 -70 20 -80 Z" />
<path fill-rule="evenodd" d="M 90 -90 L 90 -30 80 -30 80 -80 30 -80 30 -90 Z" />
<path fill-rule="evenodd" d="M 70 -20 L 70 -30 80 -30 80 -20 Z" />
<path fill-rule="evenodd" d="M 30 -30 L 30 -70 70 -70 70 -30 Z" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>MultiPolygon - Multiple Overlapping Polygons </desc><path class="geomB" fill-rule="evenodd" d="M 10 -70 L 20 -70 20 -80 30 -80 30 -90 90 -90 90 -30 80 -30 80 -20 70 -20 70 -10 10 -10 Z" /></svg></td></tr></table><hr/>
<h3>MultiPolygon - Multiple Overlapping Polygons (5) </h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>MultiPolygon - Multiple Overlapping Polygons (5) </desc><g class="geomA">
<path fill-rule="evenodd" d="M 20 -90 L 80 -90 80 -60 20 -60 Z" />
<path fill-rule="evenodd" d="M 30 -70 L 70 -70 70 -30 30 -30 Z" />
<path fill-rule="evenodd" d="M 10 -80 L 40 -80 40 -20 10 -20 Z" />
<path fill-rule="evenodd" d="M 20 -10 L 20 -40 80 -40 80 -10 Z" />
<path fill-rule="evenodd" d="M 90 -80 L 90 -20 60 -20 60 -80 Z" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>MultiPolygon - Multiple Overlapping Polygons (5) </desc><g class="geomB">
<path fill-rule="evenodd" d="M 80 -90 L 80 -80 60 -80 60 -70 40 -70 40 -80 20 -80 20 -90 Z" />
<path fill-rule="evenodd" d="M 90 -20 L 80 -20 80 -40 70 -40 70 -60 80 -60 80 -80 90 -80 Z" />
<path fill-rule="evenodd" d="M 20 -10 L 20 -20 40 -20 40 -30 60 -30 60 -20 80 -20 80 -10 Z" />
<path fill-rule="evenodd" d="M 10 -80 L 20 -80 20 -60 30 -60 30 -40 20 -40 20 -20 10 -20 Z" />
<path fill-rule="evenodd" d="M 40 -40 L 40 -30 30 -30 30 -40 Z" />
<path fill-rule="evenodd" d="M 60 -40 L 70 -40 70 -30 60 -30 Z" />
<path fill-rule="evenodd" d="M 40 -40 L 40 -60 60 -60 60 -40 Z" />
<path fill-rule="evenodd" d="M 40 -60 L 30 -60 30 -70 40 -70 Z" />
<path fill-rule="evenodd" d="M 70 -60 L 60 -60 60 -70 70 -70 Z" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>MultiPolygon - Multiple Overlapping Polygons (5) </desc><path class="geomB" fill-rule="evenodd" d="M 10 -20 L 10 -80 20 -80 20 -90 80 -90 80 -80 90 -80 90 -20 80 -20 80 -10 20 -10 20 -20 Z" /></svg></td></tr></table><hr/>
<h3>MultiPolygon - Polygon/Hole-overlap overlaps Polygon covering hole </h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>MultiPolygon - Polygon/Hole-overlap overlaps Polygon covering hole </desc><g class="geomA">
<path fill-rule="evenodd" d="M 10 -90 L 60 -90 60 -10 10 -10 Z M 30 -70 L 80 -70 80 -30 30 -30 Z" />
<path fill-rule="evenodd" d="M 90 -80 L 90 -20 20 -20 20 -80 Z" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>MultiPolygon - Polygon/Hole-overlap overlaps Polygon covering hole </desc><g class="geomB">
<path fill-rule="evenodd" d="M 60 -20 L 60 -30 80 -30 80 -70 60 -70 60 -80 90 -80 90 -20 Z" />
<path fill-rule="evenodd" d="M 10 -10 L 10 -90 60 -90 60 -80 20 -80 20 -20 60 -20 60 -10 Z" />
<path fill-rule="evenodd" d="M 60 -30 L 30 -30 30 -70 60 -70 Z" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>MultiPolygon - Polygon/Hole-overlap overlaps Polygon covering hole </desc><path class="geomB" fill-rule="evenodd" d="M 60 -80 L 90 -80 90 -20 60 -20 60 -10 10 -10 10 -90 60 -90 Z" /></svg></td></tr></table><hr/>
<h3>MultiPolygon - Polygon/Hole-overlap overlaps Polygon inside hole </h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 70 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>MultiPolygon - Polygon/Hole-overlap overlaps Polygon inside hole </desc><g class="geomA">
<path fill-rule="evenodd" d="M 10 -90 L 60 -90 60 -10 10 -10 Z M 20 -80 L 90 -80 90 -20 20 -20 Z" />
<path fill-rule="evenodd" d="M 80 -70 L 80 -30 30 -30 30 -70 Z" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 70 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>MultiPolygon - Polygon/Hole-overlap overlaps Polygon inside hole </desc><g class="geomB">
<path fill-rule="evenodd" d="M 60 -20 L 60 -30 80 -30 80 -70 60 -70 60 -80 90 -80 90 -20 Z" />
<path fill-rule="evenodd" d="M 10 -10 L 10 -90 60 -90 60 -80 20 -80 20 -20 60 -20 60 -10 Z" />
<path fill-rule="evenodd" d="M 60 -30 L 30 -30 30 -70 60 -70 Z" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 70 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>MultiPolygon - Polygon/Hole-overlap overlaps Polygon inside hole </desc><g class="geomB">
<path fill-rule="evenodd" d="M 60 -80 L 20 -80 20 -20 60 -20 60 -10 10 -10 10 -90 60 -90 Z" />
<path fill-rule="evenodd" d="M 80 -30 L 30 -30 30 -70 80 -70 Z" />
</g></svg></td></tr></table><hr/>
<h3>MultiPolygon - Polygon/Hole-overlap hole overlaps Polygon </h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>MultiPolygon - Polygon/Hole-overlap hole overlaps Polygon </desc><g class="geomA">
<path fill-rule="evenodd" d="M 10 -90 L 40 -90 40 -10 10 -10 Z M 20 -80 L 80 -80 80 -20 20 -20 Z" />
<path fill-rule="evenodd" d="M 90 -90 L 90 -10 60 -10 60 -90 Z" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>MultiPolygon - Polygon/Hole-overlap hole overlaps Polygon </desc><g class="geomB">
<path fill-rule="evenodd" d="M 60 -90 L 90 -90 90 -10 60 -10 60 -20 80 -20 80 -80 60 -80 Z" />
<path fill-rule="evenodd" d="M 40 -20 L 40 -80 60 -80 60 -20 Z" />
<path fill-rule="evenodd" d="M 40 -10 L 10 -10 10 -90 40 -90 40 -80 20 -80 20 -20 40 -20 Z" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>MultiPolygon - Polygon/Hole-overlap hole overlaps Polygon </desc><g class="geomB">
<path fill-rule="evenodd" d="M 40 -80 L 20 -80 20 -20 40 -20 40 -10 10 -10 10 -90 40 -90 Z" />
<path fill-rule="evenodd" d="M 90 -10 L 60 -10 60 -90 90 -90 Z" />
</g></svg></td></tr></table><hr/>
<h3>MultiPolygon - Polygon overlaps Polygon/Hole </h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>MultiPolygon - Polygon overlaps Polygon/Hole </desc><g class="geomA">
<path fill-rule="evenodd" d="M 10 -90 L 60 -90 60 -10 10 -10 Z" />
<path fill-rule="evenodd" d="M 90 -80 L 90 -20 20 -20 20 -80 Z M 80 -70 L 80 -30 30 -30 30 -70 Z" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>MultiPolygon - Polygon overlaps Polygon/Hole </desc><g class="geomB">
<path fill-rule="evenodd" d="M 60 -20 L 60 -30 80 -30 80 -70 60 -70 60 -80 90 -80 90 -20 Z" />
<path fill-rule="evenodd" d="M 10 -10 L 10 -90 60 -90 60 -80 20 -80 20 -20 60 -20 60 -10 Z" />
<path fill-rule="evenodd" d="M 60 -30 L 30 -30 30 -70 60 -70 Z" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>MultiPolygon - Polygon overlaps Polygon/Hole </desc><path class="geomB" fill-rule="evenodd" d="M 60 -90 L 60 -80 90 -80 90 -20 60 -20 60 -10 10 -10 10 -90 Z M 60 -30 L 80 -30 80 -70 60 -70 Z" /></svg></td></tr></table><hr/>
<h3>MultiPolygon - Polygon/Hole-overlap overlaps Polygon </h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>MultiPolygon - Polygon/Hole-overlap overlaps Polygon </desc><g class="geomA">
<path fill-rule="evenodd" d="M 10 -90 L 60 -90 60 -10 10 -10 Z M 30 -70 L 80 -70 80 -30 30 -30 Z" />
<path fill-rule="evenodd" d="M 90 -80 L 90 -20 40 -20 40 -80 Z" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>MultiPolygon - Polygon/Hole-overlap overlaps Polygon </desc><g class="geomB">
<path fill-rule="evenodd" d="M 60 -30 L 80 -30 80 -70 60 -70 60 -80 90 -80 90 -20 60 -20 Z" />
<path fill-rule="evenodd" d="M 10 -10 L 10 -90 60 -90 60 -80 40 -80 40 -70 30 -70 30 -30 40 -30 40 -20 60 -20 60 -10 Z" />
<path fill-rule="evenodd" d="M 60 -30 L 40 -30 40 -70 60 -70 Z" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>MultiPolygon - Polygon/Hole-overlap overlaps Polygon </desc><path class="geomB" fill-rule="evenodd" d="M 60 -80 L 90 -80 90 -20 60 -20 60 -10 10 -10 10 -90 60 -90 Z M 30 -70 L 30 -30 40 -30 40 -70 Z" /></svg></td></tr></table><hr/>
<h3>MultiPolygon - Polygon partially fills Polygon/Hole </h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>MultiPolygon - Polygon partially fills Polygon/Hole </desc><g class="geomA">
<path fill-rule="evenodd" d="M 10 -90 L 90 -90 90 -10 10 -10 Z M 30 -70 L 70 -70 70 -30 30 -30 Z" />
<path fill-rule="evenodd" d="M 30 -60 L 70 -60 70 -40 30 -40 Z" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>MultiPolygon - Polygon partially fills Polygon/Hole </desc><g class="geomB">
<path fill-rule="evenodd" d="M 10 -90 L 90 -90 90 -10 10 -10 Z M 70 -40 L 70 -60 70 -70 30 -70 30 -60 30 -40 30 -30 70 -30 Z" />
<path fill-rule="evenodd" d="M 30 -60 L 70 -60" />
<path fill-rule="evenodd" d="M 70 -40 L 30 -40" />
</g></svg></td><td><svg width="200" height="200" viewBox="10 -90 80 80"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>MultiPolygon - Polygon partially fills Polygon/Hole </desc><path class="geomB" fill-rule="evenodd" d="M 90 -10 L 10 -10 10 -90 90 -90 Z M 70 -30 L 70 -40 30 -40 30 -30 Z M 70 -70 L 30 -70 30 -60 70 -60 Z" /></svg></td></tr></table><hr/>
<h3>MultiPolygon - Grid of adjacent Polygons </h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="0 -100 100 100"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>MultiPolygon - Grid of adjacent Polygons </desc><g class="geomA">
<path fill-rule="evenodd" d="M 0 0 L 0 -20 20 -20 20 0 Z" />
<path fill-rule="evenodd" d="M 0 -20 L 0 -40 20 -40 20 -20 Z" />
<path fill-rule="evenodd" d="M 0 -40 L 0 -60 20 -60 20 -40 Z" />
<path fill-rule="evenodd" d="M 0 -60 L 0 -80 20 -80 20 -60 Z" />
<path fill-rule="evenodd" d="M 0 -80 L 0 -100 20 -100 20 -80 Z" />
<path fill-rule="evenodd" d="M 20 0 L 20 -20 40 -20 40 0 Z" />
<path fill-rule="evenodd" d="M 20 -20 L 20 -40 40 -40 40 -20 Z" />
<path fill-rule="evenodd" d="M 20 -40 L 20 -60 40 -60 40 -40 Z" />
<path fill-rule="evenodd" d="M 20 -60 L 20 -80 40 -80 40 -60 Z" />
<path fill-rule="evenodd" d="M 20 -80 L 20 -100 40 -100 40 -80 Z" />
<path fill-rule="evenodd" d="M 40 0 L 40 -20 60 -20 60 0 Z" />
<path fill-rule="evenodd" d="M 40 -20 L 40 -40 60 -40 60 -20 Z" />
<path fill-rule="evenodd" d="M 40 -40 L 40 -60 60 -60 60 -40 Z" />
<path fill-rule="evenodd" d="M 40 -60 L 40 -80 60 -80 60 -60 Z" />
<path fill-rule="evenodd" d="M 40 -80 L 40 -100 60 -100 60 -80 Z" />
<path fill-rule="evenodd" d="M 60 0 L 60 -20 80 -20 80 0 Z" />
<path fill-rule="evenodd" d="M 60 -20 L 60 -40 80 -40 80 -20 Z" />
<path fill-rule="evenodd" d="M 60 -40 L 60 -60 80 -60 80 -40 Z" />
<path fill-rule="evenodd" d="M 60 -60 L 60 -80 80 -80 80 -60 Z" />
<path fill-rule="evenodd" d="M 60 -80 L 60 -100 80 -100 80 -80 Z" />
<path fill-rule="evenodd" d="M 80 0 L 80 -20 100 -20 100 0 Z" />
<path fill-rule="evenodd" d="M 80 -20 L 80 -40 100 -40 100 -20 Z" />
<path fill-rule="evenodd" d="M 80 -40 L 80 -60 100 -60 100 -40 Z" />
<path fill-rule="evenodd" d="M 80 -60 L 80 -80 100 -80 100 -60 Z" />
<path fill-rule="evenodd" d="M 80 -80 L 80 -100 100 -100 100 -80 Z" />
</g></svg></td><td><svg width="200" height="200" viewBox="0 -100 100 100"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>MultiPolygon - Grid of adjacent Polygons </desc><g class="geomB">
<path fill-rule="evenodd" d="M 0 -40 L 0 -60 0 -80 0 -100 20 -100 40 -100 60 -100 80 -100 100 -100 100 -80 100 -60 100 -40 100 -20 100 0 80 0 60 0 40 0 20 0 0 0 0 -20 Z M 80 -60 L 80 -80 60 -80 40 -80 20 -80 20 -60 20 -40 20 -20 40 -20 60 -20 80 -20 80 -40 Z" />
<path fill-rule="evenodd" d="M 40 -60 L 60 -60 60 -40 40 -40 Z" />
<path fill-rule="evenodd" d="M 0 -20 L 20 -20" />
<path fill-rule="evenodd" d="M 20 -20 L 20 0" />
<path fill-rule="evenodd" d="M 0 -40 L 20 -40" />
<path fill-rule="evenodd" d="M 0 -60 L 20 -60" />
<path fill-rule="evenodd" d="M 0 -80 L 20 -80" />
<path fill-rule="evenodd" d="M 20 -100 L 20 -80" />
<path fill-rule="evenodd" d="M 40 -20 L 40 0" />
<path fill-rule="evenodd" d="M 20 -40 L 40 -40" />
<path fill-rule="evenodd" d="M 40 -40 L 40 -20" />
<path fill-rule="evenodd" d="M 20 -60 L 40 -60" />
<path fill-rule="evenodd" d="M 40 -80 L 40 -60" />
<path fill-rule="evenodd" d="M 40 -100 L 40 -80" />
<path fill-rule="evenodd" d="M 60 -20 L 60 0" />
<path fill-rule="evenodd" d="M 60 -40 L 60 -20" />
<path fill-rule="evenodd" d="M 60 -80 L 60 -60" />
<path fill-rule="evenodd" d="M 60 -100 L 60 -80" />
<path fill-rule="evenodd" d="M 80 -20 L 80 0" />
<path fill-rule="evenodd" d="M 60 -40 L 80 -40" />
<path fill-rule="evenodd" d="M 60 -60 L 80 -60" />
<path fill-rule="evenodd" d="M 80 -100 L 80 -80" />
<path fill-rule="evenodd" d="M 80 -20 L 100 -20" />
<path fill-rule="evenodd" d="M 80 -40 L 100 -40" />
<path fill-rule="evenodd" d="M 80 -60 L 100 -60" />
<path fill-rule="evenodd" d="M 80 -80 L 100 -80" />
</g></svg></td><td><svg width="200" height="200" viewBox="0 -100 100 100"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>MultiPolygon - Grid of adjacent Polygons </desc><path class="geomB" fill-rule="evenodd" d="M 20 0 L 0 0 0 -20 0 -40 0 -60 0 -80 0 -100 20 -100 40 -100 60 -100 80 -100 100 -100 100 -80 100 -60 100 -40 100 -20 100 0 80 0 60 0 40 0 Z" /></svg></td></tr></table><hr/>
<h3>MultiPolygon - Ring of adjacent Polygons </h3>
<table cellpadding="20">
<tr><th>Invalid</th><th>MakeValid(original)</th><th>MakeValid(structure)</th></tr>
<tr><td><svg width="200" height="200" viewBox="0 -100 100 100"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>MultiPolygon - Ring of adjacent Polygons </desc><g class="geomA">
<path fill-rule="evenodd" d="M 0 0 L 0 -20 20 -20 20 0 Z" />
<path fill-rule="evenodd" d="M 0 -20 L 0 -40 20 -40 20 -20 Z" />
<path fill-rule="evenodd" d="M 0 -40 L 0 -60 20 -60 20 -40 Z" />
<path fill-rule="evenodd" d="M 0 -60 L 0 -80 20 -80 20 -60 Z" />
<path fill-rule="evenodd" d="M 0 -80 L 0 -100 20 -100 20 -80 Z" />
<path fill-rule="evenodd" d="M 20 0 L 20 -20 40 -20 40 0 Z" />
<path fill-rule="evenodd" d="M 20 -80 L 20 -100 40 -100 40 -80 Z" />
<path fill-rule="evenodd" d="M 40 0 L 40 -20 60 -20 60 0 Z" />
<path fill-rule="evenodd" d="M 40 -80 L 40 -100 60 -100 60 -80 Z" />
<path fill-rule="evenodd" d="M 60 0 L 60 -20 80 -20 80 0 Z" />
<path fill-rule="evenodd" d="M 60 -80 L 60 -100 80 -100 80 -80 Z" />
<path fill-rule="evenodd" d="M 80 0 L 80 -20 100 -20 100 0 Z" />
<path fill-rule="evenodd" d="M 80 -20 L 80 -40 100 -40 100 -20 Z" />
<path fill-rule="evenodd" d="M 80 -40 L 80 -60 100 -60 100 -40 Z" />
<path fill-rule="evenodd" d="M 80 -60 L 80 -80 100 -80 100 -60 Z" />
<path fill-rule="evenodd" d="M 80 -80 L 80 -100 100 -100 100 -80 Z" />
</g></svg></td><td><svg width="200" height="200" viewBox="0 -100 100 100"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>MultiPolygon - Ring of adjacent Polygons </desc><g class="geomB">
<path fill-rule="evenodd" d="M 0 0 L 0 -20 0 -40 0 -60 0 -80 0 -100 20 -100 40 -100 60 -100 80 -100 100 -100 100 -80 100 -60 100 -40 100 -20 100 0 80 0 60 0 40 0 20 0 Z M 40 -20 L 60 -20 80 -20 80 -40 80 -60 80 -80 60 -80 40 -80 20 -80 20 -60 20 -40 20 -20 Z" />
<path fill-rule="evenodd" d="M 0 -20 L 20 -20" />
<path fill-rule="evenodd" d="M 20 -20 L 20 0" />
<path fill-rule="evenodd" d="M 0 -40 L 20 -40" />
<path fill-rule="evenodd" d="M 0 -60 L 20 -60" />
<path fill-rule="evenodd" d="M 0 -80 L 20 -80" />
<path fill-rule="evenodd" d="M 20 -100 L 20 -80" />
<path fill-rule="evenodd" d="M 40 -20 L 40 0" />
<path fill-rule="evenodd" d="M 40 -100 L 40 -80" />
<path fill-rule="evenodd" d="M 60 -20 L 60 0" />
<path fill-rule="evenodd" d="M 60 -100 L 60 -80" />
<path fill-rule="evenodd" d="M 80 -20 L 80 0" />
<path fill-rule="evenodd" d="M 80 -100 L 80 -80" />
<path fill-rule="evenodd" d="M 80 -20 L 100 -20" />
<path fill-rule="evenodd" d="M 80 -40 L 100 -40" />
<path fill-rule="evenodd" d="M 80 -60 L 100 -60" />
<path fill-rule="evenodd" d="M 80 -80 L 100 -80" />
</g></svg></td><td><svg width="200" height="200" viewBox="0 -100 100 100"
version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>MultiPolygon - Ring of adjacent Polygons </desc><path class="geomB" fill-rule="evenodd" d="M 40 0 L 20 0 0 0 0 -20 0 -40 0 -60 0 -80 0 -100 20 -100 40 -100 60 -100 80 -100 100 -100 100 -80 100 -60 100 -40 100 -20 100 0 80 0 60 0 Z M 20 -80 L 20 -60 20 -40 20 -20 40 -20 60 -20 80 -20 80 -40 80 -60 80 -80 60 -80 40 -80 Z" /></svg></td></tr></table><hr/>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment