poster for TechHSG 20251113
This commit is contained in:
commit
75f854f0b1
32 changed files with 796 additions and 0 deletions
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
/config.mk
|
||||||
|
/*.pdf
|
||||||
11
Makefile
Normal file
11
Makefile
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
include config.mk
|
||||||
|
|
||||||
|
.PHONY: all
|
||||||
|
all: poster.pdf
|
||||||
|
|
||||||
|
%.pdf: %.typ
|
||||||
|
$(TYPST) compile --font-path fonts $<
|
||||||
|
|
||||||
|
.PHONY: clean
|
||||||
|
clean:
|
||||||
|
rm -f poster.pdf
|
||||||
4
README.md
Normal file
4
README.md
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
# Promotional and other materials for KarlOS
|
||||||
|
|
||||||
|
## Building
|
||||||
|
- copy `config.default.mk` to `config.mk` and customize.
|
||||||
11
c-logo.svg
Normal file
11
c-logo.svg
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
<svg width="89.640671mm" height="93.591774mm" viewBox="0 0 89.64067 93.591774" version="1.1" id="svg814" inkscape:export-filename="FINALanswerbookBLUE.png" inkscape:export-xdpi="651.59998" inkscape:export-ydpi="651.59998" sodipodi:docname="C1stEdition.svg" inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<sodipodi:namedview id="namedview816" pagecolor="#ffffff" bordercolor="#000000" borderopacity="0.25" inkscape:showpageshadow="2" inkscape:pageopacity="0.0" inkscape:pagecheckerboard="0" inkscape:deskcolor="#d1d1d1" inkscape:document-units="mm" showgrid="false" inkscape:zoom="1.2644604" inkscape:cx="107.95119" inkscape:cy="167.66045" inkscape:window-width="1366" inkscape:window-height="705" inkscape:window-x="-8" inkscape:window-y="-8" inkscape:window-maximized="1" inkscape:current-layer="layer1"/>
|
||||||
|
<defs id="defs811"/>
|
||||||
|
<g inkscape:label="Calque 1" inkscape:groupmode="layer" id="layer1" transform="translate(-115.31123,-96.087413)">
|
||||||
|
<g aria-label="C" id="text1719" style="font-weight:bold;font-size:123.472px;font-family:'Neue Haas Grotesk Text Pro';-inkscape-font-specification:'Neue Haas Grotesk Text Pro Bold';fill:#a9bacd;stroke-width:0.264583;fill-opacity:1">
|
||||||
|
<path d="m 204.33454,132.38818 c -2.34597,-22.84232 -17.53303,-36.300767 -44.69687,-36.300767 -24.81787,0 -44.32644,17.903437 -44.32644,46.672417 0,28.89245 17.77996,46.91936 47.1663,46.91936 23.45968,0 39.88146,-13.82886 42.47437,-36.79466 h -28.02815 c -1.11124,8.51957 -5.55624,15.06359 -14.94011,15.06359 -14.81664,0 -17.53302,-11.72984 -17.53302,-24.20051 0,-17.16261 6.1736,-25.92912 16.42177,-25.92912 9.13693,0 14.94012,5.30929 15.80442,14.56969 z" style="font-weight:900;font-family:'Helvetica LT Std';-inkscape-font-specification:'Helvetica LT Std Heavy';fill:#a9bacd;fill-opacity:1" id="path1771"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 2.1 KiB |
1
config.default.mk
Normal file
1
config.default.mk
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
TYPST = typst
|
||||||
BIN
fonts/Fira_Mono/FiraMono-Bold.ttf
Normal file
BIN
fonts/Fira_Mono/FiraMono-Bold.ttf
Normal file
Binary file not shown.
BIN
fonts/Fira_Mono/FiraMono-Medium.ttf
Normal file
BIN
fonts/Fira_Mono/FiraMono-Medium.ttf
Normal file
Binary file not shown.
BIN
fonts/Fira_Mono/FiraMono-Regular.ttf
Normal file
BIN
fonts/Fira_Mono/FiraMono-Regular.ttf
Normal file
Binary file not shown.
93
fonts/Fira_Mono/OFL.txt
Normal file
93
fonts/Fira_Mono/OFL.txt
Normal file
|
|
@ -0,0 +1,93 @@
|
||||||
|
Copyright (c) 2012-2013, The Mozilla Corporation and Telefonica S.A.
|
||||||
|
|
||||||
|
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||||
|
This license is copied below, and is also available with a FAQ at:
|
||||||
|
https://openfontlicense.org
|
||||||
|
|
||||||
|
|
||||||
|
-----------------------------------------------------------
|
||||||
|
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||||
|
-----------------------------------------------------------
|
||||||
|
|
||||||
|
PREAMBLE
|
||||||
|
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||||
|
development of collaborative font projects, to support the font creation
|
||||||
|
efforts of academic and linguistic communities, and to provide a free and
|
||||||
|
open framework in which fonts may be shared and improved in partnership
|
||||||
|
with others.
|
||||||
|
|
||||||
|
The OFL allows the licensed fonts to be used, studied, modified and
|
||||||
|
redistributed freely as long as they are not sold by themselves. The
|
||||||
|
fonts, including any derivative works, can be bundled, embedded,
|
||||||
|
redistributed and/or sold with any software provided that any reserved
|
||||||
|
names are not used by derivative works. The fonts and derivatives,
|
||||||
|
however, cannot be released under any other type of license. The
|
||||||
|
requirement for fonts to remain under this license does not apply
|
||||||
|
to any document created using the fonts or their derivatives.
|
||||||
|
|
||||||
|
DEFINITIONS
|
||||||
|
"Font Software" refers to the set of files released by the Copyright
|
||||||
|
Holder(s) under this license and clearly marked as such. This may
|
||||||
|
include source files, build scripts and documentation.
|
||||||
|
|
||||||
|
"Reserved Font Name" refers to any names specified as such after the
|
||||||
|
copyright statement(s).
|
||||||
|
|
||||||
|
"Original Version" refers to the collection of Font Software components as
|
||||||
|
distributed by the Copyright Holder(s).
|
||||||
|
|
||||||
|
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||||
|
or substituting -- in part or in whole -- any of the components of the
|
||||||
|
Original Version, by changing formats or by porting the Font Software to a
|
||||||
|
new environment.
|
||||||
|
|
||||||
|
"Author" refers to any designer, engineer, programmer, technical
|
||||||
|
writer or other person who contributed to the Font Software.
|
||||||
|
|
||||||
|
PERMISSION & CONDITIONS
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining
|
||||||
|
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||||
|
redistribute, and sell modified and unmodified copies of the Font
|
||||||
|
Software, subject to the following conditions:
|
||||||
|
|
||||||
|
1) Neither the Font Software nor any of its individual components,
|
||||||
|
in Original or Modified Versions, may be sold by itself.
|
||||||
|
|
||||||
|
2) Original or Modified Versions of the Font Software may be bundled,
|
||||||
|
redistributed and/or sold with any software, provided that each copy
|
||||||
|
contains the above copyright notice and this license. These can be
|
||||||
|
included either as stand-alone text files, human-readable headers or
|
||||||
|
in the appropriate machine-readable metadata fields within text or
|
||||||
|
binary files as long as those fields can be easily viewed by the user.
|
||||||
|
|
||||||
|
3) No Modified Version of the Font Software may use the Reserved Font
|
||||||
|
Name(s) unless explicit written permission is granted by the corresponding
|
||||||
|
Copyright Holder. This restriction only applies to the primary font name as
|
||||||
|
presented to the users.
|
||||||
|
|
||||||
|
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||||
|
Software shall not be used to promote, endorse or advertise any
|
||||||
|
Modified Version, except to acknowledge the contribution(s) of the
|
||||||
|
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||||
|
permission.
|
||||||
|
|
||||||
|
5) The Font Software, modified or unmodified, in part or in whole,
|
||||||
|
must be distributed entirely under this license, and must not be
|
||||||
|
distributed under any other license. The requirement for fonts to
|
||||||
|
remain under this license does not apply to any document created
|
||||||
|
using the Font Software.
|
||||||
|
|
||||||
|
TERMINATION
|
||||||
|
This license becomes null and void if any of the above conditions are
|
||||||
|
not met.
|
||||||
|
|
||||||
|
DISCLAIMER
|
||||||
|
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||||
|
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||||
|
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||||
|
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||||
|
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||||
BIN
fonts/Fira_Sans/FiraSans-Black.ttf
Normal file
BIN
fonts/Fira_Sans/FiraSans-Black.ttf
Normal file
Binary file not shown.
BIN
fonts/Fira_Sans/FiraSans-BlackItalic.ttf
Normal file
BIN
fonts/Fira_Sans/FiraSans-BlackItalic.ttf
Normal file
Binary file not shown.
BIN
fonts/Fira_Sans/FiraSans-Bold.ttf
Normal file
BIN
fonts/Fira_Sans/FiraSans-Bold.ttf
Normal file
Binary file not shown.
BIN
fonts/Fira_Sans/FiraSans-BoldItalic.ttf
Normal file
BIN
fonts/Fira_Sans/FiraSans-BoldItalic.ttf
Normal file
Binary file not shown.
BIN
fonts/Fira_Sans/FiraSans-ExtraBold.ttf
Normal file
BIN
fonts/Fira_Sans/FiraSans-ExtraBold.ttf
Normal file
Binary file not shown.
BIN
fonts/Fira_Sans/FiraSans-ExtraBoldItalic.ttf
Normal file
BIN
fonts/Fira_Sans/FiraSans-ExtraBoldItalic.ttf
Normal file
Binary file not shown.
BIN
fonts/Fira_Sans/FiraSans-ExtraLight.ttf
Normal file
BIN
fonts/Fira_Sans/FiraSans-ExtraLight.ttf
Normal file
Binary file not shown.
BIN
fonts/Fira_Sans/FiraSans-ExtraLightItalic.ttf
Normal file
BIN
fonts/Fira_Sans/FiraSans-ExtraLightItalic.ttf
Normal file
Binary file not shown.
BIN
fonts/Fira_Sans/FiraSans-Italic.ttf
Normal file
BIN
fonts/Fira_Sans/FiraSans-Italic.ttf
Normal file
Binary file not shown.
BIN
fonts/Fira_Sans/FiraSans-Light.ttf
Normal file
BIN
fonts/Fira_Sans/FiraSans-Light.ttf
Normal file
Binary file not shown.
BIN
fonts/Fira_Sans/FiraSans-LightItalic.ttf
Normal file
BIN
fonts/Fira_Sans/FiraSans-LightItalic.ttf
Normal file
Binary file not shown.
BIN
fonts/Fira_Sans/FiraSans-Medium.ttf
Normal file
BIN
fonts/Fira_Sans/FiraSans-Medium.ttf
Normal file
Binary file not shown.
BIN
fonts/Fira_Sans/FiraSans-MediumItalic.ttf
Normal file
BIN
fonts/Fira_Sans/FiraSans-MediumItalic.ttf
Normal file
Binary file not shown.
BIN
fonts/Fira_Sans/FiraSans-Regular.ttf
Normal file
BIN
fonts/Fira_Sans/FiraSans-Regular.ttf
Normal file
Binary file not shown.
BIN
fonts/Fira_Sans/FiraSans-SemiBold.ttf
Normal file
BIN
fonts/Fira_Sans/FiraSans-SemiBold.ttf
Normal file
Binary file not shown.
BIN
fonts/Fira_Sans/FiraSans-SemiBoldItalic.ttf
Normal file
BIN
fonts/Fira_Sans/FiraSans-SemiBoldItalic.ttf
Normal file
Binary file not shown.
BIN
fonts/Fira_Sans/FiraSans-Thin.ttf
Normal file
BIN
fonts/Fira_Sans/FiraSans-Thin.ttf
Normal file
Binary file not shown.
BIN
fonts/Fira_Sans/FiraSans-ThinItalic.ttf
Normal file
BIN
fonts/Fira_Sans/FiraSans-ThinItalic.ttf
Normal file
Binary file not shown.
93
fonts/Fira_Sans/OFL.txt
Normal file
93
fonts/Fira_Sans/OFL.txt
Normal file
|
|
@ -0,0 +1,93 @@
|
||||||
|
Copyright (c) 2012-2015, The Mozilla Foundation and Telefonica S.A.
|
||||||
|
|
||||||
|
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||||
|
This license is copied below, and is also available with a FAQ at:
|
||||||
|
https://openfontlicense.org
|
||||||
|
|
||||||
|
|
||||||
|
-----------------------------------------------------------
|
||||||
|
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||||
|
-----------------------------------------------------------
|
||||||
|
|
||||||
|
PREAMBLE
|
||||||
|
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||||
|
development of collaborative font projects, to support the font creation
|
||||||
|
efforts of academic and linguistic communities, and to provide a free and
|
||||||
|
open framework in which fonts may be shared and improved in partnership
|
||||||
|
with others.
|
||||||
|
|
||||||
|
The OFL allows the licensed fonts to be used, studied, modified and
|
||||||
|
redistributed freely as long as they are not sold by themselves. The
|
||||||
|
fonts, including any derivative works, can be bundled, embedded,
|
||||||
|
redistributed and/or sold with any software provided that any reserved
|
||||||
|
names are not used by derivative works. The fonts and derivatives,
|
||||||
|
however, cannot be released under any other type of license. The
|
||||||
|
requirement for fonts to remain under this license does not apply
|
||||||
|
to any document created using the fonts or their derivatives.
|
||||||
|
|
||||||
|
DEFINITIONS
|
||||||
|
"Font Software" refers to the set of files released by the Copyright
|
||||||
|
Holder(s) under this license and clearly marked as such. This may
|
||||||
|
include source files, build scripts and documentation.
|
||||||
|
|
||||||
|
"Reserved Font Name" refers to any names specified as such after the
|
||||||
|
copyright statement(s).
|
||||||
|
|
||||||
|
"Original Version" refers to the collection of Font Software components as
|
||||||
|
distributed by the Copyright Holder(s).
|
||||||
|
|
||||||
|
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||||
|
or substituting -- in part or in whole -- any of the components of the
|
||||||
|
Original Version, by changing formats or by porting the Font Software to a
|
||||||
|
new environment.
|
||||||
|
|
||||||
|
"Author" refers to any designer, engineer, programmer, technical
|
||||||
|
writer or other person who contributed to the Font Software.
|
||||||
|
|
||||||
|
PERMISSION & CONDITIONS
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining
|
||||||
|
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||||
|
redistribute, and sell modified and unmodified copies of the Font
|
||||||
|
Software, subject to the following conditions:
|
||||||
|
|
||||||
|
1) Neither the Font Software nor any of its individual components,
|
||||||
|
in Original or Modified Versions, may be sold by itself.
|
||||||
|
|
||||||
|
2) Original or Modified Versions of the Font Software may be bundled,
|
||||||
|
redistributed and/or sold with any software, provided that each copy
|
||||||
|
contains the above copyright notice and this license. These can be
|
||||||
|
included either as stand-alone text files, human-readable headers or
|
||||||
|
in the appropriate machine-readable metadata fields within text or
|
||||||
|
binary files as long as those fields can be easily viewed by the user.
|
||||||
|
|
||||||
|
3) No Modified Version of the Font Software may use the Reserved Font
|
||||||
|
Name(s) unless explicit written permission is granted by the corresponding
|
||||||
|
Copyright Holder. This restriction only applies to the primary font name as
|
||||||
|
presented to the users.
|
||||||
|
|
||||||
|
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||||
|
Software shall not be used to promote, endorse or advertise any
|
||||||
|
Modified Version, except to acknowledge the contribution(s) of the
|
||||||
|
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||||
|
permission.
|
||||||
|
|
||||||
|
5) The Font Software, modified or unmodified, in part or in whole,
|
||||||
|
must be distributed entirely under this license, and must not be
|
||||||
|
distributed under any other license. The requirement for fonts to
|
||||||
|
remain under this license does not apply to any document created
|
||||||
|
using the Font Software.
|
||||||
|
|
||||||
|
TERMINATION
|
||||||
|
This license becomes null and void if any of the above conditions are
|
||||||
|
not met.
|
||||||
|
|
||||||
|
DISCLAIMER
|
||||||
|
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||||
|
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||||
|
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||||
|
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||||
|
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||||
61
karlos-logo.svg
Normal file
61
karlos-logo.svg
Normal file
|
|
@ -0,0 +1,61 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="128mm"
|
||||||
|
height="128mm"
|
||||||
|
viewBox="0 0 128 128"
|
||||||
|
version="1.1"
|
||||||
|
id="svg1"
|
||||||
|
inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
|
||||||
|
sodipodi:docname="logo_base.svg"
|
||||||
|
inkscape:export-filename="logo_base.png"
|
||||||
|
inkscape:export-xdpi="10.95"
|
||||||
|
inkscape:export-ydpi="10.95"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview1"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#000000"
|
||||||
|
borderopacity="0.25"
|
||||||
|
inkscape:showpageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:deskcolor="#d1d1d1"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
inkscape:zoom="0.50422278"
|
||||||
|
inkscape:cx="373.84269"
|
||||||
|
inkscape:cy="374.83431"
|
||||||
|
inkscape:window-width="1023"
|
||||||
|
inkscape:window-height="747"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="19"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer1" />
|
||||||
|
<defs
|
||||||
|
id="defs1" />
|
||||||
|
<g
|
||||||
|
inkscape:label="Ebene 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<path
|
||||||
|
d="M 64.000228,0 A 64,64 0 0 0 0,64.000228 64,64 0 0 0 64.000228,127.99994 64,64 0 0 0 127.99994,64.000228 64,64 0 0 0 64.000228,0 Z m 0,14.000179 c 27.590476,2e-4 49.999632,22.409573 49.999532,50.000049 -2e-4,27.590266 -22.409266,49.999332 -49.999532,49.999532 -27.590476,1e-4 -49.999849,-22.409056 -50.000049,-49.999532 -9.8e-5,-27.590687 22.409362,-50.000147 50.000049,-50.000049 z"
|
||||||
|
style="fill:#00966e;fill-opacity:0.2;stroke-width:1.08646"
|
||||||
|
id="path35" />
|
||||||
|
<path
|
||||||
|
d="M 64.000228,17.999935 C 38.571312,17.999844 17.999844,38.571312 17.999935,64.000228 18.000119,89.428949 38.571507,110.00009 64.000228,110 89.428754,109.99982 109.99982,89.428754 110,64.000228 110.00009,38.571507 89.428949,18.000119 64.000228,17.999935 Z m 0,12.000301 C 82.754101,30.000472 98.000287,45.246355 98.00022,64.000228 97.999984,82.753888 82.753888,97.999984 64.000228,98.00022 45.246355,98.000287 30.000472,82.754101 30.000236,64.000228 30.000169,45.246142 45.246142,30.000169 64.000228,30.000236 Z"
|
||||||
|
style="baseline-shift:baseline;display:inline;overflow:visible;vector-effect:none;fill:#00966e;fill-opacity:0.4;enable-background:accumulate;stop-color:#000000;stop-opacity:1"
|
||||||
|
id="path38" />
|
||||||
|
<path
|
||||||
|
d="m 64.000228,33.999992 c -16.592316,-5.9e-5 -30.000295,13.40792 -30.000236,30.000236 2.09e-4,16.592125 13.408111,29.999778 30.000236,29.999719 16.591935,-2.09e-4 29.99951,-13.407784 29.999719,-29.999719 5.9e-5,-16.592125 -13.407594,-30.000027 -29.999719,-30.000236 z m 0,11.999784 c 9.917261,2.85e-4 17.99997,8.083191 17.999935,18.000452 -2.85e-4,9.917036 -8.082899,17.99965 -17.999935,17.999935 -9.917261,3.5e-5 -18.000167,-8.082674 -18.000452,-17.999935 -3.5e-5,-9.917486 8.082966,-18.000487 18.000452,-18.000452 z"
|
||||||
|
style="baseline-shift:baseline;display:inline;overflow:visible;vector-effect:none;fill:#00966e;fill-opacity:0.6;enable-background:accumulate;stop-color:#000000;stop-opacity:1"
|
||||||
|
id="path41" />
|
||||||
|
<path
|
||||||
|
d="m 64.000228,50.000049 c -7.755715,-2.8e-5 -14.000207,6.244464 -14.000179,14.000179 2.23e-4,7.755536 6.244643,13.99969 14.000179,13.999662 7.755357,-2.23e-4 13.999439,-6.244305 13.999662,-13.999662 2.8e-5,-7.755536 -6.244126,-13.999956 -13.999662,-14.000179 z"
|
||||||
|
style="baseline-shift:baseline;display:inline;overflow:visible;vector-effect:none;fill:#00966e;enable-background:accumulate;stop-color:#000000;stop-opacity:1"
|
||||||
|
id="path44" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 3.7 KiB |
2
kernel-diagram.svg
Normal file
2
kernel-diagram.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 95 KiB |
183
poster.typ
Normal file
183
poster.typ
Normal file
|
|
@ -0,0 +1,183 @@
|
||||||
|
#set page(paper: "a3", margin: 2cm)
|
||||||
|
|
||||||
|
#let karlos-color = rgb("#009c72")
|
||||||
|
#show: it => block(
|
||||||
|
width: 100%,
|
||||||
|
height: 100%,
|
||||||
|
stroke: black,
|
||||||
|
radius: (
|
||||||
|
top-left: 64pt,
|
||||||
|
bottom-right: 64pt,
|
||||||
|
),
|
||||||
|
inset: 32pt,
|
||||||
|
it
|
||||||
|
)
|
||||||
|
|
||||||
|
#let logo-image = image(width: 64pt, "karlos-logo.svg")
|
||||||
|
#let logo = stack(
|
||||||
|
dir: ltr,
|
||||||
|
logo-image,
|
||||||
|
h(10pt),
|
||||||
|
[
|
||||||
|
#text(font: "fira sans", size: 64pt, weight: "black")[KarlOS] \
|
||||||
|
#text(font: "fira sans", size: 16pt, weight: "bold")[Karlsruhe Operating System]
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
#set text(font: "fira sans", size: 16pt)
|
||||||
|
#set list(marker: [•])
|
||||||
|
|
||||||
|
#let text-block(it) = block(
|
||||||
|
fill: rgb("#009c72").transparentize(70%),
|
||||||
|
radius: (
|
||||||
|
top-left: 8pt,
|
||||||
|
bottom-right: 8pt,
|
||||||
|
),
|
||||||
|
inset: 8pt,
|
||||||
|
it
|
||||||
|
)
|
||||||
|
|
||||||
|
#let text-block2(head, it) = stack(
|
||||||
|
dir: ttb,
|
||||||
|
block(
|
||||||
|
width: 100%,
|
||||||
|
fill: karlos-color.transparentize(50%),
|
||||||
|
radius: (
|
||||||
|
top-left: 8pt,
|
||||||
|
),
|
||||||
|
inset: 8pt,
|
||||||
|
heading(level: 2, head)
|
||||||
|
),
|
||||||
|
block(
|
||||||
|
width: 100%,
|
||||||
|
fill: karlos-color.transparentize(70%),
|
||||||
|
radius: (
|
||||||
|
bottom-right: 8pt,
|
||||||
|
),
|
||||||
|
inset: 8pt,
|
||||||
|
it
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
#grid(columns: (1fr, 1fr), gutter: 16pt,
|
||||||
|
[
|
||||||
|
#logo
|
||||||
|
|
||||||
|
#text-block2("Who are we?", [
|
||||||
|
Hobbyist OS-enthusiast students at KIT
|
||||||
|
])
|
||||||
|
|
||||||
|
#text-block2("Our OS", [
|
||||||
|
- Architecture: x86
|
||||||
|
- Language: modern C
|
||||||
|
- Organization
|
||||||
|
- Monolithic kernel
|
||||||
|
- Multicore
|
||||||
|
- Non-POSIX, not Unix-like
|
||||||
|
#place(horizon + right, block(inset: 16pt, image("c-logo.svg", width: 20%)))
|
||||||
|
])
|
||||||
|
|
||||||
|
#text-block2("Goals", [
|
||||||
|
- Platform for experimentation
|
||||||
|
- Non-standard task/process model
|
||||||
|
- Tagged file system
|
||||||
|
])
|
||||||
|
], [
|
||||||
|
#show raw: set text(font: "fira mono", weight: "bold", size: 4.6pt)
|
||||||
|
```c
|
||||||
|
void
|
||||||
|
ram_init(void)
|
||||||
|
{
|
||||||
|
ASSERT(!ram_initialized);
|
||||||
|
|
||||||
|
// collect memory regions and remove initrd range, as well as page frame 0
|
||||||
|
populate_ranges(&bootboot_free_cover);
|
||||||
|
// TODO removing this is not really necessary anymore, at least in my qemu case.
|
||||||
|
// We still keep it in because in the worst case it does nothing.
|
||||||
|
cover_remove(&bootboot_free_cover, (struct mem_range) {
|
||||||
|
.start = pa_from_value(bootboot.initrd_ptr),
|
||||||
|
.size = bootboot.initrd_size
|
||||||
|
});
|
||||||
|
cover_remove(&bootboot_free_cover, (struct mem_range) {
|
||||||
|
.start = pa_from_value(0),
|
||||||
|
.size = PG_SIZE
|
||||||
|
});
|
||||||
|
|
||||||
|
// Calculate how many levels we need
|
||||||
|
uint64_t addrLimit = pa_to_value(cover_end(&bootboot_free_cover));
|
||||||
|
addrLimit = next_pow2(addrLimit);
|
||||||
|
if (addrLimit == 0) {
|
||||||
|
PANIC("Zero physical frames available.");
|
||||||
|
}
|
||||||
|
ram_num_levels = __builtin_ffsl(addrLimit); // log2(addrLimit) + 1
|
||||||
|
ram_num_levels -= PG_SHIFT;
|
||||||
|
DEBUG_PRINTF("addrLimit = %lu\n", addrLimit);
|
||||||
|
DEBUG_PRINTF("ram_num_levels = %u\n", ram_num_levels);
|
||||||
|
|
||||||
|
// Allocate bitmaps for all levels; Initialize all memory as allocated
|
||||||
|
for (unsigned level = 0; level < ram_num_levels; level++) {
|
||||||
|
ram_layers[level].first_free = pa_from_value(INVALID_FRAME_ADDR);
|
||||||
|
|
||||||
|
size_t bitmapSize = BITMAP_SIZE(1ul << (ram_num_levels - level - 1));
|
||||||
|
|
||||||
|
ASSERT(cover_steal(&bootboot_free_cover, bitmapSize, &ram_layers[level].avail_bitmap));
|
||||||
|
memset(pa_to_pointer(ram_layers[level].avail_bitmap), 0x00, bitmapSize);
|
||||||
|
|
||||||
|
ASSERT(cover_steal(&bootboot_free_cover, bitmapSize, &ram_layers[level].coherent_bitmap));
|
||||||
|
memset(pa_to_pointer(ram_layers[level].coherent_bitmap), 0x00, bitmapSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
// align all segments to page size
|
||||||
|
cover_align(&bootboot_free_cover, PG_SHIFT);
|
||||||
|
|
||||||
|
// Mark free frames as available
|
||||||
|
for (unsigned int i = 0; i < bootboot_free_cover.num_ranges; i++) {
|
||||||
|
uint64_t start = pa_to_value(bootboot_free_cover.ranges[i].start);
|
||||||
|
uint64_t length = bootboot_free_cover.ranges[i].size;
|
||||||
|
|
||||||
|
uint64_t addr = start;
|
||||||
|
while (length >= PG_SIZE) {
|
||||||
|
unsigned level = 0;
|
||||||
|
for (;;) {
|
||||||
|
unsigned next_level_bytes = NUM_BYTES_COVERED_IN_LEVEL(level + 1);
|
||||||
|
// size and alignment need to fit
|
||||||
|
if (length < next_level_bytes || (addr & (next_level_bytes - 1)) != 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
level++;
|
||||||
|
}
|
||||||
|
|
||||||
|
DEBUG_PRINTF("freeing %lx at level %u\n", addr, level);
|
||||||
|
free_block(pa_from_value(addr), level);
|
||||||
|
|
||||||
|
addr += NUM_BYTES_COVERED_IN_LEVEL(level);
|
||||||
|
length -= NUM_BYTES_COVERED_IN_LEVEL(level);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ram_initialized = true;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
#image(width: 100%, "kernel-diagram.svg")
|
||||||
|
|
||||||
|
#let qr = block(
|
||||||
|
stroke: 3pt + black,
|
||||||
|
inset: 8pt,
|
||||||
|
radius: 16pt,
|
||||||
|
image("qr-karlsruhe-os-de.svg")
|
||||||
|
)
|
||||||
|
#place(bottom, grid(
|
||||||
|
columns: (2fr, 1fr),
|
||||||
|
gutter: 16pt,
|
||||||
|
align(bottom, text-block2("Join us if you...", [
|
||||||
|
- are interested in systems programming
|
||||||
|
- want to see what goes into developing an OS
|
||||||
|
- have (or want to gain) experience in C programming
|
||||||
|
])),
|
||||||
|
qr,
|
||||||
|
[],
|
||||||
|
align(center, text(weight: "bold")[karlsruhe-os.de])
|
||||||
|
))
|
||||||
335
qr-karlsruhe-os-de.svg
Normal file
335
qr-karlsruhe-os-de.svg
Normal file
|
|
@ -0,0 +1,335 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<svg width="264" height="264" viewBox="0 0 264 264"
|
||||||
|
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events">
|
||||||
|
<rect x="0" y="0" width="264" height="264" fill="#ffffff"/>
|
||||||
|
<defs>
|
||||||
|
<rect id="p" width="8" height="8"/>
|
||||||
|
</defs>
|
||||||
|
<g fill="#000000">
|
||||||
|
<use xlink:href="#p" x="32" y="32"/>
|
||||||
|
<use xlink:href="#p" x="32" y="40"/>
|
||||||
|
<use xlink:href="#p" x="32" y="48"/>
|
||||||
|
<use xlink:href="#p" x="32" y="56"/>
|
||||||
|
<use xlink:href="#p" x="32" y="64"/>
|
||||||
|
<use xlink:href="#p" x="32" y="72"/>
|
||||||
|
<use xlink:href="#p" x="32" y="80"/>
|
||||||
|
<use xlink:href="#p" x="32" y="96"/>
|
||||||
|
<use xlink:href="#p" x="32" y="120"/>
|
||||||
|
<use xlink:href="#p" x="32" y="128"/>
|
||||||
|
<use xlink:href="#p" x="32" y="136"/>
|
||||||
|
<use xlink:href="#p" x="32" y="144"/>
|
||||||
|
<use xlink:href="#p" x="32" y="160"/>
|
||||||
|
<use xlink:href="#p" x="32" y="176"/>
|
||||||
|
<use xlink:href="#p" x="32" y="184"/>
|
||||||
|
<use xlink:href="#p" x="32" y="192"/>
|
||||||
|
<use xlink:href="#p" x="32" y="200"/>
|
||||||
|
<use xlink:href="#p" x="32" y="208"/>
|
||||||
|
<use xlink:href="#p" x="32" y="216"/>
|
||||||
|
<use xlink:href="#p" x="32" y="224"/>
|
||||||
|
<use xlink:href="#p" x="40" y="32"/>
|
||||||
|
<use xlink:href="#p" x="40" y="80"/>
|
||||||
|
<use xlink:href="#p" x="40" y="96"/>
|
||||||
|
<use xlink:href="#p" x="40" y="128"/>
|
||||||
|
<use xlink:href="#p" x="40" y="136"/>
|
||||||
|
<use xlink:href="#p" x="40" y="152"/>
|
||||||
|
<use xlink:href="#p" x="40" y="160"/>
|
||||||
|
<use xlink:href="#p" x="40" y="176"/>
|
||||||
|
<use xlink:href="#p" x="40" y="224"/>
|
||||||
|
<use xlink:href="#p" x="48" y="32"/>
|
||||||
|
<use xlink:href="#p" x="48" y="48"/>
|
||||||
|
<use xlink:href="#p" x="48" y="56"/>
|
||||||
|
<use xlink:href="#p" x="48" y="64"/>
|
||||||
|
<use xlink:href="#p" x="48" y="80"/>
|
||||||
|
<use xlink:href="#p" x="48" y="96"/>
|
||||||
|
<use xlink:href="#p" x="48" y="104"/>
|
||||||
|
<use xlink:href="#p" x="48" y="128"/>
|
||||||
|
<use xlink:href="#p" x="48" y="152"/>
|
||||||
|
<use xlink:href="#p" x="48" y="160"/>
|
||||||
|
<use xlink:href="#p" x="48" y="176"/>
|
||||||
|
<use xlink:href="#p" x="48" y="192"/>
|
||||||
|
<use xlink:href="#p" x="48" y="200"/>
|
||||||
|
<use xlink:href="#p" x="48" y="208"/>
|
||||||
|
<use xlink:href="#p" x="48" y="224"/>
|
||||||
|
<use xlink:href="#p" x="56" y="32"/>
|
||||||
|
<use xlink:href="#p" x="56" y="48"/>
|
||||||
|
<use xlink:href="#p" x="56" y="56"/>
|
||||||
|
<use xlink:href="#p" x="56" y="64"/>
|
||||||
|
<use xlink:href="#p" x="56" y="80"/>
|
||||||
|
<use xlink:href="#p" x="56" y="96"/>
|
||||||
|
<use xlink:href="#p" x="56" y="112"/>
|
||||||
|
<use xlink:href="#p" x="56" y="128"/>
|
||||||
|
<use xlink:href="#p" x="56" y="136"/>
|
||||||
|
<use xlink:href="#p" x="56" y="144"/>
|
||||||
|
<use xlink:href="#p" x="56" y="176"/>
|
||||||
|
<use xlink:href="#p" x="56" y="192"/>
|
||||||
|
<use xlink:href="#p" x="56" y="200"/>
|
||||||
|
<use xlink:href="#p" x="56" y="208"/>
|
||||||
|
<use xlink:href="#p" x="56" y="224"/>
|
||||||
|
<use xlink:href="#p" x="64" y="32"/>
|
||||||
|
<use xlink:href="#p" x="64" y="48"/>
|
||||||
|
<use xlink:href="#p" x="64" y="56"/>
|
||||||
|
<use xlink:href="#p" x="64" y="64"/>
|
||||||
|
<use xlink:href="#p" x="64" y="80"/>
|
||||||
|
<use xlink:href="#p" x="64" y="120"/>
|
||||||
|
<use xlink:href="#p" x="64" y="128"/>
|
||||||
|
<use xlink:href="#p" x="64" y="152"/>
|
||||||
|
<use xlink:href="#p" x="64" y="176"/>
|
||||||
|
<use xlink:href="#p" x="64" y="192"/>
|
||||||
|
<use xlink:href="#p" x="64" y="200"/>
|
||||||
|
<use xlink:href="#p" x="64" y="208"/>
|
||||||
|
<use xlink:href="#p" x="64" y="224"/>
|
||||||
|
<use xlink:href="#p" x="72" y="32"/>
|
||||||
|
<use xlink:href="#p" x="72" y="80"/>
|
||||||
|
<use xlink:href="#p" x="72" y="104"/>
|
||||||
|
<use xlink:href="#p" x="72" y="136"/>
|
||||||
|
<use xlink:href="#p" x="72" y="152"/>
|
||||||
|
<use xlink:href="#p" x="72" y="176"/>
|
||||||
|
<use xlink:href="#p" x="72" y="224"/>
|
||||||
|
<use xlink:href="#p" x="80" y="32"/>
|
||||||
|
<use xlink:href="#p" x="80" y="40"/>
|
||||||
|
<use xlink:href="#p" x="80" y="48"/>
|
||||||
|
<use xlink:href="#p" x="80" y="56"/>
|
||||||
|
<use xlink:href="#p" x="80" y="64"/>
|
||||||
|
<use xlink:href="#p" x="80" y="72"/>
|
||||||
|
<use xlink:href="#p" x="80" y="80"/>
|
||||||
|
<use xlink:href="#p" x="80" y="96"/>
|
||||||
|
<use xlink:href="#p" x="80" y="112"/>
|
||||||
|
<use xlink:href="#p" x="80" y="128"/>
|
||||||
|
<use xlink:href="#p" x="80" y="144"/>
|
||||||
|
<use xlink:href="#p" x="80" y="160"/>
|
||||||
|
<use xlink:href="#p" x="80" y="176"/>
|
||||||
|
<use xlink:href="#p" x="80" y="184"/>
|
||||||
|
<use xlink:href="#p" x="80" y="192"/>
|
||||||
|
<use xlink:href="#p" x="80" y="200"/>
|
||||||
|
<use xlink:href="#p" x="80" y="208"/>
|
||||||
|
<use xlink:href="#p" x="80" y="216"/>
|
||||||
|
<use xlink:href="#p" x="80" y="224"/>
|
||||||
|
<use xlink:href="#p" x="88" y="112"/>
|
||||||
|
<use xlink:href="#p" x="88" y="136"/>
|
||||||
|
<use xlink:href="#p" x="88" y="144"/>
|
||||||
|
<use xlink:href="#p" x="88" y="152"/>
|
||||||
|
<use xlink:href="#p" x="88" y="160"/>
|
||||||
|
<use xlink:href="#p" x="96" y="32"/>
|
||||||
|
<use xlink:href="#p" x="96" y="48"/>
|
||||||
|
<use xlink:href="#p" x="96" y="56"/>
|
||||||
|
<use xlink:href="#p" x="96" y="64"/>
|
||||||
|
<use xlink:href="#p" x="96" y="80"/>
|
||||||
|
<use xlink:href="#p" x="96" y="96"/>
|
||||||
|
<use xlink:href="#p" x="96" y="128"/>
|
||||||
|
<use xlink:href="#p" x="96" y="136"/>
|
||||||
|
<use xlink:href="#p" x="96" y="144"/>
|
||||||
|
<use xlink:href="#p" x="96" y="152"/>
|
||||||
|
<use xlink:href="#p" x="96" y="168"/>
|
||||||
|
<use xlink:href="#p" x="96" y="200"/>
|
||||||
|
<use xlink:href="#p" x="96" y="208"/>
|
||||||
|
<use xlink:href="#p" x="96" y="216"/>
|
||||||
|
<use xlink:href="#p" x="96" y="224"/>
|
||||||
|
<use xlink:href="#p" x="104" y="32"/>
|
||||||
|
<use xlink:href="#p" x="104" y="56"/>
|
||||||
|
<use xlink:href="#p" x="104" y="64"/>
|
||||||
|
<use xlink:href="#p" x="104" y="72"/>
|
||||||
|
<use xlink:href="#p" x="104" y="88"/>
|
||||||
|
<use xlink:href="#p" x="104" y="104"/>
|
||||||
|
<use xlink:href="#p" x="104" y="128"/>
|
||||||
|
<use xlink:href="#p" x="104" y="144"/>
|
||||||
|
<use xlink:href="#p" x="104" y="152"/>
|
||||||
|
<use xlink:href="#p" x="104" y="168"/>
|
||||||
|
<use xlink:href="#p" x="104" y="176"/>
|
||||||
|
<use xlink:href="#p" x="104" y="200"/>
|
||||||
|
<use xlink:href="#p" x="104" y="208"/>
|
||||||
|
<use xlink:href="#p" x="104" y="224"/>
|
||||||
|
<use xlink:href="#p" x="112" y="64"/>
|
||||||
|
<use xlink:href="#p" x="112" y="80"/>
|
||||||
|
<use xlink:href="#p" x="112" y="136"/>
|
||||||
|
<use xlink:href="#p" x="112" y="144"/>
|
||||||
|
<use xlink:href="#p" x="112" y="192"/>
|
||||||
|
<use xlink:href="#p" x="112" y="208"/>
|
||||||
|
<use xlink:href="#p" x="120" y="48"/>
|
||||||
|
<use xlink:href="#p" x="120" y="56"/>
|
||||||
|
<use xlink:href="#p" x="120" y="64"/>
|
||||||
|
<use xlink:href="#p" x="120" y="88"/>
|
||||||
|
<use xlink:href="#p" x="120" y="120"/>
|
||||||
|
<use xlink:href="#p" x="120" y="128"/>
|
||||||
|
<use xlink:href="#p" x="120" y="136"/>
|
||||||
|
<use xlink:href="#p" x="120" y="160"/>
|
||||||
|
<use xlink:href="#p" x="120" y="176"/>
|
||||||
|
<use xlink:href="#p" x="120" y="192"/>
|
||||||
|
<use xlink:href="#p" x="120" y="208"/>
|
||||||
|
<use xlink:href="#p" x="120" y="216"/>
|
||||||
|
<use xlink:href="#p" x="120" y="224"/>
|
||||||
|
<use xlink:href="#p" x="128" y="48"/>
|
||||||
|
<use xlink:href="#p" x="128" y="72"/>
|
||||||
|
<use xlink:href="#p" x="128" y="80"/>
|
||||||
|
<use xlink:href="#p" x="128" y="120"/>
|
||||||
|
<use xlink:href="#p" x="128" y="144"/>
|
||||||
|
<use xlink:href="#p" x="128" y="152"/>
|
||||||
|
<use xlink:href="#p" x="128" y="168"/>
|
||||||
|
<use xlink:href="#p" x="128" y="176"/>
|
||||||
|
<use xlink:href="#p" x="128" y="184"/>
|
||||||
|
<use xlink:href="#p" x="128" y="200"/>
|
||||||
|
<use xlink:href="#p" x="128" y="208"/>
|
||||||
|
<use xlink:href="#p" x="128" y="216"/>
|
||||||
|
<use xlink:href="#p" x="128" y="224"/>
|
||||||
|
<use xlink:href="#p" x="136" y="32"/>
|
||||||
|
<use xlink:href="#p" x="136" y="48"/>
|
||||||
|
<use xlink:href="#p" x="136" y="56"/>
|
||||||
|
<use xlink:href="#p" x="136" y="64"/>
|
||||||
|
<use xlink:href="#p" x="136" y="112"/>
|
||||||
|
<use xlink:href="#p" x="136" y="120"/>
|
||||||
|
<use xlink:href="#p" x="136" y="128"/>
|
||||||
|
<use xlink:href="#p" x="136" y="136"/>
|
||||||
|
<use xlink:href="#p" x="136" y="160"/>
|
||||||
|
<use xlink:href="#p" x="136" y="168"/>
|
||||||
|
<use xlink:href="#p" x="136" y="216"/>
|
||||||
|
<use xlink:href="#p" x="136" y="224"/>
|
||||||
|
<use xlink:href="#p" x="144" y="48"/>
|
||||||
|
<use xlink:href="#p" x="144" y="56"/>
|
||||||
|
<use xlink:href="#p" x="144" y="64"/>
|
||||||
|
<use xlink:href="#p" x="144" y="72"/>
|
||||||
|
<use xlink:href="#p" x="144" y="80"/>
|
||||||
|
<use xlink:href="#p" x="144" y="96"/>
|
||||||
|
<use xlink:href="#p" x="144" y="104"/>
|
||||||
|
<use xlink:href="#p" x="144" y="112"/>
|
||||||
|
<use xlink:href="#p" x="144" y="120"/>
|
||||||
|
<use xlink:href="#p" x="144" y="136"/>
|
||||||
|
<use xlink:href="#p" x="144" y="144"/>
|
||||||
|
<use xlink:href="#p" x="144" y="176"/>
|
||||||
|
<use xlink:href="#p" x="144" y="184"/>
|
||||||
|
<use xlink:href="#p" x="144" y="192"/>
|
||||||
|
<use xlink:href="#p" x="144" y="216"/>
|
||||||
|
<use xlink:href="#p" x="152" y="56"/>
|
||||||
|
<use xlink:href="#p" x="152" y="64"/>
|
||||||
|
<use xlink:href="#p" x="152" y="96"/>
|
||||||
|
<use xlink:href="#p" x="152" y="128"/>
|
||||||
|
<use xlink:href="#p" x="152" y="136"/>
|
||||||
|
<use xlink:href="#p" x="152" y="168"/>
|
||||||
|
<use xlink:href="#p" x="152" y="184"/>
|
||||||
|
<use xlink:href="#p" x="152" y="216"/>
|
||||||
|
<use xlink:href="#p" x="160" y="40"/>
|
||||||
|
<use xlink:href="#p" x="160" y="64"/>
|
||||||
|
<use xlink:href="#p" x="160" y="72"/>
|
||||||
|
<use xlink:href="#p" x="160" y="80"/>
|
||||||
|
<use xlink:href="#p" x="160" y="96"/>
|
||||||
|
<use xlink:href="#p" x="160" y="104"/>
|
||||||
|
<use xlink:href="#p" x="160" y="112"/>
|
||||||
|
<use xlink:href="#p" x="160" y="128"/>
|
||||||
|
<use xlink:href="#p" x="160" y="136"/>
|
||||||
|
<use xlink:href="#p" x="160" y="144"/>
|
||||||
|
<use xlink:href="#p" x="160" y="160"/>
|
||||||
|
<use xlink:href="#p" x="160" y="168"/>
|
||||||
|
<use xlink:href="#p" x="160" y="176"/>
|
||||||
|
<use xlink:href="#p" x="160" y="184"/>
|
||||||
|
<use xlink:href="#p" x="160" y="192"/>
|
||||||
|
<use xlink:href="#p" x="160" y="200"/>
|
||||||
|
<use xlink:href="#p" x="168" y="96"/>
|
||||||
|
<use xlink:href="#p" x="168" y="112"/>
|
||||||
|
<use xlink:href="#p" x="168" y="120"/>
|
||||||
|
<use xlink:href="#p" x="168" y="128"/>
|
||||||
|
<use xlink:href="#p" x="168" y="160"/>
|
||||||
|
<use xlink:href="#p" x="168" y="192"/>
|
||||||
|
<use xlink:href="#p" x="168" y="200"/>
|
||||||
|
<use xlink:href="#p" x="168" y="208"/>
|
||||||
|
<use xlink:href="#p" x="168" y="216"/>
|
||||||
|
<use xlink:href="#p" x="176" y="32"/>
|
||||||
|
<use xlink:href="#p" x="176" y="40"/>
|
||||||
|
<use xlink:href="#p" x="176" y="48"/>
|
||||||
|
<use xlink:href="#p" x="176" y="56"/>
|
||||||
|
<use xlink:href="#p" x="176" y="64"/>
|
||||||
|
<use xlink:href="#p" x="176" y="72"/>
|
||||||
|
<use xlink:href="#p" x="176" y="80"/>
|
||||||
|
<use xlink:href="#p" x="176" y="128"/>
|
||||||
|
<use xlink:href="#p" x="176" y="136"/>
|
||||||
|
<use xlink:href="#p" x="176" y="160"/>
|
||||||
|
<use xlink:href="#p" x="176" y="176"/>
|
||||||
|
<use xlink:href="#p" x="176" y="192"/>
|
||||||
|
<use xlink:href="#p" x="176" y="200"/>
|
||||||
|
<use xlink:href="#p" x="176" y="208"/>
|
||||||
|
<use xlink:href="#p" x="176" y="216"/>
|
||||||
|
<use xlink:href="#p" x="176" y="224"/>
|
||||||
|
<use xlink:href="#p" x="184" y="32"/>
|
||||||
|
<use xlink:href="#p" x="184" y="80"/>
|
||||||
|
<use xlink:href="#p" x="184" y="104"/>
|
||||||
|
<use xlink:href="#p" x="184" y="112"/>
|
||||||
|
<use xlink:href="#p" x="184" y="120"/>
|
||||||
|
<use xlink:href="#p" x="184" y="136"/>
|
||||||
|
<use xlink:href="#p" x="184" y="152"/>
|
||||||
|
<use xlink:href="#p" x="184" y="160"/>
|
||||||
|
<use xlink:href="#p" x="184" y="192"/>
|
||||||
|
<use xlink:href="#p" x="184" y="224"/>
|
||||||
|
<use xlink:href="#p" x="192" y="32"/>
|
||||||
|
<use xlink:href="#p" x="192" y="48"/>
|
||||||
|
<use xlink:href="#p" x="192" y="56"/>
|
||||||
|
<use xlink:href="#p" x="192" y="64"/>
|
||||||
|
<use xlink:href="#p" x="192" y="80"/>
|
||||||
|
<use xlink:href="#p" x="192" y="96"/>
|
||||||
|
<use xlink:href="#p" x="192" y="120"/>
|
||||||
|
<use xlink:href="#p" x="192" y="128"/>
|
||||||
|
<use xlink:href="#p" x="192" y="136"/>
|
||||||
|
<use xlink:href="#p" x="192" y="144"/>
|
||||||
|
<use xlink:href="#p" x="192" y="152"/>
|
||||||
|
<use xlink:href="#p" x="192" y="160"/>
|
||||||
|
<use xlink:href="#p" x="192" y="168"/>
|
||||||
|
<use xlink:href="#p" x="192" y="176"/>
|
||||||
|
<use xlink:href="#p" x="192" y="184"/>
|
||||||
|
<use xlink:href="#p" x="192" y="192"/>
|
||||||
|
<use xlink:href="#p" x="192" y="200"/>
|
||||||
|
<use xlink:href="#p" x="192" y="208"/>
|
||||||
|
<use xlink:href="#p" x="192" y="216"/>
|
||||||
|
<use xlink:href="#p" x="192" y="224"/>
|
||||||
|
<use xlink:href="#p" x="200" y="32"/>
|
||||||
|
<use xlink:href="#p" x="200" y="48"/>
|
||||||
|
<use xlink:href="#p" x="200" y="56"/>
|
||||||
|
<use xlink:href="#p" x="200" y="64"/>
|
||||||
|
<use xlink:href="#p" x="200" y="80"/>
|
||||||
|
<use xlink:href="#p" x="200" y="96"/>
|
||||||
|
<use xlink:href="#p" x="200" y="120"/>
|
||||||
|
<use xlink:href="#p" x="200" y="160"/>
|
||||||
|
<use xlink:href="#p" x="200" y="192"/>
|
||||||
|
<use xlink:href="#p" x="200" y="200"/>
|
||||||
|
<use xlink:href="#p" x="200" y="224"/>
|
||||||
|
<use xlink:href="#p" x="208" y="32"/>
|
||||||
|
<use xlink:href="#p" x="208" y="48"/>
|
||||||
|
<use xlink:href="#p" x="208" y="56"/>
|
||||||
|
<use xlink:href="#p" x="208" y="64"/>
|
||||||
|
<use xlink:href="#p" x="208" y="80"/>
|
||||||
|
<use xlink:href="#p" x="208" y="96"/>
|
||||||
|
<use xlink:href="#p" x="208" y="120"/>
|
||||||
|
<use xlink:href="#p" x="208" y="128"/>
|
||||||
|
<use xlink:href="#p" x="208" y="144"/>
|
||||||
|
<use xlink:href="#p" x="208" y="160"/>
|
||||||
|
<use xlink:href="#p" x="208" y="168"/>
|
||||||
|
<use xlink:href="#p" x="208" y="176"/>
|
||||||
|
<use xlink:href="#p" x="208" y="200"/>
|
||||||
|
<use xlink:href="#p" x="208" y="208"/>
|
||||||
|
<use xlink:href="#p" x="208" y="216"/>
|
||||||
|
<use xlink:href="#p" x="208" y="224"/>
|
||||||
|
<use xlink:href="#p" x="216" y="32"/>
|
||||||
|
<use xlink:href="#p" x="216" y="80"/>
|
||||||
|
<use xlink:href="#p" x="216" y="104"/>
|
||||||
|
<use xlink:href="#p" x="216" y="128"/>
|
||||||
|
<use xlink:href="#p" x="216" y="144"/>
|
||||||
|
<use xlink:href="#p" x="216" y="160"/>
|
||||||
|
<use xlink:href="#p" x="216" y="176"/>
|
||||||
|
<use xlink:href="#p" x="216" y="184"/>
|
||||||
|
<use xlink:href="#p" x="216" y="200"/>
|
||||||
|
<use xlink:href="#p" x="216" y="208"/>
|
||||||
|
<use xlink:href="#p" x="216" y="224"/>
|
||||||
|
<use xlink:href="#p" x="224" y="32"/>
|
||||||
|
<use xlink:href="#p" x="224" y="40"/>
|
||||||
|
<use xlink:href="#p" x="224" y="48"/>
|
||||||
|
<use xlink:href="#p" x="224" y="56"/>
|
||||||
|
<use xlink:href="#p" x="224" y="64"/>
|
||||||
|
<use xlink:href="#p" x="224" y="72"/>
|
||||||
|
<use xlink:href="#p" x="224" y="80"/>
|
||||||
|
<use xlink:href="#p" x="224" y="96"/>
|
||||||
|
<use xlink:href="#p" x="224" y="128"/>
|
||||||
|
<use xlink:href="#p" x="224" y="136"/>
|
||||||
|
<use xlink:href="#p" x="224" y="152"/>
|
||||||
|
<use xlink:href="#p" x="224" y="160"/>
|
||||||
|
<use xlink:href="#p" x="224" y="168"/>
|
||||||
|
<use xlink:href="#p" x="224" y="176"/>
|
||||||
|
<use xlink:href="#p" x="224" y="192"/>
|
||||||
|
<use xlink:href="#p" x="224" y="200"/>
|
||||||
|
<use xlink:href="#p" x="224" y="224"/>
|
||||||
|
</g>
|
||||||
|
<g></g></svg>
|
||||||
|
After Width: | Height: | Size: 12 KiB |
Loading…
Add table
Reference in a new issue