18F/micropurchase

View on GitHub
doc/models_brief.svg

Summary

Maintainability
Test Coverage
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.38.0 (20140413.2041)
 -->
<!-- Title: models_diagram Pages: 1 -->
<svg width="7253pt" height="313pt"
 viewBox="0.00 0.00 7252.77 313.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 309)">
<title>models_diagram</title>
<polygon fill="none" stroke="none" points="-4,4 -4,-309 7248.77,-309 7248.77,4 -4,4"/>
<!-- _diagram_info -->
<g id="node1" class="node"><title>_diagram_info</title>
<text text-anchor="start" x="8" y="-290.6" font-family="Times,serif" font-size="13.00">Models diagram</text>
<text text-anchor="start" x="8" y="-277.6" font-family="Times,serif" font-size="13.00">Date: Nov 16 2016 &#45; 15:39</text>
<text text-anchor="start" x="8" y="-264.6" font-family="Times,serif" font-size="13.00">Migration version: 20160921135321</text>
<text text-anchor="start" x="8" y="-251.6" font-family="Times,serif" font-size="13.00">Generated by RailRoady 1.5.2</text>
<text text-anchor="start" x="8" y="-238.6" font-family="Times,serif" font-size="13.00">http://railroady.prestonlee.com</text>
</g>
<!-- AdminAuctionStatusPresenterFactory -->
<g id="node2" class="node"><title>AdminAuctionStatusPresenterFactory</title>
<polygon fill="none" stroke="black" points="454.026,-286.5 224.874,-286.5 224.874,-250.5 454.026,-250.5 454.026,-286.5"/>
<text text-anchor="middle" x="339.45" y="-264.3" font-family="Times,serif" font-size="14.00">AdminAuctionStatusPresenterFactory</text>
</g>
<!-- AdminReport -->
<g id="node3" class="node"><title>AdminReport</title>
<polygon fill="none" stroke="black" points="564.943,-286.5 471.957,-286.5 471.957,-250.5 564.943,-250.5 564.943,-286.5"/>
<text text-anchor="middle" x="518.45" y="-264.3" font-family="Times,serif" font-size="14.00">AdminReport</text>
</g>
<!-- Admins -->
<g id="node4" class="node"><title>Admins</title>
<polygon fill="none" stroke="black" points="643.789,-286.5 583.111,-286.5 583.111,-250.5 643.789,-250.5 643.789,-286.5"/>
<text text-anchor="middle" x="613.45" y="-264.3" font-family="Times,serif" font-size="14.00">Admins</text>
</g>
<!-- ApiAuthenticator -->
<g id="node5" class="node"><title>ApiAuthenticator</title>
<polygon fill="none" stroke="black" points="775.422,-286.5 661.477,-286.5 661.477,-250.5 775.422,-250.5 775.422,-286.5"/>
<text text-anchor="middle" x="718.45" y="-264.3" font-family="Times,serif" font-size="14.00">ApiAuthenticator</text>
</g>
<!-- Auction -->
<g id="node6" class="node"><title>Auction</title>
<ellipse fill="none" stroke="black" cx="837.45" cy="-177" rx="38.6955" ry="18"/>
<text text-anchor="middle" x="837.45" y="-172.8" font-family="Times,serif" font-size="14.00">Auction</text>
</g>
<!-- Bid -->
<g id="node11" class="node"><title>Bid</title>
<ellipse fill="none" stroke="black" cx="820.45" cy="-18" rx="27" ry="18"/>
<text text-anchor="middle" x="820.45" y="-13.8" font-family="Times,serif" font-size="14.00">Bid</text>
</g>
<!-- Auction&#45;&gt;Bid -->
<g id="edge1" class="edge"><title>Auction&#45;&gt;Bid</title>
<path fill="none" stroke="#436464" d="M821.267,-152.746C813.633,-140.365 805.356,-124.522 801.45,-109 796.024,-87.4398 802.119,-62.7125 808.808,-44.6391"/>
<ellipse fill="none" stroke="#436464" cx="823.497" cy="-156.236" rx="4.00002" ry="4.00002"/>
<polygon fill="#436464" stroke="#436464" points="808.811,-44.6333 816.696,-37.013 810.664,-39.9893 812.517,-35.3453 812.517,-35.3453 812.517,-35.3453 810.664,-39.9893 808.337,-33.6776 808.811,-44.6333 808.811,-44.6333"/>
</g>
<!-- Skill -->
<g id="node39" class="node"><title>Skill</title>
<ellipse fill="none" stroke="black" cx="837.45" cy="-91" rx="27" ry="18"/>
<text text-anchor="middle" x="837.45" y="-86.8" font-family="Times,serif" font-size="14.00">Skill</text>
</g>
<!-- Auction&#45;&gt;Skill -->
<g id="edge3" class="edge"><title>Auction&#45;&gt;Skill</title>
<path fill="none" stroke="#5b3098" d="M837.45,-148.33C837.45,-139.023 837.45,-128.648 837.45,-119.364"/>
<polygon fill="#5b3098" stroke="#5b3098" points="837.45,-148.595 832.95,-158.595 837.45,-153.595 837.45,-158.595 837.45,-158.595 837.45,-158.595 837.45,-153.595 841.95,-158.595 837.45,-148.595 837.45,-148.595"/>
<polygon fill="#5b3098" stroke="#5b3098" points="837.45,-119.095 841.95,-109.095 837.45,-114.095 837.45,-109.095 837.45,-109.095 837.45,-109.095 837.45,-114.095 832.95,-109.095 837.45,-119.095 837.45,-119.095"/>
</g>
<!-- User -->
<g id="node49" class="node"><title>User</title>
<ellipse fill="none" stroke="black" cx="909.45" cy="-91" rx="27" ry="18"/>
<text text-anchor="middle" x="909.45" y="-86.8" font-family="Times,serif" font-size="14.00">User</text>
</g>
<!-- Auction&#45;&gt;User -->
<g id="edge2" class="edge"><title>Auction&#45;&gt;User</title>
<path fill="none" stroke="#03b40c" d="M857.877,-152.168C867.888,-140.489 879.889,-126.488 889.794,-114.932"/>
<polygon fill="#03b40c" stroke="#03b40c" points="857.84,-152.211 847.915,-156.875 854.586,-156.008 851.332,-159.804 851.332,-159.804 851.332,-159.804 854.586,-156.008 854.749,-162.733 857.84,-152.211 857.84,-152.211"/>
<polygon fill="#03b40c" stroke="#03b40c" points="890.07,-114.61 899.994,-109.946 893.324,-110.814 896.578,-107.018 896.578,-107.018 896.578,-107.018 893.324,-110.814 893.161,-104.089 890.07,-114.61 890.07,-114.61"/>
<text text-anchor="middle" x="898.057" y="-129.8" font-family="Times,serif" font-size="14.00">bidders</text>
</g>
<!-- AuctionParser -->
<g id="node7" class="node"><title>AuctionParser</title>
<polygon fill="none" stroke="black" points="996.54,-286.5 900.36,-286.5 900.36,-250.5 996.54,-250.5 996.54,-286.5"/>
<text text-anchor="middle" x="948.45" y="-264.3" font-family="Times,serif" font-size="14.00">AuctionParser</text>
</g>
<!-- AuctionQuery -->
<g id="node8" class="node"><title>AuctionQuery</title>
<polygon fill="none" stroke="black" points="1110.54,-286.5 1014.36,-286.5 1014.36,-250.5 1110.54,-250.5 1110.54,-286.5"/>
<text text-anchor="middle" x="1062.45" y="-264.3" font-family="Times,serif" font-size="14.00">AuctionQuery</text>
</g>
<!-- AuctionThreshold -->
<g id="node9" class="node"><title>AuctionThreshold</title>
<polygon fill="none" stroke="black" points="1246.32,-286.5 1128.58,-286.5 1128.58,-250.5 1246.32,-250.5 1246.32,-286.5"/>
<text text-anchor="middle" x="1187.45" y="-264.3" font-family="Times,serif" font-size="14.00">AuctionThreshold</text>
</g>
<!-- AuctionTypes -->
<g id="node10" class="node"><title>AuctionTypes</title>
<polygon fill="none" stroke="black" points="1358.79,-286.5 1264.11,-286.5 1264.11,-250.5 1358.79,-250.5 1358.79,-286.5"/>
<text text-anchor="middle" x="1311.45" y="-264.3" font-family="Times,serif" font-size="14.00">AuctionTypes</text>
</g>
<!-- BidStatusPresenterFactory -->
<g id="node12" class="node"><title>BidStatusPresenterFactory</title>
<polygon fill="none" stroke="black" points="1542.26,-286.5 1376.64,-286.5 1376.64,-250.5 1542.26,-250.5 1542.26,-286.5"/>
<text text-anchor="middle" x="1459.45" y="-264.3" font-family="Times,serif" font-size="14.00">BidStatusPresenterFactory</text>
</g>
<!-- BiddingStatus -->
<g id="node13" class="node"><title>BiddingStatus</title>
<polygon fill="none" stroke="black" points="1655.3,-286.5 1559.6,-286.5 1559.6,-250.5 1655.3,-250.5 1655.3,-286.5"/>
<text text-anchor="middle" x="1607.45" y="-264.3" font-family="Times,serif" font-size="14.00">BiddingStatus</text>
</g>
<!-- BiddingStatusPresenterFactory -->
<g id="node14" class="node"><title>BiddingStatusPresenterFactory</title>
<polygon fill="none" stroke="black" points="1863.65,-286.5 1673.25,-286.5 1673.25,-250.5 1863.65,-250.5 1863.65,-286.5"/>
<text text-anchor="middle" x="1768.45" y="-264.3" font-family="Times,serif" font-size="14.00">BiddingStatusPresenterFactory</text>
</g>
<!-- C2Attributes -->
<g id="node15" class="node"><title>C2Attributes</title>
<polygon fill="none" stroke="black" points="1969.78,-286.5 1881.12,-286.5 1881.12,-250.5 1969.78,-250.5 1969.78,-286.5"/>
<text text-anchor="middle" x="1925.45" y="-264.3" font-family="Times,serif" font-size="14.00">C2Attributes</text>
</g>
<!-- C2CancelAttributes -->
<g id="node16" class="node"><title>C2CancelAttributes</title>
<polygon fill="none" stroke="black" points="2115.15,-286.5 1987.75,-286.5 1987.75,-250.5 2115.15,-250.5 2115.15,-286.5"/>
<text text-anchor="middle" x="2051.45" y="-264.3" font-family="Times,serif" font-size="14.00">C2CancelAttributes</text>
</g>
<!-- C2UpdateAttributes -->
<g id="node17" class="node"><title>C2UpdateAttributes</title>
<polygon fill="none" stroke="black" points="2261.71,-286.5 2133.19,-286.5 2133.19,-250.5 2261.71,-250.5 2261.71,-286.5"/>
<text text-anchor="middle" x="2197.45" y="-264.3" font-family="Times,serif" font-size="14.00">C2UpdateAttributes</text>
</g>
<!-- ClientAccount -->
<g id="node18" class="node"><title>ClientAccount</title>
<ellipse fill="none" stroke="black" cx="2341.45" cy="-268.5" rx="61.8649" ry="18"/>
<text text-anchor="middle" x="2341.45" y="-264.3" font-family="Times,serif" font-size="14.00">ClientAccount</text>
</g>
<!-- ClientAccountQuery -->
<g id="node19" class="node"><title>ClientAccountQuery</title>
<polygon fill="none" stroke="black" points="2553.58,-286.5 2421.31,-286.5 2421.31,-250.5 2553.58,-250.5 2553.58,-286.5"/>
<text text-anchor="middle" x="2487.45" y="-264.3" font-family="Times,serif" font-size="14.00">ClientAccountQuery</text>
</g>
<!-- Customer -->
<g id="node20" class="node"><title>Customer</title>
<ellipse fill="none" stroke="black" cx="837.45" cy="-268.5" rx="44.4923" ry="18"/>
<text text-anchor="middle" x="837.45" y="-264.3" font-family="Times,serif" font-size="14.00">Customer</text>
</g>
<!-- Customer&#45;&gt;Auction -->
<g id="edge4" class="edge"><title>Customer&#45;&gt;Auction</title>
<path fill="none" stroke="#9bd7e7" d="M837.45,-241.903C837.45,-230.441 837.45,-216.914 837.45,-205.263"/>
<ellipse fill="none" stroke="#9bd7e7" cx="837.45" cy="-246.243" rx="4" ry="4"/>
<polygon fill="#9bd7e7" stroke="#9bd7e7" points="837.45,-205.204 841.95,-195.203 837.45,-200.204 837.45,-195.204 837.45,-195.204 837.45,-195.204 837.45,-200.204 832.95,-195.204 837.45,-205.204 837.45,-205.204"/>
</g>
<!-- DateTimeParser -->
<g id="node21" class="node"><title>DateTimeParser</title>
<polygon fill="none" stroke="black" points="2678.92,-286.5 2571.98,-286.5 2571.98,-250.5 2678.92,-250.5 2678.92,-286.5"/>
<text text-anchor="middle" x="2625.45" y="-264.3" font-family="Times,serif" font-size="14.00">DateTimeParser</text>
</g>
<!-- Eligibilities::InSam -->
<g id="node22" class="node"><title>Eligibilities::InSam</title>
<polygon fill="none" stroke="black" points="2822.11,-286.5 2696.79,-286.5 2696.79,-250.5 2822.11,-250.5 2822.11,-286.5"/>
<text text-anchor="middle" x="2759.45" y="-264.3" font-family="Times,serif" font-size="14.00">Eligibilities::InSam</text>
</g>
<!-- Eligibilities::SmallBusiness -->
<g id="node23" class="node"><title>Eligibilities::SmallBusiness</title>
<polygon fill="none" stroke="black" points="3012.02,-286.5 2840.88,-286.5 2840.88,-250.5 3012.02,-250.5 3012.02,-286.5"/>
<text text-anchor="middle" x="2926.45" y="-264.3" font-family="Times,serif" font-size="14.00">Eligibilities::SmallBusiness</text>
</g>
<!-- EligibilityFactory -->
<g id="node24" class="node"><title>EligibilityFactory</title>
<polygon fill="none" stroke="black" points="3146,-286.5 3030.9,-286.5 3030.9,-250.5 3146,-250.5 3146,-286.5"/>
<text text-anchor="middle" x="3088.45" y="-264.3" font-family="Times,serif" font-size="14.00">EligibilityFactory</text>
</g>
<!-- Guest -->
<g id="node25" class="node"><title>Guest</title>
<polygon fill="none" stroke="black" points="3218.45,-286.5 3164.45,-286.5 3164.45,-250.5 3218.45,-250.5 3218.45,-286.5"/>
<text text-anchor="middle" x="3191.45" y="-264.3" font-family="Times,serif" font-size="14.00">Guest</text>
</g>
<!-- HighlightedBid -->
<g id="node26" class="node"><title>HighlightedBid</title>
<polygon fill="none" stroke="black" points="3340.06,-286.5 3236.84,-286.5 3236.84,-250.5 3340.06,-250.5 3340.06,-286.5"/>
<text text-anchor="middle" x="3288.45" y="-264.3" font-family="Times,serif" font-size="14.00">HighlightedBid</text>
</g>
<!-- InsightMetric -->
<g id="node27" class="node"><title>InsightMetric</title>
<ellipse fill="none" stroke="black" cx="3416.45" cy="-268.5" rx="58.491" ry="18"/>
<text text-anchor="middle" x="3416.45" y="-264.3" font-family="Times,serif" font-size="14.00">InsightMetric</text>
</g>
<!-- MarkdownRender -->
<g id="node28" class="node"><title>MarkdownRender</title>
<polygon fill="none" stroke="black" points="3610.31,-286.5 3492.59,-286.5 3492.59,-250.5 3610.31,-250.5 3610.31,-286.5"/>
<text text-anchor="middle" x="3551.45" y="-264.3" font-family="Times,serif" font-size="14.00">MarkdownRender</text>
</g>
<!-- NullBid -->
<g id="node29" class="node"><title>NullBid</title>
<polygon fill="none" stroke="black" points="3689.07,-286.5 3627.83,-286.5 3627.83,-250.5 3689.07,-250.5 3689.07,-286.5"/>
<text text-anchor="middle" x="3658.45" y="-264.3" font-family="Times,serif" font-size="14.00">NullBid</text>
</g>
<!-- NullBidder -->
<g id="node30" class="node"><title>NullBidder</title>
<polygon fill="none" stroke="black" points="3785.94,-286.5 3706.96,-286.5 3706.96,-250.5 3785.94,-250.5 3785.94,-286.5"/>
<text text-anchor="middle" x="3746.45" y="-264.3" font-family="Times,serif" font-size="14.00">NullBidder</text>
</g>
<!-- NullCustomer -->
<g id="node31" class="node"><title>NullCustomer</title>
<polygon fill="none" stroke="black" points="3899.28,-286.5 3803.62,-286.5 3803.62,-250.5 3899.28,-250.5 3899.28,-286.5"/>
<text text-anchor="middle" x="3851.45" y="-264.3" font-family="Times,serif" font-size="14.00">NullCustomer</text>
</g>
<!-- Rules::BaseRules -->
<g id="node32" class="node"><title>Rules::BaseRules</title>
<polygon fill="none" stroke="black" points="4031.72,-286.5 3917.18,-286.5 3917.18,-250.5 4031.72,-250.5 4031.72,-286.5"/>
<text text-anchor="middle" x="3974.45" y="-264.3" font-family="Times,serif" font-size="14.00">Rules::BaseRules</text>
</g>
<!-- Rules::ReverseAuction -->
<g id="node33" class="node"><title>Rules::ReverseAuction</title>
<polygon fill="none" stroke="black" points="4195.31,-286.5 4049.59,-286.5 4049.59,-250.5 4195.31,-250.5 4195.31,-286.5"/>
<text text-anchor="middle" x="4122.45" y="-264.3" font-family="Times,serif" font-size="14.00">Rules::ReverseAuction</text>
</g>
<!-- Rules::SealedBidAuction -->
<g id="node34" class="node"><title>Rules::SealedBidAuction</title>
<polygon fill="none" stroke="black" points="4371.77,-286.5 4213.13,-286.5 4213.13,-250.5 4371.77,-250.5 4371.77,-286.5"/>
<text text-anchor="middle" x="4292.45" y="-264.3" font-family="Times,serif" font-size="14.00">Rules::SealedBidAuction</text>
</g>
<!-- RulesFactory -->
<g id="node35" class="node"><title>RulesFactory</title>
<polygon fill="none" stroke="black" points="4479.61,-286.5 4389.29,-286.5 4389.29,-250.5 4479.61,-250.5 4479.61,-286.5"/>
<text text-anchor="middle" x="4434.45" y="-264.3" font-family="Times,serif" font-size="14.00">RulesFactory</text>
</g>
<!-- SamAccountReckoner -->
<g id="node36" class="node"><title>SamAccountReckoner</title>
<polygon fill="none" stroke="black" points="4639.41,-286.5 4497.49,-286.5 4497.49,-250.5 4639.41,-250.5 4639.41,-286.5"/>
<text text-anchor="middle" x="4568.45" y="-264.3" font-family="Times,serif" font-size="14.00">SamAccountReckoner</text>
</g>
<!-- SamStatusPresenterFactory -->
<g id="node37" class="node"><title>SamStatusPresenterFactory</title>
<polygon fill="none" stroke="black" points="4827.42,-286.5 4657.48,-286.5 4657.48,-250.5 4827.42,-250.5 4827.42,-286.5"/>
<text text-anchor="middle" x="4742.45" y="-264.3" font-family="Times,serif" font-size="14.00">SamStatusPresenterFactory</text>
</g>
<!-- SignInUser -->
<g id="node38" class="node"><title>SignInUser</title>
<polygon fill="none" stroke="black" points="4925.22,-286.5 4845.68,-286.5 4845.68,-250.5 4925.22,-250.5 4925.22,-286.5"/>
<text text-anchor="middle" x="4885.45" y="-264.3" font-family="Times,serif" font-size="14.00">SignInUser</text>
</g>
<!-- SkillQuery -->
<g id="node40" class="node"><title>SkillQuery</title>
<polygon fill="none" stroke="black" points="5021.39,-286.5 4943.51,-286.5 4943.51,-250.5 5021.39,-250.5 5021.39,-286.5"/>
<text text-anchor="middle" x="4982.45" y="-264.3" font-family="Times,serif" font-size="14.00">SkillQuery</text>
</g>
<!-- Statistics::AverageAuctionLength -->
<g id="node41" class="node"><title>Statistics::AverageAuctionLength</title>
<polygon fill="none" stroke="black" points="5244.43,-286.5 5038.47,-286.5 5038.47,-250.5 5244.43,-250.5 5244.43,-286.5"/>
<text text-anchor="middle" x="5141.45" y="-264.3" font-family="Times,serif" font-size="14.00">Statistics::AverageAuctionLength</text>
</g>
<!-- Statistics::AverageBidsPerAuction -->
<g id="node42" class="node"><title>Statistics::AverageBidsPerAuction</title>
<polygon fill="none" stroke="black" points="5472.61,-286.5 5262.29,-286.5 5262.29,-250.5 5472.61,-250.5 5472.61,-286.5"/>
<text text-anchor="middle" x="5367.45" y="-264.3" font-family="Times,serif" font-size="14.00">Statistics::AverageBidsPerAuction</text>
</g>
<!-- Statistics::AverageDeliveryTime -->
<g id="node43" class="node"><title>Statistics::AverageDeliveryTime</title>
<polygon fill="none" stroke="black" points="5688.71,-286.5 5490.19,-286.5 5490.19,-250.5 5688.71,-250.5 5688.71,-286.5"/>
<text text-anchor="middle" x="5589.45" y="-264.3" font-family="Times,serif" font-size="14.00">Statistics::AverageDeliveryTime</text>
</g>
<!-- Statistics::AverageStartingPrice -->
<g id="node44" class="node"><title>Statistics::AverageStartingPrice</title>
<polygon fill="none" stroke="black" points="5900.27,-286.5 5706.63,-286.5 5706.63,-250.5 5900.27,-250.5 5900.27,-286.5"/>
<text text-anchor="middle" x="5803.45" y="-264.3" font-family="Times,serif" font-size="14.00">Statistics::AverageStartingPrice</text>
</g>
<!-- Statistics::AverageWinningBid -->
<g id="node45" class="node"><title>Statistics::AverageWinningBid</title>
<polygon fill="none" stroke="black" points="6108.34,-286.5 5918.56,-286.5 5918.56,-250.5 6108.34,-250.5 6108.34,-286.5"/>
<text text-anchor="middle" x="6013.45" y="-264.3" font-family="Times,serif" font-size="14.00">Statistics::AverageWinningBid</text>
</g>
<!-- Statistics::TotalSavings -->
<g id="node46" class="node"><title>Statistics::TotalSavings</title>
<polygon fill="none" stroke="black" points="6273.19,-286.5 6125.71,-286.5 6125.71,-250.5 6273.19,-250.5 6273.19,-286.5"/>
<text text-anchor="middle" x="6199.45" y="-264.3" font-family="Times,serif" font-size="14.00">Statistics::TotalSavings</text>
</g>
<!-- Statistics::UniqueBiddersPerAuction -->
<g id="node47" class="node"><title>Statistics::UniqueBiddersPerAuction</title>
<polygon fill="none" stroke="black" points="6513.82,-286.5 6291.08,-286.5 6291.08,-250.5 6513.82,-250.5 6513.82,-286.5"/>
<text text-anchor="middle" x="6402.45" y="-264.3" font-family="Times,serif" font-size="14.00">Statistics::UniqueBiddersPerAuction</text>
</g>
<!-- UnauthorizedError -->
<g id="node48" class="node"><title>UnauthorizedError</title>
<polygon fill="none" stroke="black" points="6653.18,-286.5 6531.72,-286.5 6531.72,-250.5 6653.18,-250.5 6653.18,-286.5"/>
<text text-anchor="middle" x="6592.45" y="-264.3" font-family="Times,serif" font-size="14.00">UnauthorizedError</text>
</g>
<!-- User&#45;&gt;Bid -->
<g id="edge5" class="edge"><title>User&#45;&gt;Bid</title>
<path fill="none" stroke="#41c503" d="M886.404,-71.6151C873.745,-61.5166 858.042,-48.9891 845.134,-38.6916"/>
<ellipse fill="none" stroke="#41c503" cx="889.583" cy="-74.1509" rx="4.00002" ry="4.00002"/>
<polygon fill="#41c503" stroke="#41c503" points="844.932,-38.5309 839.921,-28.7769 841.023,-35.4128 837.115,-32.2947 837.115,-32.2947 837.115,-32.2947 841.023,-35.4128 834.309,-35.8124 844.932,-38.5309 844.932,-38.5309"/>
</g>
<!-- UserExport -->
<g id="node50" class="node"><title>UserExport</title>
<polygon fill="none" stroke="black" points="6751.49,-286.5 6671.41,-286.5 6671.41,-250.5 6751.49,-250.5 6751.49,-286.5"/>
<text text-anchor="middle" x="6711.45" y="-264.3" font-family="Times,serif" font-size="14.00">UserExport</text>
</g>
<!-- UserQuery -->
<g id="node51" class="node"><title>UserQuery</title>
<polygon fill="none" stroke="black" points="6847.37,-286.5 6769.53,-286.5 6769.53,-250.5 6847.37,-250.5 6847.37,-286.5"/>
<text text-anchor="middle" x="6808.45" y="-264.3" font-family="Times,serif" font-size="14.00">UserQuery</text>
</g>
<!-- WebAuthenticator -->
<g id="node52" class="node"><title>WebAuthenticator</title>
<polygon fill="none" stroke="black" points="6983.74,-286.5 6865.16,-286.5 6865.16,-250.5 6983.74,-250.5 6983.74,-286.5"/>
<text text-anchor="middle" x="6924.45" y="-264.3" font-family="Times,serif" font-size="14.00">WebAuthenticator</text>
</g>
<!-- WinningBid -->
<g id="node53" class="node"><title>WinningBid</title>
<polygon fill="none" stroke="black" points="7085.62,-286.5 7001.28,-286.5 7001.28,-250.5 7085.62,-250.5 7085.62,-286.5"/>
<text text-anchor="middle" x="7043.45" y="-264.3" font-family="Times,serif" font-size="14.00">WinningBid</text>
</g>
<!-- WinningBidderExport -->
<g id="node54" class="node"><title>WinningBidderExport</title>
<polygon fill="none" stroke="black" points="7244.6,-286.5 7104.3,-286.5 7104.3,-250.5 7244.6,-250.5 7244.6,-286.5"/>
<text text-anchor="middle" x="7174.45" y="-264.3" font-family="Times,serif" font-size="14.00">WinningBidderExport</text>
</g>
</g>
</svg>