This commit is contained in:
huangsimin 2019-11-29 18:30:20 +08:00
commit c98a5e822c
6 changed files with 1078 additions and 0 deletions

755
1.xml Normal file
View File

@ -0,0 +1,755 @@
<?xml version="1.0" encoding="UTF-8"?>
<mxfile host="Electron" modified="2019-11-28T07:55:49.689Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/12.2.2 Chrome/78.0.3904.94 Electron/7.1.0 Safari/537.36" etag="DbiUJFiSfzca5P0bM66D" version="12.2.2" type="device" pages="2">
<diagram a*b="12" name="os-a" id="efa7a0a1-bf9b-a30e-e6df-94a7791c09e9">
<mxGraphModel dx="2320" dy="1460" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="826" pageHeight="1169" background="#ffffff" math="0" shadow="0">
<root >
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="19" value="&lt;p style=&quot;margin: 0px; margin-top: 4px; text-align: center; text-decoration: underline;&quot;&gt;&lt;strong&gt;Role&lt;/strong&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdCompany&lt;br /&gt;Name&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Description&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;CreatedAt&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;UpdatedAt&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Enabled&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="1" vertex="1">
<mxGeometry x="310.0000000000001" y="91.64000000000044" width="160" height="120" as="geometry"/>
</mxCell>
<mxCell id="20" value="&lt;p style=&quot;margin: 0px; margin-top: 4px; text-align: center; text-decoration: underline;&quot;&gt;&lt;strong&gt;Company&lt;/strong&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Name&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Description&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;CreatedAt&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;UpdatedAt&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Enabled&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="1" vertex="1">
<mxGeometry x="310.00000000000006" y="302.4999999999998" width="160" height="125" as="geometry"/>
</mxCell>
<mxCell id="21" value="&lt;p style=&quot;margin: 0px; margin-top: 4px; text-align: center; text-decoration: underline;&quot;&gt;&lt;strong&gt;Calendar&lt;/strong&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdCalendar&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdCompany&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Name&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Description&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;ValidUntil&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;CreatedAt&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;UpdatedAt&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Enabled&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="1" vertex="1">
<mxGeometry x="40.00000000000002" y="284.99999999999983" width="160" height="160" as="geometry"/>
</mxCell>
<mxCell id="22" value="&lt;p style=&quot;margin: 0px; margin-top: 4px; text-align: center; text-decoration: underline;&quot;&gt;&lt;strong&gt;User&lt;/strong&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdUser&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdCompany&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Name&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;LastName&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Email&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;UserName&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Password&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;CreatedAt&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;UpdatedAt&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Enabled&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="1" vertex="1">
<mxGeometry x="879.9999999999999" y="430" width="160.0000000000001" height="180" as="geometry"/>
</mxCell>
<object label="&lt;p style=&quot;margin: 0px; margin-top: 4px; text-align: center; text-decoration: underline;&quot;&gt;&lt;strong&gt;UserProjectRole&lt;/strong&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdUserProjectRole&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdRole&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdProject&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdUser&lt;/p&gt;" oid="xxx" id="23">
<mxCell style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="1" vertex="1">
<mxGeometry x="591.0800000000005" y="101.64000000000058" width="160" height="100" as="geometry"/>
</mxCell>
</object>
<mxCell id="24" value="&lt;p style=&quot;margin: 0px; margin-top: 4px; text-align: center; text-decoration: underline;&quot;&gt;&lt;strong&gt;Client&lt;/strong&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdClient&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdCompany&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Name&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Description&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;CreatedAt&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;UpdatedAt&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Enabled&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="1" vertex="1">
<mxGeometry x="310.0000000000002" y="556.9600000000006" width="160" height="150" as="geometry"/>
</mxCell>
<mxCell id="25" value="&lt;p style=&quot;margin: 0px; margin-top: 4px; text-align: center; text-decoration: underline;&quot;&gt;&lt;strong&gt;Holiday&lt;/strong&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdHoliday&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdCalendar&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Name&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Description&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Date&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;CreatedAt&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;UpdatedAt&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Enabled&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="1" vertex="1">
<mxGeometry x="40.00000000000005" y="21.640000000000366" width="160" height="160" as="geometry"/>
</mxCell>
<mxCell id="26" value="&lt;p style=&quot;margin: 0px; margin-top: 4px; text-align: center; text-decoration: underline;&quot;&gt;&lt;strong&gt;TimeSheet&lt;/strong&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdTimeSheet&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Name&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Description&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdProject&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;CreatedAt&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;UpdatedAt&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Enabled&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdUser&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="1" vertex="1">
<mxGeometry x="1170" y="680" width="160" height="170" as="geometry"/>
</mxCell>
<mxCell id="27" value="&lt;p style=&quot;margin: 0px; margin-top: 4px; text-align: center; text-decoration: underline;&quot;&gt;&lt;strong&gt;TimeSheetHour&lt;/strong&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdTimeSheetHour&lt;br /&gt;IdTimeSheet&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdUser&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdTimeCategory&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdTask&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Quantity&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Description&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdProjectManager&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;CreatedAt&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;UpdatedAt&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Enabled&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="1" vertex="1">
<mxGeometry x="1170" y="419.99999999999994" width="160" height="200" as="geometry"/>
</mxCell>
<mxCell id="28" value="&lt;p style=&quot;margin: 0px; margin-top: 4px; text-align: center; text-decoration: underline;&quot;&gt;&lt;strong&gt;Document&lt;/strong&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdDocument&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Name&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Description&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;ValidFrom&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;ValidUntil&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;DocumentContents&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;CreatedAt&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;UpdateAt&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Enabled&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="1" vertex="1">
<mxGeometry x="129.9999999999999" y="881.1600000000003" width="160" height="180" as="geometry"/>
</mxCell>
<mxCell id="29" value="&lt;p style=&quot;margin: 0px; margin-top: 4px; text-align: center; text-decoration: underline;&quot;&gt;&lt;strong&gt;Project&lt;/strong&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdProject&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdClient&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Name&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Description&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;StartDate&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;EndDate&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;CreatedAt&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;UpdatedAt&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Enabled&lt;br /&gt;IdProjectManager&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="1" vertex="1">
<mxGeometry x="591.0800000000003" y="531.9600000000007" width="160" height="200" as="geometry"/>
</mxCell>
<mxCell id="30" value="&lt;p style=&quot;margin: 0px; margin-top: 4px; text-align: center; text-decoration: underline;&quot;&gt;&lt;strong&gt;TimeCategory&lt;/strong&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdTimeCategory&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Name&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Description&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;CreatedAt&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;UpdatedAt&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Enabled&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="1" vertex="1">
<mxGeometry x="1420.0000000000002" y="455.0000000000001" width="160" height="130" as="geometry"/>
</mxCell>
<mxCell id="31" value="&lt;p style=&quot;margin: 0px; margin-top: 4px; text-align: center; text-decoration: underline;&quot;&gt;&lt;strong&gt;TimeSheetCostCenter&lt;/strong&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdTimeSheetCostCenter&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdTimeSheet&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdCostCenter&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="1" vertex="1">
<mxGeometry x="1170" y="912.4999999999997" width="160" height="95" as="geometry"/>
</mxCell>
<mxCell id="32" value="&lt;p style=&quot;margin: 0px; margin-top: 4px; text-align: center; text-decoration: underline;&quot;&gt;&lt;strong&gt;CostCenter&lt;/strong&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdCostCenter&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Name&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Description&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;CreatedAt&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;UpdatedAt&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Enabled&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="1" vertex="1">
<mxGeometry x="940.0000000000001" y="889.9999999999995" width="160" height="140" as="geometry"/>
</mxCell>
<mxCell id="33" value="&lt;p style=&quot;margin: 0px; margin-top: 4px; text-align: center; text-decoration: underline;&quot;&gt;&lt;strong&gt;ProjectCostCenter&lt;/strong&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdProjectCostCenter&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdProject&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdCostCenter&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="1" vertex="1">
<mxGeometry x="630" y="914.9999999999995" width="160" height="90" as="geometry"/>
</mxCell>
<mxCell id="34" value="&lt;p style=&quot;margin: 0px ; margin-top: 4px ; text-align: center ; text-decoration: underline&quot;&gt;&lt;strong&gt;ProjectDocument&lt;/strong&gt;&lt;/p&gt;&lt;hr&gt;&lt;p style=&quot;margin: 0px ; margin-left: 8px&quot;&gt;IdProjectDocument&lt;/p&gt;&lt;p style=&quot;margin: 0px ; margin-left: 8px&quot;&gt;IdProject&lt;/p&gt;&lt;p style=&quot;margin: 0px ; margin-left: 8px&quot;&gt;IdDocument&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="1" vertex="1">
<mxGeometry x="360.00000000000006" y="926.1600000000003" width="160" height="90" as="geometry"/>
</mxCell>
<mxCell id="35" value="&lt;p style=&quot;margin: 0px; margin-top: 4px; text-align: center; text-decoration: underline;&quot;&gt;&lt;strong&gt;Tasks&lt;/strong&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdTask&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Name&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Description&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Work&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdProject&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;StartDate&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;EndDate&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;CreatedAt&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;UpdatedAt&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Enabled&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="1" vertex="1">
<mxGeometry x="1170" y="140.00000000000009" width="160" height="190" as="geometry"/>
</mxCell>
<mxCell id="36" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;" parent="1" source="19" target="20" edge="1">
<mxGeometry y="160" as="geometry">
<mxPoint y="160" as="sourcePoint"/>
<mxPoint x="160" y="160" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="37" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="36" connectable="0" vertex="1">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="10" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="38" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="36" connectable="0" vertex="1">
<mxGeometry x="1" relative="1" as="geometry">
<mxPoint x="590" y="105" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="45" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;rounded=0" parent="1" source="23" target="22" edge="1">
<mxGeometry x="519.3599999999999" y="180" as="geometry">
<mxPoint x="519.3599999999999" y="180" as="sourcePoint"/>
<mxPoint x="679.3599999999999" y="180" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="46" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="45" connectable="0" vertex="1">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="8.919999999999618" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="47" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="45" connectable="0" vertex="1">
<mxGeometry x="1" relative="1" as="geometry">
<mxPoint x="-550" y="-159.99999999999997" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="48" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;exitX=1;exitY=0.25;rounded=0" parent="1" source="29" target="22" edge="1">
<mxGeometry x="769.3599999999999" y="450" as="geometry">
<mxPoint x="769.3599999999999" y="450" as="sourcePoint"/>
<mxPoint x="929.3599999999999" y="450" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="49" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="48" connectable="0" vertex="1">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="8.919999999999803" y="3.039999999999177" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="50" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="48" connectable="0" vertex="1">
<mxGeometry x="1" relative="1" as="geometry">
<mxPoint x="-10" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="51" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle" parent="1" source="23" target="29" edge="1">
<mxGeometry x="389.35999999999996" y="350" as="geometry">
<mxPoint x="389.35999999999996" y="350" as="sourcePoint"/>
<mxPoint x="549.3599999999999" y="350" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="52" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="51" connectable="0" vertex="1">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="8.91999999999958" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="53" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="51" connectable="0" vertex="1">
<mxGeometry x="1" relative="1" as="geometry">
<mxPoint x="18.919999999999582" y="-21.960000000000644" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="54" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;exitX=0;exitY=0.25;rounded=0" parent="1" source="26" target="22" edge="1">
<mxGeometry x="1209.36" y="170" as="geometry">
<mxPoint x="1209.36" y="170" as="sourcePoint"/>
<mxPoint x="1369.36" y="170" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="55" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="54" connectable="0" vertex="1">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="-30" y="7.499999999999728" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="56" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="54" connectable="0" vertex="1">
<mxGeometry x="1" relative="1" as="geometry">
<mxPoint x="20" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="57" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle" parent="1" source="27" target="26" edge="1">
<mxGeometry x="1269.36" y="180" as="geometry">
<mxPoint x="1269.36" y="180" as="sourcePoint"/>
<mxPoint x="1429.36" y="180" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="58" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="57" connectable="0" vertex="1">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="10" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="59" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="57" connectable="0" vertex="1">
<mxGeometry x="1" relative="1" as="geometry">
<mxPoint x="20" y="-20" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="63" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;entryX=0.75;entryY=1" parent="1" source="33" target="29" edge="1">
<mxGeometry x="479.35999999999996" y="790" as="geometry">
<mxPoint x="479.35999999999996" y="790" as="sourcePoint"/>
<mxPoint x="639.3599999999999" y="790" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="64" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="63" connectable="0" vertex="1">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="-30" y="-97.50000000000027" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="65" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="63" connectable="0" vertex="1">
<mxGeometry x="1" relative="1" as="geometry">
<mxPoint x="-11.080000000000421" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="66" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle" parent="1" source="33" target="32" edge="1">
<mxGeometry x="469.3599999999999" y="526.1600000000003" as="geometry">
<mxPoint x="469.3599999999999" y="526.1600000000003" as="sourcePoint"/>
<mxPoint x="980" y="1061.1600000000005" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="67" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="66" connectable="0" vertex="1">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="10" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="68" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="66" connectable="0" vertex="1">
<mxGeometry x="1" relative="1" as="geometry">
<mxPoint x="-10" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="72" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;entryX=0.25;entryY=1;rounded=0" parent="1" source="34" target="29" edge="1">
<mxGeometry x="419.35999999999996" y="820" as="geometry">
<mxPoint x="419.35999999999996" y="820" as="sourcePoint"/>
<mxPoint x="579.3599999999999" y="820" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="73" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="72" connectable="0" vertex="1">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="10" y="-26.160000000000235" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="74" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="72" connectable="0" vertex="1">
<mxGeometry x="1" relative="1" as="geometry">
<mxPoint x="-11.080000000000421" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="75" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle" parent="1" source="31" target="26" edge="1">
<mxGeometry x="1079.36" y="560" as="geometry">
<mxPoint x="1079.36" y="560" as="sourcePoint"/>
<mxPoint x="1239.36" y="560" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="76" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="75" connectable="0" vertex="1">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="10.00000000000009" y="-22.499999999999915" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="77" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="75" connectable="0" vertex="1">
<mxGeometry x="1" relative="1" as="geometry">
<mxPoint x="20" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="78" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle" parent="1" source="27" target="30" edge="1">
<mxGeometry x="1309.36" y="540" as="geometry">
<mxPoint x="1309.36" y="540" as="sourcePoint"/>
<mxPoint x="1469.36" y="540" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="79" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="78" connectable="0" vertex="1">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="10" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="80" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="78" connectable="0" vertex="1">
<mxGeometry x="1" relative="1" as="geometry">
<mxPoint x="-10" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="81" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle" parent="1" source="27" target="35" edge="1">
<mxGeometry x="1119.36" y="540" as="geometry">
<mxPoint x="1119.36" y="540" as="sourcePoint"/>
<mxPoint x="1279.36" y="540" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="82" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="81" connectable="0" vertex="1">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="10" y="-20" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="83" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="81" connectable="0" vertex="1">
<mxGeometry x="1" relative="1" as="geometry">
<mxPoint x="20" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="84" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle" parent="1" source="27" target="22" edge="1">
<mxGeometry x="1389.36" y="130" as="geometry">
<mxPoint x="1389.36" y="130" as="sourcePoint"/>
<mxPoint x="1549.36" y="130" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="85" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="84" connectable="0" vertex="1">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="-30" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="86" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="84" connectable="0" vertex="1">
<mxGeometry x="1" relative="1" as="geometry">
<mxPoint x="20" y="2.7284841053187846e-13" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="87" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle" parent="1" source="20" target="24" edge="1">
<mxGeometry x="519.3599999999999" y="200" as="geometry">
<mxPoint x="519.3599999999999" y="200" as="sourcePoint"/>
<mxPoint x="679.3599999999999" y="200" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="88" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="87" connectable="0" vertex="1">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="-40" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="89" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="87" connectable="0" vertex="1">
<mxGeometry x="1" relative="1" as="geometry">
<mxPoint x="19.99999999999981" y="-24.999999999999815" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="90" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle" parent="1" source="25" target="21" edge="1">
<mxGeometry x="620" y="340" as="geometry">
<mxPoint x="620" y="340" as="sourcePoint"/>
<mxPoint x="780" y="340" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="91" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="90" connectable="0" vertex="1">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="10" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="92" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="90" connectable="0" vertex="1">
<mxGeometry x="1" relative="1" as="geometry">
<mxPoint x="20" y="-24.99999999999981" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="99" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle" parent="1" source="29" target="24" edge="1">
<mxGeometry x="369.35999999999996" y="360" as="geometry">
<mxPoint x="369.35999999999996" y="360" as="sourcePoint"/>
<mxPoint x="529.3599999999999" y="360" as="targetPoint"/>
<Array as="points"/>
</mxGeometry>
</mxCell>
<mxCell id="100" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="99" connectable="0" vertex="1">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="-31.08000000000042" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="101" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="99" connectable="0" vertex="1">
<mxGeometry x="1" relative="1" as="geometry">
<mxPoint x="19.99999999999981" y="1.8947806286936006e-13" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="102" value="Use" style="endArrow=open;endSize=12;dashed=1" parent="1" source="23" target="19" edge="1">
<mxGeometry x="430" y="50" as="geometry">
<mxPoint x="430" y="50" as="sourcePoint"/>
<mxPoint x="590" y="50" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="103" value="1" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;" parent="1" source="21" target="20" edge="1">
<mxGeometry x="-0.8181818181818175" y="4.999999999999702" relative="1" as="geometry">
<mxPoint x="80" y="510" as="sourcePoint"/>
<mxPoint x="240" y="510" as="targetPoint"/>
<mxPoint as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="107" value="" style="endArrow=none;edgeStyle=orthogonalEdgeStyle;" parent="1" source="28" target="34" edge="1">
<mxGeometry x="190" y="950" as="geometry">
<mxPoint x="190" y="950" as="sourcePoint"/>
<mxPoint x="350" y="950" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="108" value="parent" style="resizable=0;align=left;verticalAlign=bottom;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="107" connectable="0" vertex="1">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="10" y="-10" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="109" value="child" style="resizable=0;align=right;verticalAlign=bottom;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="107" connectable="0" vertex="1">
<mxGeometry x="1" relative="1" as="geometry">
<mxPoint x="-10" y="23.83999999999977" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="110" value="" style="endArrow=none;edgeStyle=orthogonalEdgeStyle;" parent="1" source="32" target="31" edge="1">
<mxGeometry x="910" y="972.4999999999998" as="geometry">
<mxPoint x="910" y="972.4999999999998" as="sourcePoint"/>
<mxPoint x="1070" y="972.4999999999998" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="111" value="parent" style="resizable=0;align=left;verticalAlign=bottom;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="110" connectable="0" vertex="1">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="10" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="112" value="child" style="resizable=0;align=right;verticalAlign=bottom;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="110" connectable="0" vertex="1">
<mxGeometry x="1" relative="1" as="geometry">
<mxPoint x="-10" y="25" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="113" value="" style="endArrow=block;endFill=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=top;entryX=1;entryY=0.75;exitX=0;exitY=0.75;rounded=0" parent="1" source="26" target="29" edge="1">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="910" y="840" as="sourcePoint"/>
<mxPoint x="1070" y="840" as="targetPoint"/>
<Array as="points">
<mxPoint x="910" y="808"/>
<mxPoint x="910" y="682"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="114" value="1" style="resizable=0;align=left;verticalAlign=bottom;labelBackgroundColor=#ffffff;fontSize=10" parent="113" connectable="0" vertex="1">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="-19.99999999999982" y="2.499999999999909" as="offset"/>
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
<diagram id="ZEFDzWWxa7eG-YTOwoTG" name="os-b">
<mxGraphModel dx="3712" dy="2336" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
<root>
<mxCell id="dzx6YQmkxxi6H6zbbz4T-0"/>
<mxCell id="dzx6YQmkxxi6H6zbbz4T-1" parent="dzx6YQmkxxi6H6zbbz4T-0"/>
<mxCell id="bSDDLgkOTVISDoT7am6R-0" value="&lt;p style=&quot;margin: 0px; margin-top: 4px; text-align: center; text-decoration: underline;&quot;&gt;&lt;strong&gt;Role&lt;/strong&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdCompany&lt;br /&gt;Name&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Description&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;CreatedAt&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;UpdatedAt&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Enabled&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="dzx6YQmkxxi6H6zbbz4T-1" vertex="1">
<mxGeometry x="300" y="98.14000000000044" width="160" height="120" as="geometry"/>
</mxCell>
<mxCell id="9OZsCzifeMDsPcw4zjhr-2" style="edgeStyle=orthogonalEdgeStyle;curved=1;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;startArrow=diamondThin;startFill=0;startSize=14;endArrow=open;endSize=12;" edge="1" parent="dzx6YQmkxxi6H6zbbz4T-1" source="bSDDLgkOTVISDoT7am6R-1" target="bSDDLgkOTVISDoT7am6R-2">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-1" value="&lt;p style=&quot;margin: 0px; margin-top: 4px; text-align: center; text-decoration: underline;&quot;&gt;&lt;strong&gt;Company&lt;/strong&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Name&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Description&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;CreatedAt&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;UpdatedAt&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Enabled&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="dzx6YQmkxxi6H6zbbz4T-1" vertex="1">
<mxGeometry x="300" y="308.9999999999998" width="160" height="125" as="geometry"/>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-2" value="&lt;p style=&quot;margin: 0px; margin-top: 4px; text-align: center; text-decoration: underline;&quot;&gt;&lt;strong&gt;Calendar&lt;/strong&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdCalendar&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdCompany&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Name&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Description&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;ValidUntil&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;CreatedAt&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;UpdatedAt&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Enabled&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="dzx6YQmkxxi6H6zbbz4T-1" vertex="1">
<mxGeometry x="30" y="291.49999999999983" width="160" height="160" as="geometry"/>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-3" value="&lt;p style=&quot;margin: 0px; margin-top: 4px; text-align: center; text-decoration: underline;&quot;&gt;&lt;strong&gt;User&lt;/strong&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdUser&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdCompany&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Name&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;LastName&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Email&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;UserName&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Password&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;CreatedAt&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;UpdatedAt&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Enabled&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="dzx6YQmkxxi6H6zbbz4T-1" vertex="1">
<mxGeometry x="870" y="436.5" width="160.0000000000001" height="180" as="geometry"/>
</mxCell>
<object label="&lt;p style=&quot;margin: 0px; margin-top: 4px; text-align: center; text-decoration: underline;&quot;&gt;&lt;strong&gt;UserProjectRole&lt;/strong&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdUserProjectRole&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdRole&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdProject&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdUser&lt;/p&gt;" oid="xxx" id="bSDDLgkOTVISDoT7am6R-4">
<mxCell style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="dzx6YQmkxxi6H6zbbz4T-1" vertex="1">
<mxGeometry x="581.0800000000004" y="108.14000000000058" width="160" height="100" as="geometry"/>
</mxCell>
</object>
<mxCell id="bSDDLgkOTVISDoT7am6R-5" value="&lt;p style=&quot;margin: 0px; margin-top: 4px; text-align: center; text-decoration: underline;&quot;&gt;&lt;strong&gt;Client&lt;/strong&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdClient&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdCompany&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Name&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Description&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;CreatedAt&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;UpdatedAt&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Enabled&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="dzx6YQmkxxi6H6zbbz4T-1" vertex="1">
<mxGeometry x="300.0000000000002" y="563.4600000000006" width="160" height="150" as="geometry"/>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-6" value="&lt;p style=&quot;margin: 0px; margin-top: 4px; text-align: center; text-decoration: underline;&quot;&gt;&lt;strong&gt;Holiday&lt;/strong&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdHoliday&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdCalendar&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Name&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Description&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Date&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;CreatedAt&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;UpdatedAt&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Enabled&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="dzx6YQmkxxi6H6zbbz4T-1" vertex="1">
<mxGeometry x="30" y="28.14000000000037" width="154" height="160" as="geometry"/>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-7" value="&lt;p style=&quot;margin: 0px; margin-top: 4px; text-align: center; text-decoration: underline;&quot;&gt;&lt;strong&gt;TimeSheet&lt;/strong&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdTimeSheet&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Name&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Description&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdProject&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;CreatedAt&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;UpdatedAt&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Enabled&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdUser&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="dzx6YQmkxxi6H6zbbz4T-1" vertex="1">
<mxGeometry x="1160" y="686.5" width="160" height="170" as="geometry"/>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-8" value="&lt;p style=&quot;margin: 0px; margin-top: 4px; text-align: center; text-decoration: underline;&quot;&gt;&lt;strong&gt;TimeSheetHour&lt;/strong&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdTimeSheetHour&lt;br /&gt;IdTimeSheet&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdUser&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdTimeCategory&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdTask&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Quantity&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Description&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdProjectManager&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;CreatedAt&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;UpdatedAt&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Enabled&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="dzx6YQmkxxi6H6zbbz4T-1" vertex="1">
<mxGeometry x="1160" y="426.49999999999994" width="160" height="200" as="geometry"/>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-9" value="&lt;p style=&quot;margin: 0px; margin-top: 4px; text-align: center; text-decoration: underline;&quot;&gt;&lt;strong&gt;Document&lt;/strong&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdDocument&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Name&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Description&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;ValidFrom&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;ValidUntil&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;DocumentContents&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;CreatedAt&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;UpdateAt&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Enabled&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="dzx6YQmkxxi6H6zbbz4T-1" vertex="1">
<mxGeometry x="120" y="887.6600000000003" width="160" height="180" as="geometry"/>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-10" value="&lt;p style=&quot;margin: 0px; margin-top: 4px; text-align: center; text-decoration: underline;&quot;&gt;&lt;strong&gt;Project&lt;/strong&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdProject&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdClient&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Name&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Description&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;StartDate&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;EndDate&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;CreatedAt&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;UpdatedAt&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Enabled&lt;br /&gt;IdProjectManager&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="dzx6YQmkxxi6H6zbbz4T-1" vertex="1">
<mxGeometry x="581.0800000000004" y="538.4600000000007" width="160" height="200" as="geometry"/>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-11" value="&lt;p style=&quot;margin: 0px; margin-top: 4px; text-align: center; text-decoration: underline;&quot;&gt;&lt;strong&gt;TimeCategory&lt;/strong&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdTimeCategory&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Name&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Description&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;CreatedAt&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;UpdatedAt&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Enabled&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="dzx6YQmkxxi6H6zbbz4T-1" vertex="1">
<mxGeometry x="1410" y="461.5000000000001" width="160" height="130" as="geometry"/>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-12" value="&lt;p style=&quot;margin: 0px; margin-top: 4px; text-align: center; text-decoration: underline;&quot;&gt;&lt;strong&gt;TimeSheetCostCenter&lt;/strong&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdTimeSheetCostCenter&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdTimeSheet&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdCostCenter&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="dzx6YQmkxxi6H6zbbz4T-1" vertex="1">
<mxGeometry x="1160" y="918.9999999999997" width="160" height="95" as="geometry"/>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-13" value="&lt;p style=&quot;margin: 0px; margin-top: 4px; text-align: center; text-decoration: underline;&quot;&gt;&lt;strong&gt;CostCenter&lt;/strong&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdCostCenter&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Name&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Description&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;CreatedAt&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;UpdatedAt&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Enabled&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="dzx6YQmkxxi6H6zbbz4T-1" vertex="1">
<mxGeometry x="930" y="896.4999999999995" width="160" height="140" as="geometry"/>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-14" value="&lt;p style=&quot;margin: 0px; margin-top: 4px; text-align: center; text-decoration: underline;&quot;&gt;&lt;strong&gt;ProjectCostCenter&lt;/strong&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdProjectCostCenter&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdProject&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdCostCenter&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="dzx6YQmkxxi6H6zbbz4T-1" vertex="1">
<mxGeometry x="620" y="921.4999999999995" width="160" height="90" as="geometry"/>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-15" value="&lt;p style=&quot;margin: 0px ; margin-top: 4px ; text-align: center ; text-decoration: underline&quot;&gt;&lt;strong&gt;ProjectDocument&lt;/strong&gt;&lt;/p&gt;&lt;hr&gt;&lt;p style=&quot;margin: 0px ; margin-left: 8px&quot;&gt;IdProjectDocument&lt;/p&gt;&lt;p style=&quot;margin: 0px ; margin-left: 8px&quot;&gt;IdProject&lt;/p&gt;&lt;p style=&quot;margin: 0px ; margin-left: 8px&quot;&gt;IdDocument&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="dzx6YQmkxxi6H6zbbz4T-1" vertex="1">
<mxGeometry x="350" y="932.6600000000003" width="160" height="90" as="geometry"/>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-16" value="&lt;p style=&quot;margin: 0px; margin-top: 4px; text-align: center; text-decoration: underline;&quot;&gt;&lt;strong&gt;Tasks&lt;/strong&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdTask&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Name&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Description&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Work&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;IdProject&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;StartDate&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;EndDate&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;CreatedAt&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;UpdatedAt&lt;/p&gt;&lt;p style=&quot;margin: 0px; margin-left: 8px;&quot;&gt;Enabled&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="dzx6YQmkxxi6H6zbbz4T-1" vertex="1">
<mxGeometry x="1160" y="146.50000000000009" width="160" height="190" as="geometry"/>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-17" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;" parent="dzx6YQmkxxi6H6zbbz4T-1" source="bSDDLgkOTVISDoT7am6R-0" target="bSDDLgkOTVISDoT7am6R-1" edge="1">
<mxGeometry x="-10" y="166.5" as="geometry">
<mxPoint x="-10" y="166.5" as="sourcePoint"/>
<mxPoint x="150" y="166.5" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-18" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="bSDDLgkOTVISDoT7am6R-17" connectable="0" vertex="1">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="10" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-19" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="bSDDLgkOTVISDoT7am6R-17" connectable="0" vertex="1">
<mxGeometry x="1" relative="1" as="geometry">
<mxPoint x="590" y="105" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-20" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;rounded=0" parent="dzx6YQmkxxi6H6zbbz4T-1" source="bSDDLgkOTVISDoT7am6R-4" target="bSDDLgkOTVISDoT7am6R-3" edge="1">
<mxGeometry x="509.3599999999999" y="186.5" as="geometry">
<mxPoint x="509.3599999999999" y="186.5" as="sourcePoint"/>
<mxPoint x="669.3599999999999" y="186.5" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-21" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="bSDDLgkOTVISDoT7am6R-20" connectable="0" vertex="1">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="8.919999999999618" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-22" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="bSDDLgkOTVISDoT7am6R-20" connectable="0" vertex="1">
<mxGeometry x="1" relative="1" as="geometry">
<mxPoint x="-550" y="-159.99999999999997" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-23" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;exitX=1;exitY=0.25;rounded=0" parent="dzx6YQmkxxi6H6zbbz4T-1" source="bSDDLgkOTVISDoT7am6R-10" target="bSDDLgkOTVISDoT7am6R-3" edge="1">
<mxGeometry x="759.3599999999999" y="456.5" as="geometry">
<mxPoint x="759.3599999999999" y="456.5" as="sourcePoint"/>
<mxPoint x="919.3599999999997" y="456.5" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-24" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="bSDDLgkOTVISDoT7am6R-23" connectable="0" vertex="1">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="8.919999999999803" y="3.039999999999177" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-25" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="bSDDLgkOTVISDoT7am6R-23" connectable="0" vertex="1">
<mxGeometry x="1" relative="1" as="geometry">
<mxPoint x="-10" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-26" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle" parent="dzx6YQmkxxi6H6zbbz4T-1" source="bSDDLgkOTVISDoT7am6R-4" target="bSDDLgkOTVISDoT7am6R-10" edge="1">
<mxGeometry x="379.3599999999999" y="356.5" as="geometry">
<mxPoint x="379.3599999999999" y="356.5" as="sourcePoint"/>
<mxPoint x="539.3599999999999" y="356.5" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-27" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="bSDDLgkOTVISDoT7am6R-26" connectable="0" vertex="1">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="8.91999999999958" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-28" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="bSDDLgkOTVISDoT7am6R-26" connectable="0" vertex="1">
<mxGeometry x="1" relative="1" as="geometry">
<mxPoint x="18.919999999999582" y="-21.960000000000644" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-29" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;exitX=0;exitY=0.25;rounded=0" parent="dzx6YQmkxxi6H6zbbz4T-1" source="bSDDLgkOTVISDoT7am6R-7" target="bSDDLgkOTVISDoT7am6R-3" edge="1">
<mxGeometry x="1199.3599999999997" y="176.5" as="geometry">
<mxPoint x="1199.3599999999997" y="176.5" as="sourcePoint"/>
<mxPoint x="1359.3599999999997" y="176.5" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-30" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="bSDDLgkOTVISDoT7am6R-29" connectable="0" vertex="1">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="-30" y="7.499999999999728" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-31" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="bSDDLgkOTVISDoT7am6R-29" connectable="0" vertex="1">
<mxGeometry x="1" relative="1" as="geometry">
<mxPoint x="20" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-32" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle" parent="dzx6YQmkxxi6H6zbbz4T-1" source="bSDDLgkOTVISDoT7am6R-8" target="bSDDLgkOTVISDoT7am6R-7" edge="1">
<mxGeometry x="1259.3599999999997" y="186.5" as="geometry">
<mxPoint x="1259.3599999999997" y="186.5" as="sourcePoint"/>
<mxPoint x="1419.3599999999997" y="186.5" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-33" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="bSDDLgkOTVISDoT7am6R-32" connectable="0" vertex="1">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="10" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-34" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="bSDDLgkOTVISDoT7am6R-32" connectable="0" vertex="1">
<mxGeometry x="1" relative="1" as="geometry">
<mxPoint x="20" y="-20" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-35" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;entryX=0.75;entryY=1" parent="dzx6YQmkxxi6H6zbbz4T-1" source="bSDDLgkOTVISDoT7am6R-14" target="bSDDLgkOTVISDoT7am6R-10" edge="1">
<mxGeometry x="469.3599999999999" y="796.5" as="geometry">
<mxPoint x="469.3599999999999" y="796.5" as="sourcePoint"/>
<mxPoint x="629.3599999999999" y="796.5" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-36" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="bSDDLgkOTVISDoT7am6R-35" connectable="0" vertex="1">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="-30" y="-97.50000000000027" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-37" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="bSDDLgkOTVISDoT7am6R-35" connectable="0" vertex="1">
<mxGeometry x="1" relative="1" as="geometry">
<mxPoint x="-11.080000000000421" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-38" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle" parent="dzx6YQmkxxi6H6zbbz4T-1" source="bSDDLgkOTVISDoT7am6R-14" target="bSDDLgkOTVISDoT7am6R-13" edge="1">
<mxGeometry x="459.3599999999999" y="532.6600000000003" as="geometry">
<mxPoint x="459.3599999999999" y="532.6600000000003" as="sourcePoint"/>
<mxPoint x="970" y="1067.6600000000005" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-39" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="bSDDLgkOTVISDoT7am6R-38" connectable="0" vertex="1">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="10" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-40" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="bSDDLgkOTVISDoT7am6R-38" connectable="0" vertex="1">
<mxGeometry x="1" relative="1" as="geometry">
<mxPoint x="-10" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-41" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;entryX=0.25;entryY=1;rounded=0" parent="dzx6YQmkxxi6H6zbbz4T-1" source="bSDDLgkOTVISDoT7am6R-15" target="bSDDLgkOTVISDoT7am6R-10" edge="1">
<mxGeometry x="409.3599999999999" y="826.5" as="geometry">
<mxPoint x="409.3599999999999" y="826.5" as="sourcePoint"/>
<mxPoint x="569.3599999999999" y="826.5" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-42" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="bSDDLgkOTVISDoT7am6R-41" connectable="0" vertex="1">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="10" y="-26.160000000000235" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-43" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="bSDDLgkOTVISDoT7am6R-41" connectable="0" vertex="1">
<mxGeometry x="1" relative="1" as="geometry">
<mxPoint x="-11.080000000000421" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-44" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle" parent="dzx6YQmkxxi6H6zbbz4T-1" source="bSDDLgkOTVISDoT7am6R-12" target="bSDDLgkOTVISDoT7am6R-7" edge="1">
<mxGeometry x="1069.3599999999997" y="566.5" as="geometry">
<mxPoint x="1069.3599999999997" y="566.5" as="sourcePoint"/>
<mxPoint x="1229.3599999999997" y="566.5" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-45" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="bSDDLgkOTVISDoT7am6R-44" connectable="0" vertex="1">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="10.00000000000009" y="-22.499999999999915" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-46" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="bSDDLgkOTVISDoT7am6R-44" connectable="0" vertex="1">
<mxGeometry x="1" relative="1" as="geometry">
<mxPoint x="20" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-47" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle" parent="dzx6YQmkxxi6H6zbbz4T-1" source="bSDDLgkOTVISDoT7am6R-8" target="bSDDLgkOTVISDoT7am6R-11" edge="1">
<mxGeometry x="1299.3599999999997" y="546.5" as="geometry">
<mxPoint x="1299.3599999999997" y="546.5" as="sourcePoint"/>
<mxPoint x="1459.3599999999997" y="546.5" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-48" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="bSDDLgkOTVISDoT7am6R-47" connectable="0" vertex="1">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="10" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-49" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="bSDDLgkOTVISDoT7am6R-47" connectable="0" vertex="1">
<mxGeometry x="1" relative="1" as="geometry">
<mxPoint x="-10" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-50" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle" parent="dzx6YQmkxxi6H6zbbz4T-1" source="bSDDLgkOTVISDoT7am6R-8" target="bSDDLgkOTVISDoT7am6R-16" edge="1">
<mxGeometry x="1109.3599999999997" y="546.5" as="geometry">
<mxPoint x="1109.3599999999997" y="546.5" as="sourcePoint"/>
<mxPoint x="1269.3599999999997" y="546.5" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-51" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="bSDDLgkOTVISDoT7am6R-50" connectable="0" vertex="1">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="10" y="-20" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-52" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="bSDDLgkOTVISDoT7am6R-50" connectable="0" vertex="1">
<mxGeometry x="1" relative="1" as="geometry">
<mxPoint x="20" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-53" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle" parent="dzx6YQmkxxi6H6zbbz4T-1" source="bSDDLgkOTVISDoT7am6R-8" target="bSDDLgkOTVISDoT7am6R-3" edge="1">
<mxGeometry x="1379.3599999999997" y="136.5" as="geometry">
<mxPoint x="1379.3599999999997" y="136.5" as="sourcePoint"/>
<mxPoint x="1539.3599999999997" y="136.5" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-54" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="bSDDLgkOTVISDoT7am6R-53" connectable="0" vertex="1">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="-30" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-55" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="bSDDLgkOTVISDoT7am6R-53" connectable="0" vertex="1">
<mxGeometry x="1" relative="1" as="geometry">
<mxPoint x="20" y="2.7284841053187846e-13" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-56" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle" parent="dzx6YQmkxxi6H6zbbz4T-1" source="bSDDLgkOTVISDoT7am6R-1" target="bSDDLgkOTVISDoT7am6R-5" edge="1">
<mxGeometry x="509.3599999999999" y="206.5" as="geometry">
<mxPoint x="509.3599999999999" y="206.5" as="sourcePoint"/>
<mxPoint x="669.3599999999999" y="206.5" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-57" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="bSDDLgkOTVISDoT7am6R-56" connectable="0" vertex="1">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="-40" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-58" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="bSDDLgkOTVISDoT7am6R-56" connectable="0" vertex="1">
<mxGeometry x="1" relative="1" as="geometry">
<mxPoint x="19.99999999999981" y="-24.999999999999815" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-59" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle" parent="dzx6YQmkxxi6H6zbbz4T-1" source="bSDDLgkOTVISDoT7am6R-6" target="bSDDLgkOTVISDoT7am6R-2" edge="1">
<mxGeometry x="610" y="346.5" as="geometry">
<mxPoint x="610" y="346.5" as="sourcePoint"/>
<mxPoint x="770" y="346.5" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-60" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="bSDDLgkOTVISDoT7am6R-59" connectable="0" vertex="1">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="10" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-61" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="bSDDLgkOTVISDoT7am6R-59" connectable="0" vertex="1">
<mxGeometry x="1" relative="1" as="geometry">
<mxPoint x="20" y="-24.99999999999981" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-62" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle" parent="dzx6YQmkxxi6H6zbbz4T-1" source="bSDDLgkOTVISDoT7am6R-10" target="bSDDLgkOTVISDoT7am6R-5" edge="1">
<mxGeometry x="359.3599999999999" y="366.5" as="geometry">
<mxPoint x="359.3599999999999" y="366.5" as="sourcePoint"/>
<mxPoint x="519.3599999999999" y="366.5" as="targetPoint"/>
<Array as="points"/>
</mxGeometry>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-63" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="bSDDLgkOTVISDoT7am6R-62" connectable="0" vertex="1">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="-31.08000000000042" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-64" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="bSDDLgkOTVISDoT7am6R-62" connectable="0" vertex="1">
<mxGeometry x="1" relative="1" as="geometry">
<mxPoint x="19.99999999999981" y="1.8947806286936006e-13" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-65" value="Use" style="endArrow=open;endSize=12;dashed=1" parent="dzx6YQmkxxi6H6zbbz4T-1" source="bSDDLgkOTVISDoT7am6R-4" target="bSDDLgkOTVISDoT7am6R-0" edge="1">
<mxGeometry x="420" y="56.5" as="geometry">
<mxPoint x="420" y="56.5" as="sourcePoint"/>
<mxPoint x="580" y="56.5" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-67" value="" style="endArrow=none;edgeStyle=orthogonalEdgeStyle;" parent="dzx6YQmkxxi6H6zbbz4T-1" source="bSDDLgkOTVISDoT7am6R-9" target="bSDDLgkOTVISDoT7am6R-15" edge="1">
<mxGeometry x="180" y="956.5" as="geometry">
<mxPoint x="180" y="956.5" as="sourcePoint"/>
<mxPoint x="340" y="956.5" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-68" value="parent" style="resizable=0;align=left;verticalAlign=bottom;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="bSDDLgkOTVISDoT7am6R-67" connectable="0" vertex="1">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="10" y="-10" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-69" value="child" style="resizable=0;align=right;verticalAlign=bottom;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="bSDDLgkOTVISDoT7am6R-67" connectable="0" vertex="1">
<mxGeometry x="1" relative="1" as="geometry">
<mxPoint x="-10" y="23.83999999999977" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-70" value="" style="endArrow=none;edgeStyle=orthogonalEdgeStyle;" parent="dzx6YQmkxxi6H6zbbz4T-1" source="bSDDLgkOTVISDoT7am6R-13" target="bSDDLgkOTVISDoT7am6R-12" edge="1">
<mxGeometry x="900" y="978.9999999999998" as="geometry">
<mxPoint x="900" y="978.9999999999998" as="sourcePoint"/>
<mxPoint x="1060" y="978.9999999999998" as="targetPoint"/>
</mxGeometry>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-71" value="parent" style="resizable=0;align=left;verticalAlign=bottom;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="bSDDLgkOTVISDoT7am6R-70" connectable="0" vertex="1">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="10" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-72" value="child" style="resizable=0;align=right;verticalAlign=bottom;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="bSDDLgkOTVISDoT7am6R-70" connectable="0" vertex="1">
<mxGeometry x="1" relative="1" as="geometry">
<mxPoint x="-10" y="25" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-73" value="" style="endArrow=block;endFill=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=top;entryX=1;entryY=0.75;exitX=0;exitY=0.75;rounded=0" parent="dzx6YQmkxxi6H6zbbz4T-1" source="bSDDLgkOTVISDoT7am6R-7" target="bSDDLgkOTVISDoT7am6R-10" edge="1">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="900" y="846.5" as="sourcePoint"/>
<mxPoint x="1060" y="846.5" as="targetPoint"/>
<Array as="points">
<mxPoint x="900" y="814.5"/>
<mxPoint x="900" y="688.5"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="bSDDLgkOTVISDoT7am6R-74" value="1" style="resizable=0;align=left;verticalAlign=bottom;labelBackgroundColor=#ffffff;fontSize=10" parent="bSDDLgkOTVISDoT7am6R-73" connectable="0" vertex="1">
<mxGeometry x="-1" relative="1" as="geometry">
<mxPoint x="-19.99999999999982" y="2.499999999999909" as="offset"/>
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

