C++: Add TIFF strip and tile reading

- Add logic to read arbitrary strips and tiles
- Find minimal set of tiles covering the requested region
- Copy data into pixel buffer using the most optimal strategy available
- This PR aims for correctness; further performance improvements are likely possible
- Should cope with any requested image size, and will split up tile reads and buffer copies to accomodate

- The test PNG image added in the previous PR is generating a set of TIFF images using a variety of different strip and tile sizes, intended to test all possible combinations and edge cases
- The PNG will be loaded into a pixel buffer and will be compared with the loaded TIFF pixel buffer and compared for equality (note: the 9D pixel buffer is compared logically, not in the storage order, so interleaving does not affect the comparison)
- If any TIFF file fails to compare with the reference PNG, this will result in test failure

--------

Testing: Should be covered by the unit tests.  If any tests fail, a representation of the observed image and expected test image will be displayed rendered in glorious 5 level greyscale which should hopefully indicate what's wrong.  RGB subchannels are separated.  (A small terminal font helps!)

```
 ▒▒▓▓▒░  ░░▒░░       ░▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒░░       ░░░░    ▒▒▒▒▒          ░▒▒░   ░▒▒▒░      ░░▒▒▒▒▒▒▒▒▒▒░       ░░▒▒░   ░▒▒░               ░░  ░▓▓▓▒  ▒▓▒▒░      ░▒▒▓▓▓▒░      ░▒▓▒░  ▒▓▓▒░   ░      
░▒▓▓▒░  ░▒▒▒░░       ░▒▒▒▒▒▒░░░░░░░▒▒▒▒▒▒▒░       ░░▒▒░   ░▒▒▒▒░         ░░░   ░▒▒▒░       ░░▒▒▒▒▒▒▒▒▒▒░░       ░▒▒▒░   ░░░░                  ▒▓▓▒  ▒▓▓▓▒      ░▒▓▓▓▒▓▓▓░      ▒▓▓▓░  ▒▒▒▒          
▒▒▓▓▒░  ▒▒▒▒░        ░▒▒▒░░          ░░▒▒░░        ░▒▒▒░   ▒▒▓▒▒        ░░░   ░▒▒▒░   ░░   ░░░░     ░░░░    ░    ░▒▒▒░   ░░░                 ░▒▒▒  ▒▓▓▓▒      ░▒▓▓▓▒▒▒▓▓▒░     ░▒▓▓▓░  ▒▒▒░         
▒▓▓▒░  ░▒▒▒▒░        ░░░░   ░▒▒▓▒▒▒░    ░░░        ░▒▒▒▒░  ░▒▓▓▒        ░░   ░▒▒▒░   ░░░         ░░         ░░░   ░▒▒▒░   ░░                 ░▒▒░ ░▓▓▓▓░  ░░  ░▒▓▓▓▓▓▓▓▓▒░ ░░░  ░▓▓▓▒░  ░▒░         
▒▓▒▒  ░▒▓▓▒▒    ░     ░    ▒▓▓▓▓▓▓▓▒▒               ░▒▒▒▒░  ░▒▓▓             ░▒▒░   ░▒▒░       ▒▒▒▒▒░       ░░░░   ░▒▒░               ░░     ░░   ▒▓▓▓░ ░▒▒▒  ░▒▒▒▒▒▒▒▒▒░  ░▒▒░  ░▓▓▓▒░  ░░         
▒▒▒░  ▒▒▓▓▒░   ░░░        ▒▓▓▓▓▓▓▓▓▓▓▒         ░░   ░▒▒▓▒▒   ▒▒▓            ░░▒░   ░▒▒▒░      ▒▒▒▓▒▒▒▒      ░░▒▒░   ░▒▒░              ░░         ░▓▓▓▒  ▒▓▓▒       ░░      ░▒▒▒▒  ░▒▓▓▒          ░  
▒▒░  ░▒▓▓▒▒   ░▒▒░       ░▓▓▓▓▓▓▓▓▓▓▓▒░       ░░░░   ░▒▓▓▒░  ░▒▓            ░░░   ░▒▒▒░      ░▒▒▓▓▓▒▒▒░      ░▒▒▒░   ░▒░             ░▒░         ▒▓▓▒  ▒▓▓▓░     ▒▓▓▓▒░     ░▒▓▓▒  ░▒▒▒░         ░░ 
▒▒░  ▒▓▓▓▒░  ░▒▒▒░       ▒▓▓▓▓▓▓▓▓▓▓▓▓▒░      ░░▒▒░   ▒▓▓▓▒░  ▒▒           ░░░   ░▒▒▒░       ░▒▒▒▓▓▒▒▒░       ░▒▒▒░  ░░░░           ░▒▒░        ░▒▒▒  ▒▓▓▓▒     ▒▓▒▒▒▓▓░     ▒▓▓▓▒  ░▒▒░         ░▒░
▒░  ░▒▓▓▒░  ░▒▒▒▒░      ░▒▓▓▓▓▓▓▓▓▓▓▓▓▒░      ░▒▒▒▒░  ░▒▓▓▒▒  ░▒            ░   ░▒▒▒▒░  ░░░   ░▒▒▒▒▒▒░    ░░   ▒▒▒▒░   ░░           ▒▒▒   ░░    ░░░  ░▓▓▓▓░ ░░  ▒▓▒▒▒▒▓▒      ▒▓▓▓▒  ░░░         ░▒▒
░   ▒▒▓▒▒  ░▒▒▓▒▒░       ░▒▓▓▓▓▓▓▓▓▓▒▒▒░       ░▒▒▓▒░  ▒▓▓▓▒░  ▒                ░▒▒▒░  ░░░░    ░░░░░     ░░░░  ░▒▒▒░                ▒▒░  ░░░        ░▒▓▓▓░ ░▒▒░ ▒▓▒▒▒▒▓▒ ░▒▒░  ▒▓▓▓░   ░     ░░  ░▒▓
░  ░▒▓▓▒░  ▒▒▓▓▒░        ░░░░░░░░░░░░░░        ░▒▓▓▓▒  ░▒▓▓▒░  ░               ░░▒▒░  ░▒▒▒░     ░░░░     ░░▒▒░  ░▒▒▒░               ▓▒  ░▒▒░        ▒▓▓▓░ ░▒▓▓░ ░▓▓▒▓▓▒░ ░▒▓▒░ ░▒▓▓▒         ░▒▒  ▒▓
   ▒▒▒▒░  ░▒▓▓▓▒░   ░░        ░░░░         ░░   ▒▒▓▓▒▒  ▒▒▓▓▒       ░          ░░░░  ░▒▒▒░     ▒▒▒▒▒▒░    ░▒▒▒░  ░▒▒░          ░░   ▓▒  ▒▒▒        ░▒▒▒░  ▒▓▓▓▒  ░▒▒▒▒░  ░▒▓▓▓░ ░▒▓▒░        ░▒▒░ ░▓
  ░▒▒▒▒   ▒▓▓▓▒░  ░░░░░     ░▒▓▓▓▓▒▒      ░░░░  ░▒▓▓▓▒░ ░▒▓▓▒░     ░░          ░░░  ░▒▒▒▒░    ░▒▒▓▓▒▒░     ▒▒▒▒░  ░░░          ░░░  ▒  ▒▒▒░  ░░    ░░▒░  ▒▓▓▓▒░   ░▒▒░░  ░▒▓▓▓▓░ ░▒▒░    ░░  ░▒▓▒  ▓
  ░▒▒▒░  ░▒▓▓▒▒   ▒▒▒░░    ░▓▓▓▓▓▓▓▓▒     ░▒▒▒░  ▒▓▓▓▓▒  ░▒▒▒░    ░░░               ▒▒▒▒░     ░▒▓▓▓▓▒░     ░▒▒▒▒   ░░          ░▒░  ▒ ░▒▓▒  ░▒░     ░   ▒▓▓▓▒░   ▒▓▓▓▓▒░  ░▒▓▓▓▒  ░░░    ░▒▒  ▒▓▓░ ▒
 ░░▒▒░   ▒▓▓▓▒░  ▒▒▒▒░     ▒▓▓▓▓▓▓▓▓▒░    ░▒▒▒▒░  ▒▓▓▓▒░  ▒▒▒▒░   ▒▒░   ░          ░▒▒▒░  ░░░ ░▒▓▓▓▓▒░ ░▒░  ░▒▒▒░         ░░░  ░▒▒  ░ ▒▓▓░ ░▒▒░        ░▒▓▓▒░    ▓▒▒▒▒▓░    ▒▓▓▓░        ░▒▒░ ░▓▓▒ ░
 ░▒▒░   ░▒▓▓▒░  ░▒▓▒▒░     ▒▓▓▓▓▓▓▓▓▒     ░▒▓▓▓▒  ░▒▓▓▒░  ░▒▒▒░   ▒▒   ░░          ░▒▒░  ░▒▒▒░ ▒▒▓▓▒▒ ░▒▒▒░  ▒▒▒░         ░░░  ░▒▒   ░▓▓▒  ▒▓▒░        ▒▓▓▒  ░▒░ ▓▒▒▒▒▓ ░▒▒  ▒▓▓▒     ░  ░▒▓▒  ▓▓▓░ 
 ░░░░   ▒▒▓▒▒  ░▒▓▓▓▒      ▒▓▓▓▓▓▓▓▓▒      ▒▓▓▓▓░  ▒▓▓▓▒   ░▒▒░   ▒░  ░▒░          ░▒░  ░▒▒▒▒░  ▒▒▒▒  ░▒▒▒▒░ ░▒▒░          ░▒░  ▒▒   ▒▓▓▒ ░▓▓▒  ░░░   ░▒▒▒  ▒▓▓▓ ▒▒▒▒▒▒ ▓▓▓▒ ░▒▓▒░   ░▒░  ▒▓▓▒ ▒▓▓▒ 
░░░░   ░▒▒▒▒░  ▒▓▓▓▒░  ░░░ ░▓▓▓▓▓▓▓▓░ ░▒░  ░▒▓▓▓▒  ░▒▓▓▒░  ░░░░   ▒░  ▒▒░   ░      ░░   ░▒▒▒▒▒░ ░░░░ ░▒▒▒▒▒░  ░░░     ░░   ░▒▒  ░▒   ▒▓▓░ ▒▓▓░ ░▒▒░    ░▒░ ░▓▒▒▓░░▓▒▒▓░░▓▒▒▓▒ ░▒▒    ░▒▒░ ▒▓▓▓ ░▓▓▓ 
░░░    ░▒▒▒░  ░▒▓▓▓▒░ ░▒▒▒░ ░▓▓▓▓▓▓▒ ░▒▓▒░  ▒▓▓▓▓░  ▒▒▒▒░   ░░░   ▒░ ░▒▒░  ░░░          ▒▒▒▒▒▒░░░░░░░░▒▒▒▒▒▒          ░░░  ░▒▒░ ░▒  ░▓▓▒ ░▓▓▒  ▒▓▒░        ▒▓▒▒▒▓ ▓▓▓▓ ▒▒▒▒▒▒  ░░    ░▒▓▒  ▓▓▓░ ▓▓▓░
░░    ░▒▒▒░   ▒▓▓▓▓▒  ▒▓▓▓▒░ ▒▓▓▓▓▒  ▒▓▓▓▒  ▒▓▓▓▓▒  ░▒▒▒░    ░░   ▒  ▒▒▒░ ░▒▒░         ░▒▒▒▒▒░░▒▒▒▒▒▒░░▒▒▒▒▒░         ░▒▒░ ░▒▒▒  ▒  ▒▓▓░ ▒▓▓▒ ▒▓▓▒   ░     ▒▓▒▒▒▓░▒▓▓▒░▓▒▒▒▒▒     ░░  ▒▓▓▒ ▒▓▓▒ ▒▓▓▒
░     ░░▒░   ░▒▓▓▓▒░ ░▓▓▓▓▓▒░ ░▒▒▒  ▒▓▓▓▓▓░ ░▒▓▓▓▒░  ░▒▒░░        ▒ ░▒▒▒  ░▒▒░         ░░░    ░▒▒▒▒▒▒     ░░░     ░   ░▒▒░  ▒▒▒  ▒  ▒▓▓ ░▓▓▓░ ▓▓▓▒  ▒▒░    ░▓▓▓▓▓▒▒▒▒▒▒▓▓▒▓▓▒    ░▒▒░ ▒▓▓▓ ░▓▓▓ ░▓▓▒
      ░░░    ▒▒▓▓▒▒  ▒▓▓▓▓▓▓▒░░░░░░▒▓▓▓▓▓▓▒  ▒▓▓▓▒▒   ░░░░        ░ ░▒▒░ ░▒▒▒   ░░     ░   ░░  ░▒▒▒▒░  ░    ░     ░░░  ▒▒▒░ ▒▒▒░ ░  ▓▓▒ ▒▓▓▒ ▒▓▓▓  ▒▓▒░      ▒▒▒▒▒▒▒▒▒▒▒▒▒▒░     ░▓▓▒ ░▓▓▓░ ▓▓▓░ ▒▓▓
     ░░░    ░▒▒▒▒▒░  ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▓▓▓▓▓▓▓▒  ░▒▒▓▒▒░   ░░░        ░ ▒▒▒░ ▒▒▒░  ░▒░        ▒▒▒▒  ▒▒▒▒  ▒▒▒░        ░▒░  ▒▒▒░ ░▒▒▒ ░  ▓▓░ ▒▓▓░ ▓▓▓▒ ░▓▓▓░  ░░░     ░▒▓▓▒░      ░░  ░▓▓▓░ ▒▓▓▒ ▒▓▓▒ ▒▓▓
     ░░     ░▒▒▒░    ▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒░  ░▒▒▒▒░                ▒▒▒  ▒▒▒░ ░▒▒░       ░▒▓▓▓▒ ▒▒▒▒ ▒▓▓▓▒░       ░▒▒░ ░▒▒▒  ▒▒▒    ▓▒  ▓▓▓ ░▓▓▓░ ▒▓▓▒░  ░▒▒▓▓▓▒░ ▒▓▓▒ ░▒▓▓▒▒▒▒░ ░▓▓▓▒ ░▓▓▓  ▓▓▒ ░▓▓
    ░░     ░░░░     ░░▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒░    ░░░░               ░▒▒▒ ░▒▒▒  ▒▒▒░       ░▒▓▓▓▒ ░▒▒░ ▒▓▓▓▒░       ░▒▒▒  ▒▒▒░ ▒▒▒░   ▓▒ ░▓▓▒ ▒▓▓▒ ▒▓▓▓░  ░▒▒▓▓▒▒▒▓ ▒▓▓▒ ▓▒▒▒▓▓▒▒░  ▒▓▓▓░ ▒▓▓▒ ▒▓▓░ ▒▓
  ░░░░    ░░░░        ░░▒▒▒▓▓▓▓▓▓▓▓▓▓▒▒▒▒░░░      ░░░              ░▒▒░ ▒▒▒▒ ░▒▒▒  ░░    ░▒▓▓▓▒░░▒▒░░▒▓▓▓▒░    ░░  ▒▒▒░ ▒▒▒░ ▒▒▒░   ▓░ ▒▓▓░ ▓▓▓░ ▓▓▓▒   ░░░▒▓▒▒▒▓░▒▓▓░░▓▒▒▒▓▒▒░░░  ▒▓▓▒ ░▓▓▒ ░▓▓░ ▒▒
  ░░░   ░░░░░   ░░░░      ░░▒▓▓▓▓▓▒▒░░      ░░░    ░░░░░     ░░    ▒▒▒░ ▒▒▒░ ▒▒▒░ ░▒▒  ░░ ▒▓▓▓▒░░▒▒░░▓▓▓▓▒ ░░  ▒▒░ ░▒▒▒ ░▒▒▒ ░▒▒▒   ▒░ ▒▓▒ ░▓▓▒ ▒▓▓▒  ▒▒   ░▓▒▒▒▒▒▒▓▓░▒▒▒▒▒▓░  ░▒▒  ▓▓▓░ ▓▓▓░ ▒▓▒ ░▒
 ░░░░  ░░▒▒░░ ░▒▒▒▒░  ░░▒░░  ░▒▓▒▒░  ░░░░   ░▒▒▒░░ ░░░░░░   ░░░    ▒▒▒  ▒▒▒ ░▒▒▒░ ▒▒▒  ▒▒░ ▒▓▓▒░░▒▒░░▒▓▓▒ ░▒▒  ▒▒▒ ░▒▒▒ ░▒▒▒ ░▒▒▒   ▒  ▓▓▒ ▒▓▓▒ ▓▓▓░ ▓▓▒ ░▒░░▓▒▒▒░░▓▓░▒▒▒▒▓ ░▒  ▒▓▓ ▒▓▓▓ ▒▓▓▒ ▒▓▒  ▒
 ░░░░  ░▒▒▒░░░▒▒▓▓▒▒░░▒▓▓▓▓▒  ░▒░░  ▒▓▓▓▓▒░░▒▒▒▒▒▒░░░░▒▒░░  ░░░░   ▒▒▒ ░▒▒▒ ▒▒▓▒ ▒▓▓▒ ░▒▓▒ ▒▒▓▒ ░▒▒░ ▒▓▒░ ▒▓▒░░▒▓▒▒ ▒▓▒░ ▒▒▒░ ▒▒▒   ▒ ░▓▓▒ ▓▓▓░▒▓▒▓ ▓▒▒▓ ▓▒▓░▒▒▒▓░▒▓▓░░▓▒▒░░▓▓▓ ▓▒▒▒ ▓▓▓░░▓▓▒ ░▓▒  ▒
░░░░░ ░░▒▒▒░░░▒▓▓▓▓▒░▒▓▓▓▓▓▓▒      ▒▓▓▓▓▓▓▒░▒▓▓▓▓▒░░░▒▒▒▒░  ░░░░   ▒▒▒ ░▒▒▒ ▒▓▓▒ ▒▓▓▓░▒▓▓▓▒ ▒▒▒ ▒▒▒▒ ▒▒▒ ▒▓▓▓▒░▓▓▓▒ ▒▓▓▒ ▒▒▒░ ▒▒▒   ▒ ░▓▓░ ▓▓▓ ▓▒▒▓░▓▒▒▓░▒▒▒▓ ▓▓▓ ▒▓▓▒ ▓▓▓ ▓▒▒▓ ▓▒▒▓ ▓▒▓▒ ▓▓▒ ░▒▒░ ▒
░░░░░ ░▒▒▒▒░░▒▓▓▓▓▓▒▒▓▓▓▓▓▓▓▓░    ▒▓▓▓▓▓▓▓▓▒▒▓▓▓▓▓▒░░▒▒▒▒░  ░░░░   ▒▒▒ ░▒▒▒ ▒▓▓▒ ▒▓▓▓░▒▓▓▓▒ ░▒░ ▒▒▒▒ ░▒░░▒▓▓▓▒░▓▓▓▒ ▒▓▓▒ ▒▒▒░ ▒▒▒   ▒ ░▓▓░░▓▓▓ ▓▒▒▒▒▒▒▒▓▒▒▒▒▒▒░▓▒ ▓▒▒▒ ▓▓░▒▒▒▒▒░▓▒▒▒░▓▒▒▓ ▒▓▓ ░▒▒░ ░
░░░░░ ░▒▒▒▒░░▒▓▓▓▓▓▒▒▓▓▓▓▓▓▓▓▒    ▒▓▓▓▓▓▓▓▓▒▒▓▓▓▓▓▒░░▒▒▒▒░  ░░░░  ░▒▒▒ ▒▒▒▒ ▒▓▓▒ ▒▓▓▓░▒▓▓▓▓░ ░░ ▒▓▒▒ ░░ ▒▓▓▓▓▒░▓▓▓▒ ▒▓▓▒ ▒▒▒░ ▒▒▒   ▒ ▒▓▓░░▓▓▒ ▓▒▒▒▒▒▒▒▓▒▒▒▒▒▓ ▓▒ ▓▒▒▓ ▒▓ ▓▒▒▒▒▒▓▒▒▒▒▒▒▒▓ ▒▓▓░░▒▒░ ░
░░░░░ ░▒▒▒▒░░▒▓▓▓▓▓▒▒▓▓▓▓▓▓▓▓▒    ▒▓▓▓▓▓▓▓▓▒▒▓▓▓▓▓▒░░▒▒▒▒░  ░░░░  ░▒▒▒ ▒▒▒▒ ▒▓▓▒ ▒▓▓▓░▒▓▓▓▓░ ░░ ▒▓▒▒ ░░ ▒▓▓▓▓▒░▓▓▓▒ ▒▓▓▒ ▒▒▒░ ▒▒▒   ▒ ▒▓▓░░▓▓▒ ▓▒▒▒▒▒▒▒▓▒▒▒▒▒▓ ▓▒ ▓▒▒▓ ▒▓ ▓▒▒▒▒▒▓▒▒▒▒▒▒▒▓ ▒▓▓░░▒▒░ ░
░░░░░ ░▒▒▒▒░░▒▓▓▓▓▓▒▒▓▓▓▓▓▓▓▓░    ▒▓▓▓▓▓▓▓▓▒▒▓▓▓▓▓▒░░▒▒▒▒░  ░░░░   ▒▒▒ ░▒▒▒ ▒▓▓▒ ▒▓▓▓░▒▓▓▓▒ ░▒░ ▒▒▒▒ ░▒░░▒▓▓▓▒░▓▓▓▒ ▒▓▓▒ ▒▒▒░ ▒▒▒   ▒ ░▓▓░░▓▓▓ ▓▒▒▒▒▒▒▒▓▒▒▒▒▒▒░▓▒ ▓▒▒▒ ▓▓░▒▒▒▒▒░▓▒▒▒░▓▒▒▓ ▒▓▓ ░▒▒░ ░
░░░░░ ░░▒▒▒░░░▒▓▓▓▓▒░▒▓▓▓▓▓▓▒      ▒▓▓▓▓▓▓▒░▒▓▓▓▓▒░░░▒▒▒▒░  ░░░░   ▒▒▒ ░▒▒▒ ▒▓▓▒ ▒▓▓▓░▒▓▓▓▒ ▒▒▒ ▒▒▒▒ ▒▒▒ ▒▓▓▓▒░▓▓▓▒ ▒▓▓▒ ▒▒▒░ ▒▒▒   ▒ ░▓▓░ ▓▓▓ ▓▒▒▓░▓▒▒▓░▒▒▒▓ ▓▓▓ ▒▓▓▒ ▓▓▓ ▓▒▒▓ ▓▒▒▓ ▓▒▓▒ ▓▓▒ ░▒▒░ ▒
 ░░░░  ░▒▒▒░░░▒▒▓▓▒▒░░▒▓▓▓▓▒  ░▒░░  ▒▓▓▓▓▒░░▒▒▒▒▒▒░░░░▒▒░░  ░░░░   ▒▒▒ ░▒▒▒ ▒▒▓▒ ▒▓▓▒ ░▒▓▒ ▒▒▓▒ ░▒▒░ ▒▓▒░ ▒▓▒░░▒▓▒▒ ▒▓▒░ ▒▒▒░ ▒▒▒   ▒ ░▓▓▒ ▓▓▓░▒▓▒▓ ▓▒▒▓ ▓▒▓░▒▒▒▓░▒▓▓░░▓▒▒░░▓▓▓ ▓▒▒▒ ▓▓▓░░▓▓▒ ░▓▒  ▒
 ░░░░  ░░▒▒░░ ░▒▒▒▒░  ░░▒░░  ░▒▓▒▒░  ░░░░   ░▒▒▒░░ ░░░░░░   ░░░    ▒▒▒  ▒▒▒ ░▒▒▒░ ▒▒▒  ▒▒░ ▒▓▓▒░░▒▒░░▒▓▓▒ ░▒▒  ▒▒▒ ░▒▒▒ ░▒▒▒ ░▒▒▒   ▒  ▓▓▒ ▒▓▓▒ ▓▓▓░ ▓▓▒ ░▒░░▓▒▒▒░░▓▓░▒▒▒▒▓ ░▒  ▒▓▓ ▒▓▓▓ ▒▓▓▒ ▒▓▒  ▒
  ░░░   ░░░░░   ░░░░      ░░▒▓▓▓▓▓▒▒░░      ░░░    ░░░░░     ░░    ▒▒▒░ ▒▒▒░ ▒▒▒░ ░▒▒  ░░ ▒▓▓▓▒░░▒▒░░▓▓▓▓▒ ░░  ▒▒░ ░▒▒▒ ░▒▒▒ ░▒▒▒   ▒░ ▒▓▒ ░▓▓▒ ▒▓▓▒  ▒▒   ░▓▒▒▒▒▒▒▓▓░▒▒▒▒▒▓░  ░▒▒  ▓▓▓░ ▓▓▓░ ▒▓▒ ░▒
  ░░░░    ░░░░        ░░▒▒▒▓▓▓▓▓▓▓▓▓▓▒▒▒▒░░░      ░░░              ░▒▒░ ▒▒▒▒ ░▒▒▒  ░░    ░▒▓▓▓▒░░▒▒░░▒▓▓▓▒░    ░░  ▒▒▒░ ▒▒▒░ ▒▒▒░   ▓░ ▒▓▓░ ▓▓▓░ ▓▓▓▒   ░░░▒▓▒▒▒▓░▒▓▓░░▓▒▒▒▓▒▒░░░  ▒▓▓▒ ░▓▓▒ ░▓▓░ ▒▒
    ░░     ░░░░     ░░▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒░    ░░░░               ░▒▒▒ ░▒▒▒  ▒▒▒░       ░▒▓▓▓▒ ░▒▒░ ▒▓▓▓▒░       ░▒▒▒  ▒▒▒░ ▒▒▒░   ▓▒ ░▓▓▒ ▒▓▓▒ ▒▓▓▓░  ░▒▒▓▓▒▒▒▓ ▒▓▓▒ ▓▒▒▒▓▓▒▒░  ▒▓▓▓░ ▒▓▓▒ ▒▓▓░ ▒▓
     ░░     ░▒▒▒░    ▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒░  ░▒▒▒▒░                ▒▒▒  ▒▒▒░ ░▒▒░       ░▒▓▓▓▒ ▒▒▒▒ ▒▓▓▓▒░       ░▒▒░ ░▒▒▒  ▒▒▒    ▓▒  ▓▓▓ ░▓▓▓░ ▒▓▓▒░  ░▒▒▓▓▓▒░ ▒▓▓▒ ░▒▓▓▒▒▒▒░ ░▓▓▓▒ ░▓▓▓  ▓▓▒ ░▓▓
     ░░░    ░▒▒▒▒▒░  ▒▓▓▓▓▓▓▓▓▒▒▒▒▒▓▓▓▓▓▓▓▒  ░▒▒▓▒▒░   ░░░        ░ ▒▒▒░ ▒▒▒░  ░▒░        ▒▒▒▒  ▒▒▒▒  ▒▒▒░        ░▒░  ▒▒▒░ ░▒▒▒ ░  ▓▓░ ▒▓▓░ ▓▓▓▒ ░▓▓▓░  ░░░     ░▒▓▓▒░      ░░  ░▓▓▓░ ▒▓▓▒ ▒▓▓▒ ▒▓▓
      ░░░    ▒▒▓▓▒▒  ▒▓▓▓▓▓▓▒░░░░░░▒▓▓▓▓▓▓▒  ▒▓▓▓▒▒   ░░░░        ░ ░▒▒░ ░▒▒▒   ░░     ░   ░░  ░▒▒▒▒░  ░    ░     ░░░  ▒▒▒░ ▒▒▒░ ░  ▓▓▒ ▒▓▓▒ ▒▓▓▓  ▒▓▒░      ▒▒▒▒▒▒▒▒▒▒▒▒▒▒░     ░▓▓▒ ░▓▓▓░ ▓▓▓░ ▒▓▓
░     ░░▒░   ░▒▓▓▓▒░ ░▓▓▓▓▓▒░ ░▒▒▒  ▒▓▓▓▓▓░ ░▒▓▓▓▒░  ░▒▒░░        ▒ ░▒▒▒  ░▒▒░         ░░░    ░▒▒▒▒▒▒     ░░░     ░   ░▒▒░  ▒▒▒  ▒  ▒▓▓ ░▓▓▓░ ▓▓▓▒  ▒▒░    ░▓▓▓▓▓▒▒▒▒▒▒▓▓▒▓▓▒    ░▒▒░ ▒▓▓▓ ░▓▓▓ ░▓▓▒
░░    ░▒▒▒░   ▒▓▓▓▓▒  ▒▓▓▓▒░ ▒▓▓▓▓▒  ▒▓▓▓▒  ▒▓▓▓▓▒  ░▒▒▒░    ░░   ▒  ▒▒▒░ ░▒▒░         ░▒▒▒▒▒░░▒▒▒▒▒▒░░▒▒▒▒▒░         ░▒▒░ ░▒▒▒  ▒  ▒▓▓░ ▒▓▓▒ ▒▓▓▒   ░     ▒▓▒▒▒▓░▒▓▓▒░▓▒▒▒▒▒     ░░  ▒▓▓▒ ▒▓▓▒ ▒▓▓▒
░░░    ░▒▒▒░  ░▒▓▓▓▒░ ░▒▒▒░ ░▓▓▓▓▓▓▒ ░▒▓▒░  ▒▓▓▓▓░  ▒▒▒▒░   ░░░   ▒░ ░▒▒░  ░░░          ▒▒▒▒▒▒░░░░░░░░▒▒▒▒▒▒          ░░░  ░▒▒░ ░▒  ░▓▓▒ ░▓▓▒  ▒▓▒░        ▒▓▒▒▒▓ ▓▓▓▓ ▒▒▒▒▒▒  ░░    ░▒▓▒  ▓▓▓░ ▓▓▓░
░░░░   ░▒▒▒▒░  ▒▓▓▓▒░  ░░░ ░▓▓▓▓▓▓▓▓░ ░▒░  ░▒▓▓▓▒  ░▒▓▓▒░  ░░░░   ▒░  ▒▒░   ░      ░░   ░▒▒▒▒▒░ ░░░░ ░▒▒▒▒▒░  ░░░     ░░   ░▒▒  ░▒   ▒▓▓░ ▒▓▓░ ░▒▒░    ░▒░ ░▓▒▒▓░░▓▒▒▓░░▓▒▒▓▒ ░▒▒    ░▒▒░ ▒▓▓▓ ░▓▓▓ 
 ░░░░   ▒▒▓▒▒  ░▒▓▓▓▒      ▒▓▓▓▓▓▓▓▓▒      ▒▓▓▓▓░  ▒▓▓▓▒   ░▒▒░   ▒░  ░▒░          ░▒░  ░▒▒▒▒░  ▒▒▒▒  ░▒▒▒▒░ ░▒▒░          ░▒░  ▒▒   ▒▓▓▒ ░▓▓▒  ░░░   ░▒▒▒  ▒▓▓▓ ▒▒▒▒▒▒ ▓▓▓▒ ░▒▓▒░   ░▒░  ▒▓▓▒ ▒▓▓▒ 
 ░▒▒░   ░▒▓▓▒░  ░▒▓▒▒░     ▒▓▓▓▓▓▓▓▓▒     ░▒▓▓▓▒  ░▒▓▓▒░  ░▒▒▒░   ▒▒   ░░          ░▒▒░  ░▒▒▒░ ▒▒▓▓▒▒ ░▒▒▒░  ▒▒▒░         ░░░  ░▒▒   ░▓▓▒  ▒▓▒░        ▒▓▓▒  ░▒░ ▓▒▒▒▒▓ ░▒▒  ▒▓▓▒     ░  ░▒▓▒  ▓▓▓░ 
 ░░▒▒░   ▒▓▓▓▒░  ▒▒▒▒░     ▒▓▓▓▓▓▓▓▓▒░    ░▒▒▒▒░  ▒▓▓▓▒░  ▒▒▒▒░   ▒▒░   ░          ░▒▒▒░  ░░░ ░▒▓▓▓▓▒░ ░▒░  ░▒▒▒░         ░░░  ░▒▒  ░ ▒▓▓░ ░▒▒░        ░▒▓▓▒░    ▓▒▒▒▒▓░    ▒▓▓▓░        ░▒▒░ ░▓▓▒ ░
  ░▒▒▒░  ░▒▓▓▒▒   ▒▒▒░░    ░▓▓▓▓▓▓▓▓▒     ░▒▒▒░  ▒▓▓▓▓▒  ░▒▒▒░    ░░░               ▒▒▒▒░     ░▒▓▓▓▓▒░     ░▒▒▒▒   ░░          ░▒░  ▒ ░▒▓▒  ░▒░     ░   ▒▓▓▓▒░   ▒▓▓▓▓▒░  ░▒▓▓▓▒  ░░░    ░▒▒  ▒▓▓░ ▒
  ░▒▒▒▒   ▒▓▓▓▒░  ░░░░░     ░▒▓▓▓▓▒▒      ░░░░  ░▒▓▓▓▒░ ░▒▓▓▒░     ░░          ░░░  ░▒▒▒▒░    ░▒▒▓▓▒▒░     ▒▒▒▒░  ░░░          ░░░  ▒  ▒▒▒░  ░░    ░░▒░  ▒▓▓▓▒░   ░▒▒░░  ░▒▓▓▓▓░ ░▒▒░    ░░  ░▒▓▒  ▓
   ▒▒▒▒░  ░▒▓▓▓▒░   ░░        ░░░░         ░░   ▒▒▓▓▒▒  ▒▒▓▓▒       ░          ░░░░  ░▒▒▒░     ▒▒▒▒▒▒░    ░▒▒▒░  ░▒▒░          ░░   ▓▒  ▒▒▒        ░▒▒▒░  ▒▓▓▓▒  ░▒▒▒▒░  ░▒▓▓▓░ ░▒▓▒░        ░▒▒░ ░▓
░  ░▒▓▓▒░  ▒▒▓▓▒░        ░░░░░░░░░░░░░░        ░▒▓▓▓▒  ░▒▓▓▒░  ░               ░░▒▒░  ░▒▒▒░     ░░░░     ░░▒▒░  ░▒▒▒░               ▓▒  ░▒▒░        ▒▓▓▓░ ░▒▓▓░ ░▓▓▒▓▓▒░ ░▒▓▒░ ░▒▓▓▒         ░▒▒  ▒▓
░   ▒▒▓▒▒  ░▒▒▓▒▒░       ░▒▓▓▓▓▓▓▓▓▓▒▒▒░       ░▒▒▓▒░  ▒▓▓▓▒░  ▒                ░▒▒▒░  ░░░░    ░░░░░     ░░░░  ░▒▒▒░                ▒▒░  ░░░        ░▒▓▓▓░ ░▒▒░ ▒▓▒▒▒▒▓▒ ░▒▒░  ▒▓▓▓░   ░     ░░  ░▒▓
▒░  ░▒▓▓▒░  ░▒▒▒▒░      ░▒▓▓▓▓▓▓▓▓▓▓▓▓▒░      ░▒▒▒▒░  ░▒▓▓▒▒  ░▒            ░   ░▒▒▒▒░  ░░░   ░▒▒▒▒▒▒░    ░░   ▒▒▒▒░   ░░           ▒▒▒   ░░    ░░░  ░▓▓▓▓░ ░░  ▒▓▒▒▒▒▓▒      ▒▓▓▓▒  ░░░         ░▒▒
▒▒░  ▒▓▓▓▒░  ░▒▒▒░       ▒▓▓▓▓▓▓▓▓▓▓▓▓▒░      ░░▒▒░   ▒▓▓▓▒░  ▒▒           ░░░   ░▒▒▒░       ░▒▒▒▓▓▒▒▒░       ░▒▒▒░  ░░░░           ░▒▒░        ░▒▒▒  ▒▓▓▓▒     ▒▓▒▒▒▓▓░     ▒▓▓▓▒  ░▒▒░         ░▒░
▒▒░  ░▒▓▓▒▒   ░▒▒░       ░▓▓▓▓▓▓▓▓▓▓▓▒░       ░░░░   ░▒▓▓▒░  ░▒▓            ░░░   ░▒▒▒░      ░▒▒▓▓▓▒▒▒░      ░▒▒▒░   ░▒░             ░▒░         ▒▓▓▒  ▒▓▓▓░     ▒▓▓▓▒░     ░▒▓▓▒  ░▒▒▒░         ░░ 
▒▒▒░  ▒▒▓▓▒░   ░░░        ▒▓▓▓▓▓▓▓▓▓▓▒         ░░   ░▒▒▓▒▒   ▒▒▓            ░░▒░   ░▒▒▒░      ▒▒▒▓▒▒▒▒      ░░▒▒░   ░▒▒░              ░░         ░▓▓▓▒  ▒▓▓▒       ░░      ░▒▒▒▒  ░▒▓▓▒          ░  
▒▓▒▒  ░▒▓▓▒▒    ░     ░    ▒▓▓▓▓▓▓▓▒▒               ░▒▒▒▒░  ░▒▓▓             ░▒▒░   ░▒▒░       ▒▒▒▒▒░       ░░░░   ░▒▒░               ░░     ░░   ▒▓▓▓░ ░▒▒▒  ░▒▒▒▒▒▒▒▒▒░  ░▒▒░  ░▓▓▓▒░  ░░         
▒▓▓▒░  ░▒▒▒▒░        ░░░░   ░▒▒▓▒▒▒░    ░░░        ░▒▒▒▒░  ░▒▓▓▒        ░░   ░▒▒▒░   ░░░         ░░         ░░░   ░▒▒▒░   ░░                 ░▒▒░ ░▓▓▓▓░  ░░  ░▒▓▓▓▓▓▓▓▓▒░ ░░░  ░▓▓▓▒░  ░▒░         
▒▒▓▓▒░  ▒▒▒▒░        ░▒▒▒░░          ░░▒▒░░        ░▒▒▒░   ▒▒▓▒▒        ░░░   ░▒▒▒░   ░░   ░░░░     ░░░░    ░    ░▒▒▒░   ░░░                 ░▒▒▒  ▒▓▓▓▒      ░▒▓▓▓▒▒▒▓▓▒░     ░▒▓▓▓░  ▒▒▒░         
░▒▓▓▒░  ░▒▒▒░░       ░▒▒▒▒▒▒░░░░░░░▒▒▒▒▒▒▒░       ░░▒▒░   ░▒▒▒▒░         ░░░   ░▒▒▒░       ░░▒▒▒▒▒▒▒▒▒▒░░       ░▒▒▒░   ░░░░                  ▒▓▓▒  ▒▓▓▓▒      ░▒▓▓▓▒▓▓▓░      ▒▓▓▓░  ▒▒▒▒          
 ▒▒▓▓▒░  ░░▒░░       ░▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒░░       ░░░░    ▒▒▒▒▒          ░▒▒░   ░▒▒▒░      ░░▒▒▒▒▒▒▒▒▒▒░       ░░▒▒░   ░▒▒░               ░░  ░▓▓▓▒  ▒▓▒▒░      ░▒▒▓▓▓▒░      ░▒▓▒░  ▒▓▓▒░   ░      

```

"length" is a horrible term for corresponding to height