diff options
-rw-r--r-- | maps/map1.map | bin | 84 -> 0 bytes | |||
-rw-r--r-- | maps/map1.pdf | bin | 78962 -> 0 bytes | |||
-rw-r--r-- | maps/map1.svg | 1558 | ||||
-rw-r--r-- | maps/map1.txt | 16 | ||||
-rw-r--r-- | maps/map2.map | bin | 17 -> 0 bytes | |||
-rw-r--r-- | maps/map2.txt | 5 | ||||
-rwxr-xr-x | maps/mapgen.py | 31 | ||||
-rwxr-xr-x | maps/mappdf.py | 56 | ||||
-rwxr-xr-x | maps/mapprint.py | 24 | ||||
-rw-r--r-- | maps/readme.md | 45 | ||||
-rw-r--r-- | maps/tiles/0.svg | 3 | ||||
-rw-r--r-- | maps/tiles/1.svg | 11 | ||||
-rw-r--r-- | maps/tiles/2.svg | 11 | ||||
-rw-r--r-- | maps/tiles/3.svg | 11 | ||||
-rw-r--r-- | maps/tiles/4.svg | 11 | ||||
-rw-r--r-- | maps/tiles/5.svg | 11 | ||||
-rw-r--r-- | maps/tiles/6.svg | 11 | ||||
-rw-r--r-- | maps/tiles/7.svg | 11 | ||||
-rw-r--r-- | maps/tiles/8.svg | 11 | ||||
-rw-r--r-- | maps/tiles/9.svg | 11 | ||||
-rw-r--r-- | maps/tiles/a.svg | 11 | ||||
-rw-r--r-- | maps/tiles/b.svg | 11 | ||||
-rw-r--r-- | maps/tiles/c.svg | 11 | ||||
-rw-r--r-- | maps/tiles/d.svg | 11 | ||||
-rw-r--r-- | maps/tiles/e.svg | 11 | ||||
-rw-r--r-- | maps/tiles/f.svg | 11 | ||||
-rw-r--r-- | readme.md | 49 |
27 files changed, 49 insertions, 1903 deletions
diff --git a/maps/map1.map b/maps/map1.map Binary files differdeleted file mode 100644 index 980c069..0000000 --- a/maps/map1.map +++ /dev/null diff --git a/maps/map1.pdf b/maps/map1.pdf Binary files differdeleted file mode 100644 index a87deef..0000000 --- a/maps/map1.pdf +++ /dev/null diff --git a/maps/map1.svg b/maps/map1.svg deleted file mode 100644 index 4b6e46b..0000000 --- a/maps/map1.svg +++ /dev/null @@ -1,1558 +0,0 @@ -<?xml version='1.0' encoding='ASCII' standalone='yes'?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="3590.551181102362px" viewBox="0 0 3590.551181102362 5744.881889763779" height="5744.881889763779px"> - <g> - <g transform="translate(0, 0) scale(14.960629921259843 14.960629921259843) "><g transform="translate(0, 0) scale(1 1) "><g clip-path="url(#clip0_3_49)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM15 24V18H9V24H15ZM18 15H24V9H18V15ZM15 18C15 16.3431 16.3431 15 18 15V9C13.0294 9 9 13.0294 9 18H15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_49"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(24, 0) scale(1 1) "><g clip-path="url(#clip0_3_39)"> -<rect width="24" height="24" fill="white"/> -<path d="M24 12L0 12" stroke="black" stroke-width="6" stroke-linecap="round"/> -</g> -<defs> -<clipPath id="clip0_3_39"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(48, 0) scale(1 1) "><g clip-path="url(#clip0_3_39)"> -<rect width="24" height="24" fill="white"/> -<path d="M24 12L0 12" stroke="black" stroke-width="6" stroke-linecap="round"/> -</g> -<defs> -<clipPath id="clip0_3_39"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(72, 0) scale(1 1) "><g clip-path="url(#clip0_3_42)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM15 24V18H9V24H15ZM6 9H0V15H6V9ZM15 18C15 13.0294 10.9706 9 6 9V15C7.65685 15 9 16.3431 9 18H15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_42"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(96, 0) scale(1 1) "><g clip-path="url(#clip0_3_47)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM9 0V12H15V0H9ZM12 15H24V9H12V15ZM9 12V24H15V12H9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_47"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(120, 0) scale(1 1) "><g clip-path="url(#clip0_3_39)"> -<rect width="24" height="24" fill="white"/> -<path d="M24 12L0 12" stroke="black" stroke-width="6" stroke-linecap="round"/> -</g> -<defs> -<clipPath id="clip0_3_39"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(144, 0) scale(1 1) "><g clip-path="url(#clip0_3_42)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM15 24V18H9V24H15ZM6 9H0V15H6V9ZM15 18C15 13.0294 10.9706 9 6 9V15C7.65685 15 9 16.3431 9 18H15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_42"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(168, 0) scale(1 1) "><g clip-path="url(#clip0_3_49)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM15 24V18H9V24H15ZM18 15H24V9H18V15ZM15 18C15 16.3431 16.3431 15 18 15V9C13.0294 9 9 13.0294 9 18H15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_49"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(192, 0) scale(1 1) "><g clip-path="url(#clip0_3_42)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM15 24V18H9V24H15ZM6 9H0V15H6V9ZM15 18C15 13.0294 10.9706 9 6 9V15C7.65685 15 9 16.3431 9 18H15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_42"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(216, 0) scale(1 1) "><g clip-path="url(#clip0_3_41)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 12C15 10.3431 13.6569 9 12 9C10.3431 9 9 10.3431 9 12L15 12ZM9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM9 12V24H15V12L9 12Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_41"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(0, 24) scale(1 1) "><g clip-path="url(#clip0_3_44)"> -<rect width="24" height="24" fill="white"/> -<path d="M12 24V-1.90735e-06" stroke="black" stroke-width="6" stroke-linecap="round"/> -</g> -<defs> -<clipPath id="clip0_3_44"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(24, 24) scale(1 1) "><g clip-path="url(#clip0_3_49)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM15 24V18H9V24H15ZM18 15H24V9H18V15ZM15 18C15 16.3431 16.3431 15 18 15V9C13.0294 9 9 13.0294 9 18H15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_49"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(48, 24) scale(1 1) "><g clip-path="url(#clip0_3_34)"> -<rect width="24" height="24" fill="white"/> -<path d="M12 15C13.6569 15 15 13.6569 15 12C15 10.3431 13.6569 9 12 9V15ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM12 9H0V15H12V9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_34"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(72, 24) scale(1 1) "><g clip-path="url(#clip0_3_38)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM9 0V6H15V0H9ZM18 15H24V9H18V15ZM9 6C9 10.9706 13.0294 15 18 15V9C16.3431 9 15 7.65685 15 6H9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_38"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(96, 24) scale(1 1) "><g clip-path="url(#clip0_3_46)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM15 24V12H9V24H15ZM12 15H24V9H12V15ZM12 9H0V15H12V9ZM15 12V0H9V12H15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_46"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(120, 24) scale(1 1) "><g clip-path="url(#clip0_3_34)"> -<rect width="24" height="24" fill="white"/> -<path d="M12 15C13.6569 15 15 13.6569 15 12C15 10.3431 13.6569 9 12 9V15ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM12 9H0V15H12V9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_34"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(144, 24) scale(1 1) "><g clip-path="url(#clip0_3_38)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM9 0V6H15V0H9ZM18 15H24V9H18V15ZM9 6C9 10.9706 13.0294 15 18 15V9C16.3431 9 15 7.65685 15 6H9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_38"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(168, 24) scale(1 1) "><g clip-path="url(#clip0_3_36)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM9 0V6H15V0H9ZM6 9H0V15H6V9ZM9 6C9 7.65685 7.65685 9 6 9V15C10.9706 15 15 10.9706 15 6H9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_36"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(192, 24) scale(1 1) "><g clip-path="url(#clip0_3_44)"> -<rect width="24" height="24" fill="white"/> -<path d="M12 24V-1.90735e-06" stroke="black" stroke-width="6" stroke-linecap="round"/> -</g> -<defs> -<clipPath id="clip0_3_44"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(216, 24) scale(1 1) "><g clip-path="url(#clip0_3_44)"> -<rect width="24" height="24" fill="white"/> -<path d="M12 24V-1.90735e-06" stroke="black" stroke-width="6" stroke-linecap="round"/> -</g> -<defs> -<clipPath id="clip0_3_44"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(0, 48) scale(1 1) "><g clip-path="url(#clip0_3_44)"> -<rect width="24" height="24" fill="white"/> -<path d="M12 24V-1.90735e-06" stroke="black" stroke-width="6" stroke-linecap="round"/> -</g> -<defs> -<clipPath id="clip0_3_44"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(24, 48) scale(1 1) "><g clip-path="url(#clip0_3_44)"> -<rect width="24" height="24" fill="white"/> -<path d="M12 24V-1.90735e-06" stroke="black" stroke-width="6" stroke-linecap="round"/> -</g> -<defs> -<clipPath id="clip0_3_44"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(48, 48) scale(1 1) "><g clip-path="url(#clip0_3_49)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM15 24V18H9V24H15ZM18 15H24V9H18V15ZM15 18C15 16.3431 16.3431 15 18 15V9C13.0294 9 9 13.0294 9 18H15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_49"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(72, 48) scale(1 1) "><g clip-path="url(#clip0_3_42)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM15 24V18H9V24H15ZM6 9H0V15H6V9ZM15 18C15 13.0294 10.9706 9 6 9V15C7.65685 15 9 16.3431 9 18H15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_42"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(96, 48) scale(1 1) "><g clip-path="url(#clip0_3_35)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM9 12C9 13.6569 10.3431 15 12 15C13.6569 15 15 13.6569 15 12H9ZM9 0V12H15V0H9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_35"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(120, 48) scale(1 1) "><g clip-path="url(#clip0_3_49)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM15 24V18H9V24H15ZM18 15H24V9H18V15ZM15 18C15 16.3431 16.3431 15 18 15V9C13.0294 9 9 13.0294 9 18H15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_49"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(144, 48) scale(1 1) "><g clip-path="url(#clip0_3_39)"> -<rect width="24" height="24" fill="white"/> -<path d="M24 12L0 12" stroke="black" stroke-width="6" stroke-linecap="round"/> -</g> -<defs> -<clipPath id="clip0_3_39"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(168, 48) scale(1 1) "><g clip-path="url(#clip0_3_39)"> -<rect width="24" height="24" fill="white"/> -<path d="M24 12L0 12" stroke="black" stroke-width="6" stroke-linecap="round"/> -</g> -<defs> -<clipPath id="clip0_3_39"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(192, 48) scale(1 1) "><g clip-path="url(#clip0_3_36)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM9 0V6H15V0H9ZM6 9H0V15H6V9ZM9 6C9 7.65685 7.65685 9 6 9V15C10.9706 15 15 10.9706 15 6H9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_36"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(216, 48) scale(1 1) "><g clip-path="url(#clip0_3_44)"> -<rect width="24" height="24" fill="white"/> -<path d="M12 24V-1.90735e-06" stroke="black" stroke-width="6" stroke-linecap="round"/> -</g> -<defs> -<clipPath id="clip0_3_44"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(0, 72) scale(1 1) "><g clip-path="url(#clip0_3_38)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM9 0V6H15V0H9ZM18 15H24V9H18V15ZM9 6C9 10.9706 13.0294 15 18 15V9C16.3431 9 15 7.65685 15 6H9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_38"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(24, 72) scale(1 1) "><g clip-path="url(#clip0_3_45)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM15 24V12H9V24H15ZM12 9H0V15H12V9ZM15 12V0H9V12H15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_45"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(48, 72) scale(1 1) "><g clip-path="url(#clip0_3_44)"> -<rect width="24" height="24" fill="white"/> -<path d="M12 24V-1.90735e-06" stroke="black" stroke-width="6" stroke-linecap="round"/> -</g> -<defs> -<clipPath id="clip0_3_44"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(72, 72) scale(1 1) "><g clip-path="url(#clip0_3_38)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM9 0V6H15V0H9ZM18 15H24V9H18V15ZM9 6C9 10.9706 13.0294 15 18 15V9C16.3431 9 15 7.65685 15 6H9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_38"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(96, 72) scale(1 1) "><g clip-path="url(#clip0_3_42)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM15 24V18H9V24H15ZM6 9H0V15H6V9ZM15 18C15 13.0294 10.9706 9 6 9V15C7.65685 15 9 16.3431 9 18H15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_42"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(120, 72) scale(1 1) "><g clip-path="url(#clip0_3_38)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM9 0V6H15V0H9ZM18 15H24V9H18V15ZM9 6C9 10.9706 13.0294 15 18 15V9C16.3431 9 15 7.65685 15 6H9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_38"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(144, 72) scale(1 1) "><g clip-path="url(#clip0_3_42)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM15 24V18H9V24H15ZM6 9H0V15H6V9ZM15 18C15 13.0294 10.9706 9 6 9V15C7.65685 15 9 16.3431 9 18H15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_42"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(168, 72) scale(1 1) "><g clip-path="url(#clip0_3_49)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM15 24V18H9V24H15ZM18 15H24V9H18V15ZM15 18C15 16.3431 16.3431 15 18 15V9C13.0294 9 9 13.0294 9 18H15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_49"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(192, 72) scale(1 1) "><g clip-path="url(#clip0_3_42)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM15 24V18H9V24H15ZM6 9H0V15H6V9ZM15 18C15 13.0294 10.9706 9 6 9V15C7.65685 15 9 16.3431 9 18H15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_42"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(216, 72) scale(1 1) "><g clip-path="url(#clip0_3_44)"> -<rect width="24" height="24" fill="white"/> -<path d="M12 24V-1.90735e-06" stroke="black" stroke-width="6" stroke-linecap="round"/> -</g> -<defs> -<clipPath id="clip0_3_44"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(0, 96) scale(1 1) "><g clip-path="url(#clip0_3_49)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM15 24V18H9V24H15ZM18 15H24V9H18V15ZM15 18C15 16.3431 16.3431 15 18 15V9C13.0294 9 9 13.0294 9 18H15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_49"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(24, 96) scale(1 1) "><g clip-path="url(#clip0_3_36)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM9 0V6H15V0H9ZM6 9H0V15H6V9ZM9 6C9 7.65685 7.65685 9 6 9V15C10.9706 15 15 10.9706 15 6H9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_36"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(48, 96) scale(1 1) "><g clip-path="url(#clip0_3_38)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM9 0V6H15V0H9ZM18 15H24V9H18V15ZM9 6C9 10.9706 13.0294 15 18 15V9C16.3431 9 15 7.65685 15 6H9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_38"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(72, 96) scale(1 1) "><g clip-path="url(#clip0_3_42)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM15 24V18H9V24H15ZM6 9H0V15H6V9ZM15 18C15 13.0294 10.9706 9 6 9V15C7.65685 15 9 16.3431 9 18H15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_42"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(96, 96) scale(1 1) "><g clip-path="url(#clip0_3_44)"> -<rect width="24" height="24" fill="white"/> -<path d="M12 24V-1.90735e-06" stroke="black" stroke-width="6" stroke-linecap="round"/> -</g> -<defs> -<clipPath id="clip0_3_44"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(120, 96) scale(1 1) "><g clip-path="url(#clip0_3_49)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM15 24V18H9V24H15ZM18 15H24V9H18V15ZM15 18C15 16.3431 16.3431 15 18 15V9C13.0294 9 9 13.0294 9 18H15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_49"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(144, 96) scale(1 1) "><g clip-path="url(#clip0_3_37)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM9 0V12H15V0H9ZM12 9H0V15H12V9ZM12 15H24V9H12V15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_37"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(168, 96) scale(1 1) "><g clip-path="url(#clip0_3_45)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM15 24V12H9V24H15ZM12 9H0V15H12V9ZM15 12V0H9V12H15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_45"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(192, 96) scale(1 1) "><g clip-path="url(#clip0_3_47)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM9 0V12H15V0H9ZM12 15H24V9H12V15ZM9 12V24H15V12H9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_47"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(216, 96) scale(1 1) "><g clip-path="url(#clip0_3_36)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM9 0V6H15V0H9ZM6 9H0V15H6V9ZM9 6C9 7.65685 7.65685 9 6 9V15C10.9706 15 15 10.9706 15 6H9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_36"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(0, 120) scale(1 1) "><g clip-path="url(#clip0_3_38)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM9 0V6H15V0H9ZM18 15H24V9H18V15ZM9 6C9 10.9706 13.0294 15 18 15V9C16.3431 9 15 7.65685 15 6H9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_38"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(24, 120) scale(1 1) "><g clip-path="url(#clip0_3_42)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM15 24V18H9V24H15ZM6 9H0V15H6V9ZM15 18C15 13.0294 10.9706 9 6 9V15C7.65685 15 9 16.3431 9 18H15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_42"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(48, 120) scale(1 1) "><g clip-path="url(#clip0_3_49)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM15 24V18H9V24H15ZM18 15H24V9H18V15ZM15 18C15 16.3431 16.3431 15 18 15V9C13.0294 9 9 13.0294 9 18H15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_49"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(72, 120) scale(1 1) "><g clip-path="url(#clip0_3_45)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM15 24V12H9V24H15ZM12 9H0V15H12V9ZM15 12V0H9V12H15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_45"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(96, 120) scale(1 1) "><g clip-path="url(#clip0_3_44)"> -<rect width="24" height="24" fill="white"/> -<path d="M12 24V-1.90735e-06" stroke="black" stroke-width="6" stroke-linecap="round"/> -</g> -<defs> -<clipPath id="clip0_3_44"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(120, 120) scale(1 1) "><g clip-path="url(#clip0_3_35)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM9 12C9 13.6569 10.3431 15 12 15C13.6569 15 15 13.6569 15 12H9ZM9 0V12H15V0H9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_35"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(144, 120) scale(1 1) "><g clip-path="url(#clip0_3_49)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM15 24V18H9V24H15ZM18 15H24V9H18V15ZM15 18C15 16.3431 16.3431 15 18 15V9C13.0294 9 9 13.0294 9 18H15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_49"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(168, 120) scale(1 1) "><g clip-path="url(#clip0_3_36)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM9 0V6H15V0H9ZM6 9H0V15H6V9ZM9 6C9 7.65685 7.65685 9 6 9V15C10.9706 15 15 10.9706 15 6H9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_36"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(192, 120) scale(1 1) "><g clip-path="url(#clip0_3_47)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM9 0V12H15V0H9ZM12 15H24V9H12V15ZM9 12V24H15V12H9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_47"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(216, 120) scale(1 1) "><g clip-path="url(#clip0_3_42)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM15 24V18H9V24H15ZM6 9H0V15H6V9ZM15 18C15 13.0294 10.9706 9 6 9V15C7.65685 15 9 16.3431 9 18H15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_42"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(0, 144) scale(1 1) "><g clip-path="url(#clip0_3_49)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM15 24V18H9V24H15ZM18 15H24V9H18V15ZM15 18C15 16.3431 16.3431 15 18 15V9C13.0294 9 9 13.0294 9 18H15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_49"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(24, 144) scale(1 1) "><g clip-path="url(#clip0_3_36)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM9 0V6H15V0H9ZM6 9H0V15H6V9ZM9 6C9 7.65685 7.65685 9 6 9V15C10.9706 15 15 10.9706 15 6H9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_36"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(48, 144) scale(1 1) "><g clip-path="url(#clip0_3_44)"> -<rect width="24" height="24" fill="white"/> -<path d="M12 24V-1.90735e-06" stroke="black" stroke-width="6" stroke-linecap="round"/> -</g> -<defs> -<clipPath id="clip0_3_44"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(72, 144) scale(1 1) "><g clip-path="url(#clip0_3_44)"> -<rect width="24" height="24" fill="white"/> -<path d="M12 24V-1.90735e-06" stroke="black" stroke-width="6" stroke-linecap="round"/> -</g> -<defs> -<clipPath id="clip0_3_44"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(96, 144) scale(1 1) "><g clip-path="url(#clip0_3_47)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM9 0V12H15V0H9ZM12 15H24V9H12V15ZM9 12V24H15V12H9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_47"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(120, 144) scale(1 1) "><g clip-path="url(#clip0_3_42)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM15 24V18H9V24H15ZM6 9H0V15H6V9ZM15 18C15 13.0294 10.9706 9 6 9V15C7.65685 15 9 16.3431 9 18H15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_42"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(144, 144) scale(1 1) "><g clip-path="url(#clip0_3_44)"> -<rect width="24" height="24" fill="white"/> -<path d="M12 24V-1.90735e-06" stroke="black" stroke-width="6" stroke-linecap="round"/> -</g> -<defs> -<clipPath id="clip0_3_44"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(168, 144) scale(1 1) "><g clip-path="url(#clip0_3_49)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM15 24V18H9V24H15ZM18 15H24V9H18V15ZM15 18C15 16.3431 16.3431 15 18 15V9C13.0294 9 9 13.0294 9 18H15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_49"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(192, 144) scale(1 1) "><g clip-path="url(#clip0_3_36)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM9 0V6H15V0H9ZM6 9H0V15H6V9ZM9 6C9 7.65685 7.65685 9 6 9V15C10.9706 15 15 10.9706 15 6H9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_36"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(216, 144) scale(1 1) "><g clip-path="url(#clip0_3_44)"> -<rect width="24" height="24" fill="white"/> -<path d="M12 24V-1.90735e-06" stroke="black" stroke-width="6" stroke-linecap="round"/> -</g> -<defs> -<clipPath id="clip0_3_44"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(0, 168) scale(1 1) "><g clip-path="url(#clip0_3_35)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM9 12C9 13.6569 10.3431 15 12 15C13.6569 15 15 13.6569 15 12H9ZM9 0V12H15V0H9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_35"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(24, 168) scale(1 1) "><g clip-path="url(#clip0_3_49)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM15 24V18H9V24H15ZM18 15H24V9H18V15ZM15 18C15 16.3431 16.3431 15 18 15V9C13.0294 9 9 13.0294 9 18H15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_49"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(48, 168) scale(1 1) "><g clip-path="url(#clip0_3_36)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM9 0V6H15V0H9ZM6 9H0V15H6V9ZM9 6C9 7.65685 7.65685 9 6 9V15C10.9706 15 15 10.9706 15 6H9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_36"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(72, 168) scale(1 1) "><g clip-path="url(#clip0_3_44)"> -<rect width="24" height="24" fill="white"/> -<path d="M12 24V-1.90735e-06" stroke="black" stroke-width="6" stroke-linecap="round"/> -</g> -<defs> -<clipPath id="clip0_3_44"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(96, 168) scale(1 1) "><g clip-path="url(#clip0_3_35)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM9 12C9 13.6569 10.3431 15 12 15C13.6569 15 15 13.6569 15 12H9ZM9 0V12H15V0H9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_35"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(120, 168) scale(1 1) "><g clip-path="url(#clip0_3_38)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM9 0V6H15V0H9ZM18 15H24V9H18V15ZM9 6C9 10.9706 13.0294 15 18 15V9C16.3431 9 15 7.65685 15 6H9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_38"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(144, 168) scale(1 1) "><g clip-path="url(#clip0_3_36)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM9 0V6H15V0H9ZM6 9H0V15H6V9ZM9 6C9 7.65685 7.65685 9 6 9V15C10.9706 15 15 10.9706 15 6H9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_36"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(168, 168) scale(1 1) "><g clip-path="url(#clip0_3_38)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM9 0V6H15V0H9ZM18 15H24V9H18V15ZM9 6C9 10.9706 13.0294 15 18 15V9C16.3431 9 15 7.65685 15 6H9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_38"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(192, 168) scale(1 1) "><g clip-path="url(#clip0_3_34)"> -<rect width="24" height="24" fill="white"/> -<path d="M12 15C13.6569 15 15 13.6569 15 12C15 10.3431 13.6569 9 12 9V15ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM12 9H0V15H12V9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_34"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(216, 168) scale(1 1) "><g clip-path="url(#clip0_3_44)"> -<rect width="24" height="24" fill="white"/> -<path d="M12 24V-1.90735e-06" stroke="black" stroke-width="6" stroke-linecap="round"/> -</g> -<defs> -<clipPath id="clip0_3_44"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(0, 192) scale(1 1) "><g clip-path="url(#clip0_3_49)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM15 24V18H9V24H15ZM18 15H24V9H18V15ZM15 18C15 16.3431 16.3431 15 18 15V9C13.0294 9 9 13.0294 9 18H15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_49"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(24, 192) scale(1 1) "><g clip-path="url(#clip0_3_36)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM9 0V6H15V0H9ZM6 9H0V15H6V9ZM9 6C9 7.65685 7.65685 9 6 9V15C10.9706 15 15 10.9706 15 6H9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_36"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(48, 192) scale(1 1) "><g clip-path="url(#clip0_3_41)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 12C15 10.3431 13.6569 9 12 9C10.3431 9 9 10.3431 9 12L15 12ZM9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM9 12V24H15V12L9 12Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_41"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(72, 192) scale(1 1) "><g clip-path="url(#clip0_3_44)"> -<rect width="24" height="24" fill="white"/> -<path d="M12 24V-1.90735e-06" stroke="black" stroke-width="6" stroke-linecap="round"/> -</g> -<defs> -<clipPath id="clip0_3_44"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(96, 192) scale(1 1) "><g clip-path="url(#clip0_3_41)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 12C15 10.3431 13.6569 9 12 9C10.3431 9 9 10.3431 9 12L15 12ZM9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM9 12V24H15V12L9 12Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_41"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(120, 192) scale(1 1) "><g clip-path="url(#clip0_3_49)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM15 24V18H9V24H15ZM18 15H24V9H18V15ZM15 18C15 16.3431 16.3431 15 18 15V9C13.0294 9 9 13.0294 9 18H15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_49"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(144, 192) scale(1 1) "><g clip-path="url(#clip0_3_39)"> -<rect width="24" height="24" fill="white"/> -<path d="M24 12L0 12" stroke="black" stroke-width="6" stroke-linecap="round"/> -</g> -<defs> -<clipPath id="clip0_3_39"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(168, 192) scale(1 1) "><g clip-path="url(#clip0_3_39)"> -<rect width="24" height="24" fill="white"/> -<path d="M24 12L0 12" stroke="black" stroke-width="6" stroke-linecap="round"/> -</g> -<defs> -<clipPath id="clip0_3_39"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(192, 192) scale(1 1) "><g clip-path="url(#clip0_3_42)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM15 24V18H9V24H15ZM6 9H0V15H6V9ZM15 18C15 13.0294 10.9706 9 6 9V15C7.65685 15 9 16.3431 9 18H15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_42"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(216, 192) scale(1 1) "><g clip-path="url(#clip0_3_44)"> -<rect width="24" height="24" fill="white"/> -<path d="M12 24V-1.90735e-06" stroke="black" stroke-width="6" stroke-linecap="round"/> -</g> -<defs> -<clipPath id="clip0_3_44"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(0, 216) scale(1 1) "><g clip-path="url(#clip0_3_38)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM9 0V6H15V0H9ZM18 15H24V9H18V15ZM9 6C9 10.9706 13.0294 15 18 15V9C16.3431 9 15 7.65685 15 6H9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_38"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(24, 216) scale(1 1) "><g clip-path="url(#clip0_3_48)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM15 24V12H9V24H15ZM12 15H24V9H12V15ZM12 9H0V15H12V9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_48"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(48, 216) scale(1 1) "><g clip-path="url(#clip0_3_36)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM9 0V6H15V0H9ZM6 9H0V15H6V9ZM9 6C9 7.65685 7.65685 9 6 9V15C10.9706 15 15 10.9706 15 6H9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_36"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(72, 216) scale(1 1) "><g clip-path="url(#clip0_3_38)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM9 0V6H15V0H9ZM18 15H24V9H18V15ZM9 6C9 10.9706 13.0294 15 18 15V9C16.3431 9 15 7.65685 15 6H9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_38"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(96, 216) scale(1 1) "><g clip-path="url(#clip0_3_37)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM9 0V12H15V0H9ZM12 9H0V15H12V9ZM12 15H24V9H12V15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_37"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(120, 216) scale(1 1) "><g clip-path="url(#clip0_3_36)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM9 0V6H15V0H9ZM6 9H0V15H6V9ZM9 6C9 7.65685 7.65685 9 6 9V15C10.9706 15 15 10.9706 15 6H9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_36"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(144, 216) scale(1 1) "><g clip-path="url(#clip0_3_49)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM15 24V18H9V24H15ZM18 15H24V9H18V15ZM15 18C15 16.3431 16.3431 15 18 15V9C13.0294 9 9 13.0294 9 18H15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_49"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(168, 216) scale(1 1) "><g clip-path="url(#clip0_3_39)"> -<rect width="24" height="24" fill="white"/> -<path d="M24 12L0 12" stroke="black" stroke-width="6" stroke-linecap="round"/> -</g> -<defs> -<clipPath id="clip0_3_39"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(192, 216) scale(1 1) "><g clip-path="url(#clip0_3_36)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM9 0V6H15V0H9ZM6 9H0V15H6V9ZM9 6C9 7.65685 7.65685 9 6 9V15C10.9706 15 15 10.9706 15 6H9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_36"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(216, 216) scale(1 1) "><g clip-path="url(#clip0_3_35)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM9 12C9 13.6569 10.3431 15 12 15C13.6569 15 15 13.6569 15 12H9ZM9 0V12H15V0H9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_35"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(0, 240) scale(1 1) "><g clip-path="url(#clip0_3_49)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM15 24V18H9V24H15ZM18 15H24V9H18V15ZM15 18C15 16.3431 16.3431 15 18 15V9C13.0294 9 9 13.0294 9 18H15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_49"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(24, 240) scale(1 1) "><g clip-path="url(#clip0_3_46)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM15 24V12H9V24H15ZM12 15H24V9H12V15ZM12 9H0V15H12V9ZM15 12V0H9V12H15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_46"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(48, 240) scale(1 1) "><g clip-path="url(#clip0_3_48)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM15 24V12H9V24H15ZM12 15H24V9H12V15ZM12 9H0V15H12V9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_48"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(72, 240) scale(1 1) "><g clip-path="url(#clip0_3_48)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM15 24V12H9V24H15ZM12 15H24V9H12V15ZM12 9H0V15H12V9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_48"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(96, 240) scale(1 1) "><g clip-path="url(#clip0_3_48)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM15 24V12H9V24H15ZM12 15H24V9H12V15ZM12 9H0V15H12V9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_48"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(120, 240) scale(1 1) "><g clip-path="url(#clip0_3_48)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM15 24V12H9V24H15ZM12 15H24V9H12V15ZM12 9H0V15H12V9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_48"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(144, 240) scale(1 1) "><g clip-path="url(#clip0_3_46)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM15 24V12H9V24H15ZM12 15H24V9H12V15ZM12 9H0V15H12V9ZM15 12V0H9V12H15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_46"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(168, 240) scale(1 1) "><g clip-path="url(#clip0_3_42)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM15 24V18H9V24H15ZM6 9H0V15H6V9ZM15 18C15 13.0294 10.9706 9 6 9V15C7.65685 15 9 16.3431 9 18H15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_42"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(192, 240) scale(1 1) "><g clip-path="url(#clip0_3_41)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 12C15 10.3431 13.6569 9 12 9C10.3431 9 9 10.3431 9 12L15 12ZM9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM9 12V24H15V12L9 12Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_41"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(216, 240) scale(1 1) "><g clip-path="url(#clip0_3_41)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 12C15 10.3431 13.6569 9 12 9C10.3431 9 9 10.3431 9 12L15 12ZM9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM9 12V24H15V12L9 12Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_41"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(0, 264) scale(1 1) "><g clip-path="url(#clip0_3_47)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM9 0V12H15V0H9ZM12 15H24V9H12V15ZM9 12V24H15V12H9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_47"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(24, 264) scale(1 1) "><g clip-path="url(#clip0_3_46)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM15 24V12H9V24H15ZM12 15H24V9H12V15ZM12 9H0V15H12V9ZM15 12V0H9V12H15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_46"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(48, 264) scale(1 1) "><g clip-path="url(#clip0_3_46)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM15 24V12H9V24H15ZM12 15H24V9H12V15ZM12 9H0V15H12V9ZM15 12V0H9V12H15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_46"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(72, 264) scale(1 1) "><g clip-path="url(#clip0_3_46)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM15 24V12H9V24H15ZM12 15H24V9H12V15ZM12 9H0V15H12V9ZM15 12V0H9V12H15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_46"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(96, 264) scale(1 1) "><g clip-path="url(#clip0_3_37)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM9 0V12H15V0H9ZM12 9H0V15H12V9ZM12 15H24V9H12V15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_37"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(120, 264) scale(1 1) "><g clip-path="url(#clip0_3_37)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM9 0V12H15V0H9ZM12 9H0V15H12V9ZM12 15H24V9H12V15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_37"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(144, 264) scale(1 1) "><g clip-path="url(#clip0_3_37)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM9 0V12H15V0H9ZM12 9H0V15H12V9ZM12 15H24V9H12V15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_37"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(168, 264) scale(1 1) "><g clip-path="url(#clip0_3_45)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM15 24V12H9V24H15ZM12 9H0V15H12V9ZM15 12V0H9V12H15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_45"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(192, 264) scale(1 1) "><g clip-path="url(#clip0_3_44)"> -<rect width="24" height="24" fill="white"/> -<path d="M12 24V-1.90735e-06" stroke="black" stroke-width="6" stroke-linecap="round"/> -</g> -<defs> -<clipPath id="clip0_3_44"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(216, 264) scale(1 1) "><g clip-path="url(#clip0_3_44)"> -<rect width="24" height="24" fill="white"/> -<path d="M12 24V-1.90735e-06" stroke="black" stroke-width="6" stroke-linecap="round"/> -</g> -<defs> -<clipPath id="clip0_3_44"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(0, 288) scale(1 1) "><g clip-path="url(#clip0_3_47)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM9 0V12H15V0H9ZM12 15H24V9H12V15ZM9 12V24H15V12H9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_47"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(24, 288) scale(1 1) "><g clip-path="url(#clip0_3_46)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM15 24V12H9V24H15ZM12 15H24V9H12V15ZM12 9H0V15H12V9ZM15 12V0H9V12H15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_46"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(48, 288) scale(1 1) "><g clip-path="url(#clip0_3_46)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM15 24V12H9V24H15ZM12 15H24V9H12V15ZM12 9H0V15H12V9ZM15 12V0H9V12H15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_46"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(72, 288) scale(1 1) "><g clip-path="url(#clip0_3_36)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM9 0V6H15V0H9ZM6 9H0V15H6V9ZM9 6C9 7.65685 7.65685 9 6 9V15C10.9706 15 15 10.9706 15 6H9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_36"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(96, 288) scale(1 1) "><rect width="24" height="24" fill="white"/> -</g> - <g transform="translate(120, 288) scale(1 1) "><rect width="24" height="24" fill="white"/> -</g> - <g transform="translate(144, 288) scale(1 1) "><rect width="24" height="24" fill="white"/> -</g> - <g transform="translate(168, 288) scale(1 1) "><g clip-path="url(#clip0_3_44)"> -<rect width="24" height="24" fill="white"/> -<path d="M12 24V-1.90735e-06" stroke="black" stroke-width="6" stroke-linecap="round"/> -</g> -<defs> -<clipPath id="clip0_3_44"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(192, 288) scale(1 1) "><g clip-path="url(#clip0_3_44)"> -<rect width="24" height="24" fill="white"/> -<path d="M12 24V-1.90735e-06" stroke="black" stroke-width="6" stroke-linecap="round"/> -</g> -<defs> -<clipPath id="clip0_3_44"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(216, 288) scale(1 1) "><g clip-path="url(#clip0_3_44)"> -<rect width="24" height="24" fill="white"/> -<path d="M12 24V-1.90735e-06" stroke="black" stroke-width="6" stroke-linecap="round"/> -</g> -<defs> -<clipPath id="clip0_3_44"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(0, 312) scale(1 1) "><g clip-path="url(#clip0_3_47)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM9 0V12H15V0H9ZM12 15H24V9H12V15ZM9 12V24H15V12H9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_47"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(24, 312) scale(1 1) "><g clip-path="url(#clip0_3_46)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM15 24V12H9V24H15ZM12 15H24V9H12V15ZM12 9H0V15H12V9ZM15 12V0H9V12H15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_46"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(48, 312) scale(1 1) "><g clip-path="url(#clip0_3_46)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM15 24V12H9V24H15ZM12 15H24V9H12V15ZM12 9H0V15H12V9ZM15 12V0H9V12H15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_46"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(72, 312) scale(1 1) "><g clip-path="url(#clip0_3_42)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM15 24V18H9V24H15ZM6 9H0V15H6V9ZM15 18C15 13.0294 10.9706 9 6 9V15C7.65685 15 9 16.3431 9 18H15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_42"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(96, 312) scale(1 1) "><rect width="24" height="24" fill="white"/> -</g> - <g transform="translate(120, 312) scale(1 1) "><rect width="24" height="24" fill="white"/> -</g> - <g transform="translate(144, 312) scale(1 1) "><rect width="24" height="24" fill="white"/> -</g> - <g transform="translate(168, 312) scale(1 1) "><g clip-path="url(#clip0_3_47)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM9 0V12H15V0H9ZM12 15H24V9H12V15ZM9 12V24H15V12H9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_47"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(192, 312) scale(1 1) "><g clip-path="url(#clip0_3_46)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM15 24V12H9V24H15ZM12 15H24V9H12V15ZM12 9H0V15H12V9ZM15 12V0H9V12H15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_46"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(216, 312) scale(1 1) "><g clip-path="url(#clip0_3_45)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM15 24V12H9V24H15ZM12 9H0V15H12V9ZM15 12V0H9V12H15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_45"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(0, 336) scale(1 1) "><g clip-path="url(#clip0_3_47)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM9 0V12H15V0H9ZM12 15H24V9H12V15ZM9 12V24H15V12H9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_47"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(24, 336) scale(1 1) "><g clip-path="url(#clip0_3_46)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM15 24V12H9V24H15ZM12 15H24V9H12V15ZM12 9H0V15H12V9ZM15 12V0H9V12H15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_46"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(48, 336) scale(1 1) "><g clip-path="url(#clip0_3_46)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM15 24V12H9V24H15ZM12 15H24V9H12V15ZM12 9H0V15H12V9ZM15 12V0H9V12H15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_46"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(72, 336) scale(1 1) "><g clip-path="url(#clip0_3_46)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM15 24V12H9V24H15ZM12 15H24V9H12V15ZM12 9H0V15H12V9ZM15 12V0H9V12H15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_46"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(96, 336) scale(1 1) "><g clip-path="url(#clip0_3_48)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM15 24V12H9V24H15ZM12 15H24V9H12V15ZM12 9H0V15H12V9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_48"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(120, 336) scale(1 1) "><g clip-path="url(#clip0_3_48)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM15 24V12H9V24H15ZM12 15H24V9H12V15ZM12 9H0V15H12V9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_48"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(144, 336) scale(1 1) "><g clip-path="url(#clip0_3_48)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM15 24V12H9V24H15ZM12 15H24V9H12V15ZM12 9H0V15H12V9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_48"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(168, 336) scale(1 1) "><g clip-path="url(#clip0_3_45)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM15 24V12H9V24H15ZM12 9H0V15H12V9ZM15 12V0H9V12H15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_45"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(192, 336) scale(1 1) "><g clip-path="url(#clip0_3_44)"> -<rect width="24" height="24" fill="white"/> -<path d="M12 24V-1.90735e-06" stroke="black" stroke-width="6" stroke-linecap="round"/> -</g> -<defs> -<clipPath id="clip0_3_44"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(216, 336) scale(1 1) "><g clip-path="url(#clip0_3_44)"> -<rect width="24" height="24" fill="white"/> -<path d="M12 24V-1.90735e-06" stroke="black" stroke-width="6" stroke-linecap="round"/> -</g> -<defs> -<clipPath id="clip0_3_44"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(0, 360) scale(1 1) "><g clip-path="url(#clip0_3_38)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM9 0V6H15V0H9ZM18 15H24V9H18V15ZM9 6C9 10.9706 13.0294 15 18 15V9C16.3431 9 15 7.65685 15 6H9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_38"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(24, 360) scale(1 1) "><g clip-path="url(#clip0_3_37)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM9 0V12H15V0H9ZM12 9H0V15H12V9ZM12 15H24V9H12V15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_37"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(48, 360) scale(1 1) "><g clip-path="url(#clip0_3_37)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM9 0V12H15V0H9ZM12 9H0V15H12V9ZM12 15H24V9H12V15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_37"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(72, 360) scale(1 1) "><g clip-path="url(#clip0_3_37)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM9 0V12H15V0H9ZM12 9H0V15H12V9ZM12 15H24V9H12V15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_37"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(96, 360) scale(1 1) "><g clip-path="url(#clip0_3_37)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM9 0V12H15V0H9ZM12 9H0V15H12V9ZM12 15H24V9H12V15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_37"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(120, 360) scale(1 1) "><g clip-path="url(#clip0_3_37)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM9 0V12H15V0H9ZM12 9H0V15H12V9ZM12 15H24V9H12V15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_37"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(144, 360) scale(1 1) "><g clip-path="url(#clip0_3_37)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM9 0V12H15V0H9ZM12 9H0V15H12V9ZM12 15H24V9H12V15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_37"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(168, 360) scale(1 1) "><g clip-path="url(#clip0_3_36)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM9 0V6H15V0H9ZM6 9H0V15H6V9ZM9 6C9 7.65685 7.65685 9 6 9V15C10.9706 15 15 10.9706 15 6H9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_36"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(192, 360) scale(1 1) "><g clip-path="url(#clip0_3_35)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM9 12C9 13.6569 10.3431 15 12 15C13.6569 15 15 13.6569 15 12H9ZM9 0V12H15V0H9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_35"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> - <g transform="translate(216, 360) scale(1 1) "><g clip-path="url(#clip0_3_35)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM9 12C9 13.6569 10.3431 15 12 15C13.6569 15 15 13.6569 15 12H9ZM9 0V12H15V0H9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_35"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</g> -</g> - </g> -</svg> diff --git a/maps/map1.txt b/maps/map1.txt deleted file mode 100644 index 37ab452..0000000 --- a/maps/map1.txt +++ /dev/null @@ -1,16 +0,0 @@ -c559e59c98 -ac16f163aa -aac92c553a -6ba6969c9a -c369ac7be3 -69cba2c3e9 -c3aae9ac3a -2c3a26361a -c38a8c559a -6d3673c532 -cfddddf988 -efff777baa -eff3000aaa -eff9000efb -efffdddbaa -6777777322 diff --git a/maps/map2.map b/maps/map2.map Binary files differdeleted file mode 100644 index c7777c9..0000000 --- a/maps/map2.map +++ /dev/null diff --git a/maps/map2.txt b/maps/map2.txt deleted file mode 100644 index 6465c5a..0000000 --- a/maps/map2.txt +++ /dev/null @@ -1,5 +0,0 @@ -c5559 -ac59a -aa8aa -a63aa -6553a diff --git a/maps/mapgen.py b/maps/mapgen.py deleted file mode 100755 index a7e6817..0000000 --- a/maps/mapgen.py +++ /dev/null @@ -1,31 +0,0 @@ -import sys -from struct import pack - -def mapgen(filename): - file = open(filename, 'r') - target = open(filename + '.map', 'wb') - contents = file.read() - - lines = contents.strip().split("\n") - target.write(pack('>H', len(lines[0]))) - target.write(pack('>H', len(lines))) - - first_nibble = False - temp_byte = 0 - for char in contents.replace('\n', '').strip(): - first_nibble = not first_nibble - num = int(char, 16) - temp_byte |= num << (4 * first_nibble) - if not first_nibble: - target.write(pack('B', temp_byte)) - temp_byte = 0 - if first_nibble: target.write(pack('B', temp_byte)) - - file.close() - target.close() - -if __name__ == "__main__": - if len(sys.argv) > 1: - mapgen(sys.argv[1]) - else: - exit(1) diff --git a/maps/mappdf.py b/maps/mappdf.py deleted file mode 100755 index 4f4a45d..0000000 --- a/maps/mappdf.py +++ /dev/null @@ -1,56 +0,0 @@ -import sys -from struct import unpack -import svgutils.transform as sg -import svgutils.compose as sc - -SVG_TILE_SIZE = 24 -DPI = 96 -INCH = 2.54 -ROBOT_SIZE = 9.5 -ROBOT_SIZE_UNIT = "cm" - -RESIZE_FACTOR = ROBOT_SIZE / (SVG_TILE_SIZE / DPI * INCH) - -def read_tiles(): - tiles = [] - for x in range(16): - tile = open(f"./tiles/{x:x}.svg", "r") - tiles.append(tile.read()) - tile.close() - return tiles - -def mappdf(filename): - file = open(filename, 'rb') - contents = file.read() - file.close() - tiles = read_tiles() - - width, height = unpack('>HH', contents[0:4]) - - target = sg.SVGFigure() - target.set_size((f"{width * SVG_TILE_SIZE}px", f"{height * SVG_TILE_SIZE}px")) - - for y in range(height): - for x in range(width): - nibble = x + y * width - byte = int(nibble / 2) - shift = byte * 2 - nibble + 1 - num = (contents[4 + byte] & (0xf << 4 * shift)) >> 4 * shift - - tile = sg.fromstring(tiles[num]).getroot() - tile.moveto(x * SVG_TILE_SIZE, y * SVG_TILE_SIZE) - target.append(tile) - - target.save(f"{filename}.svg") - target_scaled = sc.SVG(f"{filename}.svg") - target_scaled.scale(RESIZE_FACTOR) - target = sc.Figure(width * SVG_TILE_SIZE * RESIZE_FACTOR, height * SVG_TILE_SIZE * RESIZE_FACTOR, target_scaled) - target.save(f"{filename}.svg") - print(f"inkscape --export-pdf={filename}.pdf {filename}.svg") - - -if __name__ == "__main__": - if len(sys.argv) > 1: - mappdf(sys.argv[1]) - else: - exit(1) diff --git a/maps/mapprint.py b/maps/mapprint.py deleted file mode 100755 index 4b56db6..0000000 --- a/maps/mapprint.py +++ /dev/null @@ -1,24 +0,0 @@ -import sys -from struct import unpack - -def mapprint(filename): - file = open(filename, 'rb') - contents = file.read() - file.close() - - width, height = unpack('>HH', contents[0:4]) - - for y in range(height): - for x in range(width): - nibble = x + y * width - byte = int(nibble / 2) - shift = byte * 2 - nibble + 1 - num = (contents[4 + byte] & (0xf << 4 * shift)) >> 4 * shift - print(" ─│┘──└┴│┐│┤┌┬├┼"[num], end='') - print("\n", end='') - -if __name__ == "__main__": - if len(sys.argv) > 1: - mapprint(sys.argv[1]) - else: - exit(1) diff --git a/maps/readme.md b/maps/readme.md deleted file mode 100644 index 2629b4a..0000000 --- a/maps/readme.md +++ /dev/null @@ -1,45 +0,0 @@ -# maps - -this directory contains map files. a .map file contains a binary representation -of a maze, and can be sent to the robot over the wireless serial connection. -map files have the following structure: first the width of the map as an -unsigned 16-bit integer, then the height of the map also as an unsigned 16-bit -integer. the rest of the file is the map content in reading order, where each -byte contains two (nibble) map tiles. tiles are stored in the most significant -portion of the byte first, so the last byte of a map file containing an uneven -amount of tiles would look like `0x?0`. - -example tile: - -``` -┌───────┐ ┌───┬───┐ -│ b │ │ │ │ -│ a c │ │ └───┤ -│ d │ │ │ -└───────┘ └───────┘ - 0bDCBA 0b0110 (0x6) -``` - -garbage python scripts for generating and viewing these maps are included. -[this](https://www.figma.com/file/GUKV1am9sqWpPoes9h8Ram/robotrun?node-id=0%3A1) -figma file can be used to create a map, and then read out the hexadecimal -notation for the map. google drive ocr works well enough to read out the red -characters if you turn off path visibility in the figma document. figma also -allows pdf export so you can print the maps, but the tiles are 24x24 pixels, -not robot-sized (one tile is supposed to have about the same width and height -as the robot's diameter). - -## exporting maps as pdf or svg - -```sh -# generate svg file -python3 mappdf.py [file] - -# render svg as pdf -inkscape --export-pdf=map.pdf [file].svg - -# (optional) convert to tiles for printing at home -# loop up map size using pdfinfo on map.pdf file -pdfposter map.pdf tiles.pdf -m a4 -p [map size] -``` - diff --git a/maps/tiles/0.svg b/maps/tiles/0.svg deleted file mode 100644 index fcdfaaa..0000000 --- a/maps/tiles/0.svg +++ /dev/null @@ -1,3 +0,0 @@ -<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> -<rect width="24" height="24" fill="white"/> -</svg> diff --git a/maps/tiles/1.svg b/maps/tiles/1.svg deleted file mode 100644 index 171df35..0000000 --- a/maps/tiles/1.svg +++ /dev/null @@ -1,11 +0,0 @@ -<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> -<g clip-path="url(#clip0_3_34)"> -<rect width="24" height="24" fill="white"/> -<path d="M12 15C13.6569 15 15 13.6569 15 12C15 10.3431 13.6569 9 12 9V15ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM12 9H0V15H12V9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_34"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</svg> diff --git a/maps/tiles/2.svg b/maps/tiles/2.svg deleted file mode 100644 index e3eb06b..0000000 --- a/maps/tiles/2.svg +++ /dev/null @@ -1,11 +0,0 @@ -<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> -<g clip-path="url(#clip0_3_35)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM9 12C9 13.6569 10.3431 15 12 15C13.6569 15 15 13.6569 15 12H9ZM9 0V12H15V0H9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_35"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</svg> diff --git a/maps/tiles/3.svg b/maps/tiles/3.svg deleted file mode 100644 index 1e0dbad..0000000 --- a/maps/tiles/3.svg +++ /dev/null @@ -1,11 +0,0 @@ -<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> -<g clip-path="url(#clip0_3_36)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM9 0V6H15V0H9ZM6 9H0V15H6V9ZM9 6C9 7.65685 7.65685 9 6 9V15C10.9706 15 15 10.9706 15 6H9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_36"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</svg> diff --git a/maps/tiles/4.svg b/maps/tiles/4.svg deleted file mode 100644 index a85e022..0000000 --- a/maps/tiles/4.svg +++ /dev/null @@ -1,11 +0,0 @@ -<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> -<g clip-path="url(#clip0_3_40)"> -<rect width="24" height="24" fill="white"/> -<path d="M12 9C10.3431 9 9 10.3431 9 12C9 13.6569 10.3431 15 12 15V9ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM12 15H24V9H12V15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_40"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</svg> diff --git a/maps/tiles/5.svg b/maps/tiles/5.svg deleted file mode 100644 index fdbcd25..0000000 --- a/maps/tiles/5.svg +++ /dev/null @@ -1,11 +0,0 @@ -<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> -<g clip-path="url(#clip0_3_39)"> -<rect width="24" height="24" fill="white"/> -<path d="M24 12L0 12" stroke="black" stroke-width="6" stroke-linecap="round"/> -</g> -<defs> -<clipPath id="clip0_3_39"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</svg> diff --git a/maps/tiles/6.svg b/maps/tiles/6.svg deleted file mode 100644 index 181d7e2..0000000 --- a/maps/tiles/6.svg +++ /dev/null @@ -1,11 +0,0 @@ -<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> -<g clip-path="url(#clip0_3_38)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM9 0V6H15V0H9ZM18 15H24V9H18V15ZM9 6C9 10.9706 13.0294 15 18 15V9C16.3431 9 15 7.65685 15 6H9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_38"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</svg> diff --git a/maps/tiles/7.svg b/maps/tiles/7.svg deleted file mode 100644 index ca8166b..0000000 --- a/maps/tiles/7.svg +++ /dev/null @@ -1,11 +0,0 @@ -<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> -<g clip-path="url(#clip0_3_37)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM9 0V12H15V0H9ZM12 9H0V15H12V9ZM12 15H24V9H12V15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_37"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</svg> diff --git a/maps/tiles/8.svg b/maps/tiles/8.svg deleted file mode 100644 index 9da7e0d..0000000 --- a/maps/tiles/8.svg +++ /dev/null @@ -1,11 +0,0 @@ -<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> -<g clip-path="url(#clip0_3_41)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 12C15 10.3431 13.6569 9 12 9C10.3431 9 9 10.3431 9 12L15 12ZM9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM9 12V24H15V12L9 12Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_41"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</svg> diff --git a/maps/tiles/9.svg b/maps/tiles/9.svg deleted file mode 100644 index d499439..0000000 --- a/maps/tiles/9.svg +++ /dev/null @@ -1,11 +0,0 @@ -<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> -<g clip-path="url(#clip0_3_42)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM15 24V18H9V24H15ZM6 9H0V15H6V9ZM15 18C15 13.0294 10.9706 9 6 9V15C7.65685 15 9 16.3431 9 18H15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_42"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</svg> diff --git a/maps/tiles/a.svg b/maps/tiles/a.svg deleted file mode 100644 index e787a43..0000000 --- a/maps/tiles/a.svg +++ /dev/null @@ -1,11 +0,0 @@ -<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> -<g clip-path="url(#clip0_3_44)"> -<rect width="24" height="24" fill="white"/> -<path d="M12 24V-1.90735e-06" stroke="black" stroke-width="6" stroke-linecap="round"/> -</g> -<defs> -<clipPath id="clip0_3_44"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</svg> diff --git a/maps/tiles/b.svg b/maps/tiles/b.svg deleted file mode 100644 index 9cd38e6..0000000 --- a/maps/tiles/b.svg +++ /dev/null @@ -1,11 +0,0 @@ -<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> -<g clip-path="url(#clip0_3_45)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM15 24V12H9V24H15ZM12 9H0V15H12V9ZM15 12V0H9V12H15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_45"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</svg> diff --git a/maps/tiles/c.svg b/maps/tiles/c.svg deleted file mode 100644 index 2f5d16b..0000000 --- a/maps/tiles/c.svg +++ /dev/null @@ -1,11 +0,0 @@ -<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> -<g clip-path="url(#clip0_3_49)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM15 24V18H9V24H15ZM18 15H24V9H18V15ZM15 18C15 16.3431 16.3431 15 18 15V9C13.0294 9 9 13.0294 9 18H15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_49"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</svg> diff --git a/maps/tiles/d.svg b/maps/tiles/d.svg deleted file mode 100644 index 1ad64ea..0000000 --- a/maps/tiles/d.svg +++ /dev/null @@ -1,11 +0,0 @@ -<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> -<g clip-path="url(#clip0_3_48)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM15 24V12H9V24H15ZM12 15H24V9H12V15ZM12 9H0V15H12V9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_48"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</svg> diff --git a/maps/tiles/e.svg b/maps/tiles/e.svg deleted file mode 100644 index 9c9759a..0000000 --- a/maps/tiles/e.svg +++ /dev/null @@ -1,11 +0,0 @@ -<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> -<g clip-path="url(#clip0_3_47)"> -<rect width="24" height="24" fill="white"/> -<path d="M15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM9 0V12H15V0H9ZM12 15H24V9H12V15ZM9 12V24H15V12H9Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_47"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</svg> diff --git a/maps/tiles/f.svg b/maps/tiles/f.svg deleted file mode 100644 index a13b768..0000000 --- a/maps/tiles/f.svg +++ /dev/null @@ -1,11 +0,0 @@ -<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> -<g clip-path="url(#clip0_3_46)"> -<rect width="24" height="24" fill="white"/> -<path d="M9 24C9 25.6569 10.3431 27 12 27C13.6569 27 15 25.6569 15 24H9ZM24 15C25.6569 15 27 13.6569 27 12C27 10.3431 25.6569 9 24 9V15ZM0 9C-1.65685 9 -3 10.3431 -3 12C-3 13.6569 -1.65685 15 0 15V9ZM15 0C15 -1.65685 13.6569 -3 12 -3C10.3431 -3 9 -1.65685 9 0H15ZM15 24V12H9V24H15ZM12 15H24V9H12V15ZM12 9H0V15H12V9ZM15 12V0H9V12H15Z" fill="black"/> -</g> -<defs> -<clipPath id="clip0_3_46"> -<rect width="24" height="24" fill="white"/> -</clipPath> -</defs> -</svg> @@ -14,6 +14,55 @@ gebruikte externe libraries: |-|-| |[yan9a/serial](https://github.com/yan9a/serial)|cross-compatibiliteit voor seriële poorten lezen/schrijven voor windows en linux| +## samenvatting werking + +Globaal gezien draait de robot altijd in een van twee 'standen'. De eerste +stand is voor het doolhof-gedeelte van de kaart, en de tweede is voor het +warenhuis-gedeelte. Tijdens de assessment kan het zijn dat de robot opgetild +wordt en ergens anders wordt neergezet in het doolhof gedeelte, en hier moet de +robot tegen kunnen. Om het doolhof op te lossen wordt of de rechterhandregel of +de linkerhandregel gebruikt, zodat de robot altijd een uitgang van het doolhof +kan vinden, zonder dat de robot zijn eigen positie binnen het doolhof hoeft te +weten, of überhaupt bewust hoeft te zijn van de lay-out van het doolhof zelf. +De overgang tussen het doolhof en het warenhuis wordt aangegeven met een soort +zebrapad die dezelfde breedte als de rest van de lijnen heeft. Vooraf wordt via +de client aangegeven aan de robot hoe groot het warenhuis is, en waar de in- en +uitgangen van het warenhuis zitten, zodat de robot zelfstandig naar het +afleverpunt en het oplaadstation kan rijden zodra alle bestellingen opgehaald +zijn. De volgende specificaties moeten nog exact afgesproken worden voordat er +een kaart gemaakt kan worden: + +- breedte van de lijn +- tegelgrootte (binnen warenhuis) +- exacte afmetingen van, en de hoeveelheid van de strepen in het zebrapad + +De lijnen van het doolhof hoeven niet te voldoen aan de tegelgrootte, maar de +in- en uitgangen moeten wel een rechte overloop hebben op het +warenhuis-gedeelte. + +## te bespreken + +- Consequent snake case gebruiken inplaats van camel case +- Hoe wordt de controle over de robot 'overhandigd' tussen verschillende + standen? +- Hoe weet de robot via welke in-/uitgang hij het warenhuis in/uit rijdt? + (barcode-scanner implementeren?) +- Globale status met alle sensor data en andere diagnostische info in een + struct zetten en toeganklijk maken vanuit aansturingsstanden? +- Middleware maken zodat er een soort pseudo-supervisor draait die het + overschakelen tussen standen kan beheren, en alle sensordata update in de + globale status struct? +- Misschien een globaal software diagram maken? +- Is het slim om de test stand voor de natte vloer (spinnen) ook een losse + 'stand' te maken? + - Noodstop ook een stand maken? +- Welke software wordt er gebruikt om de kaart te maken? + (moet met exacte afstanden kunnen werken, lieft in centimeters; als het kan + ook fijn om in samen te werken) + - Figma? + - Adobe Illustrator? + - MS Visio? + ## noob hoek hier wat korte uitleg over dingen die niet zijn uitgelegd in vorige blokken van |