15
go.mod Normal file
View File

@ -0,0 +1,15 @@
module ggraph
go 1.13
require (
github.com/474420502/focus v0.7.0
github.com/antchfx/xpath v1.1.2
github.com/davecgh/go-spew v1.1.1
github.com/google/uuid v1.1.1 // indirect
github.com/lestrrat-go/libxml2 v0.0.0-20191008001243-8ad9bf187c39
github.com/lithammer/shortuuid v3.0.0+incompatible // indirect
github.com/pkg/errors v0.8.1
github.com/stretchr/testify v1.4.0 // indirect
gopkg.in/xmlpath.v1 v1.0.0-20140413065638-a146725ea6e7 // indirect
)

27
go.sum Normal file
View File

@ -0,0 +1,27 @@
github.com/474420502/focus v0.7.0 h1:X0BMIcUY/x6Y/Tpdf8ak72u402fImKoxbV1atUhN68o=
github.com/474420502/focus v0.7.0/go.mod h1:Rnsdajih5yVIPvDg0tpQjVdEYz+zCZRjlzGfk+Sx3q8=
github.com/Pallinder/go-randomdata v1.1.0/go.mod h1:yHmJgulpD2Nfrm0cR9tI/+oAgRqCQQixsA8HyRZfV9Y=
github.com/antchfx/xpath v1.1.2 h1:YziPrtM0gEJBnhdUGxYcIVYXZ8FXbtbovxOi+UW/yWQ=
github.com/antchfx/xpath v1.1.2/go.mod h1:Yee4kTMuNiPYJ7nSNorELQMr1J33uOpXDMByNYhvtNk=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o=
github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY=
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/lestrrat-go/libxml2 v0.0.0-20191008001243-8ad9bf187c39 h1:1WgaDmERN0G8DJlrvb8Q2/CGs4wS90YkcpWiyzXU7pg=
github.com/lestrrat-go/libxml2 v0.0.0-20191008001243-8ad9bf187c39/go.mod h1:fy/ZVbgyB83mtricxwSW3zqIRXWOVpKG2PvdUDFeC58=
github.com/lithammer/shortuuid v3.0.0+incompatible h1:NcD0xWW/MZYXEHa6ITy6kaXN5nwm/V115vj2YXfhS0w=
github.com/lithammer/shortuuid v3.0.0+incompatible/go.mod h1:FR74pbAuElzOUuenUHTK2Tciko1/vKuIKS9dSkDrA4w=
github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk=
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/xmlpath.v1 v1.0.0-20140413065638-a146725ea6e7 h1:zibSPXbkfB1Dwl76rJgLa68xcdHu42qmFTe6vAnU4wA=
gopkg.in/xmlpath.v1 v1.0.0-20140413065638-a146725ea6e7/go.mod h1:wo0SW5T6XqIKCCAge330Cd5sm+7VI6v85OrQHIk50KM=
gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=

