Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • DM/dm-docs
  • hammonds/dm-docs
  • hparraga/dm-docs
3 results
Show changes
Commits on Source (148)
Showing
with 7234 additions and 0 deletions
var
# The top level makefile. Targets like "all" and "clean"
# are defined in the RULES file.
TOP = .
SUBDIRS = src
include $(TOP)/tools/make/RULES_DM
#!/bin/sh
# Run ant
if [ -z $DM_ROOT_DIR ]; then
cd `dirname $0` && myDir=`pwd`
setupFile=$myDir/../../setup.sh
if [ ! -f $setupFile ]; then
echo "Cannot find setup file: $setupFile"
exit 1
fi
source $setupFile
fi
DM_HOST_ARCH=`uname | tr [A-Z] [a-z]`-`uname -m`
export JAVA_HOME=$DM_SUPPORT_DIR/java/$DM_HOST_ARCH
export ANT_HOME=$DM_SUPPORT_DIR/ant
export PATH=$ANT_HOME/bin:$PATH
ant $@
File added
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>ActiveLayerIndex</key>
<integer>0</integer>
<key>ApplicationVersion</key>
<array>
<string>com.omnigroup.OmniGraffle6</string>
<string>156.11.0.206384</string>
</array>
<key>AutoAdjust</key>
<false/>
<key>BackgroundGraphic</key>
<dict>
<key>Bounds</key>
<string>{{0, 0}, {1152, 1466}}</string>
<key>Class</key>
<string>SolidGraphic</string>
<key>ID</key>
<integer>2</integer>
<key>Style</key>
<dict>
<key>stroke</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
</dict>
</dict>
<key>BaseZoom</key>
<integer>0</integer>
<key>CanvasOrigin</key>
<string>{0, 0}</string>
<key>ColumnAlign</key>
<integer>1</integer>
<key>ColumnSpacing</key>
<real>36</real>
<key>CreationDate</key>
<string>2014-05-15 13:38:27 +0000</string>
<key>Creator</key>
<string>Sinisa Veseli</string>
<key>DisplayScale</key>
<string>1 in = 1.00000 in</string>
<key>GraphDocumentVersion</key>
<integer>11</integer>
<key>GraphicsList</key>
<array>
<dict>
<key>Class</key>
<string>LineGraphic</string>
<key>FontInfo</key>
<dict>
<key>Color</key>
<dict>
<key>w</key>
<string>0</string>
</dict>
<key>Font</key>
<string>Helvetica</string>
<key>Size</key>
<real>12</real>
</dict>
<key>Head</key>
<dict>
<key>ID</key>
<integer>82</integer>
<key>Info</key>
<integer>7</integer>
</dict>
<key>ID</key>
<integer>136</integer>
<key>Points</key>
<array>
<string>{538.14877712017369, 645.56816413424986}</string>
<string>{511.15957200986009, 599.32355312855873}</string>
</array>
<key>Style</key>
<dict>
<key>stroke</key>
<dict>
<key>HeadArrow</key>
<string>FilledArrow</string>
<key>Legacy</key>
<true/>
<key>TailArrow</key>
<string>0</string>
</dict>
</dict>
<key>Tail</key>
<dict>
<key>ID</key>
<integer>135</integer>
</dict>
</dict>
<dict>
<key>Bounds</key>
<string>{{491.65080261230469, 646}, {93.5, 45}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FontInfo</key>
<dict>
<key>Font</key>
<string>Helvetica-Bold</string>
<key>Size</key>
<real>12</real>
</dict>
<key>ID</key>
<integer>135</integer>
<key>Magnets</key>
<array>
<string>{-0.59628479784302701, -1.1925696134567261}</string>
<string>{1.9868215517249155e-08, -1.3333333730697632}</string>
<string>{0.59628487781105122, -1.1925696134567261}</string>
<string>{1.1925696134567261, -0.59628480672836304}</string>
<string>{1.3333333730697632, 1.5894572413799324e-07}</string>
<string>{1.1925696134567261, 0.59628473564567486}</string>
<string>{0.59628465308492196, 1.1925697326660156}</string>
<string>{0, 1.3333333730697632}</string>
<string>{-0.5962849488937394, 1.1925696134567261}</string>
<string>{-1.1925697326660156, 0.5962844398368361}</string>
<string>{-1.3333333730697632, -6.3578289655197295e-07}</string>
<string>{-1.1925696134567261, -0.59628480672836304}</string>
</array>
<key>Shape</key>
<string>Rectangle</string>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>Color</key>
<dict>
<key>b</key>
<string>0.2</string>
<key>g</key>
<string>0.4</string>
<key>r</key>
<string>0.607926</string>
</dict>
</dict>
<key>stroke</key>
<dict>
<key>Color</key>
<dict>
<key>b</key>
<string>0</string>
<key>g</key>
<string>0.138928</string>
<key>r</key>
<string>0.277811</string>
</dict>
<key>CornerRadius</key>
<real>9</real>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
\f0\b\fs20 \cf0 Globus Catalog}</string>
</dict>
</dict>
<dict>
<key>Bounds</key>
<string>{{950, 646.5}, {101, 44.5}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FontInfo</key>
<dict>
<key>Font</key>
<string>Helvetica-Bold</string>
<key>Size</key>
<real>12</real>
</dict>
<key>ID</key>
<integer>134</integer>
<key>Magnets</key>
<array>
<string>{-0.59628479784302701, -1.1925696134567261}</string>
<string>{1.9868215517249155e-08, -1.3333333730697632}</string>
<string>{0.59628487781105122, -1.1925696134567261}</string>
<string>{1.1925696134567261, -0.59628480672836304}</string>
<string>{1.3333333730697632, 1.5894572413799324e-07}</string>
<string>{1.1925696134567261, 0.59628473564567486}</string>
<string>{0.59628465308492196, 1.1925697326660156}</string>
<string>{0, 1.3333333730697632}</string>
<string>{-0.5962849488937394, 1.1925696134567261}</string>
<string>{-1.1925697326660156, 0.5962844398368361}</string>
<string>{-1.3333333730697632, -6.3578289655197295e-07}</string>
<string>{-1.1925696134567261, -0.59628480672836304}</string>
</array>
<key>Shape</key>
<string>Rectangle</string>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>Color</key>
<dict>
<key>b</key>
<string>0.2</string>
<key>g</key>
<string>0.8</string>
<key>r</key>
<string>1</string>
</dict>
</dict>
<key>stroke</key>
<dict>
<key>Color</key>
<dict>
<key>b</key>
<string>0</string>
<key>g</key>
<string>0.138928</string>
<key>r</key>
<string>0.277811</string>
</dict>
<key>CornerRadius</key>
<real>9</real>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
\f0\b\fs20 \cf0 Hardware}</string>
</dict>
</dict>
<dict>
<key>Bounds</key>
<string>{{950, 592.05250869187148}, {101, 44.5}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FontInfo</key>
<dict>
<key>Font</key>
<string>Helvetica-Bold</string>
<key>Size</key>
<real>12</real>
</dict>
<key>ID</key>
<integer>133</integer>
<key>Magnets</key>
<array>
<string>{-0.59628479784302701, -1.1925696134567261}</string>
<string>{1.9868215517249155e-08, -1.3333333730697632}</string>
<string>{0.59628487781105122, -1.1925696134567261}</string>
<string>{1.1925696134567261, -0.59628480672836304}</string>
<string>{1.3333333730697632, 1.5894572413799324e-07}</string>
<string>{1.1925696134567261, 0.59628473564567486}</string>
<string>{0.59628465308492196, 1.1925697326660156}</string>
<string>{0, 1.3333333730697632}</string>
<string>{-0.5962849488937394, 1.1925696134567261}</string>
<string>{-1.1925697326660156, 0.5962844398368361}</string>
<string>{-1.3333333730697632, -6.3578289655197295e-07}</string>
<string>{-1.1925696134567261, -0.59628480672836304}</string>
</array>
<key>Shape</key>
<string>Rectangle</string>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>Color</key>
<dict>
<key>b</key>
<string>0.2</string>
<key>g</key>
<string>0.4</string>
<key>r</key>
<string>0.6</string>
</dict>
</dict>
<key>stroke</key>
<dict>
<key>Color</key>
<dict>
<key>b</key>
<string>0</string>
<key>g</key>
<string>0.138928</string>
<key>r</key>
<string>0.277811</string>
</dict>
<key>CornerRadius</key>
<real>9</real>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
\f0\b\fs20 \cf0 Existing Software}</string>
</dict>
</dict>
<dict>
<key>Bounds</key>
<string>{{950, 538.24087524414062}, {101, 44.5}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FontInfo</key>
<dict>
<key>Font</key>
<string>Helvetica-Bold</string>
<key>Size</key>
<real>12</real>
</dict>
<key>ID</key>
<integer>132</integer>
<key>Magnets</key>
<array>
<string>{-0.59628479784302701, -1.1925696134567261}</string>
<string>{1.9868215517249155e-08, -1.3333333730697632}</string>
<string>{0.59628487781105122, -1.1925696134567261}</string>
<string>{1.1925696134567261, -0.59628480672836304}</string>
<string>{1.3333333730697632, 1.5894572413799324e-07}</string>
<string>{1.1925696134567261, 0.59628473564567486}</string>
<string>{0.59628465308492196, 1.1925697326660156}</string>
<string>{0, 1.3333333730697632}</string>
<string>{-0.5962849488937394, 1.1925696134567261}</string>
<string>{-1.1925697326660156, 0.5962844398368361}</string>
<string>{-1.3333333730697632, -6.3578289655197295e-07}</string>
<string>{-1.1925696134567261, -0.59628480672836304}</string>
</array>
<key>Shape</key>
<string>Rectangle</string>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>Color</key>
<dict>
<key>b</key>
<string>0.2</string>
<key>g</key>
<string>0.66422</string>
<key>r</key>
<string>0.801663</string>
</dict>
</dict>
<key>stroke</key>
<dict>
<key>Color</key>
<dict>
<key>b</key>
<string>0</string>
<key>g</key>
<string>0.138928</string>
<key>r</key>
<string>0.277811</string>
</dict>
<key>CornerRadius</key>
<real>9</real>
<key>Join</key>
<integer>0</integer>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
\f0\b\fs20 \cf0 Must Build Software}</string>
</dict>
</dict>
<dict>
<key>Class</key>
<string>LineGraphic</string>
<key>FontInfo</key>
<dict>
<key>Color</key>
<dict>
<key>w</key>
<string>0</string>
</dict>
<key>Font</key>
<string>Helvetica</string>
<key>Size</key>
<real>12</real>
</dict>
<key>Head</key>
<dict>
<key>ID</key>
<integer>129</integer>
</dict>
<key>ID</key>
<integer>131</integer>
<key>Points</key>
<array>
<string>{590, 423.0150146484375}</string>
<string>{608.50000185767817, 491.44124603271484}</string>
</array>
<key>Style</key>
<dict>
<key>stroke</key>
<dict>
<key>HeadArrow</key>
<string>FilledArrow</string>
<key>Legacy</key>
<true/>
<key>TailArrow</key>
<string>0</string>
</dict>
</dict>
</dict>
<dict>
<key>Class</key>
<string>LineGraphic</string>
<key>FontInfo</key>
<dict>
<key>Color</key>
<dict>
<key>w</key>
<string>0</string>
</dict>
<key>Font</key>
<string>Helvetica</string>
<key>Size</key>
<real>12</real>
</dict>
<key>Head</key>
<dict>
<key>ID</key>
<integer>126</integer>
<key>Info</key>
<integer>8</integer>
</dict>
<key>ID</key>
<integer>130</integer>
<key>Points</key>
<array>
<string>{655.25, 513.69125310579955}</string>
<string>{760.5, 656.6875}</string>
</array>
<key>Style</key>
<dict>
<key>stroke</key>
<dict>
<key>HeadArrow</key>
<string>FilledArrow</string>
<key>Legacy</key>
<true/>
<key>TailArrow</key>
<string>0</string>
</dict>
</dict>
<key>Tail</key>
<dict>
<key>ID</key>
<integer>129</integer>
<key>Info</key>
<integer>5</integer>
</dict>
</dict>
<dict>
<key>Bounds</key>
<string>{{561.75, 491.44124603271484}, {93.5, 44.5}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FontInfo</key>
<dict>
<key>Font</key>
<string>Helvetica-Bold</string>
<key>Size</key>
<real>12</real>
</dict>
<key>ID</key>
<integer>129</integer>
<key>Magnets</key>
<array>
<string>{-0.59628479784302701, -1.1925696134567261}</string>
<string>{1.9868215517249155e-08, -1.3333333730697632}</string>
<string>{0.59628487781105122, -1.1925696134567261}</string>
<string>{1.1925696134567261, -0.59628480672836304}</string>
<string>{1.3333333730697632, 1.5894572413799324e-07}</string>
<string>{1.1925696134567261, 0.59628473564567486}</string>
<string>{0.59628465308492196, 1.1925697326660156}</string>
<string>{0, 1.3333333730697632}</string>
<string>{-0.5962849488937394, 1.1925696134567261}</string>
<string>{-1.1925697326660156, 0.5962844398368361}</string>
<string>{-1.3333333730697632, -6.3578289655197295e-07}</string>
<string>{-1.1925696134567261, -0.59628480672836304}</string>
</array>
<key>Shape</key>
<string>Rectangle</string>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>Color</key>
<dict>
<key>b</key>
<string>0.2</string>
<key>g</key>
<string>0.4</string>
<key>r</key>
<string>0.607926</string>
</dict>
</dict>
<key>stroke</key>
<dict>
<key>Color</key>
<dict>
<key>b</key>
<string>0</string>
<key>g</key>
<string>0.138928</string>
<key>r</key>
<string>0.277811</string>
</dict>
<key>CornerRadius</key>
<real>9</real>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
\f0\b\fs20 \cf0 FT Server (rsync, gFTP, GO)}</string>
</dict>
</dict>
<dict>
<key>Bounds</key>
<string>{{517.8016357421875, 398.01499938964844}, {86, 25}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>ID</key>
<integer>128</integer>
<key>Magnets</key>
<array>
<string>{-0.59628479784302701, -1.1925696134567261}</string>
<string>{1.9868215517249155e-08, -1.3333333730697632}</string>
<string>{0.59628487781105122, -1.1925696134567261}</string>
<string>{1.1925696134567261, -0.59628480672836304}</string>
<string>{1.3333333730697632, 1.5894572413799324e-07}</string>
<string>{1.1925696134567261, 0.59628473564567486}</string>
<string>{0.59628465308492196, 1.1925697326660156}</string>
<string>{0, 1.3333333730697632}</string>
<string>{-0.5962849488937394, 1.1925696134567261}</string>
<string>{-1.1925697326660156, 0.5962844398368361}</string>
<string>{-1.3333333730697632, -6.3578289655197295e-07}</string>
<string>{-1.1925696134567261, -0.59628480672836304}</string>
</array>
<key>Shape</key>
<string>Rectangle</string>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>Color</key>
<dict>
<key>b</key>
<string>0.2</string>
<key>g</key>
<string>0.4</string>
<key>r</key>
<string>0.607926</string>
</dict>
</dict>
<key>stroke</key>
<dict>
<key>Color</key>
<dict>
<key>b</key>
<string>0</string>
<key>g</key>
<string>0.138928</string>
<key>r</key>
<string>0.277811</string>
</dict>
<key>CornerRadius</key>
<real>9</real>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
\f0\b\fs18 \cf0 FT Client (rsync, gFTP, GO)}</string>
</dict>
</dict>
<dict>
<key>Class</key>
<string>LineGraphic</string>
<key>FontInfo</key>
<dict>
<key>Color</key>
<dict>
<key>w</key>
<string>0</string>
</dict>
<key>Font</key>
<string>Helvetica</string>
<key>Size</key>
<real>12</real>
</dict>
<key>Head</key>
<dict>
<key>ID</key>
<integer>126</integer>
</dict>
<key>ID</key>
<integer>127</integer>
<key>Points</key>
<array>
<string>{603.80160522460938, 394.19124838709831}</string>
<string>{765.60084386016945, 626.11880117544524}</string>
</array>
<key>Style</key>
<dict>
<key>stroke</key>
<dict>
<key>HeadArrow</key>
<string>FilledArrow</string>
<key>Legacy</key>
<true/>
<key>TailArrow</key>
<string>0</string>
</dict>
</dict>
<key>Tail</key>
<dict>
<key>ID</key>
<integer>53</integer>
<key>Info</key>
<integer>6</integer>
</dict>
</dict>
<dict>
<key>Bounds</key>
<string>{{760.5, 622.375}, {93.5, 68.625}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>ID</key>
<integer>126</integer>
<key>Magnets</key>
<array>
<string>{1, 1}</string>
<string>{1, -1}</string>
<string>{-1, -1}</string>
<string>{-1, 1}</string>
<string>{0, 1}</string>
<string>{0, -1}</string>
<string>{1, 0}</string>
<string>{-1, 0}</string>
</array>
<key>Shape</key>
<string>Cylinder</string>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>Color</key>
<dict>
<key>b</key>
<string>0.2</string>
<key>g</key>
<string>0.8</string>
<key>r</key>
<string>1</string>
</dict>
</dict>
<key>stroke</key>
<dict>
<key>Color</key>
<dict>
<key>b</key>
<string>0</string>
<key>g</key>
<string>0.277421</string>
<key>r</key>
<string>0.554751</string>
</dict>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
\f0\b\fs20 \cf0 Petrel\
ALCF Storage}</string>
<key>VerticalPad</key>
<integer>0</integer>
</dict>
</dict>
<dict>
<key>Class</key>
<string>LineGraphic</string>
<key>Head</key>
<dict>
<key>ID</key>
<integer>80</integer>
<key>Info</key>
<integer>11</integer>
</dict>
<key>ID</key>
<integer>125</integer>
<key>Points</key>
<array>
<string>{381.5, 147.07376805941286}</string>
<string>{630.5, 148.1912430524826}</string>
</array>
<key>Style</key>
<dict>
<key>stroke</key>
<dict>
<key>HeadArrow</key>
<string>FilledArrow</string>
<key>Legacy</key>
<true/>
<key>TailArrow</key>
<string>0</string>
</dict>
</dict>
<key>Tail</key>
<dict>
<key>ID</key>
<integer>96</integer>
</dict>
</dict>
<dict>
<key>Class</key>
<string>LineGraphic</string>
<key>Head</key>
<dict>
<key>ID</key>
<integer>107</integer>
</dict>
<key>ID</key>
<integer>121</integer>
<key>Points</key>
<array>
<string>{706.50000256299961, 273.88250732421875}</string>
<string>{824, 147.94124293327332}</string>
</array>
<key>Style</key>
<dict>
<key>stroke</key>
<dict>
<key>HeadArrow</key>
<string>FilledArrow</string>
<key>Legacy</key>
<true/>
<key>TailArrow</key>
<string>0</string>
</dict>
</dict>
<key>Tail</key>
<dict>
<key>ID</key>
<integer>78</integer>
</dict>
</dict>
<dict>
<key>Class</key>
<string>LineGraphic</string>
<key>FontInfo</key>
<dict>
<key>Color</key>
<dict>
<key>w</key>
<string>0</string>
</dict>
<key>Font</key>
<string>Helvetica</string>
<key>Size</key>
<real>12</real>
</dict>
<key>Head</key>
<dict>
<key>ID</key>
<integer>82</integer>
</dict>
<key>ID</key>
<integer>120</integer>
<key>Points</key>
<array>
<string>{413.75, 539.20376920700096}</string>
<string>{464.40958071772616, 554.32355312855873}</string>
</array>
<key>Style</key>
<dict>
<key>stroke</key>
<dict>
<key>HeadArrow</key>
<string>FilledArrow</string>
<key>Legacy</key>
<true/>
<key>TailArrow</key>
<string>0</string>
</dict>
</dict>
<key>Tail</key>
<dict>
<key>ID</key>
<integer>119</integer>
<key>Info</key>
<integer>5</integer>
</dict>
</dict>
<dict>
<key>Bounds</key>
<string>{{320.25, 516.70376205444336}, {93.5, 45}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FontInfo</key>
<dict>
<key>Font</key>
<string>Helvetica-Bold</string>
<key>Size</key>
<real>12</real>
</dict>
<key>ID</key>
<integer>119</integer>
<key>Magnets</key>
<array>
<string>{-0.59628479784302701, -1.1925696134567261}</string>
<string>{1.9868215517249155e-08, -1.3333333730697632}</string>
<string>{0.59628487781105122, -1.1925696134567261}</string>
<string>{1.1925696134567261, -0.59628480672836304}</string>
<string>{1.3333333730697632, 1.5894572413799324e-07}</string>
<string>{1.1925696134567261, 0.59628473564567486}</string>
<string>{0.59628465308492196, 1.1925697326660156}</string>
<string>{0, 1.3333333730697632}</string>
<string>{-0.5962849488937394, 1.1925696134567261}</string>
<string>{-1.1925697326660156, 0.5962844398368361}</string>
<string>{-1.3333333730697632, -6.3578289655197295e-07}</string>
<string>{-1.1925696134567261, -0.59628480672836304}</string>
</array>
<key>Shape</key>
<string>Rectangle</string>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>Color</key>
<dict>
<key>b</key>
<string>0.2</string>
<key>g</key>
<string>0.4</string>
<key>r</key>
<string>0.607926</string>
</dict>
</dict>
<key>stroke</key>
<dict>
<key>Color</key>
<dict>
<key>b</key>
<string>0</string>
<key>g</key>
<string>0.138928</string>
<key>r</key>
<string>0.277811</string>
</dict>
<key>CornerRadius</key>
<real>9</real>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
\f0\b\fs20 \cf0 Globus Connect Personal}</string>
</dict>
</dict>
<dict>
<key>Class</key>
<string>LineGraphic</string>
<key>Head</key>
<dict>
<key>ID</key>
<integer>79</integer>
</dict>
<key>ID</key>
<integer>118</integer>
<key>Points</key>
<array>
<string>{874.5, 170.44125366210938}</string>
<string>{911.45998039841652, 269.38250732421875}</string>
</array>
<key>Style</key>
<dict>
<key>stroke</key>
<dict>
<key>HeadArrow</key>
<string>FilledArrow</string>
<key>Legacy</key>
<true/>
<key>TailArrow</key>
<string>0</string>
</dict>
</dict>
<key>Tail</key>
<dict>
<key>ID</key>
<integer>107</integer>
</dict>
</dict>
<dict>
<key>Class</key>
<string>LineGraphic</string>
<key>Head</key>
<dict>
<key>ID</key>
<integer>107</integer>
</dict>
<key>ID</key>
<integer>117</integer>
<key>Points</key>
<array>
<string>{950, 147.94124293327332}</string>
<string>{925, 147.94126081466698}</string>
</array>
<key>Style</key>
<dict>
<key>stroke</key>
<dict>
<key>HeadArrow</key>
<string>FilledArrow</string>
<key>Legacy</key>
<true/>
<key>TailArrow</key>
<string>0</string>
</dict>
</dict>
<key>Tail</key>
<dict>
<key>ID</key>
<integer>115</integer>
</dict>
</dict>
<dict>
<key>Bounds</key>
<string>{{950, 125.44125366210938}, {101, 45}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FontInfo</key>
<dict>
<key>Font</key>
<string>Helvetica-Bold</string>
<key>Size</key>
<real>12</real>
</dict>
<key>ID</key>
<integer>115</integer>
<key>Magnets</key>
<array>
<string>{1.9868215517249155e-08, -1.3333333730697632}</string>
<string>{1.3333333730697632, 1.5894572413799324e-07}</string>
<string>{0, 1.3333333730697632}</string>
<string>{-1.3333333730697632, -6.3578289655197295e-07}</string>
</array>
<key>Shape</key>
<string>Rectangle</string>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>Color</key>
<dict>
<key>b</key>
<string>0.2</string>
<key>g</key>
<string>0.662745</string>
<key>r</key>
<string>0.8</string>
</dict>
</dict>
<key>stroke</key>
<dict>
<key>CornerRadius</key>
<real>9</real>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
\f0\b\fs20 \cf0 LDAP Management Tools}</string>
</dict>
</dict>
<dict>
<key>Class</key>
<string>LineGraphic</string>
<key>Head</key>
<dict>
<key>ID</key>
<integer>53</integer>
</dict>
<key>ID</key>
<integer>114</integer>
<key>Points</key>
<array>
<string>{860.46002390254876, 378.55531881260703}</string>
<string>{604.30156172047714, 381.93466201298691}</string>
</array>
<key>Style</key>
<dict>
<key>stroke</key>
<dict>
<key>HeadArrow</key>
<string>FilledArrow</string>
<key>Legacy</key>
<true/>
<key>TailArrow</key>
<string>0</string>
</dict>
</dict>
<key>Tail</key>
<dict>
<key>ID</key>
<integer>112</integer>
</dict>
</dict>
<dict>
<key>Class</key>
<string>LineGraphic</string>
<key>Head</key>
<dict>
<key>ID</key>
<integer>79</integer>
<key>Info</key>
<integer>5</integer>
</dict>
<key>ID</key>
<integer>113</integer>
<key>Points</key>
<array>
<string>{911.45998039841652, 352.88250732421875}</string>
<string>{911.45998039841652, 323.38250732421875}</string>
</array>
<key>Style</key>
<dict>
<key>stroke</key>
<dict>
<key>HeadArrow</key>
<string>FilledArrow</string>
<key>Legacy</key>
<true/>
<key>TailArrow</key>
<string>0</string>
</dict>
</dict>
<key>Tail</key>
<dict>
<key>ID</key>
<integer>112</integer>
</dict>
</dict>
<dict>
<key>Bounds</key>
<string>{{860.95998039841652, 353.38250732421875}, {101, 49}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FontInfo</key>
<dict>
<key>Font</key>
<string>Helvetica-Bold</string>
<key>Size</key>
<real>12</real>
</dict>
<key>ID</key>
<integer>112</integer>
<key>Shape</key>
<string>Rectangle</string>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>Color</key>
<dict>
<key>b</key>
<string>0.2</string>
<key>g</key>
<string>0.662745</string>
<key>r</key>
<string>0.8</string>
</dict>
</dict>
<key>stroke</key>
<dict>
<key>Color</key>
<dict>
<key>b</key>
<string>0</string>
<key>g</key>
<string>0.30002</string>
<key>r</key>
<string>0.748981</string>
</dict>
<key>CornerRadius</key>
<real>9</real>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
\f0\b\fs20 \cf0 DS Management Tools\
(SQL, Python API)}</string>
</dict>
</dict>
<dict>
<key>Class</key>
<string>LineGraphic</string>
<key>Head</key>
<dict>
<key>ID</key>
<integer>53</integer>
<key>Info</key>
<integer>4</integer>
</dict>
<key>ID</key>
<integer>111</integer>
<key>Points</key>
<array>
<string>{663.49999487400055, 318.88250732421875}</string>
<string>{603.80160522460938, 369.69124984741211}</string>
</array>
<key>Style</key>
<dict>
<key>stroke</key>
<dict>
<key>HeadArrow</key>
<string>FilledArrow</string>
<key>Legacy</key>
<true/>
<key>TailArrow</key>
<string>0</string>
</dict>
</dict>
<key>Tail</key>
<dict>
<key>ID</key>
<integer>78</integer>
</dict>
</dict>
<dict>
<key>Class</key>
<string>LineGraphic</string>
<key>Head</key>
<dict>
<key>ID</key>
<integer>109</integer>
</dict>
<key>ID</key>
<integer>110</integer>
<key>Points</key>
<array>
<string>{925.28116659925115, 148.35471618525199}</string>
<string>{971.54604118621398, 216.38719557065639}</string>
</array>
<key>Style</key>
<dict>
<key>stroke</key>
<dict>
<key>HeadArrow</key>
<string>FilledArrow</string>
<key>Legacy</key>
<true/>
<key>TailArrow</key>
<string>0</string>
</dict>
</dict>
<key>Tail</key>
<dict>
<key>ID</key>
<integer>107</integer>
</dict>
</dict>
<dict>
<key>Bounds</key>
<string>{{968, 213.44125366210938}, {65, 54}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>ID</key>
<integer>109</integer>
<key>Magnets</key>
<array>
<string>{1, 1}</string>
<string>{1, -1}</string>
<string>{-1, -1}</string>
<string>{-1, 1}</string>
<string>{0, 1}</string>
<string>{0, -1}</string>
<string>{1, 0}</string>
<string>{-1, 0}</string>
</array>
<key>Shape</key>
<string>Cylinder</string>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>Color</key>
<dict>
<key>b</key>
<string>0.2</string>
<key>g</key>
<string>0.4</string>
<key>r</key>
<string>0.6</string>
</dict>
</dict>
<key>stroke</key>
<dict>
<key>Color</key>
<dict>
<key>b</key>
<string>0</string>
<key>g</key>
<string>0.277421</string>
<key>r</key>
<string>0.554751</string>
</dict>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
\f0\b\fs20 \cf0 APS User DB}</string>
<key>VerticalPad</key>
<integer>0</integer>
</dict>
</dict>
<dict>
<key>Class</key>
<string>LineGraphic</string>
<key>Head</key>
<dict>
<key>ID</key>
<integer>80</integer>
</dict>
<key>ID</key>
<integer>108</integer>
<key>Points</key>
<array>
<string>{824, 147.94124293327332}</string>
<string>{739.5, 148.19126073519411}</string>
</array>
<key>Style</key>
<dict>
<key>stroke</key>
<dict>
<key>HeadArrow</key>
<string>FilledArrow</string>
<key>Legacy</key>
<true/>
<key>TailArrow</key>
<string>0</string>
</dict>
</dict>
<key>Tail</key>
<dict>
<key>ID</key>
<integer>107</integer>
</dict>
</dict>
<dict>
<key>Bounds</key>
<string>{{824, 125.44125366210938}, {101, 45}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FontInfo</key>
<dict>
<key>Font</key>
<string>Helvetica-Bold</string>
<key>Size</key>
<real>12</real>
</dict>
<key>ID</key>
<integer>107</integer>
<key>Magnets</key>
<array>
<string>{1.9868215517249155e-08, -1.3333333730697632}</string>
<string>{1.3333333730697632, 1.5894572413799324e-07}</string>
<string>{0, 1.3333333730697632}</string>
<string>{-1.3333333730697632, -6.3578289655197295e-07}</string>
</array>
<key>Shape</key>
<string>Rectangle</string>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>Color</key>
<dict>
<key>b</key>
<string>0.2</string>
<key>g</key>
<string>0.662745</string>
<key>r</key>
<string>0.8</string>
</dict>
</dict>
<key>stroke</key>
<dict>
<key>CornerRadius</key>
<real>9</real>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
\f0\b\fs20 \cf0 LDAP Management Service}</string>
</dict>
</dict>
<dict>
<key>Class</key>
<string>LineGraphic</string>
<key>Head</key>
<dict>
<key>ID</key>
<integer>78</integer>
<key>Info</key>
<integer>4</integer>
</dict>
<key>ID</key>
<integer>106</integer>
<key>Points</key>
<array>
<string>{776, 242.941241979599}</string>
<string>{728, 285.13250732421869}</string>
</array>
<key>Style</key>
<dict>
<key>stroke</key>
<dict>
<key>HeadArrow</key>
<string>FilledArrow</string>
<key>Legacy</key>
<true/>
<key>TailArrow</key>
<string>0</string>
</dict>
</dict>
<key>Tail</key>
<dict>
<key>ID</key>
<integer>29</integer>
</dict>
</dict>
<dict>
<key>Class</key>
<string>LineGraphic</string>
<key>Head</key>
<dict>
<key>ID</key>
<integer>80</integer>
</dict>
<key>ID</key>
<integer>104</integer>
<key>Points</key>
<array>
<string>{685.00000170866656, 273.88250732421875}</string>
<string>{685, 170.44125366210938}</string>
</array>
<key>Style</key>
<dict>
<key>stroke</key>
<dict>
<key>HeadArrow</key>
<string>FilledArrow</string>
<key>Legacy</key>
<true/>
<key>TailArrow</key>
<string>0</string>
</dict>
</dict>
<key>Tail</key>
<dict>
<key>ID</key>
<integer>78</integer>
</dict>
</dict>
<dict>
<key>Class</key>
<string>LineGraphic</string>
<key>Head</key>
<dict>
<key>ID</key>
<integer>79</integer>
</dict>
<key>ID</key>
<integer>103</integer>
<key>Points</key>
<array>
<string>{728, 296.38251447677635}</string>
<string>{876.95998039841652, 296.38250732421875}</string>
</array>
<key>Style</key>
<dict>
<key>stroke</key>
<dict>
<key>HeadArrow</key>
<string>FilledArrow</string>
<key>Legacy</key>
<true/>
<key>TailArrow</key>
<string>0</string>
</dict>
</dict>
<key>Tail</key>
<dict>
<key>ID</key>
<integer>78</integer>
</dict>
</dict>
<dict>
<key>Class</key>
<string>LineGraphic</string>
<key>Head</key>
<dict>
<key>ID</key>
<integer>80</integer>
</dict>
<key>ID</key>
<integer>102</integer>
<key>Points</key>
<array>
<string>{571.10120781664875, 357.44124984741211}</string>
<string>{657.74999350309372, 170.44125366210938}</string>
</array>
<key>Style</key>
<dict>
<key>stroke</key>
<dict>
<key>HeadArrow</key>
<string>FilledArrow</string>
<key>Legacy</key>
<true/>
<key>TailArrow</key>
<string>0</string>
</dict>
</dict>
<key>Tail</key>
<dict>
<key>ID</key>
<integer>53</integer>
</dict>
</dict>
<dict>
<key>Class</key>
<string>LineGraphic</string>
<key>Head</key>
<dict>
<key>ID</key>
<integer>81</integer>
<key>Info</key>
<integer>15</integer>
</dict>
<key>ID</key>
<integer>101</integer>
<key>Points</key>
<array>
<string>{538.40080521109917, 357.44124984741211}</string>
<string>{538.40080261230469, 272.44125366210938}</string>
</array>
<key>Style</key>
<dict>
<key>stroke</key>
<dict>
<key>HeadArrow</key>
<string>FilledArrow</string>
<key>Legacy</key>
<true/>
<key>TailArrow</key>
<string>0</string>
</dict>
</dict>
<key>Tail</key>
<dict>
<key>ID</key>
<integer>53</integer>
</dict>
</dict>
<dict>
<key>Class</key>
<string>LineGraphic</string>
<key>Head</key>
<dict>
<key>ID</key>
<integer>79</integer>
<key>Info</key>
<integer>4</integer>
</dict>
<key>ID</key>
<integer>100</integer>
<key>Points</key>
<array>
<string>{603.80160522460938, 381.94125763575261}</string>
<string>{880.72423711090323, 320.43656728835958}</string>
</array>
<key>Style</key>
<dict>
<key>stroke</key>
<dict>
<key>HeadArrow</key>
<string>FilledArrow</string>
<key>Legacy</key>
<true/>
<key>TailArrow</key>
<string>0</string>
</dict>
</dict>
<key>Tail</key>
<dict>
<key>ID</key>
<integer>53</integer>
<key>Info</key>
<integer>5</integer>
</dict>
</dict>
<dict>
<key>Class</key>
<string>LineGraphic</string>
<key>Head</key>
<dict>
<key>ID</key>
<integer>53</integer>
<key>Info</key>
<integer>12</integer>
</dict>
<key>ID</key>
<integer>99</integer>
<key>Points</key>
<array>
<string>{389, 313.63251439730345}</string>
<string>{473, 369.69124984741211}</string>
</array>
<key>Style</key>
<dict>
<key>stroke</key>
<dict>
<key>HeadArrow</key>
<string>FilledArrow</string>
<key>Legacy</key>
<true/>
<key>TailArrow</key>
<string>0</string>
</dict>
</dict>
<key>Tail</key>
<dict>
<key>ID</key>
<integer>52</integer>
<key>Info</key>
<integer>5</integer>
</dict>
</dict>
<dict>
<key>Class</key>
<string>LineGraphic</string>
<key>Head</key>
<dict>
<key>ID</key>
<integer>81</integer>
</dict>
<key>ID</key>
<integer>98</integer>
<key>Points</key>
<array>
<string>{381.5, 147.07376805941286}</string>
<string>{509.44684379851873, 221.38719557065642}</string>
</array>
<key>Style</key>
<dict>
<key>stroke</key>
<dict>
<key>HeadArrow</key>
<string>FilledArrow</string>
<key>Legacy</key>
<true/>
<key>TailArrow</key>
<string>0</string>
</dict>
</dict>
<key>Tail</key>
<dict>
<key>ID</key>
<integer>96</integer>
<key>Info</key>
<integer>5</integer>
</dict>
</dict>
<dict>
<key>Class</key>
<string>LineGraphic</string>
<key>Head</key>
<dict>
<key>ID</key>
<integer>52</integer>
</dict>
<key>ID</key>
<integer>97</integer>
<key>Points</key>
<array>
<string>{338.5, 169.32376098632812}</string>
<string>{338.50000200668978, 291.38250732421875}</string>
</array>
<key>Style</key>
<dict>
<key>stroke</key>
<dict>
<key>HeadArrow</key>
<string>FilledArrow</string>
<key>Legacy</key>
<true/>
<key>TailArrow</key>
<string>0</string>
</dict>
</dict>
<key>Tail</key>
<dict>
<key>ID</key>
<integer>96</integer>
<key>Info</key>
<integer>8</integer>
</dict>
</dict>
<dict>
<key>Bounds</key>
<string>{{295.5, 124.82376098632812}, {86, 44.5}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FontInfo</key>
<dict>
<key>Font</key>
<string>Helvetica-Bold</string>
<key>Size</key>
<real>12</real>
</dict>
<key>ID</key>
<integer>96</integer>
<key>Magnets</key>
<array>
<string>{-0.59628479784302701, -1.1925696134567261}</string>
<string>{1.9868215517249155e-08, -1.3333333730697632}</string>
<string>{0.59628487781105122, -1.1925696134567261}</string>
<string>{1.1925696134567261, -0.59628480672836304}</string>
<string>{1.3333333730697632, 1.5894572413799324e-07}</string>
<string>{1.1925696134567261, 0.59628473564567486}</string>
<string>{0.59628465308492196, 1.1925697326660156}</string>
<string>{0, 1.3333333730697632}</string>
<string>{-0.5962849488937394, 1.1925696134567261}</string>
<string>{-1.1925697326660156, 0.5962844398368361}</string>
<string>{-1.3333333730697632, -6.3578289655197295e-07}</string>
<string>{-1.1925696134567261, -0.59628480672836304}</string>
</array>
<key>Shape</key>
<string>Rectangle</string>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>Color</key>
<dict>
<key>b</key>
<string>0.2</string>
<key>g</key>
<string>0.66422</string>
<key>r</key>
<string>0.801663</string>
</dict>
</dict>
<key>stroke</key>
<dict>
<key>Color</key>
<dict>
<key>b</key>
<string>0</string>
<key>g</key>
<string>0.138928</string>
<key>r</key>
<string>0.277811</string>
</dict>
<key>CornerRadius</key>
<real>9</real>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
\f0\b\fs20 \cf0 Experiment Setup UI}</string>
</dict>
</dict>
<dict>
<key>Bounds</key>
<string>{{192.5, 553.49087524414062}, {42, 14}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FitText</key>
<string>YES</string>
<key>Flow</key>
<string>Resize</string>
<key>ID</key>
<integer>95</integer>
<key>Shape</key>
<string>Rectangle</string>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
<key>shadow</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
<key>stroke</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Pad</key>
<integer>0</integer>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
\f0\fs24 \cf0 Firewall}</string>
<key>VerticalPad</key>
<integer>0</integer>
</dict>
<key>Wrap</key>
<string>NO</string>
</dict>
<dict>
<key>Class</key>
<string>LineGraphic</string>
<key>FontInfo</key>
<dict>
<key>Color</key>
<dict>
<key>w</key>
<string>0</string>
</dict>
<key>Font</key>
<string>Helvetica</string>
<key>Size</key>
<real>12</real>
</dict>
<key>Head</key>
<dict>
<key>ID</key>
<integer>82</integer>
</dict>
<key>ID</key>
<integer>94</integer>
<key>Points</key>
<array>
<string>{436.98999313513445, 646}</string>
<string>{464.40957479637723, 599.32355312855873}</string>
</array>
<key>Style</key>
<dict>
<key>stroke</key>
<dict>
<key>HeadArrow</key>
<string>FilledArrow</string>
<key>Legacy</key>
<true/>
<key>TailArrow</key>
<string>0</string>
</dict>
</dict>
<key>Tail</key>
<dict>
<key>ID</key>
<integer>93</integer>
<key>Info</key>
<integer>2</integer>
</dict>
</dict>
<dict>
<key>Bounds</key>
<string>{{390.23999127745628, 646}, {93.5, 45}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FontInfo</key>
<dict>
<key>Font</key>
<string>Helvetica-Bold</string>
<key>Size</key>
<real>12</real>
</dict>
<key>ID</key>
<integer>93</integer>
<key>Magnets</key>
<array>
<string>{-0.59628479784302701, -1.1925696134567261}</string>
<string>{1.9868215517249155e-08, -1.3333333730697632}</string>
<string>{0.59628487781105122, -1.1925696134567261}</string>
<string>{1.1925696134567261, -0.59628480672836304}</string>
<string>{1.3333333730697632, 1.5894572413799324e-07}</string>
<string>{1.1925696134567261, 0.59628473564567486}</string>
<string>{0.59628465308492196, 1.1925697326660156}</string>
<string>{0, 1.3333333730697632}</string>
<string>{-0.5962849488937394, 1.1925696134567261}</string>
<string>{-1.1925697326660156, 0.5962844398368361}</string>
<string>{-1.3333333730697632, -6.3578289655197295e-07}</string>
<string>{-1.1925696134567261, -0.59628480672836304}</string>
</array>
<key>Shape</key>
<string>Rectangle</string>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>Color</key>
<dict>
<key>b</key>
<string>0.2</string>
<key>g</key>
<string>0.4</string>
<key>r</key>
<string>0.607926</string>
</dict>
</dict>
<key>stroke</key>
<dict>
<key>Color</key>
<dict>
<key>b</key>
<string>0</string>
<key>g</key>
<string>0.138928</string>
<key>r</key>
<string>0.277811</string>
</dict>
<key>CornerRadius</key>
<real>9</real>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
\f0\b\fs20 \cf0 Globus Connect Personal}</string>
</dict>
</dict>
<dict>
<key>Class</key>
<string>LineGraphic</string>
<key>Head</key>
<dict>
<key>ID</key>
<integer>77</integer>
</dict>
<key>ID</key>
<integer>92</integer>
<key>Points</key>
<array>
<string>{505.70039350976907, 406.44124984741211}</string>
<string>{487.75, 445.84504508972168}</string>
</array>
<key>Style</key>
<dict>
<key>stroke</key>
<dict>
<key>HeadArrow</key>
<string>FilledArrow</string>
<key>Legacy</key>
<true/>
<key>TailArrow</key>
<string>0</string>
</dict>
</dict>
<key>Tail</key>
<dict>
<key>ID</key>
<integer>53</integer>
</dict>
</dict>
<dict>
<key>Class</key>
<string>LineGraphic</string>
<key>Head</key>
<dict>
<key>ID</key>
<integer>77</integer>
</dict>
<key>ID</key>
<integer>91</integer>
<key>Points</key>
<array>
<string>{487.78458222708969, 554.32355312855873}</string>
<string>{487.75, 514.47004508972168}</string>
</array>
<key>Style</key>
<dict>
<key>stroke</key>
<dict>
<key>HeadArrow</key>
<string>FilledArrow</string>
<key>Legacy</key>
<true/>
<key>TailArrow</key>
<string>0</string>
</dict>
</dict>
<key>Tail</key>
<dict>
<key>ID</key>
<integer>82</integer>
</dict>
</dict>
<dict>
<key>Class</key>
<string>LineGraphic</string>
<key>Head</key>
<dict>
<key>ID</key>
<integer>77</integer>
</dict>
<key>ID</key>
<integer>90</integer>
<key>Points</key>
<array>
<string>{413.75, 480.15753118197142}</string>
<string>{441, 480.15754508972168}</string>
</array>
<key>Style</key>
<dict>
<key>stroke</key>
<dict>
<key>HeadArrow</key>
<string>FilledArrow</string>
<key>Legacy</key>
<true/>
<key>TailArrow</key>
<string>0</string>
</dict>
</dict>
<key>Tail</key>
<dict>
<key>ID</key>
<integer>67</integer>
<key>Info</key>
<integer>5</integer>
</dict>
</dict>
<dict>
<key>Class</key>
<string>LineGraphic</string>
<key>Head</key>
<dict>
<key>ID</key>
<integer>67</integer>
</dict>
<key>ID</key>
<integer>89</integer>
<key>Points</key>
<array>
<string>{365.48004480786159, 356.00750732421875}</string>
<string>{367.00000185767817, 457.90752410888672}</string>
</array>
<key>Style</key>
<dict>
<key>stroke</key>
<dict>
<key>HeadArrow</key>
<string>FilledArrow</string>
<key>Legacy</key>
<true/>
<key>TailArrow</key>
<string>0</string>
</dict>
</dict>
</dict>
<dict>
<key>Bounds</key>
<string>{{306, 331.00750732421875}, {86, 25}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>ID</key>
<integer>88</integer>
<key>Magnets</key>
<array>
<string>{-0.59628479784302701, -1.1925696134567261}</string>
<string>{1.9868215517249155e-08, -1.3333333730697632}</string>
<string>{0.59628487781105122, -1.1925696134567261}</string>
<string>{1.1925696134567261, -0.59628480672836304}</string>
<string>{1.3333333730697632, 1.5894572413799324e-07}</string>
<string>{1.1925696134567261, 0.59628473564567486}</string>
<string>{0.59628465308492196, 1.1925697326660156}</string>
<string>{0, 1.3333333730697632}</string>
<string>{-0.5962849488937394, 1.1925696134567261}</string>
<string>{-1.1925697326660156, 0.5962844398368361}</string>
<string>{-1.3333333730697632, -6.3578289655197295e-07}</string>
<string>{-1.1925696134567261, -0.59628480672836304}</string>
</array>
<key>Shape</key>
<string>Rectangle</string>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>Color</key>
<dict>
<key>b</key>
<string>0.2</string>
<key>g</key>
<string>0.4</string>
<key>r</key>
<string>0.607926</string>
</dict>
</dict>
<key>stroke</key>
<dict>
<key>Color</key>
<dict>
<key>b</key>
<string>0</string>
<key>g</key>
<string>0.138928</string>
<key>r</key>
<string>0.277811</string>
</dict>
<key>CornerRadius</key>
<real>9</real>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
\f0\b\fs18 \cf0 FT Client (rsync, gFTP, GO)}</string>
</dict>
</dict>
<dict>
<key>Bounds</key>
<string>{{441.03458036941151, 554.32355312855873}, {93.5, 45}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FontInfo</key>
<dict>
<key>Font</key>
<string>Helvetica-Bold</string>
<key>Size</key>
<real>12</real>
</dict>
<key>ID</key>
<integer>82</integer>
<key>Line</key>
<dict>
<key>ID</key>
<integer>87</integer>
<key>Position</key>
<real>0.42423778876008017</real>
<key>RotationType</key>
<integer>0</integer>
</dict>
<key>Magnets</key>
<array>
<string>{-0.59628479784302701, -1.1925696134567261}</string>
<string>{1.9868215517249155e-08, -1.3333333730697632}</string>
<string>{0.59628487781105122, -1.1925696134567261}</string>
<string>{1.1925696134567261, -0.59628480672836304}</string>
<string>{1.3333333730697632, 1.5894572413799324e-07}</string>
<string>{1.1925696134567261, 0.59628473564567486}</string>
<string>{0.59628465308492196, 1.1925697326660156}</string>
<string>{0, 1.3333333730697632}</string>
<string>{-0.5962849488937394, 1.1925696134567261}</string>
<string>{-1.1925697326660156, 0.5962844398368361}</string>
<string>{-1.3333333730697632, -6.3578289655197295e-07}</string>
<string>{-1.1925696134567261, -0.59628480672836304}</string>
</array>
<key>Shape</key>
<string>Rectangle</string>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>Color</key>
<dict>
<key>b</key>
<string>0.2</string>
<key>g</key>
<string>0.4</string>
<key>r</key>
<string>0.607926</string>
</dict>
</dict>
<key>stroke</key>
<dict>
<key>Color</key>
<dict>
<key>b</key>
<string>0</string>
<key>g</key>
<string>0.138928</string>
<key>r</key>
<string>0.277811</string>
</dict>
<key>CornerRadius</key>
<real>9</real>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
\f0\b\fs20 \cf0 Globus Connect Server}</string>
</dict>
</dict>
<dict>
<key>Bounds</key>
<string>{{505.90080261230469, 218.44125366210938}, {65, 54}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>ID</key>
<integer>81</integer>
<key>Magnets</key>
<array>
<string>{1, 1}</string>
<string>{1, -1}</string>
<string>{-1, -1}</string>
<string>{-1, 1}</string>
<string>{0, 1}</string>
<string>{0, -1}</string>
<string>{1, 0}</string>
<string>{-1, 0}</string>
</array>
<key>Shape</key>
<string>Cylinder</string>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>Color</key>
<dict>
<key>b</key>
<string>0.2</string>
<key>g</key>
<string>0.4</string>
<key>r</key>
<string>0.6</string>
</dict>
</dict>
<key>stroke</key>
<dict>
<key>Color</key>
<dict>
<key>b</key>
<string>0</string>
<key>g</key>
<string>0.277421</string>
<key>r</key>
<string>0.554751</string>
</dict>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
\f0\b\fs20 \cf0 ESAF DB}</string>
<key>VerticalPad</key>
<integer>0</integer>
</dict>
</dict>
<dict>
<key>Bounds</key>
<string>{{630.5, 125.94125366210938}, {109, 44.5}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FontInfo</key>
<dict>
<key>Font</key>
<string>Helvetica-Bold</string>
<key>Size</key>
<real>12</real>
</dict>
<key>ID</key>
<integer>80</integer>
<key>Magnets</key>
<array>
<string>{-0.59628479784302701, -1.1925696134567261}</string>
<string>{1.9868215517249155e-08, -1.3333333730697632}</string>
<string>{0.59628487781105122, -1.1925696134567261}</string>
<string>{1.1925696134567261, -0.59628480672836304}</string>
<string>{1.3333333730697632, 1.5894572413799324e-07}</string>
<string>{1.1925696134567261, 0.59628473564567486}</string>
<string>{0.59628465308492196, 1.1925697326660156}</string>
<string>{0, 1.3333333730697632}</string>
<string>{-0.5962849488937394, 1.1925696134567261}</string>
<string>{-1.1925697326660156, 0.5962844398368361}</string>
<string>{-1.3333333730697632, -6.3578289655197295e-07}</string>
<string>{-1.1925696134567261, -0.59628480672836304}</string>
</array>
<key>Shape</key>
<string>Rectangle</string>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>Color</key>
<dict>
<key>b</key>
<string>0.58263</string>
<key>g</key>
<string>0.647146</string>
<key>r</key>
<string>0.849105</string>
</dict>
</dict>
<key>stroke</key>
<dict>
<key>Color</key>
<dict>
<key>b</key>
<string>0</string>
<key>g</key>
<string>0.138928</string>
<key>r</key>
<string>0.277811</string>
</dict>
<key>CornerRadius</key>
<real>9</real>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
\f0\b\fs20 \cf0 DM LDAP Server\
(Authentication)}</string>
</dict>
</dict>
<dict>
<key>Bounds</key>
<string>{{876.95998039841652, 269.38250732421875}, {69, 54}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FontInfo</key>
<dict>
<key>Font</key>
<string>Helvetica-Bold</string>
<key>Size</key>
<real>10</real>
</dict>
<key>ID</key>
<integer>79</integer>
<key>Magnets</key>
<array>
<string>{1, 1}</string>
<string>{1, -1}</string>
<string>{-1, -1}</string>
<string>{-1, 1}</string>
<string>{0, 1}</string>
<string>{0, -1}</string>
<string>{1, 0}</string>
<string>{-1, 0}</string>
</array>
<key>Shape</key>
<string>Cylinder</string>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>Color</key>
<dict>
<key>b</key>
<string>0.2</string>
<key>g</key>
<string>0.66422</string>
<key>r</key>
<string>0.801663</string>
</dict>
</dict>
<key>stroke</key>
<dict>
<key>Color</key>
<dict>
<key>b</key>
<string>0</string>
<key>g</key>
<string>0.277421</string>
<key>r</key>
<string>0.554751</string>
</dict>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
\f0\b\fs20 \cf0 DM DB}</string>
<key>VerticalPad</key>
<integer>0</integer>
</dict>
</dict>
<dict>
<key>Bounds</key>
<string>{{642, 273.88250732421875}, {86, 45}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FontInfo</key>
<dict>
<key>Font</key>
<string>Helvetica-Bold</string>
<key>Size</key>
<real>12</real>
</dict>
<key>ID</key>
<integer>78</integer>
<key>Magnets</key>
<array>
<string>{-0.59628479784302701, -1.1925696134567261}</string>
<string>{1.9868215517249155e-08, -1.3333333730697632}</string>
<string>{0.59628487781104911, -1.1925696134567261}</string>
<string>{1.1925696134567239, -0.59628480672836304}</string>
<string>{1.3333333730697607, 1.5894572413799324e-07}</string>
<string>{1.1925696134567239, 0.59628473564567486}</string>
<string>{0.59628465308491985, 1.1925697326660156}</string>
<string>{0, 1.3333333730697632}</string>
<string>{-0.5962849488937394, 1.1925696134567261}</string>
<string>{-1.1925697326660156, 0.5962844398368361}</string>
<string>{-1.3333333730697632, -6.3578289655197295e-07}</string>
<string>{-1.1925696134567261, -0.59628480672836304}</string>
</array>
<key>Shape</key>
<string>Rectangle</string>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>Color</key>
<dict>
<key>b</key>
<string>0.2</string>
<key>g</key>
<string>0.662745</string>
<key>r</key>
<string>0.8</string>
</dict>
</dict>
<key>stroke</key>
<dict>
<key>CornerRadius</key>
<real>9</real>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
\f0\b\fs20 \cf0 DM Web Portal}</string>
</dict>
</dict>
<dict>
<key>Bounds</key>
<string>{{473, 357.44124984741211}, {130.80160522460938, 49}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FontInfo</key>
<dict>
<key>Font</key>
<string>Helvetica-Bold</string>
<key>Size</key>
<real>12</real>
</dict>
<key>ID</key>
<integer>53</integer>
<key>Magnets</key>
<array>
<string>{-0.59628479784302701, -1.1925696134567261}</string>
<string>{1.9868215517249155e-08, -1.3333333730697632}</string>
<string>{0.59628487781105122, -1.1925696134567261}</string>
<string>{1.1925696134567261, -0.59628480672836304}</string>
<string>{1.3333333730697632, 1.5894572413799324e-07}</string>
<string>{1.1925696134567261, 0.59628473564567486}</string>
<string>{0.59628465308492196, 1.1925697326660156}</string>
<string>{0, 1.3333333730697632}</string>
<string>{-0.5962849488937394, 1.1925696134567261}</string>
<string>{-1.1925697326660156, 0.5962844398368361}</string>
<string>{-1.3333333730697632, -6.3578289655197295e-07}</string>
<string>{-1.1925696134567261, -0.59628480672836304}</string>
</array>
<key>Shape</key>
<string>Rectangle</string>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>Color</key>
<dict>
<key>b</key>
<string>0.2</string>
<key>g</key>
<string>0.662745</string>
<key>r</key>
<string>0.8</string>
</dict>
</dict>
<key>stroke</key>
<dict>
<key>Color</key>
<dict>
<key>b</key>
<string>0</string>
<key>g</key>
<string>0.138928</string>
<key>r</key>
<string>0.277811</string>
</dict>
<key>CornerRadius</key>
<real>9</real>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
\f0\b\fs20 \cf0 Data Storage\
Service}</string>
</dict>
</dict>
<dict>
<key>Bounds</key>
<string>{{441, 445.84504508972168}, {93.5, 68.625}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>ID</key>
<integer>77</integer>
<key>Magnets</key>
<array>
<string>{1, 1}</string>
<string>{1, -1}</string>
<string>{-1, -1}</string>
<string>{-1, 1}</string>
<string>{0, 1}</string>
<string>{0, -1}</string>
<string>{1, 0}</string>
<string>{-1, 0}</string>
</array>
<key>Shape</key>
<string>Cylinder</string>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>Color</key>
<dict>
<key>b</key>
<string>0.2</string>
<key>g</key>
<string>0.8</string>
<key>r</key>
<string>1</string>
</dict>
</dict>
<key>stroke</key>
<dict>
<key>Color</key>
<dict>
<key>b</key>
<string>0</string>
<key>g</key>
<string>0.277421</string>
<key>r</key>
<string>0.554751</string>
</dict>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
\f0\b\fs20 \cf0 xstor\
APS On-site Storage}</string>
<key>VerticalPad</key>
<integer>0</integer>
</dict>
</dict>
<dict>
<key>Class</key>
<string>LineGraphic</string>
<key>Head</key>
<dict>
<key>ID</key>
<integer>69</integer>
</dict>
<key>ID</key>
<integer>75</integer>
<key>Points</key>
<array>
<string>{313.24999397993088, 335.88250732421875}</string>
<string>{284.61273073938133, 362.38686587374843}</string>
</array>
<key>Style</key>
<dict>
<key>stroke</key>
<dict>
<key>HeadArrow</key>
<string>FilledArrow</string>
<key>Legacy</key>
<true/>
<key>TailArrow</key>
<string>0</string>
</dict>
</dict>
<key>Tail</key>
<dict>
<key>ID</key>
<integer>52</integer>
<key>Info</key>
<integer>9</integer>
</dict>
</dict>
<dict>
<key>Class</key>
<string>LineGraphic</string>
<key>Head</key>
<dict>
<key>ID</key>
<integer>69</integer>
</dict>
<key>ID</key>
<integer>73</integer>
<key>Points</key>
<array>
<string>{235.5, 335.88250732421875}</string>
<string>{259.23816023175357, 362.34599359113423}</string>
</array>
<key>Style</key>
<dict>
<key>stroke</key>
<dict>
<key>HeadArrow</key>
<string>FilledArrow</string>
<key>Legacy</key>
<true/>
<key>TailArrow</key>
<string>0</string>
</dict>
</dict>
<key>Tail</key>
<dict>
<key>ID</key>
<integer>70</integer>
<key>Info</key>
<integer>8</integer>
</dict>
</dict>
<dict>
<key>Bounds</key>
<string>{{192.5, 291.38250732421875}, {86, 44.5}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FontInfo</key>
<dict>
<key>Font</key>
<string>Helvetica-Bold</string>
<key>Size</key>
<real>12</real>
</dict>
<key>ID</key>
<integer>70</integer>
<key>Magnets</key>
<array>
<string>{-0.59628479784302701, -1.1925696134567261}</string>
<string>{1.9868215517249155e-08, -1.3333333730697632}</string>
<string>{0.59628487781105122, -1.1925696134567261}</string>
<string>{1.1925696134567261, -0.59628480672836304}</string>
<string>{1.3333333730697632, 1.5894572413799324e-07}</string>
<string>{1.1925696134567261, 0.59628473564567486}</string>
<string>{0.59628465308492196, 1.1925697326660156}</string>
<string>{0, 1.3333333730697632}</string>
<string>{-0.5962849488937394, 1.1925696134567261}</string>
<string>{-1.1925697326660156, 0.5962844398368361}</string>
<string>{-1.3333333730697632, -6.3578289655197295e-07}</string>
<string>{-1.1925696134567261, -0.59628480672836304}</string>
</array>
<key>Shape</key>
<string>Rectangle</string>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>Color</key>
<dict>
<key>b</key>
<string>0.2</string>
<key>g</key>
<string>0.4</string>
<key>r</key>
<string>0.6</string>
</dict>
</dict>
<key>stroke</key>
<dict>
<key>Color</key>
<dict>
<key>b</key>
<string>0</string>
<key>g</key>
<string>0.138928</string>
<key>r</key>
<string>0.277811</string>
</dict>
<key>CornerRadius</key>
<real>9</real>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
\f0\b\fs20 \cf0 AD Software }</string>
</dict>
</dict>
<dict>
<key>Bounds</key>
<string>{{247.67999446392059, 361.88250732421875}, {48, 32}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>ID</key>
<integer>69</integer>
<key>Magnets</key>
<array>
<string>{-1.237968921661377, 0.49518755390681035}</string>
<string>{-1.3333333730697632, -3.1789145301293819e-08}</string>
<string>{-1.237968921661377, -0.49518756866455121}</string>
<string>{-0.86460958419720024, -1.0150015557777268}</string>
<string>{-0.62794690124002683, -1.17620587198552}</string>
<string>{-0.32508953740492902, -1.2930949366499926}</string>
<string>{0.35444424452199508, -1.2853587309064545}</string>
<string>{0.64827843652144623, -1.165123528205162}</string>
<string>{0.87587927192546366, -1.0052925290599906}</string>
<string>{1.237968921661377, -0.4951873325407169}</string>
<string>{1.3333333730697632, 5.0862631771527353e-07}</string>
<string>{1.237968921661377, 0.49518756866455121}</string>
<string>{0.8646094908081684, 1.015001579541025}</string>
<string>{0.62794690124002472, 1.1762058719855177}</string>
<string>{0.32508953740492674, 1.2930949366499904}</string>
<string>{-0.35444360651366852, 1.2853590074902308}</string>
<string>{-0.64827794210279033, 1.1651237153107885}</string>
<string>{-0.87587910264013824, 1.0052928446598337}</string>
</array>
<key>Shape</key>
<string>Cylinder</string>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>Color</key>
<dict>
<key>b</key>
<string>0.2</string>
<key>g</key>
<string>0.8</string>
<key>r</key>
<string>1</string>
</dict>
</dict>
<key>stroke</key>
<dict>
<key>Color</key>
<dict>
<key>b</key>
<string>0</string>
<key>g</key>
<string>0.277421</string>
<key>r</key>
<string>0.554751</string>
</dict>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
\f0\b\fs20 \cf0 Local Storage}</string>
<key>VerticalPad</key>
<integer>0</integer>
</dict>
</dict>
<dict>
<key>Bounds</key>
<string>{{320.25, 457.90752410888672}, {93.5, 44.5}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FontInfo</key>
<dict>
<key>Font</key>
<string>Helvetica-Bold</string>
<key>Size</key>
<real>12</real>
</dict>
<key>ID</key>
<integer>67</integer>
<key>Magnets</key>
<array>
<string>{-0.59628479784302701, -1.1925696134567261}</string>
<string>{1.9868215517249155e-08, -1.3333333730697632}</string>
<string>{0.59628487781105122, -1.1925696134567261}</string>
<string>{1.1925696134567261, -0.59628480672836304}</string>
<string>{1.3333333730697632, 1.5894572413799324e-07}</string>
<string>{1.1925696134567261, 0.59628473564567486}</string>
<string>{0.59628465308492196, 1.1925697326660156}</string>
<string>{0, 1.3333333730697632}</string>
<string>{-0.5962849488937394, 1.1925696134567261}</string>
<string>{-1.1925697326660156, 0.5962844398368361}</string>
<string>{-1.3333333730697632, -6.3578289655197295e-07}</string>
<string>{-1.1925696134567261, -0.59628480672836304}</string>
</array>
<key>Shape</key>
<string>Rectangle</string>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>Color</key>
<dict>
<key>b</key>
<string>0.2</string>
<key>g</key>
<string>0.4</string>
<key>r</key>
<string>0.607926</string>
</dict>
</dict>
<key>stroke</key>
<dict>
<key>Color</key>
<dict>
<key>b</key>
<string>0</string>
<key>g</key>
<string>0.138928</string>
<key>r</key>
<string>0.277811</string>
</dict>
<key>CornerRadius</key>
<real>9</real>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
\f0\b\fs20 \cf0 FT Server (rsync, gFTP, GO)}</string>
</dict>
</dict>
<dict>
<key>Bounds</key>
<string>{{192.5, 269.38250732421875}, {99, 14}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FitText</key>
<string>YES</string>
<key>Flow</key>
<string>Resize</string>
<key>ID</key>
<integer>58</integer>
<key>Shape</key>
<string>Rectangle</string>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
<key>shadow</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
<key>stroke</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Pad</key>
<integer>0</integer>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
\f0\fs24 \cf0 Acquistion System}</string>
<key>VerticalPad</key>
<integer>0</integer>
</dict>
<key>Wrap</key>
<string>NO</string>
</dict>
<dict>
<key>Bounds</key>
<string>{{288, 291.38250732421875}, {101, 44.5}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FontInfo</key>
<dict>
<key>Font</key>
<string>Helvetica-Bold</string>
<key>Size</key>
<real>12</real>
</dict>
<key>ID</key>
<integer>52</integer>
<key>Magnets</key>
<array>
<string>{-0.59628479784302701, -1.1925696134567261}</string>
<string>{1.9868215517249155e-08, -1.3333333730697632}</string>
<string>{0.59628487781105122, -1.1925696134567261}</string>
<string>{1.1925696134567261, -0.59628480672836304}</string>
<string>{1.3333333730697632, 1.5894572413799324e-07}</string>
<string>{1.1925696134567261, 0.59628473564567486}</string>
<string>{0.59628465308492196, 1.1925697326660156}</string>
<string>{0, 1.3333333730697632}</string>
<string>{-0.5962849488937394, 1.1925696134567261}</string>
<string>{-1.1925697326660156, 0.5962844398368361}</string>
<string>{-1.3333333730697632, -6.3578289655197295e-07}</string>
<string>{-1.1925696134567261, -0.59628480672836304}</string>
</array>
<key>Shape</key>
<string>Rectangle</string>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>Color</key>
<dict>
<key>b</key>
<string>0.2</string>
<key>g</key>
<string>0.66422</string>
<key>r</key>
<string>0.801663</string>
</dict>
</dict>
<key>stroke</key>
<dict>
<key>Color</key>
<dict>
<key>b</key>
<string>0</string>
<key>g</key>
<string>0.138928</string>
<key>r</key>
<string>0.277811</string>
</dict>
<key>CornerRadius</key>
<real>9</real>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
\f0\b\fs20 \cf0 Data Acquisition\
Service}</string>
</dict>
</dict>
<dict>
<key>Bounds</key>
<string>{{428.25, 44.88250732421875}, {301, 19}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FitText</key>
<string>YES</string>
<key>Flow</key>
<string>Resize</string>
<key>FontInfo</key>
<dict>
<key>Font</key>
<string>Helvetica-Bold</string>
<key>Size</key>
<real>16</real>
</dict>
<key>ID</key>
<integer>35</integer>
<key>Shape</key>
<string>Rectangle</string>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
<key>shadow</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
<key>stroke</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Pad</key>
<integer>0</integer>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
\f0\b\fs32 \cf0 Data Management System Architecture }</string>
<key>VerticalPad</key>
<integer>0</integer>
</dict>
<key>Wrap</key>
<string>NO</string>
</dict>
<dict>
<key>Bounds</key>
<string>{{776, 218.44125366210938}, {78, 49}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FontInfo</key>
<dict>
<key>Font</key>
<string>Helvetica-Bold</string>
<key>Size</key>
<real>12</real>
</dict>
<key>ID</key>
<integer>29</integer>
<key>Magnets</key>
<array>
<string>{1.9868215517249155e-08, -1.3333333730697632}</string>
<string>{1.3333333730697632, 1.5894572413799324e-07}</string>
<string>{0, 1.3333333730697632}</string>
<string>{-1.3333333730697632, -6.3578289655197295e-07}</string>
</array>
<key>Shape</key>
<string>Rectangle</string>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>Color</key>
<dict>
<key>b</key>
<string>0.2</string>
<key>g</key>
<string>0.4</string>
<key>r</key>
<string>0.6</string>
</dict>
</dict>
<key>stroke</key>
<dict>
<key>Color</key>
<dict>
<key>b</key>
<string>0.157477</string>
<key>g</key>
<string>0.315005</string>
<key>r</key>
<string>0</string>
</dict>
<key>CornerRadius</key>
<real>9</real>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
\f0\b\fs20 \cf0 Web Browser }</string>
</dict>
</dict>
<dict>
<key>Bounds</key>
<string>{{187, 262.88250732421875}, {207.5, 140}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FontInfo</key>
<dict>
<key>Font</key>
<string>Helvetica</string>
<key>Size</key>
<real>12</real>
</dict>
<key>ID</key>
<integer>54</integer>
<key>Shape</key>
<string>Rectangle</string>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>Color</key>
<dict>
<key>b</key>
<string>0.496926</string>
<key>g</key>
<string>0.78326</string>
<key>r</key>
<string>1</string>
</dict>
</dict>
</dict>
</dict>
<dict>
<key>Class</key>
<string>LineGraphic</string>
<key>FontInfo</key>
<dict>
<key>Color</key>
<dict>
<key>w</key>
<string>0</string>
</dict>
<key>Font</key>
<string>Helvetica</string>
<key>Size</key>
<real>12</real>
</dict>
<key>ID</key>
<integer>87</integer>
<key>Points</key>
<array>
<string>{187, 576}</string>
<string>{896, 577.94125366210938}</string>
</array>
<key>Style</key>
<dict>
<key>stroke</key>
<dict>
<key>HeadArrow</key>
<string>0</string>
<key>Legacy</key>
<true/>
<key>Pattern</key>
<integer>1</integer>
<key>TailArrow</key>
<string>0</string>
</dict>
</dict>
</dict>
</array>
<key>GridInfo</key>
<dict/>
<key>GuidesLocked</key>
<string>NO</string>
<key>GuidesVisible</key>
<string>YES</string>
<key>HPages</key>
<integer>2</integer>
<key>ImageCounter</key>
<integer>1</integer>
<key>KeepToScale</key>
<false/>
<key>Layers</key>
<array>
<dict>
<key>Lock</key>
<string>NO</string>
<key>Name</key>
<string>Layer 1</string>
<key>Print</key>
<string>YES</string>
<key>View</key>
<string>YES</string>
</dict>
</array>
<key>LayoutInfo</key>
<dict>
<key>Animate</key>
<string>NO</string>
<key>circoMinDist</key>
<real>18</real>
<key>circoSeparation</key>
<real>0.0</real>
<key>layoutEngine</key>
<string>dot</string>
<key>neatoLineLength</key>
<real>0.20000000298023224</real>
<key>neatoSeparation</key>
<real>0.0</real>
<key>twopiSeparation</key>
<real>0.0</real>
</dict>
<key>LinksVisible</key>
<string>NO</string>
<key>MagnetsVisible</key>
<string>NO</string>
<key>MasterSheets</key>
<array/>
<key>ModificationDate</key>
<string>2015-03-02 21:06:49 +0000</string>
<key>Modifier</key>
<string>Nicholas Schwarz</string>
<key>NotesVisible</key>
<string>NO</string>
<key>Orientation</key>
<integer>2</integer>
<key>OriginVisible</key>
<string>NO</string>
<key>PageBreaks</key>
<string>YES</string>
<key>PrintInfo</key>
<dict>
<key>NSBottomMargin</key>
<array>
<string>float</string>
<string>41</string>
</array>
<key>NSHorizonalPagination</key>
<array>
<string>coded</string>
<string>BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwCG</string>
</array>
<key>NSLeftMargin</key>
<array>
<string>float</string>
<string>18</string>
</array>
<key>NSPaperSize</key>
<array>
<string>size</string>
<string>{612, 792}</string>
</array>
<key>NSPrintReverseOrientation</key>
<array>
<string>coded</string>
<string>BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwCG</string>
</array>
<key>NSRightMargin</key>
<array>
<string>float</string>
<string>18</string>
</array>
<key>NSTopMargin</key>
<array>
<string>float</string>
<string>18</string>
</array>
</dict>
<key>PrintOnePage</key>
<false/>
<key>ReadOnly</key>
<string>NO</string>
<key>RowAlign</key>
<integer>1</integer>
<key>RowSpacing</key>
<real>36</real>
<key>SheetTitle</key>
<string>Canvas 1</string>
<key>SmartAlignmentGuidesActive</key>
<string>YES</string>
<key>SmartDistanceGuidesActive</key>
<string>YES</string>
<key>UniqueID</key>
<integer>1</integer>
<key>UseEntirePage</key>
<false/>
<key>VPages</key>
<integer>2</integer>
<key>WindowInfo</key>
<dict>
<key>BottomSlabHeight</key>
<real>671</real>
<key>CurrentSheet</key>
<integer>0</integer>
<key>Expanded_Canvases</key>
<array/>
<key>Frame</key>
<string>{{154, 93}, {1734, 1015}}</string>
<key>ShowInfo</key>
<true/>
<key>ShowRuler</key>
<true/>
<key>Sidebar</key>
<true/>
<key>SidebarWidth</key>
<integer>230</integer>
<key>VisibleRegion</key>
<string>{{-10, 0}, {1172, 873}}</string>
<key>Zoom</key>
<real>1</real>
<key>ZoomValues</key>
<array>
<array>
<string>Canvas 1</string>
<real>1</real>
<real>1.5</real>
</array>
</array>
</dict>
</dict>
</plist>
File added
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>ActiveLayerIndex</key>
<integer>0</integer>
<key>ApplicationVersion</key>
<array>
<string>com.omnigroup.OmniGraffle6</string>
<string>159.9.0.225577</string>
</array>
<key>AutoAdjust</key>
<false/>
<key>BackgroundGraphic</key>
<dict>
<key>Bounds</key>
<string>{{0, 0}, {1224, 939}}</string>
<key>Class</key>
<string>SolidGraphic</string>
<key>ID</key>
<integer>2</integer>
<key>Style</key>
<dict>
<key>stroke</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
</dict>
</dict>
<key>BaseZoom</key>
<integer>0</integer>
<key>CanvasOrigin</key>
<string>{0, 0}</string>
<key>CanvasSize</key>
<string>{1224, 939}</string>
<key>ColumnAlign</key>
<integer>1</integer>
<key>ColumnSpacing</key>
<real>36</real>
<key>CreationDate</key>
<string>2014-08-18 13:26:16 +0000</string>
<key>Creator</key>
<string>Sinisa Veseli</string>
<key>DisplayScale</key>
<string>1 in = 1.00000 in</string>
<key>GraphDocumentVersion</key>
<integer>12</integer>
<key>GraphicsList</key>
<array>
<dict>
<key>Class</key>
<string>LineGraphic</string>
<key>ID</key>
<integer>196</integer>
<key>OrthogonalBarAutomatic</key>
<true/>
<key>OrthogonalBarPoint</key>
<string>{0, 0}</string>
<key>OrthogonalBarPosition</key>
<real>-1</real>
<key>Points</key>
<array>
<string>{913.4399838745594, 357}</string>
<string>{913.4399838745594, 357}</string>
<string>{977, 357}</string>
<string>{978, 262.71999938040972}</string>
</array>
<key>Style</key>
<dict>
<key>shadow</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
<key>stroke</key>
<dict>
<key>HeadArrow</key>
<string>FilledArrow</string>
<key>Legacy</key>
<true/>
<key>LineType</key>
<integer>2</integer>
<key>TailArrow</key>
<string>0</string>
</dict>
</dict>
<key>Tail</key>
<dict>
<key>ID</key>
<integer>193</integer>
</dict>
</dict>
<dict>
<key>Class</key>
<string>LineGraphic</string>
<key>ID</key>
<integer>195</integer>
<key>Points</key>
<array>
<string>{814.18892059998234, 389.8599909661711}</string>
<string>{813.9399838745594, 432}</string>
</array>
<key>Style</key>
<dict>
<key>shadow</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
<key>stroke</key>
<dict>
<key>HeadArrow</key>
<string>FilledArrow</string>
<key>Legacy</key>
<true/>
<key>TailArrow</key>
<string>0</string>
</dict>
</dict>
<key>Tail</key>
<dict>
<key>ID</key>
<integer>193</integer>
</dict>
</dict>
<dict>
<key>Class</key>
<string>LineGraphic</string>
<key>Head</key>
<dict>
<key>ID</key>
<integer>159</integer>
</dict>
<key>ID</key>
<integer>194</integer>
<key>Points</key>
<array>
<string>{907.4399838745594, 465.24862759008215}</string>
<string>{972.22000261255596, 465.8880338982849}</string>
</array>
<key>Style</key>
<dict>
<key>shadow</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
<key>stroke</key>
<dict>
<key>HeadArrow</key>
<string>FilledArrow</string>
<key>Legacy</key>
<true/>
<key>TailArrow</key>
<string>0</string>
</dict>
</dict>
</dict>
<dict>
<key>Class</key>
<string>TableGroup</string>
<key>Graphics</key>
<array>
<dict>
<key>Bounds</key>
<string>{{715.4399838745594, 277.35999969020486}, {198, 28}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FitText</key>
<string>Vertical</string>
<key>Flow</key>
<string>Resize</string>
<key>ID</key>
<integer>192</integer>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>GradientCenter</key>
<string>{-0.29411799999999999, -0.264706}</string>
</dict>
<key>shadow</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1344\cocoasubrtf720
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
\f0\b\fs24 \cf0 experiment_policy_property_value}</string>
<key>VerticalPad</key>
<integer>0</integer>
</dict>
<key>TextPlacement</key>
<integer>0</integer>
</dict>
<dict>
<key>Bounds</key>
<string>{{715.4399838745594, 305.35999969020486}, {198, 84}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FitText</key>
<string>Vertical</string>
<key>Flow</key>
<string>Resize</string>
<key>FontInfo</key>
<dict>
<key>Font</key>
<string>Helvetica</string>
</dict>
<key>ID</key>
<integer>193</integer>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>GradientCenter</key>
<string>{-0.29411799999999999, -0.264706}</string>
</dict>
<key>shadow</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Align</key>
<integer>0</integer>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1344\cocoasubrtf720
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
\f0\b\fs24 \cf0 id : PK\
policy_property_id : FK1,U1\
experiment_policy_id : FK2,U1\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
\b0 \cf0 policy_property_value
\b \
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
\b0 \cf0 modified_by\
modified_date}</string>
<key>VerticalPad</key>
<integer>0</integer>
</dict>
<key>TextPlacement</key>
<integer>0</integer>
</dict>
</array>
<key>GridH</key>
<array>
<integer>192</integer>
<integer>193</integer>
<array/>
</array>
<key>ID</key>
<integer>191</integer>
</dict>
<dict>
<key>Class</key>
<string>LineGraphic</string>
<key>Head</key>
<dict>
<key>ID</key>
<integer>188</integer>
</dict>
<key>ID</key>
<integer>190</integer>
<key>Points</key>
<array>
<string>{842.49999999385159, 206.70486589254276}</string>
<string>{928.71997827645669, 206.69134455580379}</string>
</array>
<key>Style</key>
<dict>
<key>shadow</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
<key>stroke</key>
<dict>
<key>HeadArrow</key>
<string>FilledArrow</string>
<key>Legacy</key>
<true/>
<key>TailArrow</key>
<string>0</string>
</dict>
</dict>
<key>Tail</key>
<dict>
<key>ID</key>
<integer>181</integer>
</dict>
</dict>
<dict>
<key>Class</key>
<string>LineGraphic</string>
<key>Head</key>
<dict>
<key>ID</key>
<integer>158</integer>
</dict>
<key>ID</key>
<integer>189</integer>
<key>Points</key>
<array>
<string>{1034.2199646305605, 263.21999938040972}</string>
<string>{1034.2199646305605, 431}</string>
</array>
<key>Style</key>
<dict>
<key>shadow</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
<key>stroke</key>
<dict>
<key>HeadArrow</key>
<string>FilledArrow</string>
<key>Legacy</key>
<true/>
<key>TailArrow</key>
<string>0</string>
</dict>
</dict>
<key>Tail</key>
<dict>
<key>ID</key>
<integer>188</integer>
</dict>
</dict>
<dict>
<key>Class</key>
<string>TableGroup</string>
<key>Graphics</key>
<array>
<dict>
<key>Bounds</key>
<string>{{929.21997825801373, 136.71999938040972}, {210, 14}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FitText</key>
<string>Vertical</string>
<key>Flow</key>
<string>Resize</string>
<key>ID</key>
<integer>187</integer>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>GradientCenter</key>
<string>{-0.29411799999999999, -0.264706}</string>
</dict>
<key>shadow</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1344\cocoasubrtf720
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
\f0\b\fs24 \cf0 policy_property}</string>
<key>VerticalPad</key>
<integer>0</integer>
</dict>
<key>TextPlacement</key>
<integer>0</integer>
</dict>
<dict>
<key>Bounds</key>
<string>{{929.21997825801373, 150.71999938040972}, {210, 112}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FitText</key>
<string>Vertical</string>
<key>Flow</key>
<string>Resize</string>
<key>ID</key>
<integer>188</integer>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>GradientCenter</key>
<string>{-0.29411799999999999, -0.264706}</string>
</dict>
<key>shadow</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Align</key>
<integer>0</integer>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1344\cocoasubrtf720
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
\f0\b\fs24 \cf0 id : PK\
name : U1\
policy_type_id : FK1, U1
\b0 \
units\
lower_limit\
upper_limit\
default_value\
description}</string>
<key>VerticalPad</key>
<integer>0</integer>
</dict>
<key>TextPlacement</key>
<integer>0</integer>
</dict>
</array>
<key>GridH</key>
<array>
<integer>187</integer>
<integer>188</integer>
<array/>
</array>
<key>ID</key>
<integer>186</integer>
</dict>
<dict>
<key>Class</key>
<string>LineGraphic</string>
<key>Head</key>
<dict>
<key>ID</key>
<integer>184</integer>
</dict>
<key>ID</key>
<integer>185</integer>
<key>Points</key>
<array>
<string>{175, 91.000018464369361}</string>
<string>{298.5, 91.000018464369361}</string>
</array>
<key>Style</key>
<dict>
<key>shadow</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
<key>stroke</key>
<dict>
<key>HeadArrow</key>
<string>0</string>
<key>Legacy</key>
<true/>
<key>TailArrow</key>
<string>FilledArrow</string>
</dict>
</dict>
<key>Tail</key>
<dict>
<key>ID</key>
<integer>151</integer>
</dict>
</dict>
<dict>
<key>Class</key>
<string>TableGroup</string>
<key>Graphics</key>
<array>
<dict>
<key>Bounds</key>
<string>{{299, 49}, {192, 14}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FitText</key>
<string>Vertical</string>
<key>Flow</key>
<string>Resize</string>
<key>ID</key>
<integer>183</integer>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>GradientCenter</key>
<string>{-0.29411799999999999, -0.264706}</string>
</dict>
<key>shadow</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1344\cocoasubrtf720
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
\f0\b\fs24 \cf0 allowed_setting_value}</string>
<key>VerticalPad</key>
<integer>0</integer>
</dict>
<key>TextPlacement</key>
<integer>0</integer>
</dict>
<dict>
<key>Bounds</key>
<string>{{299, 63}, {192, 56}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FitText</key>
<string>Vertical</string>
<key>Flow</key>
<string>Resize</string>
<key>ID</key>
<integer>184</integer>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>GradientCenter</key>
<string>{-0.29411799999999999, -0.264706}</string>
</dict>
<key>shadow</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Align</key>
<integer>0</integer>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1344\cocoasubrtf720
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
\f0\b\fs24 \cf0 id : PK\
setting_type_id : FK1,U1
\b0 \
setting_value : U1\
description}</string>
<key>VerticalPad</key>
<integer>0</integer>
</dict>
<key>TextPlacement</key>
<integer>0</integer>
</dict>
</array>
<key>GridH</key>
<array>
<integer>183</integer>
<integer>184</integer>
<array/>
</array>
<key>ID</key>
<integer>182</integer>
</dict>
<dict>
<key>Class</key>
<string>TableGroup</string>
<key>Graphics</key>
<array>
<dict>
<key>Bounds</key>
<string>{{650, 164.71999938040972}, {192, 14}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FitText</key>
<string>Vertical</string>
<key>Flow</key>
<string>Resize</string>
<key>ID</key>
<integer>180</integer>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>GradientCenter</key>
<string>{-0.29411799999999999, -0.264706}</string>
</dict>
<key>shadow</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1344\cocoasubrtf720
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
\f0\b\fs24 \cf0 allowed_policy_value}</string>
<key>VerticalPad</key>
<integer>0</integer>
</dict>
<key>TextPlacement</key>
<integer>0</integer>
</dict>
<dict>
<key>Bounds</key>
<string>{{650, 178.71999938040972}, {192, 56}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FitText</key>
<string>Vertical</string>
<key>Flow</key>
<string>Resize</string>
<key>ID</key>
<integer>181</integer>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>GradientCenter</key>
<string>{-0.29411799999999999, -0.264706}</string>
</dict>
<key>shadow</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Align</key>
<integer>0</integer>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1344\cocoasubrtf720
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
\f0\b\fs24 \cf0 id : PK\
policy_property_id : FK1,U1
\b0 \
policy_value : U1\
description}</string>
<key>VerticalPad</key>
<integer>0</integer>
</dict>
<key>TextPlacement</key>
<integer>0</integer>
</dict>
</array>
<key>GridH</key>
<array>
<integer>180</integer>
<integer>181</integer>
<array/>
</array>
<key>ID</key>
<integer>179</integer>
</dict>
<dict>
<key>Bounds</key>
<string>{{446, 22}, {260, 22}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FitText</key>
<string>YES</string>
<key>Flow</key>
<string>Resize</string>
<key>ID</key>
<integer>178</integer>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
<key>shadow</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
<key>stroke</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Pad</key>
<integer>0</integer>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1344\cocoasubrtf720
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
\f0\b\fs36 \cf0 Data Management DB Schema}</string>
<key>VerticalPad</key>
<integer>0</integer>
</dict>
<key>Wrap</key>
<string>NO</string>
</dict>
<dict>
<key>Class</key>
<string>LineGraphic</string>
<key>Head</key>
<dict>
<key>ID</key>
<integer>167</integer>
</dict>
<key>ID</key>
<integer>177</integer>
<key>Points</key>
<array>
<string>{367.00000243457237, 846.5}</string>
<string>{367.00000243457237, 797.5}</string>
</array>
<key>Style</key>
<dict>
<key>shadow</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
<key>stroke</key>
<dict>
<key>HeadArrow</key>
<string>FilledArrow</string>
<key>Legacy</key>
<true/>
<key>TailArrow</key>
<string>0</string>
</dict>
</dict>
<key>Tail</key>
<dict>
<key>ID</key>
<integer>175</integer>
</dict>
</dict>
<dict>
<key>Class</key>
<string>TableGroup</string>
<key>Graphics</key>
<array>
<dict>
<key>Bounds</key>
<string>{{271, 847}, {192, 14}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FitText</key>
<string>Vertical</string>
<key>Flow</key>
<string>Resize</string>
<key>ID</key>
<integer>175</integer>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>GradientCenter</key>
<string>{-0.29411799999999999, -0.264706}</string>
</dict>
<key>shadow</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1344\cocoasubrtf720
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
\f0\b\fs24 \cf0 data_folder_permission}</string>
<key>VerticalPad</key>
<integer>0</integer>
</dict>
<key>TextPlacement</key>
<integer>0</integer>
</dict>
<dict>
<key>Bounds</key>
<string>{{271, 861}, {192, 56}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FitText</key>
<string>Vertical</string>
<key>Flow</key>
<string>Resize</string>
<key>ID</key>
<integer>176</integer>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>GradientCenter</key>
<string>{-0.29411799999999999, -0.264706}</string>
</dict>
<key>shadow</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Align</key>
<integer>0</integer>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1344\cocoasubrtf720
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
\f0\b\fs24 \cf0 id
\b0
\b : PK
\b0 \
\b data_folder_id : FK1,U1\
permission_value : U1\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
\b0 \cf0 description}</string>
<key>VerticalPad</key>
<integer>0</integer>
</dict>
<key>TextPlacement</key>
<integer>0</integer>
</dict>
</array>
<key>GridH</key>
<array>
<integer>175</integer>
<integer>176</integer>
<array/>
</array>
<key>ID</key>
<integer>174</integer>
</dict>
<dict>
<key>Class</key>
<string>LineGraphic</string>
<key>Head</key>
<dict>
<key>ID</key>
<integer>141</integer>
</dict>
<key>ID</key>
<integer>173</integer>
<key>Points</key>
<array>
<string>{619.50000241517523, 740.5}</string>
<string>{619.50000241517523, 654.5}</string>
</array>
<key>Style</key>
<dict>
<key>shadow</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
<key>stroke</key>
<dict>
<key>HeadArrow</key>
<string>FilledArrow</string>
<key>Legacy</key>
<true/>
<key>TailArrow</key>
<string>0</string>
</dict>
</dict>
<key>Tail</key>
<dict>
<key>ID</key>
<integer>170</integer>
</dict>
</dict>
<dict>
<key>Class</key>
<string>LineGraphic</string>
<key>Head</key>
<dict>
<key>ID</key>
<integer>167</integer>
</dict>
<key>ID</key>
<integer>172</integer>
<key>Points</key>
<array>
<string>{531.50000000000239, 768.99972787959564}</string>
<string>{463.49999999999375, 768.99951760473766}</string>
</array>
<key>Style</key>
<dict>
<key>shadow</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
<key>stroke</key>
<dict>
<key>HeadArrow</key>
<string>FilledArrow</string>
<key>Legacy</key>
<true/>
<key>TailArrow</key>
<string>0</string>
</dict>
</dict>
<key>Tail</key>
<dict>
<key>ID</key>
<integer>171</integer>
</dict>
</dict>
<dict>
<key>Class</key>
<string>TableGroup</string>
<key>Graphics</key>
<array>
<dict>
<key>Bounds</key>
<string>{{532, 741}, {175, 14}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FitText</key>
<string>Vertical</string>
<key>Flow</key>
<string>Resize</string>
<key>ID</key>
<integer>170</integer>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>GradientCenter</key>
<string>{-0.29411799999999999, -0.264706}</string>
</dict>
<key>shadow</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1344\cocoasubrtf720
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
\f0\b\fs24 \cf0 experiment_data_folder}</string>
<key>VerticalPad</key>
<integer>0</integer>
</dict>
<key>TextPlacement</key>
<integer>0</integer>
</dict>
<dict>
<key>Bounds</key>
<string>{{532, 755}, {175, 28}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FitText</key>
<string>Vertical</string>
<key>Flow</key>
<string>Resize</string>
<key>ID</key>
<integer>171</integer>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>GradientCenter</key>
<string>{-0.29411799999999999, -0.264706}</string>
</dict>
<key>shadow</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Align</key>
<integer>0</integer>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1344\cocoasubrtf720
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
\f0\b\fs24 \cf0 experiment_id
\b0
\b : PK,FK1,U1
\b0 \
\b data_folder_id : PK,FK2,U1}</string>
<key>VerticalPad</key>
<integer>0</integer>
</dict>
<key>TextPlacement</key>
<integer>0</integer>
</dict>
</array>
<key>GridH</key>
<array>
<integer>170</integer>
<integer>171</integer>
<array/>
</array>
<key>ID</key>
<integer>169</integer>
</dict>
<dict>
<key>Class</key>
<string>LineGraphic</string>
<key>Head</key>
<dict>
<key>ID</key>
<integer>166</integer>
</dict>
<key>ID</key>
<integer>168</integer>
<key>OrthogonalBarAutomatic</key>
<true/>
<key>OrthogonalBarPoint</key>
<string>{0, 0}</string>
<key>OrthogonalBarPosition</key>
<real>19.302753588433717</real>
<key>Points</key>
<array>
<string>{463.49449282313259, 754.55864733259239}</string>
<string>{514, 747}</string>
<string>{498, 693}</string>
<string>{389.84302878828197, 726.85065511206437}</string>
</array>
<key>Style</key>
<dict>
<key>shadow</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
<key>stroke</key>
<dict>
<key>HeadArrow</key>
<string>FilledArrow</string>
<key>Legacy</key>
<true/>
<key>LineType</key>
<integer>2</integer>
<key>TailArrow</key>
<string>0</string>
</dict>
</dict>
<key>Tail</key>
<dict>
<key>ID</key>
<integer>167</integer>
</dict>
</dict>
<dict>
<key>Class</key>
<string>TableGroup</string>
<key>Graphics</key>
<array>
<dict>
<key>Bounds</key>
<string>{{271, 727}, {192, 14}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FitText</key>
<string>Vertical</string>
<key>Flow</key>
<string>Resize</string>
<key>ID</key>
<integer>166</integer>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>GradientCenter</key>
<string>{-0.29411799999999999, -0.264706}</string>
</dict>
<key>shadow</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1344\cocoasubrtf720
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
\f0\b\fs24 \cf0 data_folder}</string>
<key>VerticalPad</key>
<integer>0</integer>
</dict>
<key>TextPlacement</key>
<integer>0</integer>
</dict>
<dict>
<key>Bounds</key>
<string>{{271, 741}, {192, 56}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FitText</key>
<string>Vertical</string>
<key>Flow</key>
<string>Resize</string>
<key>ID</key>
<integer>167</integer>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>GradientCenter</key>
<string>{-0.29411799999999999, -0.264706}</string>
</dict>
<key>shadow</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Align</key>
<integer>0</integer>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1344\cocoasubrtf720
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
\f0\b\fs24 \cf0 id
\b0
\b : PK
\b0 \
\b data_path : U1\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
\b0 \cf0 parent_data_folder_id: FK1,U1\
description}</string>
<key>VerticalPad</key>
<integer>0</integer>
</dict>
<key>TextPlacement</key>
<integer>0</integer>
</dict>
</array>
<key>GridH</key>
<array>
<integer>166</integer>
<integer>167</integer>
<array/>
</array>
<key>ID</key>
<integer>165</integer>
</dict>
<dict>
<key>Class</key>
<string>LineGraphic</string>
<key>Head</key>
<dict>
<key>ID</key>
<integer>141</integer>
</dict>
<key>ID</key>
<integer>164</integer>
<key>Points</key>
<array>
<string>{349.5, 612.00001240712663}</string>
<string>{539.5, 612.00001240712663}</string>
</array>
<key>Style</key>
<dict>
<key>shadow</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
<key>stroke</key>
<dict>
<key>HeadArrow</key>
<string>FilledArrow</string>
<key>Legacy</key>
<true/>
<key>TailArrow</key>
<string>0</string>
</dict>
</dict>
<key>Tail</key>
<dict>
<key>ID</key>
<integer>146</integer>
</dict>
</dict>
<dict>
<key>Class</key>
<string>LineGraphic</string>
<key>Head</key>
<dict>
<key>ID</key>
<integer>162</integer>
</dict>
<key>ID</key>
<integer>163</integer>
<key>OrthogonalBarAutomatic</key>
<true/>
<key>OrthogonalBarPoint</key>
<string>{0, 0}</string>
<key>OrthogonalBarPosition</key>
<real>19.800007228358311</real>
<key>Points</key>
<array>
<string>{699.4999855432834, 612.60836490907445}</string>
<string>{751, 613}</string>
<string>{814, 598}</string>
<string>{814.36777279011494, 488.49999717988214}</string>
</array>
<key>Style</key>
<dict>
<key>shadow</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
<key>stroke</key>
<dict>
<key>HeadArrow</key>
<string>0</string>
<key>Legacy</key>
<true/>
<key>LineType</key>
<integer>2</integer>
<key>TailArrow</key>
<string>FilledArrow</string>
</dict>
</dict>
<key>Tail</key>
<dict>
<key>ID</key>
<integer>141</integer>
</dict>
</dict>
<dict>
<key>Class</key>
<string>TableGroup</string>
<key>Graphics</key>
<array>
<dict>
<key>Bounds</key>
<string>{{721.4399838745594, 432}, {186, 14}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FitText</key>
<string>Vertical</string>
<key>Flow</key>
<string>Resize</string>
<key>ID</key>
<integer>161</integer>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>GradientCenter</key>
<string>{-0.29411799999999999, -0.264706}</string>
</dict>
<key>shadow</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1344\cocoasubrtf720
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
\f0\b\fs24 \cf0 experiment_policy}</string>
<key>VerticalPad</key>
<integer>0</integer>
</dict>
<key>TextPlacement</key>
<integer>0</integer>
</dict>
<dict>
<key>Bounds</key>
<string>{{721.4399838745594, 446}, {186, 42}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FitText</key>
<string>Vertical</string>
<key>Flow</key>
<string>Resize</string>
<key>ID</key>
<integer>162</integer>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>GradientCenter</key>
<string>{-0.29411799999999999, -0.264706}</string>
</dict>
<key>shadow</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Align</key>
<integer>0</integer>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1344\cocoasubrtf720
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
\f0\b\fs24 \cf0 id : PK\
experiment_id
\b0
\b : FK1,U1
\b0 \
\b policy_type_id : FK2,U1}</string>
<key>VerticalPad</key>
<integer>0</integer>
</dict>
<key>TextPlacement</key>
<integer>0</integer>
</dict>
</array>
<key>GridH</key>
<array>
<integer>161</integer>
<integer>162</integer>
<array/>
</array>
<key>ID</key>
<integer>160</integer>
</dict>
<dict>
<key>Class</key>
<string>TableGroup</string>
<key>Graphics</key>
<array>
<dict>
<key>Bounds</key>
<string>{{972.71997825801373, 431.5}, {123, 14}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FitText</key>
<string>Vertical</string>
<key>Flow</key>
<string>Resize</string>
<key>ID</key>
<integer>158</integer>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>GradientCenter</key>
<string>{-0.29411799999999999, -0.264706}</string>
</dict>
<key>shadow</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1344\cocoasubrtf720
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
\f0\b\fs24 \cf0 policy_type}</string>
<key>VerticalPad</key>
<integer>0</integer>
</dict>
<key>TextPlacement</key>
<integer>0</integer>
</dict>
<dict>
<key>Bounds</key>
<string>{{972.71997825801373, 445.5}, {123, 42}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FitText</key>
<string>Vertical</string>
<key>Flow</key>
<string>Resize</string>
<key>ID</key>
<integer>159</integer>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>GradientCenter</key>
<string>{-0.29411799999999999, -0.264706}</string>
</dict>
<key>shadow</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Align</key>
<integer>0</integer>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1344\cocoasubrtf720
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
\f0\b\fs24 \cf0 id : PK\
name : U1
\b0 \
description}</string>
<key>VerticalPad</key>
<integer>0</integer>
</dict>
<key>TextPlacement</key>
<integer>0</integer>
</dict>
</array>
<key>GridH</key>
<array>
<integer>158</integer>
<integer>159</integer>
<array/>
</array>
<key>ID</key>
<integer>157</integer>
</dict>
<dict>
<key>Class</key>
<string>LineGraphic</string>
<key>Head</key>
<dict>
<key>ID</key>
<integer>127</integer>
</dict>
<key>ID</key>
<integer>156</integer>
<key>OrthogonalBarAutomatic</key>
<true/>
<key>OrthogonalBarPoint</key>
<string>{0, 0}</string>
<key>OrthogonalBarPosition</key>
<real>30.925000000000011</real>
<key>Points</key>
<array>
<string>{118, 335.25}</string>
<string>{118, 409}</string>
<string>{123, 432}</string>
<string>{193.00000369818383, 431.73076921654547}</string>
</array>
<key>Style</key>
<dict>
<key>shadow</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
<key>stroke</key>
<dict>
<key>HeadArrow</key>
<string>FilledArrow</string>
<key>Legacy</key>
<true/>
<key>LineType</key>
<integer>2</integer>
<key>TailArrow</key>
<string>0</string>
</dict>
</dict>
<key>Tail</key>
<dict>
<key>ID</key>
<integer>154</integer>
</dict>
</dict>
<dict>
<key>Class</key>
<string>LineGraphic</string>
<key>Head</key>
<dict>
<key>ID</key>
<integer>151</integer>
</dict>
<key>ID</key>
<integer>155</integer>
<key>Points</key>
<array>
<string>{118.00000706196258, 264.25}</string>
<string>{118.00000706196258, 126.5}</string>
</array>
<key>Style</key>
<dict>
<key>shadow</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
<key>stroke</key>
<dict>
<key>HeadArrow</key>
<string>FilledArrow</string>
<key>Legacy</key>
<true/>
<key>TailArrow</key>
<string>0</string>
</dict>
</dict>
<key>Tail</key>
<dict>
<key>ID</key>
<integer>153</integer>
</dict>
</dict>
<dict>
<key>Class</key>
<string>TableGroup</string>
<key>Graphics</key>
<array>
<dict>
<key>Bounds</key>
<string>{{25, 264.75}, {186, 14}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FitText</key>
<string>Vertical</string>
<key>Flow</key>
<string>Resize</string>
<key>ID</key>
<integer>153</integer>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>GradientCenter</key>
<string>{-0.29411799999999999, -0.264706}</string>
</dict>
<key>shadow</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1344\cocoasubrtf720
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
\f0\b\fs24 \cf0 user_setting}</string>
<key>VerticalPad</key>
<integer>0</integer>
</dict>
<key>TextPlacement</key>
<integer>0</integer>
</dict>
<dict>
<key>Bounds</key>
<string>{{25, 278.75}, {186, 56}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FitText</key>
<string>Vertical</string>
<key>Flow</key>
<string>Resize</string>
<key>ID</key>
<integer>154</integer>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>GradientCenter</key>
<string>{-0.29411799999999999, -0.264706}</string>
</dict>
<key>shadow</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Align</key>
<integer>0</integer>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1344\cocoasubrtf720
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
\f0\b\fs24 \cf0 id : PK\
user_id
\b0
\b : FK1,U1
\b0 \
\b setting_type_id : FK2,U1\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
\b0 \cf0 setting_value
\b : U1}</string>
<key>VerticalPad</key>
<integer>0</integer>
</dict>
<key>TextPlacement</key>
<integer>0</integer>
</dict>
</array>
<key>GridH</key>
<array>
<integer>153</integer>
<integer>154</integer>
<array/>
</array>
<key>ID</key>
<integer>152</integer>
</dict>
<dict>
<key>Class</key>
<string>TableGroup</string>
<key>Graphics</key>
<array>
<dict>
<key>Bounds</key>
<string>{{61.5, 42}, {113, 14}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FitText</key>
<string>Vertical</string>
<key>Flow</key>
<string>Resize</string>
<key>ID</key>
<integer>150</integer>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>GradientCenter</key>
<string>{-0.29411799999999999, -0.264706}</string>
</dict>
<key>shadow</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1344\cocoasubrtf720
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
\f0\b\fs24 \cf0 setting_type}</string>
<key>VerticalPad</key>
<integer>0</integer>
</dict>
<key>TextPlacement</key>
<integer>0</integer>
</dict>
<dict>
<key>Bounds</key>
<string>{{61.5, 56}, {113, 70}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FitText</key>
<string>Vertical</string>
<key>Flow</key>
<string>Resize</string>
<key>ID</key>
<integer>151</integer>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>GradientCenter</key>
<string>{-0.29411799999999999, -0.264706}</string>
</dict>
<key>shadow</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Align</key>
<integer>0</integer>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1344\cocoasubrtf720
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
\f0\b\fs24 \cf0 id : PK\
name : U1
\b0 \
description\
default_value\
is_user_modifiable}</string>
<key>VerticalPad</key>
<integer>0</integer>
</dict>
<key>TextPlacement</key>
<integer>0</integer>
</dict>
</array>
<key>GridH</key>
<array>
<integer>150</integer>
<integer>151</integer>
<array/>
</array>
<key>ID</key>
<integer>149</integer>
</dict>
<dict>
<key>Class</key>
<string>LineGraphic</string>
<key>Head</key>
<dict>
<key>ID</key>
<integer>130</integer>
</dict>
<key>ID</key>
<integer>148</integer>
<key>OrthogonalBarAutomatic</key>
<true/>
<key>OrthogonalBarPoint</key>
<string>{0, 0}</string>
<key>OrthogonalBarPosition</key>
<real>8.0458892937767246</real>
<key>Points</key>
<array>
<string>{285.06261573273781, 576.8917785875534}</string>
<string>{465, 537}</string>
<string>{485, 516}</string>
<string>{484.54999999865009, 259.49999923053423}</string>
</array>
<key>Style</key>
<dict>
<key>shadow</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
<key>stroke</key>
<dict>
<key>HeadArrow</key>
<string>FilledArrow</string>
<key>Legacy</key>
<true/>
<key>LineType</key>
<integer>2</integer>
<key>TailArrow</key>
<string>0</string>
</dict>
</dict>
<key>Tail</key>
<dict>
<key>ID</key>
<integer>145</integer>
</dict>
</dict>
<dict>
<key>Class</key>
<string>LineGraphic</string>
<key>Head</key>
<dict>
<key>ID</key>
<integer>127</integer>
</dict>
<key>ID</key>
<integer>147</integer>
<key>Points</key>
<array>
<string>{252.99999841592671, 576.5}</string>
<string>{252.99999841592671, 488}</string>
</array>
<key>Style</key>
<dict>
<key>shadow</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
<key>stroke</key>
<dict>
<key>HeadArrow</key>
<string>FilledArrow</string>
<key>Legacy</key>
<true/>
<key>TailArrow</key>
<string>0</string>
</dict>
</dict>
<key>Tail</key>
<dict>
<key>ID</key>
<integer>145</integer>
</dict>
</dict>
<dict>
<key>Class</key>
<string>TableGroup</string>
<key>Graphics</key>
<array>
<dict>
<key>Bounds</key>
<string>{{157, 577}, {192, 14}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FitText</key>
<string>Vertical</string>
<key>Flow</key>
<string>Resize</string>
<key>ID</key>
<integer>145</integer>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>GradientCenter</key>
<string>{-0.29411799999999999, -0.264706}</string>
</dict>
<key>shadow</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1344\cocoasubrtf720
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
\f0\b\fs24 \cf0 user_experiment_role}</string>
<key>VerticalPad</key>
<integer>0</integer>
</dict>
<key>TextPlacement</key>
<integer>0</integer>
</dict>
<dict>
<key>Bounds</key>
<string>{{157, 591}, {192, 42}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FitText</key>
<string>Vertical</string>
<key>Flow</key>
<string>Resize</string>
<key>ID</key>
<integer>146</integer>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>GradientCenter</key>
<string>{-0.29411799999999999, -0.264706}</string>
</dict>
<key>shadow</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Align</key>
<integer>0</integer>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1344\cocoasubrtf720
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
\f0\b\fs24 \cf0 user_id
\b0
\b : PK,FK1,U1\
experiment_id: PK,FK2,U1
\b0 \
\b role_type_id : PK,FK3,U1}</string>
<key>VerticalPad</key>
<integer>0</integer>
</dict>
<key>TextPlacement</key>
<integer>0</integer>
</dict>
</array>
<key>GridH</key>
<array>
<integer>145</integer>
<integer>146</integer>
<array/>
</array>
<key>ID</key>
<integer>144</integer>
</dict>
<dict>
<key>Class</key>
<string>LineGraphic</string>
<key>Head</key>
<dict>
<key>ID</key>
<integer>138</integer>
</dict>
<key>ID</key>
<integer>143</integer>
<key>Points</key>
<array>
<string>{619.50000311183703, 555.5}</string>
<string>{619.50000311183703, 474.5}</string>
</array>
<key>Style</key>
<dict>
<key>shadow</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
<key>stroke</key>
<dict>
<key>HeadArrow</key>
<string>FilledArrow</string>
<key>Legacy</key>
<true/>
<key>TailArrow</key>
<string>0</string>
</dict>
</dict>
<key>Tail</key>
<dict>
<key>ID</key>
<integer>140</integer>
</dict>
</dict>
<dict>
<key>Bounds</key>
<string>{{541, 315}, {2, 30}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FitText</key>
<string>YES</string>
<key>Flow</key>
<string>Resize</string>
<key>ID</key>
<integer>142</integer>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
<key>shadow</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
<key>stroke</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Align</key>
<integer>0</integer>
<key>Pad</key>
<integer>0</integer>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1344\cocoasubrtf720
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
\f0\fs24 \cf0 \
}</string>
<key>VerticalPad</key>
<integer>0</integer>
</dict>
<key>Wrap</key>
<string>NO</string>
</dict>
<dict>
<key>Class</key>
<string>TableGroup</string>
<key>Graphics</key>
<array>
<dict>
<key>Bounds</key>
<string>{{540, 556}, {159, 14}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FitText</key>
<string>Vertical</string>
<key>Flow</key>
<string>Resize</string>
<key>ID</key>
<integer>140</integer>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>GradientCenter</key>
<string>{-0.29411799999999999, -0.264706}</string>
</dict>
<key>shadow</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1344\cocoasubrtf720
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
\f0\b\fs24 \cf0 experiment}</string>
<key>VerticalPad</key>
<integer>0</integer>
</dict>
<key>TextPlacement</key>
<integer>0</integer>
</dict>
<dict>
<key>Bounds</key>
<string>{{540, 570}, {159, 84}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FitText</key>
<string>Vertical</string>
<key>Flow</key>
<string>Resize</string>
<key>ID</key>
<integer>141</integer>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>GradientCenter</key>
<string>{-0.29411799999999999, -0.264706}</string>
</dict>
<key>shadow</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Align</key>
<integer>0</integer>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1344\cocoasubrtf720
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
\f0\b\fs24 \cf0 id : PK\
experiment_type_id : FK1\
name : U1
\b0 \
description\
start_date\
end_date}</string>
<key>VerticalPad</key>
<integer>0</integer>
</dict>
<key>TextPlacement</key>
<integer>0</integer>
</dict>
</array>
<key>GridH</key>
<array>
<integer>140</integer>
<integer>141</integer>
<array/>
</array>
<key>ID</key>
<integer>139</integer>
</dict>
<dict>
<key>Class</key>
<string>TableGroup</string>
<key>Graphics</key>
<array>
<dict>
<key>Bounds</key>
<string>{{566.5, 404}, {106, 14}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FitText</key>
<string>Vertical</string>
<key>Flow</key>
<string>Resize</string>
<key>ID</key>
<integer>137</integer>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>GradientCenter</key>
<string>{-0.29411799999999999, -0.264706}</string>
</dict>
<key>shadow</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1344\cocoasubrtf720
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
\f0\b\fs24 \cf0 experiment_type}</string>
<key>VerticalPad</key>
<integer>0</integer>
</dict>
<key>TextPlacement</key>
<integer>0</integer>
</dict>
<dict>
<key>Bounds</key>
<string>{{566.5, 418}, {106, 56}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FitText</key>
<string>Vertical</string>
<key>Flow</key>
<string>Resize</string>
<key>ID</key>
<integer>138</integer>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>GradientCenter</key>
<string>{-0.29411799999999999, -0.264706}</string>
</dict>
<key>shadow</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Align</key>
<integer>0</integer>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1344\cocoasubrtf720
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
\f0\b\fs24 \cf0 id : PK\
name : U1
\b0 \
description\
root_data_path}</string>
<key>VerticalPad</key>
<integer>0</integer>
</dict>
<key>TextPlacement</key>
<integer>0</integer>
</dict>
</array>
<key>GridH</key>
<array>
<integer>137</integer>
<integer>138</integer>
<array/>
</array>
<key>ID</key>
<integer>136</integer>
</dict>
<dict>
<key>Class</key>
<string>LineGraphic</string>
<key>Head</key>
<dict>
<key>ID</key>
<integer>130</integer>
</dict>
<key>ID</key>
<integer>135</integer>
<key>Points</key>
<array>
<string>{319.49999999992838, 230.9988742059389}</string>
<string>{431.00000000079314, 230.99698659634771}</string>
</array>
<key>Style</key>
<dict>
<key>shadow</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
<key>stroke</key>
<dict>
<key>HeadArrow</key>
<string>FilledArrow</string>
<key>Legacy</key>
<true/>
<key>TailArrow</key>
<string>0</string>
</dict>
</dict>
<key>Tail</key>
<dict>
<key>ID</key>
<integer>133</integer>
</dict>
</dict>
<dict>
<key>Class</key>
<string>LineGraphic</string>
<key>Head</key>
<dict>
<key>ID</key>
<integer>126</integer>
</dict>
<key>ID</key>
<integer>134</integer>
<key>Points</key>
<array>
<string>{253.00000140331943, 252.5}</string>
<string>{253.00000140331943, 361}</string>
</array>
<key>Style</key>
<dict>
<key>shadow</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
<key>stroke</key>
<dict>
<key>HeadArrow</key>
<string>FilledArrow</string>
<key>Legacy</key>
<true/>
<key>TailArrow</key>
<string>0</string>
</dict>
</dict>
<key>Tail</key>
<dict>
<key>ID</key>
<integer>133</integer>
</dict>
</dict>
<dict>
<key>Class</key>
<string>TableGroup</string>
<key>Graphics</key>
<array>
<dict>
<key>Bounds</key>
<string>{{187, 196}, {132, 14}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FitText</key>
<string>Vertical</string>
<key>Flow</key>
<string>Resize</string>
<key>ID</key>
<integer>132</integer>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>GradientCenter</key>
<string>{-0.29411799999999999, -0.264706}</string>
</dict>
<key>shadow</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1344\cocoasubrtf720
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
\f0\b\fs24 \cf0 user_system_role}</string>
<key>VerticalPad</key>
<integer>0</integer>
</dict>
<key>TextPlacement</key>
<integer>0</integer>
</dict>
<dict>
<key>Bounds</key>
<string>{{187, 210}, {132, 42}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FitText</key>
<string>Vertical</string>
<key>Flow</key>
<string>Resize</string>
<key>ID</key>
<integer>133</integer>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>GradientCenter</key>
<string>{-0.29411799999999999, -0.264706}</string>
</dict>
<key>shadow</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Align</key>
<integer>0</integer>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1344\cocoasubrtf720
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
\f0\b\fs24 \cf0 user_id
\b0
\b : PK,FK1,U1
\b0 \
\b role_type_id : PK,FK2,U1}</string>
<key>VerticalPad</key>
<integer>0</integer>
</dict>
<key>TextPlacement</key>
<integer>0</integer>
</dict>
</array>
<key>GridH</key>
<array>
<integer>132</integer>
<integer>133</integer>
<array/>
</array>
<key>ID</key>
<integer>131</integer>
</dict>
<dict>
<key>Class</key>
<string>TableGroup</string>
<key>Graphics</key>
<array>
<dict>
<key>Bounds</key>
<string>{{431.5, 189}, {106, 14}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FitText</key>
<string>Vertical</string>
<key>Flow</key>
<string>Resize</string>
<key>ID</key>
<integer>129</integer>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>GradientCenter</key>
<string>{-0.29411799999999999, -0.264706}</string>
</dict>
<key>shadow</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1344\cocoasubrtf720
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
\f0\b\fs24 \cf0 role_type}</string>
<key>VerticalPad</key>
<integer>0</integer>
</dict>
<key>TextPlacement</key>
<integer>0</integer>
</dict>
<dict>
<key>Bounds</key>
<string>{{431.5, 203}, {106, 56}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FitText</key>
<string>Vertical</string>
<key>Flow</key>
<string>Resize</string>
<key>ID</key>
<integer>130</integer>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>GradientCenter</key>
<string>{-0.29411799999999999, -0.264706}</string>
</dict>
<key>shadow</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Align</key>
<integer>0</integer>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1344\cocoasubrtf720
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
\f0\b\fs24 \cf0 id : PK\
name : U1
\b0 \
description\
is_system_role}</string>
<key>VerticalPad</key>
<integer>0</integer>
</dict>
<key>TextPlacement</key>
<integer>0</integer>
</dict>
</array>
<key>GridH</key>
<array>
<integer>129</integer>
<integer>130</integer>
<array/>
</array>
<key>ID</key>
<integer>128</integer>
</dict>
<dict>
<key>Class</key>
<string>TableGroup</string>
<key>Graphics</key>
<array>
<dict>
<key>Bounds</key>
<string>{{193.5, 361.5}, {119, 14}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FitText</key>
<string>Vertical</string>
<key>Flow</key>
<string>Resize</string>
<key>ID</key>
<integer>126</integer>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>GradientCenter</key>
<string>{-0.29411799999999999, -0.264706}</string>
</dict>
<key>shadow</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1344\cocoasubrtf720
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
\f0\b\fs24 \cf0 user_info}</string>
<key>VerticalPad</key>
<integer>0</integer>
</dict>
<key>TextPlacement</key>
<integer>0</integer>
</dict>
<dict>
<key>Bounds</key>
<string>{{193.5, 375.5}, {119, 112}}</string>
<key>Class</key>
<string>ShapedGraphic</string>
<key>FitText</key>
<string>Vertical</string>
<key>Flow</key>
<string>Resize</string>
<key>ID</key>
<integer>127</integer>
<key>Style</key>
<dict>
<key>fill</key>
<dict>
<key>GradientCenter</key>
<string>{-0.29411799999999999, -0.264706}</string>
</dict>
<key>shadow</key>
<dict>
<key>Draws</key>
<string>NO</string>
</dict>
</dict>
<key>Text</key>
<dict>
<key>Align</key>
<integer>0</integer>
<key>Text</key>
<string>{\rtf1\ansi\ansicpg1252\cocoartf1344\cocoasubrtf720
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
\f0\b\fs24 \cf0 id
\b0
\b :
\b0
\b PK
\b0 \
\b username : U1
\b0 \
\b first_name : U2\
last_name : U2
\b0 \
middle_name : U2\
email\
description\
password}</string>
<key>VerticalPad</key>
<integer>0</integer>
</dict>
<key>TextPlacement</key>
<integer>0</integer>
</dict>
</array>
<key>GridH</key>
<array>
<integer>126</integer>
<integer>127</integer>
<array/>
</array>
<key>ID</key>
<integer>125</integer>
</dict>
</array>
<key>GridInfo</key>
<dict/>
<key>GuidesLocked</key>
<string>NO</string>
<key>GuidesVisible</key>
<string>YES</string>
<key>HPages</key>
<integer>3</integer>
<key>ImageCounter</key>
<integer>1</integer>
<key>KeepToScale</key>
<false/>
<key>Layers</key>
<array>
<dict>
<key>Lock</key>
<string>NO</string>
<key>Name</key>
<string>Layer 1</string>
<key>Print</key>
<string>YES</string>
<key>View</key>
<string>YES</string>
</dict>
</array>
<key>LayoutInfo</key>
<dict>
<key>Animate</key>
<string>NO</string>
<key>circoMinDist</key>
<real>18</real>
<key>circoSeparation</key>
<real>0.0</real>
<key>layoutEngine</key>
<string>dot</string>
<key>neatoLineLength</key>
<real>0.20000000298023224</real>
<key>neatoSeparation</key>
<real>0.0</real>
<key>twopiSeparation</key>
<real>0.0</real>
</dict>
<key>LinksVisible</key>
<string>NO</string>
<key>MagnetsVisible</key>
<string>NO</string>
<key>MasterSheets</key>
<array/>
<key>ModificationDate</key>
<string>2015-03-12 14:20:38 +0000</string>
<key>Modifier</key>
<string>Barbara Frosik</string>
<key>NotesVisible</key>
<string>NO</string>
<key>Orientation</key>
<integer>2</integer>
<key>OriginVisible</key>
<string>NO</string>
<key>PageBreaks</key>
<string>YES</string>
<key>PrintInfo</key>
<dict>
<key>NSBottomMargin</key>
<array>
<string>float</string>
<string>41</string>
</array>
<key>NSHorizonalPagination</key>
<array>
<string>coded</string>
<string>BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwCG</string>
</array>
<key>NSLeftMargin</key>
<array>
<string>float</string>
<string>18</string>
</array>
<key>NSOrientation</key>
<array>
<string>coded</string>
<string>BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwGG</string>
</array>
<key>NSPaperName</key>
<array>
<string>string</string>
<string>iso-a5</string>
</array>
<key>NSPaperSize</key>
<array>
<string>size</string>
<string>{595, 420}</string>
</array>
<key>NSPrintReverseOrientation</key>
<array>
<string>coded</string>
<string>BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwCG</string>
</array>
<key>NSRightMargin</key>
<array>
<string>float</string>
<string>18</string>
</array>
<key>NSTopMargin</key>
<array>
<string>float</string>
<string>18</string>
</array>
</dict>
<key>PrintOnePage</key>
<true/>
<key>ReadOnly</key>
<string>NO</string>
<key>RowAlign</key>
<integer>1</integer>
<key>RowSpacing</key>
<real>36</real>
<key>SheetTitle</key>
<string>Canvas 1</string>
<key>SmartAlignmentGuidesActive</key>
<string>YES</string>
<key>SmartDistanceGuidesActive</key>
<string>YES</string>
<key>UniqueID</key>
<integer>1</integer>
<key>UseEntirePage</key>
<false/>
<key>VPages</key>
<integer>3</integer>
<key>WindowInfo</key>
<dict>
<key>CurrentSheet</key>
<integer>0</integer>
<key>Expanded_Canvases</key>
<array>
<string>Canvas 1</string>
</array>
<key>Frame</key>
<string>{{0, 60}, {1440, 817}}</string>
<key>ShowInfo</key>
<true/>
<key>ShowRuler</key>
<true/>
<key>Sidebar</key>
<true/>
<key>SidebarWidth</key>
<integer>200</integer>
<key>TopSlabHeight</key>
<real>250</real>
<key>VisibleRegion</key>
<string>{{241, 87}, {911, 645}}</string>
<key>Zoom</key>
<real>1</real>
<key>ZoomValues</key>
<array>
<array>
<string>Canvas 1</string>
<real>1</real>
<real>1</real>
</array>
</array>
</dict>
</dict>
</plist>
File added
Release 20140930 (09/30/2014)
=============================
- Implemented first version of Web Portal UI: contains login page, and
users/experiment type management pages
- Developed project infrastructure tools: build scripts, web app configuration
and deployment scripts
DM_DB_NAME=dm
DM_DB_USER=dm
DM_DB_PASSWORD=dm
DM_DB_HOST=127.0.0.1
DM_DB_PORT=11136
DM_DB_ADMIN_USER=postgres
DM_DB_ADMIN_PASSWORD=
DM_DB_ADMIN_HOSTS="127.0.0.1"
DM_DB_CHARACTER_SET=utf8
DM_DB_SCRIPTS_DIR=
DM_CONTEXT_ROOT=dm
# Logging Configuration File
#
#
# Available sections:
# [LoggerLevels] : lists regular levelregex to match against loggers.
# [ConsoleLogging] : configures logging onto screen
# [FileLogging] : configures logging into local file
# The root key describes the root
# logger level which is the default level for all loggers.
# Level regular expressions (levelregex) are matched top down with the first
# match setting the effective level. If no matches are found, default applies.
# Available logger levels: debug, info, warn, error, critical
# In order for a message to be emitted by a specific handler the level of
# the message must be greater than or equal to both the logger level and
# the handler level.
#
# Example: Debug level for DbManager, info for everything else
#
# [LoggerLevels]
# levelregex: ^.*$=info
# ^DbManager$=debug
#
[LoggerLevels]
root=error
levelregex: ^.*$=debug
#[ConsoleLogging]
#handler=ConsoleLoggingHandler(sys.stdout,)
#level=debug
#format=%(asctime)s,%(msecs)003d %(levelname)s %(filename)s:%(lineno)d %(process)d: %(message)s
#dateformat=%Y-%m-%d %H:%M:%S
# Custom log files can be setup here using config section [FileLogging<name>]
[FileLogging]
handler=TimedRotatingFileLoggingHandler('/home/sveseli/Work/DM/dev/var/log/dm.fsService.log')
level=debug
format=%(asctime)s,%(msecs)003d %(levelname)s %(filename)s:%(lineno)d %(process)d: %(message)s
dateformat=%Y-%m-%d %H:%M:%S
# Logging Configuration File
#
#
# Available sections:
# [LoggerLevels] : lists regular levelregex to match against loggers.
# [ConsoleLogging] : configures logging onto screen
# [FileLogging] : configures logging into local file
# The root key describes the root
# logger level which is the default level for all loggers.
# Level regular expressions (levelregex) are matched top down with the first
# match setting the effective level. If no matches are found, default applies.
# Available logger levels: debug, info, warn, error, critical
# In order for a message to be emitted by a specific handler the level of
# the message must be greater than or equal to both the logger level and
# the handler level.
#
# Example: Debug level for DbManager, info for everything else
#
# [LoggerLevels]
# levelregex: ^.*$=info
# ^DbManager$=debug
#
[LoggerLevels]
root=error
levelregex: ^.*$=debug
[ConsoleLogging]
handler=ConsoleLoggingHandler(sys.stdout,)
level=debug
format=%(asctime)s,%(msecs)003d %(levelname)s %(filename)s:%(lineno)d %(process)d: %(message)s
dateformat=%Y-%m-%d %H:%M:%S
# Custom log files can be setup here using config section [FileLogging<name>]
[FileLogging]
handler=TimedRotatingFileLoggingHandler('/home/sveseli/Work/DM/dev/var/log/dm.log')
level=debug
format=%(asctime)s,%(msecs)003d %(levelname)s %(filename)s:%(lineno)d %(process)d: %(message)s
dateformat=%Y-%m-%d %H:%M:%S
#!/bin/sh
#
# dm-fs-service
#
# Starts the DM FileSystem Service
#
# chkconfig: 345 98 98
# description: controls DM FileSystem Service
### BEGIN INIT INFO
# Provides: dm-fs-service
# Required-Start: $local_fs dm-postgresql
# Required-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Description: controls DM FileSystem Service
### END INIT INFO
# Source function library.
. /etc/rc.d/init.d/functions
# For SELinux we need to use 'runuser' not 'su'
SU=su
if [ -x /sbin/runuser ]; then
SU=runuser
fi
# Check if we are root before running command
runCommand() {
_cmd="$@"
echo "COMMAND: $_cmd"
if [ `id -u` = 0 ]; then
$SU -l $DM_USER -c "_$cmd"
else
eval "$_cmd"
fi
}
# Set defaults for configuration variables
if [ -z $DM_ROOT_DIR ]; then
myDir=`dirname $0`
currentDir=`pwd` && cd $myDir/../..
export DM_ROOT_DIR=`pwd`
cd $currentDir
fi
DM_SETUP_FILE=$DM_ROOT_DIR/setup.sh
if [ ! -f $DM_SETUP_FILE ]; then
echo "Setup file $DM_SETUP_FILE does not exist."
exit 2
fi
. $DM_SETUP_FILE > /dev/null
mkdir -p ${DM_ROOT_DIR}/var/run
mkdir -p ${DM_ROOT_DIR}/var/log
#DM_USER=dm
DM_USER=`whoami`
DM_PORT=22236 # 222-DM
DM_HOST=0.0.0.0
DAEMON_CMD=${DM_ROOT_DIR}/lib/python/dm/fs_service/service/fsService.py
DAEMON_NAME="DmFsService"
PIDFILE=${DM_ROOT_DIR}/var/run/dm_fs_service.pid
DAEMON_ARGS="-d -p $PIDFILE --port $DM_PORT --host $DM_HOST --n-server-threads 12"
export DM_LOG_CONFIG_FILE=${DM_ROOT_DIR}/etc/dm.fsService.log.conf
# Determine SSL flags:
# DM_SERVICE_PROTOCOL=https
# DM_SERVICE_SSL_CERT_FILE=<cert path>
# DM_SERVICE_SSL_KEY_FILE=<key path>
# DM_SSL_CA_CERT_FILE=<ca cert path> (enables checking client certificates)
if [ "$DM_SERVICE_PROTOCOL" = "https" ]; then
if [ -z "$DM_SERVICE_SSL_CERT_FILE" ]; then
echo "Cannot start service using SSL: DM_SERVICE_SSL_CERT_FILE is not defined." && exit 2
fi
if [ -z "$DM_SERVICE_SSL_KEY_FILE" ]; then
echo "Cannot start service using SSL: DM_SERVICE_SSL_KEY_FILE is not defined." && exit 2
fi
DAEMON_ARGS="$DAEMON_ARGS -c $DM_SERVICE_SSL_CERT_FILE -k $DM_SERVICE_SSL_KEY_FILE"
# Client certificate will be checked if DM_SSL_CA_CERT_FILE is provided.
if [ ! -z "$DM_SSL_CA_CERT_FILE" ]; then
DAEMON_ARGS="$DAEMON_ARGS -C $DM_SSL_CA_CERT_FILE"
fi
fi
RETVAL=0
start() {
# Check if service is already running
status -p $PIDFILE > /dev/null 2>&1
if [ $? -ne 0 ]; then
echo -n $"Starting $DAEMON_NAME daemon: "
runCommand ${DAEMON_CMD} ${DAEMON_ARGS}
RETVAL=$?
[ $RETVAL -eq 0 ] && success $"$DAEMON_NAME startup" || failure $"$DAEMON_NAME startup"
echo
fi
return $RETVAL
}
stop() {
status -p $PIDFILE > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo -n $"Stopping $DAEMON_NAME daemon: "
PID=`cat $PIDFILE`
kill $PID
RETVAL=$?
[ $RETVAL -eq 0 ] && rm -f $PIDFILE && success $"$DAEMON_NAME shutdown" || failure $"$DAEMON_NAME shutdown"
echo
fi
return $RETVAL
}
restart() {
stop
start
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
status)
status -p $PIDFILE "$DAEMON_NAME"
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|status|restart}"
RETVAL=2
esac
exit $RETVAL
#! /bin/sh
### BEGIN INIT INFO
# Provides: glassfish
# Required-Start: $remote_fs $network $syslog
# Required-Stop: $remote_fs $network $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Starts GlassFish
# Description: Starts GlassFish application server
### END INIT INFO
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Set root to default if needed.
MY_DIR=`dirname $0` && cd $MY_DIR && MY_DIR=`pwd`
if [ -z "${DM_ROOT_DIR}" ]; then
DM_ROOT_DIR=$MY_DIR/../..
fi
# Source environment file.
DM_USER=`id -nu`
DM_HOST=`hostname -s`
DM_ENV_FILE=${DM_ROOT_DIR}/setup.sh
if [ ! -f ${DM_ENV_FILE} ]; then
echo "Environment file ${DM_ENV_FILE} does not exist."
exit 2
fi
. ${DM_ENV_FILE} > /dev/null
export AS_JAVA=$DM_SUPPORT_DIR/java/$DM_HOST_ARCH
DM_GLASSFISH_DIR=$DM_SUPPORT_DIR/glassfish/$DM_HOST_ARCH
DERBY_DIR=$DM_SUPPORT_DIR/glassfish/$DM_HOST_ARCH/javadb/bin
DM_DAEMON_NAME=glassfish
DM_DAEMON_CONTROL_CMD=$DM_GLASSFISH_DIR/bin/asadmin
DM_DAEMON_START_ARGS="start-domain domain1"
DM_DAEMON_STOP_ARGS="stop-domain domain1"
DM_DAEMON_STATUS_CMDS="uptime list-domains list-applications list-jdbc-resources"
start() {
echo -n $"Starting ${DM_DAEMON_NAME}: "
# Check if we're a privileged user
if [ `id -u` = 0 -a ${DM_USER} != "root" ]; then
su -m -c "${DM_DAEMON_CONTROL_CMD} ${DM_DAEMON_START_ARGS}" ${DM_USER}
else
${DM_DAEMON_CONTROL_CMD} ${DM_DAEMON_START_ARGS}
fi
RETVAL=$?
[ $RETVAL -eq 0 ] && success $"${DM_DAEMON_NAME} startup" || failure $"${DM_DAEMON_NAME} startup"
echo
}
stop() {
echo -n $"Stopping ${DM_DAEMON_NAME}: "
# Check if we're a privileged user
if [ `id -u` = 0 -a ${DM_USER} != "root" ]; then
su -m -c "${DM_DAEMON_CONTROL_CMD} ${DM_DAEMON_STOP_ARGS}" ${DM_USER}
else
${DM_DAEMON_CONTROL_CMD} ${DM_DAEMON_STOP_ARGS}
fi
RETVAL=$?
[ $RETVAL -eq 0 ] && success $"${DM_DAEMON_NAME} shutdown" || failure $"${DM_DAEMON_NAME} shutdown"
echo
}
status() {
# Check if we're a privileged user
if [ `id -u` = 0 -a ${DM_USER} != "root" ]; then
for cmd in ${DM_DAEMON_STATUS_CMDS}; do
su -m -c "${DM_DAEMON_CONTROL_CMD} ${cmd}" ${DM_USER}
done
else
for cmd in ${DM_DAEMON_STATUS_CMDS}; do
${DM_DAEMON_CONTROL_CMD} ${cmd}
done
fi
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
status
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
;;
esac
#!/bin/sh
#
# dm-postgresql
#
# Starts the PostgreSQL server used for DM software
#
# Modified from the original RHEL postgresql init.d script
#
# chkconfig: 345 97 97
# description: controls Dm database server
### BEGIN INIT INFO
# Provides: dm-postgresql
# Required-Start: $local_fs
# Required-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Description: controls Dm database server
### END INIT INFO
# PGVERSION is the full package version, e.g., 8.4.0
PGVERSION=9.3.4
# PGMAJORVERSION is major version, e.g., 8.4 (this should match PG_VERSION)
PGMAJORVERSION=`echo "$PGVERSION" | sed 's/^\([0-9]*\.[0-9]*\).*$/\1/'`
# Source function library.
. /etc/rc.d/init.d/functions
# Get function listing for cross-distribution logic.
TYPESET=`typeset -f|grep "declare"`
# Get config.
. /etc/sysconfig/network
# Find the name of the script
# NAME=`basename $0`
NAME="DM Database"
# For SELinux we need to use 'runuser' not 'su'
SU=su
if [ -x /sbin/runuser ]; then
SU=runuser
fi
# Check if we are root before running command
runCommand() {
_cmd="$@"
if [ `id -u` = 0 ]; then
$SU -l $PGUSER -c "_$cmd" >> $PGSTARTUPLOG 2>&1 < /dev/null
else
eval "$_cmd" >> $PGSTARTUPLOG 2>&1 < /dev/null
fi
}
# Set defaults for configuration variables
if [ -z $DM_ROOT_DIR ]; then
myDir=`dirname $0`
currentDir=`pwd` && cd $myDir/../..
export DM_ROOT_DIR=`pwd`
cd $currentDir
fi
DM_SETUP_FILE=$DM_ROOT_DIR/setup.sh
if [ ! -f $DM_SETUP_FILE ]; then
echo "Setup file $DM_SETUP_FILE does not exist."
exit 2
fi
. $DM_SETUP_FILE > /dev/null
PGROOT=$DM_SUPPORT_DIR/postgresql/$DM_HOST_ARCH
PGENGINE=$PGROOT/bin
#PGUSER=dm
PGUSER=`whoami`
PGGROUP=`groups $PGUSER | cut -f3 -d ' '`
PGPORT=11136 # 111-DM
PGDATA=$PGROOT/data
PGRUNDIR=$DM_ROOT_DIR/var/run
PGLOGDIR=$DM_ROOT_DIR/var/log
PGSTARTUPLOG=$PGLOGDIR/postgresql
PGPIDFILE=$PGRUNDIR/postmaster.pid
PGLOCKFILE=$PGRUNDIR/postmaster.lock
mkdir -p $PGDATA && chown -R $PGUSER:$PGGROUP $PGDATA || exit 1
mkdir -p $PGRUNDIR && chown -R $PGUSER:$PGGROUP $PGRUNDIR || exit 1
mkdir -p $PGLOGDIR && chown -R $PGUSER:$PGGROUP $PGLOGDIR || exit 1
export PGDATA
export PGPORT
export LD_LIBRARY_PATH=$PGROOT/lib
# Check that networking is up.
# Pretty much need it for postmaster.
[ "${NETWORKING}" = "no" ] && exit 1
[ -f "$PGENGINE/postmaster" ] || exit 1
script_result=0
start() {
PSQL_START=$"Starting ${NAME} service: "
# Make sure startup-time log file is valid
if [ ! -e "$PGSTARTUPLOG" -a ! -h "$PGSTARTUPLOG" ]; then
touch "$PGSTARTUPLOG" || exit 1
chown $PGUSER:$PGGROUP "$PGSTARTUPLOG"
chmod go-rwx "$PGSTARTUPLOG"
[ -x /sbin/restorecon ] && /sbin/restorecon "$PGSTARTUPLOG"
fi
# Check for the PGDATA structure
if [ -f "$PGDATA/PG_VERSION" ] && [ -d "$PGDATA/base" ]; then
# Check version of existing PGDATA
if [ x`cat "$PGDATA/PG_VERSION"` != x"$PGMAJORVERSION" ]; then
SYSDOCDIR="(Your System's documentation directory)"
echo
echo $"An old version of the database format was found."
echo $"You need to upgrade the data format before using PostgreSQL."
echo $"See $SYSDOCDIR/postgresql-$PGVERSION/README.rpm-dist for more information."
exit 1
fi
# No existing PGDATA! Warn the user to initdb it.
else
echo
echo "$PGDATA is missing. Use \"$0 initdb\" to initialize the cluster first."
echo_failure
echo
exit 1
fi
echo -n "$PSQL_START"
cmd="$PGENGINE/postmaster -p '$PGPORT' -D '$PGDATA' ${PGOPTS} &"
runCommand $cmd
sleep 2
pid=`pidof -s "$PGENGINE/postmaster"`
if [ $pid ] && [ -f "$PGDATA/postmaster.pid" ]; then
success "$PSQL_START"
touch $PGLOCKFILE
head -n 1 "$PGDATA/postmaster.pid" > $PGPIDFILE
echo
else
failure "$PSQL_START"
echo
script_result=1
fi
}
stop() {
echo -n $"Stopping ${NAME} service: "
cmd="export LD_LIBRARY_PATH=$LD_LIBRARY_PATH; $PGENGINE/pg_ctl stop -D '$PGDATA' -s -m fast"
runCommand $cmd
ret=$?
if [ $ret -eq 0 ]; then
echo_success
else
echo_failure
script_result=1
fi
echo
rm -f $PGPIDFILE
rm -f $PGLOCKFILE
}
restart() {
stop
start
}
condrestart() {
[ -e $PGLOCKFILE ] && restart
}
condstop() {
[ -e $PGLOCKFILE ] && stop
}
reload() {
cmd="export LD_LIBRARY_PATH=$LD_LIBRARY_PATH; $PGENGINE/pg_ctl reload -D '$PGDATA' -s"
runCommand $cmd
}
initdb() {
if [ -f "$PGDATA/PG_VERSION" ]; then
echo -n "Data directory is not empty!"
echo_failure
echo
script_result=1
else
echo -n $"Initializing database: "
if [ ! -e "$PGDATA" -a ! -h "$PGDATA" ]; then
mkdir -p "$PGDATA" || exit 1
chown $PGUSER:$PGGROUP "$PGDATA"
chmod go-rwx "$PGDATA"
fi
# Clean up SELinux tagging for PGDATA
[ -x /sbin/restorecon ] && /sbin/restorecon "$PGDATA"
# Make sure the startup-time log file is OK, too
if [ ! -e "$PGSTARTUPLOG" -a ! -h "$PGSTARTUPLOG" ]; then
touch "$PGSTARTUPLOG" || exit 1
chown $PGUSER:$PGGROUP "$PGSTARTUPLOG"
chmod go-rwx "$PGSTARTUPLOG"
[ -x /sbin/restorecon ] && /sbin/restorecon "$PGSTARTUPLOG"
fi
# Initialize the database
cmd="$PGENGINE/initdb --pgdata='$PGDATA' --auth='ident'"
runCommand $cmd
# Create directory for postmaster log
mkdir -p "$PGDATA/pg_log"
chown $PGUSER:$PGGROUP "$PGDATA/pg_log"
chmod go-rwx "$PGDATA/pg_log"
if [ -f "$PGDATA/PG_VERSION" ]; then
echo_success
else
echo_failure
script_result=1
fi
echo
fi
}
# This script is slightly unusual in that the name of the daemon (postmaster)
# is not the same as the name of the subsystem (postgresql)
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status postmaster
script_result=$?
;;
restart)
restart
;;
condrestart)
condrestart
;;
condstop)
condstop
;;
reload|force-reload)
reload
;;
initdb)
initdb
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|condstop|reload|force-reload|initdb}"
exit 1
esac
exit $script_result
../src/python
\ No newline at end of file
#!/bin/sh
#
# Script used for configuring DM webapp
# Deployment configuration can be set in etc/$DM_DB_NAME.deploy.conf file
#
# Usage:
#
# $0 [DM_DB_NAME]
#
MY_DIR=`dirname $0` && cd $MY_DIR && MY_DIR=`pwd`
if [ -z "${DM_ROOT_DIR}" ]; then
DM_ROOT_DIR=$MY_DIR/..
fi
DM_ENV_FILE=${DM_ROOT_DIR}/setup.sh
if [ ! -f ${DM_ENV_FILE} ]; then
echo "Environment file ${DM_ENV_FILE} does not exist."
exit 2
fi
. ${DM_ENV_FILE} > /dev/null
# Use first argument as db name, if provided
DM_DB_NAME=${DM_DB_NAME:=dm}
if [ ! -z "$1" ]; then
DM_DB_NAME=$1
fi
echo "Using DB name: $DM_DB_NAME"
# Look for deployment file in etc directory, and use it to override
# default entries
deployConfigFile=$DM_ROOT_DIR/etc/${DM_DB_NAME}.deploy.conf
if [ -f $deployConfigFile ]; then
echo "Using deployment config file: $deployConfigFile"
. $deployConfigFile
else
echo "Deployment config file $deployConfigFile not found, using defaults"
fi
DM_HOST_ARCH=`uname | tr [A-Z] [a-z]`-`uname -m`
GLASSFISH_DIR=$DM_SUPPORT_DIR/glassfish/$DM_HOST_ARCH
JAVA_HOME=$DM_SUPPORT_DIR/java/$DM_HOST_ARCH
export AS_JAVA=$JAVA_HOME
ASADMIN_CMD=$GLASSFISH_DIR/bin/asadmin
DM_DB_HOST=${DM_DB_HOST:=localhost}
DM_DB_PORT=${DM_DB_PORT:=11136}
DM_DB_USER=${DM_DB_USER:=dm}
DM_DB_PASSWORD=${DM_DB_PASSWORD:=dm}
DM_DB_POOL=postgresql_${DM_DB_NAME}_DbPool
DM_DATA_SOURCE=${DM_DB_NAME}_DataSource
DM_DOMAIN=domain1
# copy db driver
echo "Copying db driver"
rsync -ar $DM_ROOT_DIR/src/java/DmWebPortal/lib/postgresql-9.3-1102.jdbc41.jar $GLASSFISH_DIR/glassfish/domains/${DM_DOMAIN}/lib/ext
# restart server
echo "Restarting glassfish"
$ASADMIN_CMD stop-domain ${DM_DOMAIN}
$ASADMIN_CMD start-domain ${DM_DOMAIN}
# create JDBC connection pool
echo "Creating JDBC connection pool $DM_DB_POOL"
$ASADMIN_CMD create-jdbc-connection-pool --datasourceclassname org.postgresql.ds.PGSimpleDataSource --restype javax.sql.DataSource --property user=${DM_DB_USER}:password=${DM_DB_PASSWORD}:driverClass="org.postgresql.Driver":portNumber=${DM_DB_PORT}:databaseName=${DM_DB_NAME}:serverName=${DM_DB_HOST}:url="jdbc\:postgresql\://${DM_DB_HOST}\:${DM_DB_PORT}/${DM_DB_NAME}" ${DM_DB_POOL}
# create JDBC resource associated with this connection pool
echo "Creating JDBC resource $DM_DATA_SOURCE"
$ASADMIN_CMD create-jdbc-resource --connectionpoolid ${DM_DB_POOL} ${DM_DATA_SOURCE}
# test the connection settings
echo "Testing connection"
$ASADMIN_CMD ping-connection-pool $DM_DB_POOL || exit 1
#!/bin/sh
#
# Script used for creating DM database
# Deployment configuration can be set in etc/$DM_DB_NAME.deploy.conf file
#
# Usage:
#
# $0 [DM_DB_NAME [DM_DB_SCRIPTS_DIR]]
#
DM_DB_NAME=dm
DM_DB_USER=dm
DM_DB_PASSWORD=dm
DM_DB_HOST=127.0.0.1
DM_DB_PORT=11136
DM_DB_ADMIN_USER=postgres
DM_DB_ADMIN_HOSTS="127.0.0.1 bluegill1.aps.anl.gov visa%.aps.anl.gov"
DM_DB_ADMIN_PASSWORD=
DM_DB_CHARACTER_SET=utf8
CURRENT_DIR=`pwd`
MY_DIR=`dirname $0` && cd $MY_DIR && MY_DIR=`pwd`
cd $CURRENT_DIR
if [ -z "${DM_ROOT_DIR}" ]; then
DM_ROOT_DIR=$MY_DIR/..
fi
DM_SQL_DIR=$DM_ROOT_DIR/db
DM_RUN_DIR=$DM_ROOT_DIR/var/run
DM_ENV_FILE=${DM_ROOT_DIR}/setup.sh
if [ ! -f ${DM_ENV_FILE} ]; then
echo "Environment file ${DM_ENV_FILE} does not exist."
exit 1
fi
. ${DM_ENV_FILE} > /dev/null
# DM_SUPPORT_DIR should now be defined.
if [ -z "$DM_SUPPORT_DIR" ]; then
echo "Invalid environment file ${DM_ENV_FILE}: DM_SUPPORT_DIR is not defined."
exit 1
fi
PG_DIR=$DM_SUPPORT_DIR/postgresql/$DM_HOST_ARCH
PG_CONTROL_SCRIPT=$DM_ROOT_DIR/etc/init.d/dm-postgresql
PG_DATA_DIR=$PG_DIR/data
PG_HBA_CONF=$PG_DATA_DIR/pg_hba.conf
DB_LOCK_FILE=${DM_RUN_DIR}/${DM_DB_NAME}.db.lock
DB_CREATE_SCRIPT=${DM_ROOT_DIR}/db/create_${DM_DB_NAME}_db.sql
# Use first argument as db name, if provided
if [ ! -z "$1" ]; then
DM_DB_NAME=$1
fi
echo "Using DB name: $DM_DB_NAME"
# Look for deployment file in etc directory, and use it to override
# default entries
deployConfigFile=$DM_ROOT_DIR/etc/${DM_DB_NAME}.deploy.conf
if [ -f $deployConfigFile ]; then
echo "Using deployment config file: $deployConfigFile"
. $deployConfigFile
else
echo "Deployment config file $deployConfigFile not found, using defaults"
fi
# Second argument overrides directory with db population scripts
DM_DB_SCRIPTS_DIR=${DM_DB_SCRIPTS_DIR:=$DM_SQL_DIR}
if [ ! -z "$2" ]; then
DM_DB_SCRIPTS_DIR=$2
fi
if [ ! -d $DM_DB_SCRIPTS_DIR ]; then
echo "DB Scripts directory $DM_DB_SCRIPTS_DIR does not exist."
exit 1
fi
echo "Using DB scripts directory: $DM_DB_SCRIPTS_DIR"
execute() {
msg="$@"
if [ ! -z "$DM_DB_ADMIN_PASSWORD" ]; then
sedCmd="s?$DM_DB_ADMIN_PASSWORD?\\*\\*\\*\\*\\*\\*?g"
echo "Executing: $@" | sed -e $sedCmd
else
echo "Executing: $@"
fi
eval "$@"
}
createDb() {
if [ -f $DB_LOCK_FILE ]; then
echo "Database lock file $DB_LOCK_FILE already exists, will not proceed."
return 1
fi
echo "Creating database $DM_DB_NAME"
${PG_DIR}/bin/createdb -U $DM_DB_USER -h $DM_DB_HOST -p $DM_DB_PORT $DM_DB_NAME || return 1
echo "Creating database schema for $DM_DB_NAME"
${PG_DIR}/bin/psql -U $DM_DB_USER -h $DM_DB_HOST -p $DM_DB_PORT -d $DM_DB_NAME -f $DB_CREATE_SCRIPT || return 1
touch $DB_LOCK_FILE
}
createDbUser() {
_dbUser=$1
shift 1
_createFlags=$@
# create user
${PG_DIR}/bin/createuser -h $DM_DB_HOST -p $DM_DB_PORT $_createFlags $_dbUser || return 1
}
modifyDbUserPassword() {
_dbUser=$1
_dbPassword=$2
_tmpFile=/tmp/$$.sql
echo "alter user $_dbUser with password '$_dbPassword';" > $_tmpFile
$PG_DIR/bin/psql -h $DM_DB_HOST -p $DM_DB_PORT -d postgres -f $_tmpFile
rm -f $_tmpFile
}
# Check for failed earlier attempt
if [ -f $PG_HBA_CONF.orig ]; then
echo "File $PG_HBA_CONF.orig exists, refusing to proceed."
exit 1
fi
# Initialize db if needed
dbAction=restart
createDbRootUser=false
if [ ! -f $PG_HBA_CONF ]; then
$PG_CONTROL_SCRIPT initdb || exit 1
dbAction=start
createDbRootUser=true
fi
# Modify db permissions, restart db.
echo "Modifying db access permissions"
mv $PG_HBA_CONF $PG_HBA_CONF.orig
cat $PG_HBA_CONF.orig | sed 's?host.*all.*all.*127.*?host all all 127.0.0.1/32 trust?g' | sed 's?host.*all.*all.*::1/128.*?host all all ::1/128 trust?g' > $PG_HBA_CONF || exit 1
echo "Restarting database server"
$PG_CONTROL_SCRIPT $dbAction
# Create db root user if needed
sttyOrig=`stty -g`
if [ $createDbRootUser = "true" ]; then
# Read db password if needed
if [ -z "$DM_DB_ADMIN_PASSWORD" ]; then
stty -echo
read -p "Enter DB password for the $DM_DB_ADMIN_USER (DB root) user: " DM_DB_ADMIN_PASSWORD
echo
stty $sttyOrig
fi
# Create postgres user
echo "Creating $DM_DB_ADMIN_USER"
createDbUser $DM_DB_ADMIN_USER -E -s || exit 1
modifyDbUserPassword $DM_DB_ADMIN_USER $DM_DB_ADMIN_PASSWORD || exit 1
fi
# Read user db password if needed
if [ -z "$DM_DB_USER_PASSWORD" ]; then
stty -echo
read -p "Enter DB password for the $DM_DB_USER user: " DM_DB_USER_PASSWORD
echo
stty $sttyOrig
fi
# Create db user
echo "Creating $DM_DB_USER"
createDbUser $DM_DB_USER -E -d || exit 1
modifyDbUserPassword $DM_DB_USER $DM_DB_USER_PASSWORD || exit 1
# Create db
echo "Creating database: $DM_DB_NAME"
createDb || exit 1
# populate db
cd $CURRENT_DIR && cd $DM_DB_SCRIPTS_DIR
DM_DB_TABLES="\
experiment_type \
user_info \
role_type \
user_system_role \
policy_type \
policy_property \
allowed_policy_value
"
for dbTable in $DM_DB_TABLES; do
dbFile=populate_$dbTable.sql
if [ -f $dbFile ]; then
echo "Populating $dbTable using $dbFile script"
execute ${PG_DIR}/bin/psql -U $DM_DB_USER -h $DM_DB_HOST -p $DM_DB_PORT -d $DM_DB_NAME -f $dbFile || exit 1
else
echo "$dbFile not found, skipping $dbTable update"
fi
done
# cleanup
echo "Restoring db access permissions"
if [ $createDbRootUser = "true" ]; then
# db was just created, enable password access
cat $PG_HBA_CONF.orig | sed 's?host.*all.*all.*127.*?host all all 127.0.0.1/32 md5?g' | sed 's?host.*all.*all.*::1/128.*?host all all ::1/128 md5?g' > $PG_HBA_CONF || exit 1
rm -f $PG_HBA_CONF.orig
else
# no changes needed to original hba file
mv $PG_HBA_CONF.orig $PG_HBA_CONF
fi
echo "Restarting database server"
$PG_CONTROL_SCRIPT restart
echo "Database $DM_DB_NAME created successfully"
echo
#!/bin/sh
#
# Script used for deploying DM webapp
# Deployment configuration can be set in etc/$DM_DB_NAME.deploy.conf file
#
# Usage:
#
# $0 [DM_DB_NAME]
#
MY_DIR=`dirname $0` && cd $MY_DIR && MY_DIR=`pwd`
if [ -z "${DM_ROOT_DIR}" ]; then
DM_ROOT_DIR=$MY_DIR/..
fi
DM_ENV_FILE=${DM_ROOT_DIR}/setup.sh
if [ ! -f ${DM_ENV_FILE} ]; then
echo "Environment file ${DM_ENV_FILE} does not exist."
exit 2
fi
. ${DM_ENV_FILE} > /dev/null
# Use first argument as db name, if provided
DM_DB_NAME=${DM_DB_NAME:=dm}
if [ ! -z "$1" ]; then
DM_DB_NAME=$1
fi
echo "Using DB name: $DM_DB_NAME"
# Look for deployment file in etc directory, and use it to override
# default entries
deployConfigFile=$DM_ROOT_DIR/etc/${DM_DB_NAME}.deploy.conf
if [ -f $deployConfigFile ]; then
echo "Using deployment config file: $deployConfigFile"
. $deployConfigFile
else
echo "Deployment config file $deployConfigFile not found, using defaults"
fi
DM_HOST_ARCH=`uname | tr [A-Z] [a-z]`-`uname -m`
DM_CONTEXT_ROOT=${DM_CONTEXT_ROOT:=dm}
GLASSFISH_DIR=$DM_SUPPORT_DIR/glassfish/$DM_HOST_ARCH
DM_DEPLOY_DIR=$GLASSFISH_DIR/glassfish/domains/domain1/autodeploy
DM_DIST_DIR=$DM_ROOT_DIR/src/java/DmWebPortal/dist
DM_BUILD_WAR_FILE=DmWebPortal.war
DM_WAR_FILE=$DM_CONTEXT_ROOT.war
JAVA_HOME=$DM_SUPPORT_DIR/java/$DM_HOST_ARCH
if [ ! -f $DM_DIST_DIR/$DM_BUILD_WAR_FILE ]; then
echo "$DM_BUILD_WAR_FILE not found in $DM_DIST_DIR."
exit 1
fi
# Modify war file for proper context/persistence settings and
# repackage it into new war
echo "Repackaging war file for context root $DM_CONTEXT_ROOT"
cd $DM_DIST_DIR
rm -rf $DM_CONTEXT_ROOT
mkdir -p $DM_CONTEXT_ROOT
cd $DM_CONTEXT_ROOT
jar xf ../$DM_BUILD_WAR_FILE
configFile=WEB-INF/glassfish-web.xml
cmd="cat $configFile | sed 's?<context-root.*?<context-root>${DM_CONTEXT_ROOT}</context-root>?g' > $configFile.2 && mv $configFile.2 $configFile"
eval $cmd
configFile=WEB-INF/classes/META-INF/persistence.xml
cmd="cat $configFile | sed 's?<jta-data-source.*?<jta-data-source>${DM_DB_NAME}_DataSource</jta-data-source>?g' > $configFile.2 && mv $configFile.2 $configFile"
eval $cmd
jar cf ../$DM_WAR_FILE *
export AS_JAVA=$JAVA_HOME
ASADMIN_CMD=$GLASSFISH_DIR/bin/asadmin
# copy war file
echo "Copying war file $DM_DIST_DIR/$DM_WAR_FILE to $DM_DEPLOY_DIR"
rm -f $DM_DEPLOY_DIR/${DM_WAR_FILE}_*
cp $DM_DIST_DIR/$DM_WAR_FILE $DM_DEPLOY_DIR
# wait on deployment
echo "Waiting on war deployment..."
WAIT_TIME=30
cd $DM_DEPLOY_DIR
t=0
while [ $t -lt $WAIT_TIME ]; do
sleep 1
deploymentStatus=`ls -c1 ${DM_WAR_FILE}_* 2> /dev/null | sed 's?.*war_??g'`
if [ ! -z "$deploymentStatus" ]; then
break
fi
t=`expr $t + 1`
done
echo "Deployment Status: $deploymentStatus"
#!/bin/sh
#
# Script used for destroying all DM databases
#
# Usage:
#
# $0
#
DM_DB_NAME=dm
DM_DB_USER=dm
DM_DB_PASSWORD=dm
DM_DB_HOST=127.0.0.1
DM_DB_PORT=11136
DM_DB_ADMIN_USER=postgres
DM_DB_ADMIN_HOSTS="127.0.0.1 bluegill1.aps.anl.gov visa%.aps.anl.gov"
DM_DB_ADMIN_PASSWORD=
DM_DB_CHARACTER_SET=utf8
CURRENT_DIR=`pwd`
MY_DIR=`dirname $0` && cd $MY_DIR && MY_DIR=`pwd`
cd $CURRENT_DIR
if [ -z "${DM_ROOT_DIR}" ]; then
DM_ROOT_DIR=$MY_DIR/..
fi
DM_SQL_DIR=$DM_ROOT_DIR/db
DM_RUN_DIR=$DM_ROOT_DIR/var/run
DM_ENV_FILE=${DM_ROOT_DIR}/setup.sh
if [ ! -f ${DM_ENV_FILE} ]; then
echo "Environment file ${DM_ENV_FILE} does not exist."
exit 1
fi
. ${DM_ENV_FILE} > /dev/null
# DM_SUPPORT_DIR should now be defined.
if [ -z "$DM_SUPPORT_DIR" ]; then
echo "Invalid environment file ${DM_ENV_FILE}: DM_SUPPORT_DIR is not defined."
exit 1
fi
PG_DIR=$DM_SUPPORT_DIR/postgresql/$DM_HOST_ARCH
PG_CONTROL_SCRIPT=$DM_ROOT_DIR/etc/init.d/dm-postgresql
PG_DATA_DIR=$PG_DIR/data
PG_HBA_CONF=$PG_DATA_DIR/pg_hba.conf
DB_CREATE_SCRIPT=${DM_ROOT_DIR}/db/create_${DM_DB_NAME}_db.sql
# Ask user to verify this action
cd $DM_RUN_DIR
lockFileList=`ls -c1 *.db.lock 2> /dev/null`
if [ -z $lockFileList ]; then
echo "There are no active databases"
else
dbNamelist=""
for lockFile in $lockFileList; do
dbName=`echo $lockFile | cut -f1 -d'.'`
dbNameList="$dbNameList $dbName"
done
echo "Found active databases: $dbNameList"
read -p "Proceed [y/N]? " proceedFlag
if [ "$proceedFlag" != "y" ]; then
echo "Active databases were not destroyed."
exit 1
fi
fi
# Stop db.
$PG_CONTROL_SCRIPT stop
# Remove db data directory
echo "Removing database directory"
rm -rf $PG_DATA_DIR
# Remove lock files.
if [ ! -z "$lockFileList" ]; then
echo "Removing lock files"
rm -f $lockFileList
fi
echo "Cleanup done"
echo