151
graph.go Normal file
View File

@ -0,0 +1,151 @@
package graph
import (
"errors"
"log"
)
var attributeNameLaw map[rune]struct{} = make(map[rune]struct{})
func init() {
for _, c := range "abcdefghijklmnopqrstuvwsyzABCDEFGHIJKLMNOPQRSTUVWSYZ-_" {
attributeNameLaw[c] = struct{}{}
}
}
type Range struct {
Start int
End int
}
type ElementTag struct {
Range
}
type Element struct {
Range
Tag *ElementTag
Attributes []*Attribute
Source []rune
Children []*Element
}
type Attribute struct {
Range
Key Range
Value Range
}
func (e *Element) GetTagName() string {
return string(e.Source[e.Tag.Start:e.Tag.End])
}
func GetTag(source []rune, cur int) (*ElementTag, int) {
for i := cur; i < len(source); i++ {
c := source[i]
if c == ' ' {
return &ElementTag{Range{cur, i - 1}}, i
}
}
return nil, -1
}
func SkipAttribute(source []rune, cur int) int {
for i := cur; i < len(source); i++ {
c := source[i]
if c == ' ' || c == '>' {
return i - 1
}
}
panic(errors.New("over the range of the next attribute"))
}
func GetAttribute(source []rune, cur int) *Range {
}
func GetAttributes(source []rune, cur int) []*Attribute {
var attrs []*Attribute
LOOP_TOP:
for i := cur; i < len(source); i++ {
c := source[i]
switch c {
case '>':
break LOOP_TOP
case '/':
if source[i+1] == '>' {
break LOOP_TOP
}
case ' ':
continue
default:
attr := &Attribute{}
attr.Range.Start = i
for ; i < len(source); i++ {
c = source[i]
if _, ok := attributeNameLaw[c]; !ok {
i = SkipAttribute(source, i)
break
} else {
if c == ' ' || c == '>' {
attr.Range.End = i
break
}
}
}
}
}
return attrs
}
func ParseChild(parent *Element, cur int) *Element {
start := cur
end := start
child := &Element{}
child.Tag, cur = GetTag(parent.Source, start)
GetAttributes(parent.Source, cur)
for i := cur; i < len(parent.Source); i++ {
c := parent.Source[i]
if c == '>' {
end = i - 1
return child
}
}
return nil
}
func GetChildren(parent *Element) {
// GetChild
for i := parent.Range.Start; i < parent.Range.End; i++ {
c := parent.Source[i]
if c == '<' {
tag := ParseChild(parent, i)
log.Println(tag)
}
}
}
func ParseXML(data []byte) *Element {
source := []rune(string(data))
root := &Element{tag: nil, Source: source, Pos: Range{0, len(source)}}
return root
}

19
graph_test.go Normal file
View File

@ -0,0 +1,19 @@
package graph
import (
"io/ioutil"
"os"
"testing"
)
func Test1(t *testing.T) {
f, err := os.Open("1.xml")
if err != nil {
panic(err)
}
data, err := ioutil.ReadAll(f)
if err != nil {
panic(err)
}
ParseXML(data)
}

111
xml_test.go Normal file
View File

@ -0,0 +1,111 @@
package graph
import (
"io/ioutil"
"log"
"os"
"testing"
"github.com/lestrrat-go/libxml2"
"github.com/lestrrat-go/libxml2/types"
"github.com/lestrrat-go/libxml2/xpath"
"github.com/pkg/errors"
)
func checkRune(c rune, i int) {
}
func TestLibxml(t *testing.T) {
f, err := os.Open("1.xml")
if err != nil {
panic(err)
}
data, err := ioutil.ReadAll(f)
if err != nil {
panic(err)
}
doc, err := libxml2.Parse(data)
if err != nil {
panic(err)
}
root, err := doc.DocumentElement()
if err != nil {
panic(err)
}
cxt, err := xpath.NewContext(root)
if err != nil {
panic(err)
}
result, err := cxt.Find("//diagram")
if err != nil {
panic(err)
}
diagrams := result.NodeIter()
var mdiagram types.Node
for diagrams.Next() {
diagram := diagrams.Node()
result, err = diagram.Find("./mxGraphModel/root")
if err != nil {
panic(err)
}
rootiter := result.NodeIter()
if rootiter.Next() {
root := rootiter.Node()
// id 冲突
if mdiagram == nil {
mdiagram = root
} else {
cells, err := mdiagram.ChildNodes()
errors.Cause(err)
// t.Error(cells)
first := cells.First()
for first != nil {
err = mdiagram.AddChild(first)
if err != nil {
log.Println(err)
}
first, err = first.NextSibling()
if err != nil {
log.Println(err)
}
}
}
}
}
t.Error(mdiagram)
// ndoc := dom.CreateDocument()
// doc.CreateElement("")
// t.Error(spew.Sprint(result.NodeList()))
}
func TestXML(t *testing.T) {
// f, err := os.Open("1.xml")
// if err != nil {
// panic(err)
// }
// buf, err := ioutil.ReadAll(f)
// if err != nil {
// panic(err)
// }
// data := []rune(string(buf))
}