<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
<head>
<title>Qt.git - Qt s a cross-platform application framework that is used for developing application software that can be run on various software and hardware platforms with little or no change in the underlying codebase, while still being a native application with native capabilities and speed.</title>
<meta name='generator' content='cgit v0.12'/>
<meta name='robots' content='index, nofollow'/>
<link rel='stylesheet' type='text/css' href='/cgit-data/cgit-techsat.css'/>
<link rel='shortcut icon' href='/favicon.ico'/>
<link rel='alternate' title='Atom feed' href='http://service.techsat.com/oss-git/Qt.git/atom/tests/auto/qtextformat?h=v4.8.3' type='application/atom+xml'/>
</head>
<body>
<div id='cgit'><table id='header'>
<tr>
<td class='logo' rowspan='2'><a href='/oss-git/'><img src='/cgit-data/cgit.png' alt='cgit logo'/></a></td>
<td class='main'><a href='/oss-git/'>index</a> : <a title='Qt.git' href='/oss-git/Qt.git/'>Qt.git</a></td><td class='form'><form method='get' action=''>
<input type='hidden' name='id' value='5f225d68ad6f85fd026bd28d1cdf6010b9555b07'/><select name='h' onchange='this.form.submit();'>
<option value='QT_5_12_3'>QT_5_12_3</option>
<option value='QT_5_13_1'>QT_5_13_1</option>
<option value='QT_5_13_2'>QT_5_13_2</option>
<option value='QT_5_14'>QT_5_14</option>
<option value='master'>master</option>
</select> <input type='submit' name='' value='switch'/></form></td></tr>
<tr><td class='sub'>Qt s a cross-platform application framework that is used for developing application software that can be run on various software and hardware platforms with little or no change in the underlying codebase, while still being a native application with native capabilities and speed.</td><td class='sub right'></td></tr></table>
<table class='tabs'><tr><td>
<a href='/oss-git/Qt.git/?h=v4.8.3'>summary</a><a href='/oss-git/Qt.git/refs/?h=v4.8.3&amp;id=5f225d68ad6f85fd026bd28d1cdf6010b9555b07'>refs</a><a href='/oss-git/Qt.git/log/tests/auto/qtextformat?h=v4.8.3'>log</a><a class='active' href='/oss-git/Qt.git/tree/tests/auto/qtextformat?h=v4.8.3&amp;id=5f225d68ad6f85fd026bd28d1cdf6010b9555b07'>tree</a><a href='/oss-git/Qt.git/commit/tests/auto/qtextformat?h=v4.8.3&amp;id=5f225d68ad6f85fd026bd28d1cdf6010b9555b07'>commit</a><a href='/oss-git/Qt.git/diff/tests/auto/qtextformat?h=v4.8.3&amp;id=5f225d68ad6f85fd026bd28d1cdf6010b9555b07'>diff</a><a href='/oss-git/Qt.git/stats/tests/auto/qtextformat?h=v4.8.3'>stats</a></td><td class='form'><form class='right' method='get' action='/oss-git/Qt.git/log/tests/auto/qtextformat'>
<input type='hidden' name='h' value='v4.8.3'/><input type='hidden' name='id' value='5f225d68ad6f85fd026bd28d1cdf6010b9555b07'/><select name='qt'>
<option value='grep'>log msg</option>
<option value='author'>author</option>
<option value='committer'>committer</option>
<option value='range'>range</option>
</select>
<input class='txt' type='text' size='10' name='q' value=''/>
<input type='submit' value='search'/>
</form>
</td></tr></table>
<div class='path'>path: <a href='/oss-git/Qt.git/tree/?h=v4.8.3&amp;id=5f225d68ad6f85fd026bd28d1cdf6010b9555b07'>root</a>/<a href='/oss-git/Qt.git/tree/tests?h=v4.8.3&amp;id=5f225d68ad6f85fd026bd28d1cdf6010b9555b07'>tests</a>/<a href='/oss-git/Qt.git/tree/tests/auto?h=v4.8.3&amp;id=5f225d68ad6f85fd026bd28d1cdf6010b9555b07'>auto</a>/<a href='/oss-git/Qt.git/tree/tests/auto/qtextformat?h=v4.8.3&amp;id=5f225d68ad6f85fd026bd28d1cdf6010b9555b07'>qtextformat</a></div><div class='content'><table summary='tree listing' class='list'>
<tr class='nohover'><th class='left'>Mode</th><th class='left'>Name</th><th class='right'>Size</th><th/></tr>
<tr><td class='ls-mode'>-rw-r--r--</td><td><a class='ls-blob gitignore' href='/oss-git/Qt.git/tree/tests/auto/qtextformat/.gitignore?h=v4.8.3&amp;id=5f225d68ad6f85fd026bd28d1cdf6010b9555b07'>.gitignore</a></td><td class='ls-size'>16</td><td><a class='button' href='/oss-git/Qt.git/log/tests/auto/qtextformat/.gitignore?h=v4.8.3&amp;id=5f225d68ad6f85fd026bd28d1cdf6010b9555b07'>log</a><a class='button' href='/oss-git/Qt.git/stats/tests/auto/qtextformat/.gitignore?h=v4.8.3'>stats</a><a class='button' href='/oss-git/Qt.git/plain/tests/auto/qtextformat/.gitignore?h=v4.8.3&amp;id=5f225d68ad6f85fd026bd28d1cdf6010b9555b07'>plain</a></td></tr>
<tr><td class='ls-mode'>-rw-r--r--</td><td><a class='ls-blob pro' href='/oss-git/Qt.git/tree/tests/auto/qtextformat/qtextformat.pro?h=v4.8.3&amp;id=5f225d68ad6f85fd026bd28d1cdf6010b9555b07'>qtextformat.pro</a></td><td class='ls-size'>224</td><td><a class='button' href='/oss-git/Qt.git/log/tests/auto/qtextformat/qtextformat.pro?h=v4.8.3&amp;id=5f225d68ad6f85fd026bd28d1cdf6010b9555b07'>log</a><a class='button' href='/oss-git/Qt.git/stats/tests/auto/qtextformat/qtextformat.pro?h=v4.8.3'>stats</a><a class='button' href='/oss-git/Qt.git/plain/tests/auto/qtextformat/qtextformat.pro?h=v4.8.3&amp;id=5f225d68ad6f85fd026bd28d1cdf6010b9555b07'>plain</a></td></tr>
<tr><td class='ls-mode'>-rw-r--r--</td><td><a class='ls-blob cpp' href='/oss-git/Qt.git/tree/tests/auto/qtextformat/tst_qtextformat.cpp?h=v4.8.3&amp;id=5f225d68ad6f85fd026bd28d1cdf6010b9555b07'>tst_qtextformat.cpp</a></td><td class='ls-size'>12579</td><td><a class='button' href='/oss-git/Qt.git/log/tests/auto/qtextformat/tst_qtextformat.cpp?h=v4.8.3&amp;id=5f225d68ad6f85fd026bd28d1cdf6010b9555b07'>log</a><a class='button' href='/oss-git/Qt.git/stats/tests/auto/qtextformat/tst_qtextformat.cpp?h=v4.8.3'>stats</a><a class='button' href='/oss-git/Qt.git/plain/tests/auto/qtextformat/tst_qtextformat.cpp?h=v4.8.3&amp;id=5f225d68ad6f85fd026bd28d1cdf6010b9555b07'>plain</a></td></tr>
</table>
</div> <!-- class=content -->
<div class='footer'>generated by <a href='http://git.zx2c4.com/cgit/about/'>cgit v0.12</a> at 2025-01-31 13:15:24 (GMT)</div>
</div> <!-- id=cgit -->
</body>
</html>
y</option>
<option value='loricooperhdf-patch-1' selected='selected'>loricooperhdf-patch-1</option>
<option value='metadata_cache_macro_cleanup'>metadata_cache_macro_cleanup</option>
<option value='ossf-scorecard'>ossf-scorecard</option>
<option value='pr_484'>pr_484</option>
<option value='reduce-h5f-duplication'>reduce-h5f-duplication</option>
<option value='sel_io_chunk_cache'>sel_io_chunk_cache</option>
<option value='shell_script'>shell_script</option>
<option value='zzz-gitlab-ci'>zzz-gitlab-ci</option>
</select> <input type='submit' name='' value='switch'/></form></td></tr>
<tr><td class='sub'>Mirror from: https://github.com/HDFGroup/hdf5.git</td><td class='sub right'></td></tr></table>
<table class='tabs'><tr><td>
<a href='/oss-git/hdf5.git/?h=loricooperhdf-patch-1'>summary</a><a href='/oss-git/hdf5.git/refs/?h=loricooperhdf-patch-1&amp;id=77e7e788c87b93a228d286c54d016f370846031a'>refs</a><a href='/oss-git/hdf5.git/log/test/fheap.c?h=loricooperhdf-patch-1'>log</a><a class='active' href='/oss-git/hdf5.git/tree/test/fheap.c?h=loricooperhdf-patch-1&amp;id=77e7e788c87b93a228d286c54d016f370846031a'>tree</a><a href='/oss-git/hdf5.git/commit/test/fheap.c?h=loricooperhdf-patch-1&amp;id=77e7e788c87b93a228d286c54d016f370846031a'>commit</a><a href='/oss-git/hdf5.git/diff/test/fheap.c?h=loricooperhdf-patch-1&amp;id=77e7e788c87b93a228d286c54d016f370846031a'>diff</a><a href='/oss-git/hdf5.git/stats/test/fheap.c?h=loricooperhdf-patch-1'>stats</a></td><td class='form'><form class='right' method='get' action='/oss-git/hdf5.git/log/test/fheap.c'>
<input type='hidden' name='h' value='loricooperhdf-patch-1'/><input type='hidden' name='id' value='77e7e788c87b93a228d286c54d016f370846031a'/><select name='qt'>
<option value='grep'>log msg</option>
<option value='author'>author</option>
<option value='committer'>committer</option>
<option value='range'>range</option>
</select>
<input class='txt' type='text' size='10' name='q' value=''/>
<input type='submit' value='search'/>
</form>
</td></tr></table>
<div class='path'>path: <a href='/oss-git/hdf5.git/tree/?h=loricooperhdf-patch-1&amp;id=77e7e788c87b93a228d286c54d016f370846031a'>root</a>/<a href='/oss-git/hdf5.git/tree/test?h=loricooperhdf-patch-1&amp;id=77e7e788c87b93a228d286c54d016f370846031a'>test</a>/<a href='/oss-git/hdf5.git/tree/test/fheap.c?h=loricooperhdf-patch-1&amp;id=77e7e788c87b93a228d286c54d016f370846031a'>fheap.c</a></div><div class='content'>blob: 96b0673b75972f655c1eeefd883e42ec92a3f897 (<a href='/oss-git/hdf5.git/plain/test/fheap.c?h=loricooperhdf-patch-1&amp;id=77e7e788c87b93a228d286c54d016f370846031a'>plain</a>)
<table summary='blob content' class='blob'>
<tr><td class='linenumbers'><pre><a id='n1' href='#n1'>1</a>
<a id='n2' href='#n2'>2</a>
<a id='n3' href='#n3'>3</a>
<a id='n4' href='#n4'>4</a>
<a id='n5' href='#n5'>5</a>
<a id='n6' href='#n6'>6</a>
<a id='n7' href='#n7'>7</a>
<a id='n8' href='#n8'>8</a>
<a id='n9' href='#n9'>9</a>
<a id='n10' href='#n10'>10</a>
<a id='n11' href='#n11'>11</a>
<a id='n12' href='#n12'>12</a>
<a id='n13' href='#n13'>13</a>
<a id='n14' href='#n14'>14</a>
<a id='n15' href='#n15'>15</a>
<a id='n16' href='#n16'>16</a>
<a id='n17' href='#n17'>17</a>
<a id='n18' href='#n18'>18</a>
<a id='n19' href='#n19'>19</a>
<a id='n20' href='#n20'>20</a>
<a id='n21' href='#n21'>21</a>
<a id='n22' href='#n22'>22</a>
<a id='n23' href='#n23'>23</a>
<a id='n24' href='#n24'>24</a>
<a id='n25' href='#n25'>25</a>
<a id='n26' href='#n26'>26</a>
<a id='n27' href='#n27'>27</a>
<a id='n28' href='#n28'>28</a>
<a id='n29' href='#n29'>29</a>
<a id='n30' href='#n30'>30</a>
<a id='n31' href='#n31'>31</a>
<a id='n32' href='#n32'>32</a>
<a id='n33' href='#n33'>33</a>
<a id='n34' href='#n34'>34</a>
<a id='n35' href='#n35'>35</a>
<a id='n36' href='#n36'>36</a>
<a id='n37' href='#n37'>37</a>
<a id='n38' href='#n38'>38</a>
<a id='n39' href='#n39'>39</a>
<a id='n40' href='#n40'>40</a>
<a id='n41' href='#n41'>41</a>
<a id='n42' href='#n42'>42</a>
<a id='n43' href='#n43'>43</a>
<a id='n44' href='#n44'>44</a>
<a id='n45' href='#n45'>45</a>
<a id='n46' href='#n46'>46</a>
<a id='n47' href='#n47'>47</a>
<a id='n48' href='#n48'>48</a>
<a id='n49' href='#n49'>49</a>
<a id='n50' href='#n50'>50</a>
<a id='n51' href='#n51'>51</a>
<a id='n52' href='#n52'>52</a>
<a id='n53' href='#n53'>53</a>
<a id='n54' href='#n54'>54</a>
<a id='n55' href='#n55'>55</a>
<a id='n56' href='#n56'>56</a>
<a id='n57' href='#n57'>57</a>
<a id='n58' href='#n58'>58</a>
<a id='n59' href='#n59'>59</a>
<a id='n60' href='#n60'>60</a>
<a id='n61' href='#n61'>61</a>
<a id='n62' href='#n62'>62</a>
<a id='n63' href='#n63'>63</a>
<a id='n64' href='#n64'>64</a>
<a id='n65' href='#n65'>65</a>
<a id='n66' href='#n66'>66</a>
<a id='n67' href='#n67'>67</a>
<a id='n68' href='#n68'>68</a>
<a id='n69' href='#n69'>69</a>
<a id='n70' href='#n70'>70</a>
<a id='n71' href='#n71'>71</a>
<a id='n72' href='#n72'>72</a>
<a id='n73' href='#n73'>73</a>
<a id='n74' href='#n74'>74</a>
<a id='n75' href='#n75'>75</a>
<a id='n76' href='#n76'>76</a>
<a id='n77' href='#n77'>77</a>
<a id='n78' href='#n78'>78</a>
<a id='n79' href='#n79'>79</a>
<a id='n80' href='#n80'>80</a>
<a id='n81' href='#n81'>81</a>
<a id='n82' href='#n82'>82</a>
<a id='n83' href='#n83'>83</a>
<a id='n84' href='#n84'>84</a>
<a id='n85' href='#n85'>85</a>
<a id='n86' href='#n86'>86</a>
<a id='n87' href='#n87'>87</a>
<a id='n88' href='#n88'>88</a>
<a id='n89' href='#n89'>89</a>
<a id='n90' href='#n90'>90</a>
<a id='n91' href='#n91'>91</a>
<a id='n92' href='#n92'>92</a>
<a id='n93' href='#n93'>93</a>
<a id='n94' href='#n94'>94</a>
<a id='n95' href='#n95'>95</a>
<a id='n96' href='#n96'>96</a>
<a id='n97' href='#n97'>97</a>
<a id='n98' href='#n98'>98</a>
<a id='n99' href='#n99'>99</a>
<a id='n100' href='#n100'>100</a>
<a id='n101' href='#n101'>101</a>
<a id='n102' href='#n102'>102</a>
<a id='n103' href='#n103'>103</a>
<a id='n104' href='#n104'>104</a>
<a id='n105' href='#n105'>105</a>
<a id='n106' href='#n106'>106</a>
<a id='n107' href='#n107'>107</a>
<a id='n108' href='#n108'>108</a>
<a id='n109' href='#n109'>109</a>
<a id='n110' href='#n110'>110</a>
<a id='n111' href='#n111'>111</a>
<a id='n112' href='#n112'>112</a>
<a id='n113' href='#n113'>113</a>
<a id='n114' href='#n114'>114</a>
<a id='n115' href='#n115'>115</a>
<a id='n116' href='#n116'>116</a>
<a id='n117' href='#n117'>117</a>
<a id='n118' href='#n118'>118</a>
<a id='n119' href='#n119'>119</a>
<a id='n120' href='#n120'>120</a>
<a id='n121' href='#n121'>121</a>
<a id='n122' href='#n122'>122</a>
<a id='n123' href='#n123'>123</a>
<a id='n124' href='#n124'>124</a>
<a id='n125' href='#n125'>125</a>
<a id='n126' href='#n126'>126</a>
<a id='n127' href='#n127'>127</a>
<a id='n128' href='#n128'>128</a>
<a id='n129' href='#n129'>129</a>
<a id='n130' href='#n130'>130</a>
<a id='n131' href='#n131'>131</a>
<a id='n132' href='#n132'>132</a>
<a id='n133' href='#n133'>133</a>
<a id='n134' href='#n134'>134</a>
<a id='n135' href='#n135'>135</a>
<a id='n136' href='#n136'>136</a>
<a id='n137' href='#n137'>137</a>
<a id='n138' href='#n138'>138</a>
<a id='n139' href='#n139'>139</a>
<a id='n140' href='#n140'>140</a>
<a id='n141' href='#n141'>141</a>
<a id='n142' href='#n142'>142</a>
<a id='n143' href='#n143'>143</a>
<a id='n144' href='#n144'>144</a>
<a id='n145' href='#n145'>145</a>
<a id='n146' href='#n146'>146</a>
<a id='n147' href='#n147'>147</a>
<a id='n148' href='#n148'>148</a>
<a id='n149' href='#n149'>149</a>
<a id='n150' href='#n150'>150</a>
<a id='n151' href='#n151'>151</a>
<a id='n152' href='#n152'>152</a>
<a id='n153' href='#n153'>153</a>
<a id='n154' href='#n154'>154</a>
<a id='n155' href='#n155'>155</a>
<a id='n156' href='#n156'>156</a>
<a id='n157' href='#n157'>157</a>
<a id='n158' href='#n158'>158</a>
<a id='n159' href='#n159'>159</a>
<a id='n160' href='#n160'>160</a>
<a id='n161' href='#n161'>161</a>
<a id='n162' href='#n162'>162</a>
<a id='n163' href='#n163'>163</a>
<a id='n164' href='#n164'>164</a>
<a id='n165' href='#n165'>165</a>
<a id='n166' href='#n166'>166</a>
<a id='n167' href='#n167'>167</a>
<a id='n168' href='#n168'>168</a>
<a id='n169' href='#n169'>169</a>
<a id='n170' href='#n170'>170</a>
<a id='n171' href='#n171'>171</a>
<a id='n172' href='#n172'>172</a>
<a id='n173' href='#n173'>173</a>
<a id='n174' href='#n174'>174</a>
<a id='n175' href='#n175'>175</a>
<a id='n176' href='#n176'>176</a>
<a id='n177' href='#n177'>177</a>
<a id='n178' href='#n178'>178</a>
<a id='n179' href='#n179'>179</a>
<a id='n180' href='#n180'>180</a>
<a id='n181' href='#n181'>181</a>
<a id='n182' href='#n182'>182</a>
<a id='n183' href='#n183'>183</a>
<a id='n184' href='#n184'>184</a>
<a id='n185' href='#n185'>185</a>
<a id='n186' href='#n186'>186</a>
<a id='n187' href='#n187'>187</a>
<a id='n188' href='#n188'>188</a>
<a id='n189' href='#n189'>189</a>
<a id='n190' href='#n190'>190</a>
<a id='n191' href='#n191'>191</a>
<a id='n192' href='#n192'>192</a>
<a id='n193' href='#n193'>193</a>
<a id='n194' href='#n194'>194</a>
<a id='n195' href='#n195'>195</a>
<a id='n196' href='#n196'>196</a>
<a id='n197' href='#n197'>197</a>
<a id='n198' href='#n198'>198</a>
<a id='n199' href='#n199'>199</a>
<a id='n200' href='#n200'>200</a>
<a id='n201' href='#n201'>201</a>
<a id='n202' href='#n202'>202</a>
<a id='n203' href='#n203'>203</a>
<a id='n204' href='#n204'>204</a>
<a id='n205' href='#n205'>205</a>
<a id='n206' href='#n206'>206</a>
<a id='n207' href='#n207'>207</a>
<a id='n208' href='#n208'>208</a>
<a id='n209' href='#n209'>209</a>
<a id='n210' href='#n210'>210</a>
<a id='n211' href='#n211'>211</a>
<a id='n212' href='#n212'>212</a>
<a id='n213' href='#n213'>213</a>
<a id='n214' href='#n214'>214</a>
<a id='n215' href='#n215'>215</a>
<a id='n216' href='#n216'>216</a>
<a id='n217' href='#n217'>217</a>
<a id='n218' href='#n218'>218</a>
<a id='n219' href='#n219'>219</a>
<a id='n220' href='#n220'>220</a>
<a id='n221' href='#n221'>221</a>
<a id='n222' href='#n222'>222</a>
<a id='n223' href='#n223'>223</a>
<a id='n224' href='#n224'>224</a>
<a id='n225' href='#n225'>225</a>
<a id='n226' href='#n226'>226</a>
<a id='n227' href='#n227'>227</a>
<a id='n228' href='#n228'>228</a>
<a id='n229' href='#n229'>229</a>
<a id='n230' href='#n230'>230</a>
<a id='n231' href='#n231'>231</a>
<a id='n232' href='#n232'>232</a>
<a id='n233' href='#n233'>233</a>
<a id='n234' href='#n234'>234</a>
<a id='n235' href='#n235'>235</a>
<a id='n236' href='#n236'>236</a>
<a id='n237' href='#n237'>237</a>
<a id='n238' href='#n238'>238</a>
<a id='n239' href='#n239'>239</a>
<a id='n240' href='#n240'>240</a>
<a id='n241' href='#n241'>241</a>
<a id='n242' href='#n242'>242</a>
<a id='n243' href='#n243'>243</a>
<a id='n244' href='#n244'>244</a>
<a id='n245' href='#n245'>245</a>
<a id='n246' href='#n246'>246</a>
<a id='n247' href='#n247'>247</a>
<a id='n248' href='#n248'>248</a>
<a id='n249' href='#n249'>249</a>
<a id='n250' href='#n250'>250</a>
<a id='n251' href='#n251'>251</a>
<a id='n252' href='#n252'>252</a>
<a id='n253' href='#n253'>253</a>
<a id='n254' href='#n254'>254</a>
<a id='n255' href='#n255'>255</a>
<a id='n256' href='#n256'>256</a>
<a id='n257' href='#n257'>257</a>
<a id='n258' href='#n258'>258</a>
<a id='n259' href='#n259'>259</a>
<a id='n260' href='#n260'>260</a>
<a id='n261' href='#n261'>261</a>
<a id='n262' href='#n262'>262</a>
<a id='n263' href='#n263'>263</a>
<a id='n264' href='#n264'>264</a>
<a id='n265' href='#n265'>265</a>
<a id='n266' href='#n266'>266</a>
<a id='n267' href='#n267'>267</a>
<a id='n268' href='#n268'>268</a>
<a id='n269' href='#n269'>269</a>
<a id='n270' href='#n270'>270</a>
<a id='n271' href='#n271'>271</a>
<a id='n272' href='#n272'>272</a>
<a id='n273' href='#n273'>273</a>
<a id='n274' href='#n274'>274</a>
<a id='n275' href='#n275'>275</a>
<a id='n276' href='#n276'>276</a>
<a id='n277' href='#n277'>277</a>
<a id='n278' href='#n278'>278</a>
<a id='n279' href='#n279'>279</a>
<a id='n280' href='#n280'>280</a>
<a id='n281' href='#n281'>281</a>
<a id='n282' href='#n282'>282</a>
<a id='n283' href='#n283'>283</a>
<a id='n284' href='#n284'>284</a>
<a id='n285' href='#n285'>285</a>
<a id='n286' href='#n286'>286</a>
<a id='n287' href='#n287'>287</a>
<a id='n288' href='#n288'>288</a>
<a id='n289' href='#n289'>289</a>
<a id='n290' href='#n290'>290</a>
<a id='n291' href='#n291'>291</a>
<a id='n292' href='#n292'>292</a>
<a id='n293' href='#n293'>293</a>
<a id='n294' href='#n294'>294</a>
<a id='n295' href='#n295'>295</a>
<a id='n296' href='#n296'>296</a>
<a id='n297' href='#n297'>297</a>
<a id='n298' href='#n298'>298</a>
<a id='n299' href='#n299'>299</a>
<a id='n300' href='#n300'>300</a>
<a id='n301' href='#n301'>301</a>
<a id='n302' href='#n302'>302</a>
<a id='n303' href='#n303'>303</a>
<a id='n304' href='#n304'>304</a>
<a id='n305' href='#n305'>305</a>
<a id='n306' href='#n306'>306</a>
<a id='n307' href='#n307'>307</a>
<a id='n308' href='#n308'>308</a>
<a id='n309' href='#n309'>309</a>
<a id='n310' href='#n310'>310</a>
<a id='n311' href='#n311'>311</a>
<a id='n312' href='#n312'>312</a>
<a id='n313' href='#n313'>313</a>
<a id='n314' href='#n314'>314</a>
<a id='n315' href='#n315'>315</a>
<a id='n316' href='#n316'>316</a>
<a id='n317' href='#n317'>317</a>
<a id='n318' href='#n318'>318</a>
<a id='n319' href='#n319'>319</a>
<a id='n320' href='#n320'>320</a>
<a id='n321' href='#n321'>321</a>
<a id='n322' href='#n322'>322</a>
<a id='n323' href='#n323'>323</a>
<a id='n324' href='#n324'>324</a>
<a id='n325' href='#n325'>325</a>
<a id='n326' href='#n326'>326</a>
<a id='n327' href='#n327'>327</a>
<a id='n328' href='#n328'>328</a>
<a id='n329' href='#n329'>329</a>
<a id='n330' href='#n330'>330</a>
<a id='n331' href='#n331'>331</a>
<a id='n332' href='#n332'>332</a>
<a id='n333' href='#n333'>333</a>
<a id='n334' href='#n334'>334</a>
<a id='n335' href='#n335'>335</a>
<a id='n336' href='#n336'>336</a>
<a id='n337' href='#n337'>337</a>
<a id='n338' href='#n338'>338</a>
<a id='n339' href='#n339'>339</a>
<a id='n340' href='#n340'>340</a>
<a id='n341' href='#n341'>341</a>
<a id='n342' href='#n342'>342</a>
<a id='n343' href='#n343'>343</a>
<a id='n344' href='#n344'>344</a>
<a id='n345' href='#n345'>345</a>
<a id='n346' href='#n346'>346</a>
<a id='n347' href='#n347'>347</a>
<a id='n348' href='#n348'>348</a>
<a id='n349' href='#n349'>349</a>
<a id='n350' href='#n350'>350</a>
<a id='n351' href='#n351'>351</a>
<a id='n352' href='#n352'>352</a>
<a id='n353' href='#n353'>353</a>
<a id='n354' href='#n354'>354</a>
<a id='n355' href='#n355'>355</a>
<a id='n356' href='#n356'>356</a>
<a id='n357' href='#n357'>357</a>
<a id='n358' href='#n358'>358</a>
<a id='n359' href='#n359'>359</a>
<a id='n360' href='#n360'>360</a>
<a id='n361' href='#n361'>361</a>
<a id='n362' href='#n362'>362</a>
<a id='n363' href='#n363'>363</a>
<a id='n364' href='#n364'>364</a>
<a id='n365' href='#n365'>365</a>
<a id='n366' href='#n366'>366</a>
<a id='n367' href='#n367'>367</a>
<a id='n368' href='#n368'>368</a>
<a id='n369' href='#n369'>369</a>
<a id='n370' href='#n370'>370</a>
<a id='n371' href='#n371'>371</a>
<a id='n372' href='#n372'>372</a>
<a id='n373' href='#n373'>373</a>
<a id='n374' href='#n374'>374</a>
<a id='n375' href='#n375'>375</a>
<a id='n376' href='#n376'>376</a>
<a id='n377' href='#n377'>377</a>
<a id='n378' href='#n378'>378</a>
<a id='n379' href='#n379'>379</a>
<a id='n380' href='#n380'>380</a>
<a id='n381' href='#n381'>381</a>
<a id='n382' href='#n382'>382</a>
<a id='n383' href='#n383'>383</a>
<a id='n384' href='#n384'>384</a>
<a id='n385' href='#n385'>385</a>
<a id='n386' href='#n386'>386</a>
<a id='n387' href='#n387'>387</a>
<a id='n388' href='#n388'>388</a>
<a id='n389' href='#n389'>389</a>
<a id='n390' href='#n390'>390</a>
<a id='n391' href='#n391'>391</a>
<a id='n392' href='#n392'>392</a>
<a id='n393' href='#n393'>393</a>
<a id='n394' href='#n394'>394</a>
<a id='n395' href='#n395'>395</a>
<a id='n396' href='#n396'>396</a>
<a id='n397' href='#n397'>397</a>
<a id='n398' href='#n398'>398</a>
<a id='n399' href='#n399'>399</a>
<a id='n400' href='#n400'>400</a>
<a id='n401' href='#n401'>401</a>
<a id='n402' href='#n402'>402</a>
<a id='n403' href='#n403'>403</a>
<a id='n404' href='#n404'>404</a>
<a id='n405' href='#n405'>405</a>
<a id='n406' href='#n406'>406</a>
<a id='n407' href='#n407'>407</a>
<a id='n408' href='#n408'>408</a>
<a id='n409' href='#n409'>409</a>
<a id='n410' href='#n410'>410</a>
<a id='n411' href='#n411'>411</a>
<a id='n412' href='#n412'>412</a>
<a id='n413' href='#n413'>413</a>
<a id='n414' href='#n414'>414</a>
<a id='n415' href='#n415'>415</a>
<a id='n416' href='#n416'>416</a>
<a id='n417' href='#n417'>417</a>
<a id='n418' href='#n418'>418</a>
<a id='n419' href='#n419'>419</a>
<a id='n420' href='#n420'>420</a>
<a id='n421' href='#n421'>421</a>
<a id='n422' href='#n422'>422</a>
<a id='n423' href='#n423'>423</a>
<a id='n424' href='#n424'>424</a>
<a id='n425' href='#n425'>425</a>
<a id='n426' href='#n426'>426</a>
<a id='n427' href='#n427'>427</a>
<a id='n428' href='#n428'>428</a>
<a id='n429' href='#n429'>429</a>
<a id='n430' href='#n430'>430</a>
<a id='n431' href='#n431'>431</a>
<a id='n432' href='#n432'>432</a>
<a id='n433' href='#n433'>433</a>
<a id='n434' href='#n434'>434</a>
<a id='n435' href='#n435'>435</a>
<a id='n436' href='#n436'>436</a>
<a id='n437' href='#n437'>437</a>
<a id='n438' href='#n438'>438</a>
<a id='n439' href='#n439'>439</a>
<a id='n440' href='#n440'>440</a>
<a id='n441' href='#n441'>441</a>
<a id='n442' href='#n442'>442</a>
<a id='n443' href='#n443'>443</a>
<a id='n444' href='#n444'>444</a>
<a id='n445' href='#n445'>445</a>
<a id='n446' href='#n446'>446</a>
<a id='n447' href='#n447'>447</a>
<a id='n448' href='#n448'>448</a>
<a id='n449' href='#n449'>449</a>
<a id='n450' href='#n450'>450</a>
<a id='n451' href='#n451'>451</a>
<a id='n452' href='#n452'>452</a>
<a id='n453' href='#n453'>453</a>
<a id='n454' href='#n454'>454</a>
<a id='n455' href='#n455'>455</a>
<a id='n456' href='#n456'>456</a>
<a id='n457' href='#n457'>457</a>
<a id='n458' href='#n458'>458</a>
<a id='n459' href='#n459'>459</a>
<a id='n460' href='#n460'>460</a>
<a id='n461' href='#n461'>461</a>
<a id='n462' href='#n462'>462</a>
<a id='n463' href='#n463'>463</a>
<a id='n464' href='#n464'>464</a>
<a id='n465' href='#n465'>465</a>
<a id='n466' href='#n466'>466</a>
<a id='n467' href='#n467'>467</a>
<a id='n468' href='#n468'>468</a>
<a id='n469' href='#n469'>469</a>
<a id='n470' href='#n470'>470</a>
<a id='n471' href='#n471'>471</a>
<a id='n472' href='#n472'>472</a>
<a id='n473' href='#n473'>473</a>
<a id='n474' href='#n474'>474</a>
<a id='n475' href='#n475'>475</a>
<a id='n476' href='#n476'>476</a>
<a id='n477' href='#n477'>477</a>
<a id='n478' href='#n478'>478</a>
<a id='n479' href='#n479'>479</a>
<a id='n480' href='#n480'>480</a>
<a id='n481' href='#n481'>481</a>
<a id='n482' href='#n482'>482</a>
<a id='n483' href='#n483'>483</a>
<a id='n484' href='#n484'>484</a>
<a id='n485' href='#n485'>485</a>
<a id='n486' href='#n486'>486</a>
<a id='n487' href='#n487'>487</a>
<a id='n488' href='#n488'>488</a>
<a id='n489' href='#n489'>489</a>
<a id='n490' href='#n490'>490</a>
<a id='n491' href='#n491'>491</a>
<a id='n492' href='#n492'>492</a>
<a id='n493' href='#n493'>493</a>
<a id='n494' href='#n494'>494</a>
<a id='n495' href='#n495'>495</a>
<a id='n496' href='#n496'>496</a>
<a id='n497' href='#n497'>497</a>
<a id='n498' href='#n498'>498</a>
<a id='n499' href='#n499'>499</a>
<a id='n500' href='#n500'>500</a>
<a id='n501' href='#n501'>501</a>
<a id='n502' href='#n502'>502</a>
<a id='n503' href='#n503'>503</a>
<a id='n504' href='#n504'>504</a>
<a id='n505' href='#n505'>505</a>
<a id='n506' href='#n506'>506</a>
<a id='n507' href='#n507'>507</a>
<a id='n508' href='#n508'>508</a>
<a id='n509' href='#n509'>509</a>
<a id='n510' href='#n510'>510</a>
<a id='n511' href='#n511'>511</a>
<a id='n512' href='#n512'>512</a>
<a id='n513' href='#n513'>513</a>
<a id='n514' href='#n514'>514</a>
<a id='n515' href='#n515'>515</a>
<a id='n516' href='#n516'>516</a>
<a id='n517' href='#n517'>517</a>
<a id='n518' href='#n518'>518</a>
<a id='n519' href='#n519'>519</a>
<a id='n520' href='#n520'>520</a>
<a id='n521' href='#n521'>521</a>
<a id='n522' href='#n522'>522</a>
<a id='n523' href='#n523'>523</a>
<a id='n524' href='#n524'>524</a>
<a id='n525' href='#n525'>525</a>
<a id='n526' href='#n526'>526</a>
<a id='n527' href='#n527'>527</a>
<a id='n528' href='#n528'>528</a>
<a id='n529' href='#n529'>529</a>
<a id='n530' href='#n530'>530</a>
<a id='n531' href='#n531'>531</a>
<a id='n532' href='#n532'>532</a>
<a id='n533' href='#n533'>533</a>
<a id='n534' href='#n534'>534</a>
<a id='n535' href='#n535'>535</a>
<a id='n536' href='#n536'>536</a>
<a id='n537' href='#n537'>537</a>
<a id='n538' href='#n538'>538</a>
<a id='n539' href='#n539'>539</a>
<a id='n540' href='#n540'>540</a>
<a id='n541' href='#n541'>541</a>
<a id='n542' href='#n542'>542</a>
<a id='n543' href='#n543'>543</a>
<a id='n544' href='#n544'>544</a>
<a id='n545' href='#n545'>545</a>
<a id='n546' href='#n546'>546</a>
<a id='n547' href='#n547'>547</a>
<a id='n548' href='#n548'>548</a>
<a id='n549' href='#n549'>549</a>
<a id='n550' href='#n550'>550</a>
<a id='n551' href='#n551'>551</a>
<a id='n552' href='#n552'>552</a>
<a id='n553' href='#n553'>553</a>
<a id='n554' href='#n554'>554</a>
<a id='n555' href='#n555'>555</a>
<a id='n556' href='#n556'>556</a>
<a id='n557' href='#n557'>557</a>
<a id='n558' href='#n558'>558</a>
<a id='n559' href='#n559'>559</a>
<a id='n560' href='#n560'>560</a>
<a id='n561' href='#n561'>561</a>
<a id='n562' href='#n562'>562</a>
<a id='n563' href='#n563'>563</a>
<a id='n564' href='#n564'>564</a>
<a id='n565' href='#n565'>565</a>
<a id='n566' href='#n566'>566</a>
<a id='n567' href='#n567'>567</a>
<a id='n568' href='#n568'>568</a>
<a id='n569' href='#n569'>569</a>
<a id='n570' href='#n570'>570</a>
<a id='n571' href='#n571'>571</a>
<a id='n572' href='#n572'>572</a>
<a id='n573' href='#n573'>573</a>
<a id='n574' href='#n574'>574</a>
<a id='n575' href='#n575'>575</a>
<a id='n576' href='#n576'>576</a>
<a id='n577' href='#n577'>577</a>
<a id='n578' href='#n578'>578</a>
<a id='n579' href='#n579'>579</a>
<a id='n580' href='#n580'>580</a>
<a id='n581' href='#n581'>581</a>
<a id='n582' href='#n582'>582</a>
<a id='n583' href='#n583'>583</a>
<a id='n584' href='#n584'>584</a>
<a id='n585' href='#n585'>585</a>
<a id='n586' href='#n586'>586</a>
<a id='n587' href='#n587'>587</a>
<a id='n588' href='#n588'>588</a>
<a id='n589' href='#n589'>589</a>
<a id='n590' href='#n590'>590</a>
<a id='n591' href='#n591'>591</a>
<a id='n592' href='#n592'>592</a>
<a id='n593' href='#n593'>593</a>
<a id='n594' href='#n594'>594</a>
<a id='n595' href='#n595'>595</a>
<a id='n596' href='#n596'>596</a>
<a id='n597' href='#n597'>597</a>
<a id='n598' href='#n598'>598</a>
<a id='n599' href='#n599'>599</a>
<a id='n600' href='#n600'>600</a>
<a id='n601' href='#n601'>601</a>
<a id='n602' href='#n602'>602</a>
<a id='n603' href='#n603'>603</a>
<a id='n604' href='#n604'>604</a>
<a id='n605' href='#n605'>605</a>
<a id='n606' href='#n606'>606</a>
<a id='n607' href='#n607'>607</a>
<a id='n608' href='#n608'>608</a>
<a id='n609' href='#n609'>609</a>
<a id='n610' href='#n610'>610</a>
<a id='n611' href='#n611'>611</a>
<a id='n612' href='#n612'>612</a>
<a id='n613' href='#n613'>613</a>
<a id='n614' href='#n614'>614</a>
<a id='n615' href='#n615'>615</a>
<a id='n616' href='#n616'>616</a>
<a id='n617' href='#n617'>617</a>
<a id='n618' href='#n618'>618</a>
<a id='n619' href='#n619'>619</a>
<a id='n620' href='#n620'>620</a>
<a id='n621' href='#n621'>621</a>
<a id='n622' href='#n622'>622</a>
<a id='n623' href='#n623'>623</a>
<a id='n624' href='#n624'>624</a>
<a id='n625' href='#n625'>625</a>
<a id='n626' href='#n626'>626</a>
<a id='n627' href='#n627'>627</a>
<a id='n628' href='#n628'>628</a>
<a id='n629' href='#n629'>629</a>
<a id='n630' href='#n630'>630</a>
<a id='n631' href='#n631'>631</a>
<a id='n632' href='#n632'>632</a>
<a id='n633' href='#n633'>633</a>
<a id='n634' href='#n634'>634</a>
<a id='n635' href='#n635'>635</a>
<a id='n636' href='#n636'>636</a>
<a id='n637' href='#n637'>637</a>
<a id='n638' href='#n638'>638</a>
<a id='n639' href='#n639'>639</a>
<a id='n640' href='#n640'>640</a>
<a id='n641' href='#n641'>641</a>
<a id='n642' href='#n642'>642</a>
<a id='n643' href='#n643'>643</a>
<a id='n644' href='#n644'>644</a>
<a id='n645' href='#n645'>645</a>
<a id='n646' href='#n646'>646</a>
<a id='n647' href='#n647'>647</a>
<a id='n648' href='#n648'>648</a>
<a id='n649' href='#n649'>649</a>
<a id='n650' href='#n650'>650</a>
<a id='n651' href='#n651'>651</a>
<a id='n652' href='#n652'>652</a>
<a id='n653' href='#n653'>653</a>
<a id='n654' href='#n654'>654</a>
<a id='n655' href='#n655'>655</a>
<a id='n656' href='#n656'>656</a>
<a id='n657' href='#n657'>657</a>
<a id='n658' href='#n658'>658</a>
<a id='n659' href='#n659'>659</a>
<a id='n660' href='#n660'>660</a>
<a id='n661' href='#n661'>661</a>
<a id='n662' href='#n662'>662</a>
<a id='n663' href='#n663'>663</a>
<a id='n664' href='#n664'>664</a>
<a id='n665' href='#n665'>665</a>
<a id='n666' href='#n666'>666</a>
<a id='n667' href='#n667'>667</a>
<a id='n668' href='#n668'>668</a>
<a id='n669' href='#n669'>669</a>
<a id='n670' href='#n670'>670</a>
<a id='n671' href='#n671'>671</a>
<a id='n672' href='#n672'>672</a>
<a id='n673' href='#n673'>673</a>
<a id='n674' href='#n674'>674</a>
<a id='n675' href='#n675'>675</a>
<a id='n676' href='#n676'>676</a>
<a id='n677' href='#n677'>677</a>
<a id='n678' href='#n678'>678</a>
<a id='n679' href='#n679'>679</a>
<a id='n680' href='#n680'>680</a>
<a id='n681' href='#n681'>681</a>
<a id='n682' href='#n682'>682</a>
<a id='n683' href='#n683'>683</a>
<a id='n684' href='#n684'>684</a>
<a id='n685' href='#n685'>685</a>
<a id='n686' href='#n686'>686</a>
<a id='n687' href='#n687'>687</a>
<a id='n688' href='#n688'>688</a>
<a id='n689' href='#n689'>689</a>
<a id='n690' href='#n690'>690</a>
<a id='n691' href='#n691'>691</a>
<a id='n692' href='#n692'>692</a>
<a id='n693' href='#n693'>693</a>
<a id='n694' href='#n694'>694</a>
<a id='n695' href='#n695'>695</a>
<a id='n696' href='#n696'>696</a>
<a id='n697' href='#n697'>697</a>
<a id='n698' href='#n698'>698</a>
<a id='n699' href='#n699'>699</a>
<a id='n700' href='#n700'>700</a>
<a id='n701' href='#n701'>701</a>
<a id='n702' href='#n702'>702</a>
<a id='n703' href='#n703'>703</a>
<a id='n704' href='#n704'>704</a>
<a id='n705' href='#n705'>705</a>
<a id='n706' href='#n706'>706</a>
<a id='n707' href='#n707'>707</a>
<a id='n708' href='#n708'>708</a>
<a id='n709' href='#n709'>709</a>
<a id='n710' href='#n710'>710</a>
<a id='n711' href='#n711'>711</a>
<a id='n712' href='#n712'>712</a>
<a id='n713' href='#n713'>713</a>
<a id='n714' href='#n714'>714</a>
<a id='n715' href='#n715'>715</a>
<a id='n716' href='#n716'>716</a>
<a id='n717' href='#n717'>717</a>
<a id='n718' href='#n718'>718</a>
<a id='n719' href='#n719'>719</a>
<a id='n720' href='#n720'>720</a>
<a id='n721' href='#n721'>721</a>
<a id='n722' href='#n722'>722</a>
<a id='n723' href='#n723'>723</a>
<a id='n724' href='#n724'>724</a>
<a id='n725' href='#n725'>725</a>
<a id='n726' href='#n726'>726</a>
<a id='n727' href='#n727'>727</a>
<a id='n728' href='#n728'>728</a>
<a id='n729' href='#n729'>729</a>
<a id='n730' href='#n730'>730</a>
<a id='n731' href='#n731'>731</a>
<a id='n732' href='#n732'>732</a>
<a id='n733' href='#n733'>733</a>
<a id='n734' href='#n734'>734</a>
<a id='n735' href='#n735'>735</a>
<a id='n736' href='#n736'>736</a>
<a id='n737' href='#n737'>737</a>
<a id='n738' href='#n738'>738</a>
<a id='n739' href='#n739'>739</a>
<a id='n740' href='#n740'>740</a>
<a id='n741' href='#n741'>741</a>
<a id='n742' href='#n742'>742</a>
<a id='n743' href='#n743'>743</a>
<a id='n744' href='#n744'>744</a>
<a id='n745' href='#n745'>745</a>
<a id='n746' href='#n746'>746</a>
<a id='n747' href='#n747'>747</a>
<a id='n748' href='#n748'>748</a>
<a id='n749' href='#n749'>749</a>
<a id='n750' href='#n750'>750</a>
<a id='n751' href='#n751'>751</a>
<a id='n752' href='#n752'>752</a>
<a id='n753' href='#n753'>753</a>
<a id='n754' href='#n754'>754</a>
<a id='n755' href='#n755'>755</a>
<a id='n756' href='#n756'>756</a>
<a id='n757' href='#n757'>757</a>
<a id='n758' href='#n758'>758</a>
<a id='n759' href='#n759'>759</a>
<a id='n760' href='#n760'>760</a>
<a id='n761' href='#n761'>761</a>
<a id='n762' href='#n762'>762</a>
<a id='n763' href='#n763'>763</a>
<a id='n764' href='#n764'>764</a>
<a id='n765' href='#n765'>765</a>
<a id='n766' href='#n766'>766</a>
<a id='n767' href='#n767'>767</a>
<a id='n768' href='#n768'>768</a>
<a id='n769' href='#n769'>769</a>
<a id='n770' href='#n770'>770</a>
<a id='n771' href='#n771'>771</a>
<a id='n772' href='#n772'>772</a>
<a id='n773' href='#n773'>773</a>
<a id='n774' href='#n774'>774</a>
<a id='n775' href='#n775'>775</a>
<a id='n776' href='#n776'>776</a>
<a id='n777' href='#n777'>777</a>
<a id='n778' href='#n778'>778</a>
<a id='n779' href='#n779'>779</a>
<a id='n780' href='#n780'>780</a>
<a id='n781' href='#n781'>781</a>
<a id='n782' href='#n782'>782</a>
<a id='n783' href='#n783'>783</a>
<a id='n784' href='#n784'>784</a>
<a id='n785' href='#n785'>785</a>
<a id='n786' href='#n786'>786</a>
<a id='n787' href='#n787'>787</a>
<a id='n788' href='#n788'>788</a>
<a id='n789' href='#n789'>789</a>
<a id='n790' href='#n790'>790</a>
<a id='n791' href='#n791'>791</a>
<a id='n792' href='#n792'>792</a>
<a id='n793' href='#n793'>793</a>
<a id='n794' href='#n794'>794</a>
<a id='n795' href='#n795'>795</a>
<a id='n796' href='#n796'>796</a>
<a id='n797' href='#n797'>797</a>
<a id='n798' href='#n798'>798</a>
<a id='n799' href='#n799'>799</a>
<a id='n800' href='#n800'>800</a>
<a id='n801' href='#n801'>801</a>
<a id='n802' href='#n802'>802</a>
<a id='n803' href='#n803'>803</a>
<a id='n804' href='#n804'>804</a>
<a id='n805' href='#n805'>805</a>
<a id='n806' href='#n806'>806</a>
<a id='n807' href='#n807'>807</a>
<a id='n808' href='#n808'>808</a>
<a id='n809' href='#n809'>809</a>
<a id='n810' href='#n810'>810</a>
<a id='n811' href='#n811'>811</a>
<a id='n812' href='#n812'>812</a>
<a id='n813' href='#n813'>813</a>
<a id='n814' href='#n814'>814</a>
<a id='n815' href='#n815'>815</a>
<a id='n816' href='#n816'>816</a>
<a id='n817' href='#n817'>817</a>
<a id='n818' href='#n818'>818</a>
<a id='n819' href='#n819'>819</a>
<a id='n820' href='#n820'>820</a>
<a id='n821' href='#n821'>821</a>
<a id='n822' href='#n822'>822</a>
<a id='n823' href='#n823'>823</a>
<a id='n824' href='#n824'>824</a>
<a id='n825' href='#n825'>825</a>
<a id='n826' href='#n826'>826</a>
<a id='n827' href='#n827'>827</a>
<a id='n828' href='#n828'>828</a>
<a id='n829' href='#n829'>829</a>
<a id='n830' href='#n830'>830</a>
<a id='n831' href='#n831'>831</a>
<a id='n832' href='#n832'>832</a>
<a id='n833' href='#n833'>833</a>
<a id='n834' href='#n834'>834</a>
<a id='n835' href='#n835'>835</a>
<a id='n836' href='#n836'>836</a>
<a id='n837' href='#n837'>837</a>
<a id='n838' href='#n838'>838</a>
<a id='n839' href='#n839'>839</a>
<a id='n840' href='#n840'>840</a>
<a id='n841' href='#n841'>841</a>
<a id='n842' href='#n842'>842</a>
<a id='n843' href='#n843'>843</a>
<a id='n844' href='#n844'>844</a>
<a id='n845' href='#n845'>845</a>
<a id='n846' href='#n846'>846</a>
<a id='n847' href='#n847'>847</a>
<a id='n848' href='#n848'>848</a>
<a id='n849' href='#n849'>849</a>
<a id='n850' href='#n850'>850</a>
<a id='n851' href='#n851'>851</a>
<a id='n852' href='#n852'>852</a>
<a id='n853' href='#n853'>853</a>
<a id='n854' href='#n854'>854</a>
<a id='n855' href='#n855'>855</a>
<a id='n856' href='#n856'>856</a>
<a id='n857' href='#n857'>857</a>
<a id='n858' href='#n858'>858</a>
<a id='n859' href='#n859'>859</a>
<a id='n860' href='#n860'>860</a>
<a id='n861' href='#n861'>861</a>
<a id='n862' href='#n862'>862</a>
<a id='n863' href='#n863'>863</a>
<a id='n864' href='#n864'>864</a>
<a id='n865' href='#n865'>865</a>
<a id='n866' href='#n866'>866</a>
<a id='n867' href='#n867'>867</a>
<a id='n868' href='#n868'>868</a>
<a id='n869' href='#n869'>869</a>
<a id='n870' href='#n870'>870</a>
<a id='n871' href='#n871'>871</a>
<a id='n872' href='#n872'>872</a>
<a id='n873' href='#n873'>873</a>
<a id='n874' href='#n874'>874</a>
<a id='n875' href='#n875'>875</a>
<a id='n876' href='#n876'>876</a>
<a id='n877' href='#n877'>877</a>
<a id='n878' href='#n878'>878</a>
<a id='n879' href='#n879'>879</a>
<a id='n880' href='#n880'>880</a>
<a id='n881' href='#n881'>881</a>
<a id='n882' href='#n882'>882</a>
<a id='n883' href='#n883'>883</a>
<a id='n884' href='#n884'>884</a>
<a id='n885' href='#n885'>885</a>
<a id='n886' href='#n886'>886</a>
<a id='n887' href='#n887'>887</a>
<a id='n888' href='#n888'>888</a>
<a id='n889' href='#n889'>889</a>
<a id='n890' href='#n890'>890</a>
<a id='n891' href='#n891'>891</a>
<a id='n892' href='#n892'>892</a>
<a id='n893' href='#n893'>893</a>
<a id='n894' href='#n894'>894</a>
<a id='n895' href='#n895'>895</a>
<a id='n896' href='#n896'>896</a>
<a id='n897' href='#n897'>897</a>
<a id='n898' href='#n898'>898</a>
<a id='n899' href='#n899'>899</a>
<a id='n900' href='#n900'>900</a>
<a id='n901' href='#n901'>901</a>
<a id='n902' href='#n902'>902</a>
<a id='n903' href='#n903'>903</a>
<a id='n904' href='#n904'>904</a>
<a id='n905' href='#n905'>905</a>
<a id='n906' href='#n906'>906</a>
<a id='n907' href='#n907'>907</a>
<a id='n908' href='#n908'>908</a>
<a id='n909' href='#n909'>909</a>
<a id='n910' href='#n910'>910</a>
<a id='n911' href='#n911'>911</a>
<a id='n912' href='#n912'>912</a>
<a id='n913' href='#n913'>913</a>
<a id='n914' href='#n914'>914</a>
<a id='n915' href='#n915'>915</a>
<a id='n916' href='#n916'>916</a>
<a id='n917' href='#n917'>917</a>
<a id='n918' href='#n918'>918</a>
<a id='n919' href='#n919'>919</a>
<a id='n920' href='#n920'>920</a>
<a id='n921' href='#n921'>921</a>
<a id='n922' href='#n922'>922</a>
<a id='n923' href='#n923'>923</a>
<a id='n924' href='#n924'>924</a>
<a id='n925' href='#n925'>925</a>
<a id='n926' href='#n926'>926</a>
<a id='n927' href='#n927'>927</a>
<a id='n928' href='#n928'>928</a>
<a id='n929' href='#n929'>929</a>
<a id='n930' href='#n930'>930</a>
<a id='n931' href='#n931'>931</a>
<a id='n932' href='#n932'>932</a>
<a id='n933' href='#n933'>933</a>
<a id='n934' href='#n934'>934</a>
<a id='n935' href='#n935'>935</a>
<a id='n936' href='#n936'>936</a>
<a id='n937' href='#n937'>937</a>
<a id='n938' href='#n938'>938</a>
<a id='n939' href='#n939'>939</a>
<a id='n940' href='#n940'>940</a>
<a id='n941' href='#n941'>941</a>
<a id='n942' href='#n942'>942</a>
<a id='n943' href='#n943'>943</a>
<a id='n944' href='#n944'>944</a>
<a id='n945' href='#n945'>945</a>
<a id='n946' href='#n946'>946</a>
<a id='n947' href='#n947'>947</a>
<a id='n948' href='#n948'>948</a>
<a id='n949' href='#n949'>949</a>
<a id='n950' href='#n950'>950</a>
<a id='n951' href='#n951'>951</a>
<a id='n952' href='#n952'>952</a>
<a id='n953' href='#n953'>953</a>
<a id='n954' href='#n954'>954</a>
<a id='n955' href='#n955'>955</a>
<a id='n956' href='#n956'>956</a>
<a id='n957' href='#n957'>957</a>
<a id='n958' href='#n958'>958</a>
<a id='n959' href='#n959'>959</a>
<a id='n960' href='#n960'>960</a>
<a id='n961' href='#n961'>961</a>
<a id='n962' href='#n962'>962</a>
<a id='n963' href='#n963'>963</a>
<a id='n964' href='#n964'>964</a>
<a id='n965' href='#n965'>965</a>
<a id='n966' href='#n966'>966</a>
<a id='n967' href='#n967'>967</a>
<a id='n968' href='#n968'>968</a>
<a id='n969' href='#n969'>969</a>
<a id='n970' href='#n970'>970</a>
<a id='n971' href='#n971'>971</a>
<a id='n972' href='#n972'>972</a>
<a id='n973' href='#n973'>973</a>
<a id='n974' href='#n974'>974</a>
<a id='n975' href='#n975'>975</a>
<a id='n976' href='#n976'>976</a>
<a id='n977' href='#n977'>977</a>
<a id='n978' href='#n978'>978</a>
<a id='n979' href='#n979'>979</a>
<a id='n980' href='#n980'>980</a>
<a id='n981' href='#n981'>981</a>
<a id='n982' href='#n982'>982</a>
<a id='n983' href='#n983'>983</a>
<a id='n984' href='#n984'>984</a>
<a id='n985' href='#n985'>985</a>
<a id='n986' href='#n986'>986</a>
<a id='n987' href='#n987'>987</a>
<a id='n988' href='#n988'>988</a>
<a id='n989' href='#n989'>989</a>
<a id='n990' href='#n990'>990</a>
<a id='n991' href='#n991'>991</a>
<a id='n992' href='#n992'>992</a>
<a id='n993' href='#n993'>993</a>
<a id='n994' href='#n994'>994</a>
<a id='n995' href='#n995'>995</a>
<a id='n996' href='#n996'>996</a>
<a id='n997' href='#n997'>997</a>
<a id='n998' href='#n998'>998</a>
<a id='n999' href='#n999'>999</a>
<a id='n1000' href='#n1000'>1000</a>
<a id='n1001' href='#n1001'>1001</a>
<a id='n1002' href='#n1002'>1002</a>
<a id='n1003' href='#n1003'>1003</a>
<a id='n1004' href='#n1004'>1004</a>
<a id='n1005' href='#n1005'>1005</a>
<a id='n1006' href='#n1006'>1006</a>
<a id='n1007' href='#n1007'>1007</a>
<a id='n1008' href='#n1008'>1008</a>
<a id='n1009' href='#n1009'>1009</a>
<a id='n1010' href='#n1010'>1010</a>
<a id='n1011' href='#n1011'>1011</a>
<a id='n1012' href='#n1012'>1012</a>
<a id='n1013' href='#n1013'>1013</a>
<a id='n1014' href='#n1014'>1014</a>
<a id='n1015' href='#n1015'>1015</a>
<a id='n1016' href='#n1016'>1016</a>
<a id='n1017' href='#n1017'>1017</a>
<a id='n1018' href='#n1018'>1018</a>
<a id='n1019' href='#n1019'>1019</a>
<a id='n1020' href='#n1020'>1020</a>
<a id='n1021' href='#n1021'>1021</a>
<a id='n1022' href='#n1022'>1022</a>
<a id='n1023' href='#n1023'>1023</a>
<a id='n1024' href='#n1024'>1024</a>
<a id='n1025' href='#n1025'>1025</a>
<a id='n1026' href='#n1026'>1026</a>
<a id='n1027' href='#n1027'>1027</a>
<a id='n1028' href='#n1028'>1028</a>
<a id='n1029' href='#n1029'>1029</a>
<a id='n1030' href='#n1030'>1030</a>
<a id='n1031' href='#n1031'>1031</a>
<a id='n1032' href='#n1032'>1032</a>
<a id='n1033' href='#n1033'>1033</a>
<a id='n1034' href='#n1034'>1034</a>
<a id='n1035' href='#n1035'>1035</a>
<a id='n1036' href='#n1036'>1036</a>
<a id='n1037' href='#n1037'>1037</a>
<a id='n1038' href='#n1038'>1038</a>
<a id='n1039' href='#n1039'>1039</a>
<a id='n1040' href='#n1040'>1040</a>
<a id='n1041' href='#n1041'>1041</a>
<a id='n1042' href='#n1042'>1042</a>
<a id='n1043' href='#n1043'>1043</a>
<a id='n1044' href='#n1044'>1044</a>
<a id='n1045' href='#n1045'>1045</a>
<a id='n1046' href='#n1046'>1046</a>
<a id='n1047' href='#n1047'>1047</a>
<a id='n1048' href='#n1048'>1048</a>
<a id='n1049' href='#n1049'>1049</a>
<a id='n1050' href='#n1050'>1050</a>
<a id='n1051' href='#n1051'>1051</a>
<a id='n1052' href='#n1052'>1052</a>
<a id='n1053' href='#n1053'>1053</a>
<a id='n1054' href='#n1054'>1054</a>
<a id='n1055' href='#n1055'>1055</a>
<a id='n1056' href='#n1056'>1056</a>
<a id='n1057' href='#n1057'>1057</a>
<a id='n1058' href='#n1058'>1058</a>
<a id='n1059' href='#n1059'>1059</a>
<a id='n1060' href='#n1060'>1060</a>
<a id='n1061' href='#n1061'>1061</a>
<a id='n1062' href='#n1062'>1062</a>
<a id='n1063' href='#n1063'>1063</a>
<a id='n1064' href='#n1064'>1064</a>
<a id='n1065' href='#n1065'>1065</a>
<a id='n1066' href='#n1066'>1066</a>
<a id='n1067' href='#n1067'>1067</a>
<a id='n1068' href='#n1068'>1068</a>
<a id='n1069' href='#n1069'>1069</a>
<a id='n1070' href='#n1070'>1070</a>
<a id='n1071' href='#n1071'>1071</a>
<a id='n1072' href='#n1072'>1072</a>
<a id='n1073' href='#n1073'>1073</a>
<a id='n1074' href='#n1074'>1074</a>
<a id='n1075' href='#n1075'>1075</a>
<a id='n1076' href='#n1076'>1076</a>
<a id='n1077' href='#n1077'>1077</a>
<a id='n1078' href='#n1078'>1078</a>
<a id='n1079' href='#n1079'>1079</a>
<a id='n1080' href='#n1080'>1080</a>
<a id='n1081' href='#n1081'>1081</a>
<a id='n1082' href='#n1082'>1082</a>
<a id='n1083' href='#n1083'>1083</a>
<a id='n1084' href='#n1084'>1084</a>
<a id='n1085' href='#n1085'>1085</a>
<a id='n1086' href='#n1086'>1086</a>
<a id='n1087' href='#n1087'>1087</a>
<a id='n1088' href='#n1088'>1088</a>
<a id='n1089' href='#n1089'>1089</a>
<a id='n1090' href='#n1090'>1090</a>
<a id='n1091' href='#n1091'>1091</a>
<a id='n1092' href='#n1092'>1092</a>
<a id='n1093' href='#n1093'>1093</a>
<a id='n1094' href='#n1094'>1094</a>
<a id='n1095' href='#n1095'>1095</a>
<a id='n1096' href='#n1096'>1096</a>
<a id='n1097' href='#n1097'>1097</a>
<a id='n1098' href='#n1098'>1098</a>
<a id='n1099' href='#n1099'>1099</a>
<a id='n1100' href='#n1100'>1100</a>
<a id='n1101' href='#n1101'>1101</a>
<a id='n1102' href='#n1102'>1102</a>
<a id='n1103' href='#n1103'>1103</a>
<a id='n1104' href='#n1104'>1104</a>
<a id='n1105' href='#n1105'>1105</a>
<a id='n1106' href='#n1106'>1106</a>
<a id='n1107' href='#n1107'>1107</a>
<a id='n1108' href='#n1108'>1108</a>
<a id='n1109' href='#n1109'>1109</a>
<a id='n1110' href='#n1110'>1110</a>
<a id='n1111' href='#n1111'>1111</a>
<a id='n1112' href='#n1112'>1112</a>
<a id='n1113' href='#n1113'>1113</a>
<a id='n1114' href='#n1114'>1114</a>
<a id='n1115' href='#n1115'>1115</a>
<a id='n1116' href='#n1116'>1116</a>
<a id='n1117' href='#n1117'>1117</a>
<a id='n1118' href='#n1118'>1118</a>
<a id='n1119' href='#n1119'>1119</a>
<a id='n1120' href='#n1120'>1120</a>
<a id='n1121' href='#n1121'>1121</a>
<a id='n1122' href='#n1122'>1122</a>
<a id='n1123' href='#n1123'>1123</a>
<a id='n1124' href='#n1124'>1124</a>
<a id='n1125' href='#n1125'>1125</a>
<a id='n1126' href='#n1126'>1126</a>
<a id='n1127' href='#n1127'>1127</a>
<a id='n1128' href='#n1128'>1128</a>
<a id='n1129' href='#n1129'>1129</a>
<a id='n1130' href='#n1130'>1130</a>
<a id='n1131' href='#n1131'>1131</a>
<a id='n1132' href='#n1132'>1132</a>
<a id='n1133' href='#n1133'>1133</a>
<a id='n1134' href='#n1134'>1134</a>
<a id='n1135' href='#n1135'>1135</a>
<a id='n1136' href='#n1136'>1136</a>
<a id='n1137' href='#n1137'>1137</a>
<a id='n1138' href='#n1138'>1138</a>
<a id='n1139' href='#n1139'>1139</a>
<a id='n1140' href='#n1140'>1140</a>
<a id='n1141' href='#n1141'>1141</a>
<a id='n1142' href='#n1142'>1142</a>
<a id='n1143' href='#n1143'>1143</a>
<a id='n1144' href='#n1144'>1144</a>
<a id='n1145' href='#n1145'>1145</a>
<a id='n1146' href='#n1146'>1146</a>
<a id='n1147' href='#n1147'>1147</a>
<a id='n1148' href='#n1148'>1148</a>
<a id='n1149' href='#n1149'>1149</a>
<a id='n1150' href='#n1150'>1150</a>
<a id='n1151' href='#n1151'>1151</a>
<a id='n1152' href='#n1152'>1152</a>
<a id='n1153' href='#n1153'>1153</a>
<a id='n1154' href='#n1154'>1154</a>
<a id='n1155' href='#n1155'>1155</a>
<a id='n1156' href='#n1156'>1156</a>
<a id='n1157' href='#n1157'>1157</a>
<a id='n1158' href='#n1158'>1158</a>
<a id='n1159' href='#n1159'>1159</a>
<a id='n1160' href='#n1160'>1160</a>
<a id='n1161' href='#n1161'>1161</a>
<a id='n1162' href='#n1162'>1162</a>
<a id='n1163' href='#n1163'>1163</a>
<a id='n1164' href='#n1164'>1164</a>
<a id='n1165' href='#n1165'>1165</a>
<a id='n1166' href='#n1166'>1166</a>
<a id='n1167' href='#n1167'>1167</a>
<a id='n1168' href='#n1168'>1168</a>
<a id='n1169' href='#n1169'>1169</a>
<a id='n1170' href='#n1170'>1170</a>
<a id='n1171' href='#n1171'>1171</a>
<a id='n1172' href='#n1172'>1172</a>
<a id='n1173' href='#n1173'>1173</a>
<a id='n1174' href='#n1174'>1174</a>
<a id='n1175' href='#n1175'>1175</a>
<a id='n1176' href='#n1176'>1176</a>
<a id='n1177' href='#n1177'>1177</a>
<a id='n1178' href='#n1178'>1178</a>
<a id='n1179' href='#n1179'>1179</a>
<a id='n1180' href='#n1180'>1180</a>
<a id='n1181' href='#n1181'>1181</a>
<a id='n1182' href='#n1182'>1182</a>
<a id='n1183' href='#n1183'>1183</a>
<a id='n1184' href='#n1184'>1184</a>
<a id='n1185' href='#n1185'>1185</a>
<a id='n1186' href='#n1186'>1186</a>
<a id='n1187' href='#n1187'>1187</a>
<a id='n1188' href='#n1188'>1188</a>
<a id='n1189' href='#n1189'>1189</a>
<a id='n1190' href='#n1190'>1190</a>
<a id='n1191' href='#n1191'>1191</a>
<a id='n1192' href='#n1192'>1192</a>
<a id='n1193' href='#n1193'>1193</a>
<a id='n1194' href='#n1194'>1194</a>
<a id='n1195' href='#n1195'>1195</a>
<a id='n1196' href='#n1196'>1196</a>
<a id='n1197' href='#n1197'>1197</a>
<a id='n1198' href='#n1198'>1198</a>
<a id='n1199' href='#n1199'>1199</a>
<a id='n1200' href='#n1200'>1200</a>
<a id='n1201' href='#n1201'>1201</a>
<a id='n1202' href='#n1202'>1202</a>
<a id='n1203' href='#n1203'>1203</a>
<a id='n1204' href='#n1204'>1204</a>
<a id='n1205' href='#n1205'>1205</a>
<a id='n1206' href='#n1206'>1206</a>
<a id='n1207' href='#n1207'>1207</a>
<a id='n1208' href='#n1208'>1208</a>
<a id='n1209' href='#n1209'>1209</a>
<a id='n1210' href='#n1210'>1210</a>
<a id='n1211' href='#n1211'>1211</a>
<a id='n1212' href='#n1212'>1212</a>
<a id='n1213' href='#n1213'>1213</a>
<a id='n1214' href='#n1214'>1214</a>
<a id='n1215' href='#n1215'>1215</a>
<a id='n1216' href='#n1216'>1216</a>
<a id='n1217' href='#n1217'>1217</a>
<a id='n1218' href='#n1218'>1218</a>
<a id='n1219' href='#n1219'>1219</a>
<a id='n1220' href='#n1220'>1220</a>
<a id='n1221' href='#n1221'>1221</a>
<a id='n1222' href='#n1222'>1222</a>
<a id='n1223' href='#n1223'>1223</a>
<a id='n1224' href='#n1224'>1224</a>
<a id='n1225' href='#n1225'>1225</a>
<a id='n1226' href='#n1226'>1226</a>
<a id='n1227' href='#n1227'>1227</a>
<a id='n1228' href='#n1228'>1228</a>
<a id='n1229' href='#n1229'>1229</a>
<a id='n1230' href='#n1230'>1230</a>
<a id='n1231' href='#n1231'>1231</a>
<a id='n1232' href='#n1232'>1232</a>
<a id='n1233' href='#n1233'>1233</a>
<a id='n1234' href='#n1234'>1234</a>
<a id='n1235' href='#n1235'>1235</a>
<a id='n1236' href='#n1236'>1236</a>
<a id='n1237' href='#n1237'>1237</a>
<a id='n1238' href='#n1238'>1238</a>
<a id='n1239' href='#n1239'>1239</a>
<a id='n1240' href='#n1240'>1240</a>
<a id='n1241' href='#n1241'>1241</a>
<a id='n1242' href='#n1242'>1242</a>
<a id='n1243' href='#n1243'>1243</a>
<a id='n1244' href='#n1244'>1244</a>
<a id='n1245' href='#n1245'>1245</a>
<a id='n1246' href='#n1246'>1246</a>
<a id='n1247' href='#n1247'>1247</a>
<a id='n1248' href='#n1248'>1248</a>
<a id='n1249' href='#n1249'>1249</a>
<a id='n1250' href='#n1250'>1250</a>
<a id='n1251' href='#n1251'>1251</a>
<a id='n1252' href='#n1252'>1252</a>
<a id='n1253' href='#n1253'>1253</a>
<a id='n1254' href='#n1254'>1254</a>
<a id='n1255' href='#n1255'>1255</a>
<a id='n1256' href='#n1256'>1256</a>
<a id='n1257' href='#n1257'>1257</a>
<a id='n1258' href='#n1258'>1258</a>
<a id='n1259' href='#n1259'>1259</a>
<a id='n1260' href='#n1260'>1260</a>
<a id='n1261' href='#n1261'>1261</a>
<a id='n1262' href='#n1262'>1262</a>
<a id='n1263' href='#n1263'>1263</a>
<a id='n1264' href='#n1264'>1264</a>
<a id='n1265' href='#n1265'>1265</a>
<a id='n1266' href='#n1266'>1266</a>
<a id='n1267' href='#n1267'>1267</a>
<a id='n1268' href='#n1268'>1268</a>
<a id='n1269' href='#n1269'>1269</a>
<a id='n1270' href='#n1270'>1270</a>
<a id='n1271' href='#n1271'>1271</a>
<a id='n1272' href='#n1272'>1272</a>
<a id='n1273' href='#n1273'>1273</a>
<a id='n1274' href='#n1274'>1274</a>
<a id='n1275' href='#n1275'>1275</a>
<a id='n1276' href='#n1276'>1276</a>
<a id='n1277' href='#n1277'>1277</a>
<a id='n1278' href='#n1278'>1278</a>
<a id='n1279' href='#n1279'>1279</a>
<a id='n1280' href='#n1280'>1280</a>
<a id='n1281' href='#n1281'>1281</a>
<a id='n1282' href='#n1282'>1282</a>
<a id='n1283' href='#n1283'>1283</a>
<a id='n1284' href='#n1284'>1284</a>
<a id='n1285' href='#n1285'>1285</a>
<a id='n1286' href='#n1286'>1286</a>
<a id='n1287' href='#n1287'>1287</a>
<a id='n1288' href='#n1288'>1288</a>
<a id='n1289' href='#n1289'>1289</a>
<a id='n1290' href='#n1290'>1290</a>
<a id='n1291' href='#n1291'>1291</a>
<a id='n1292' href='#n1292'>1292</a>
<a id='n1293' href='#n1293'>1293</a>
<a id='n1294' href='#n1294'>1294</a>
<a id='n1295' href='#n1295'>1295</a>
<a id='n1296' href='#n1296'>1296</a>
<a id='n1297' href='#n1297'>1297</a>
<a id='n1298' href='#n1298'>1298</a>
<a id='n1299' href='#n1299'>1299</a>
<a id='n1300' href='#n1300'>1300</a>
<a id='n1301' href='#n1301'>1301</a>
<a id='n1302' href='#n1302'>1302</a>
<a id='n1303' href='#n1303'>1303</a>
<a id='n1304' href='#n1304'>1304</a>
<a id='n1305' href='#n1305'>1305</a>
<a id='n1306' href='#n1306'>1306</a>
<a id='n1307' href='#n1307'>1307</a>
<a id='n1308' href='#n1308'>1308</a>
<a id='n1309' href='#n1309'>1309</a>
<a id='n1310' href='#n1310'>1310</a>
<a id='n1311' href='#n1311'>1311</a>
<a id='n1312' href='#n1312'>1312</a>
<a id='n1313' href='#n1313'>1313</a>
<a id='n1314' href='#n1314'>1314</a>
<a id='n1315' href='#n1315'>1315</a>
<a id='n1316' href='#n1316'>1316</a>
<a id='n1317' href='#n1317'>1317</a>
<a id='n1318' href='#n1318'>1318</a>
<a id='n1319' href='#n1319'>1319</a>
<a id='n1320' href='#n1320'>1320</a>
<a id='n1321' href='#n1321'>1321</a>
<a id='n1322' href='#n1322'>1322</a>
<a id='n1323' href='#n1323'>1323</a>
<a id='n1324' href='#n1324'>1324</a>
<a id='n1325' href='#n1325'>1325</a>
<a id='n1326' href='#n1326'>1326</a>
<a id='n1327' href='#n1327'>1327</a>
<a id='n1328' href='#n1328'>1328</a>
<a id='n1329' href='#n1329'>1329</a>
<a id='n1330' href='#n1330'>1330</a>
<a id='n1331' href='#n1331'>1331</a>
<a id='n1332' href='#n1332'>1332</a>
<a id='n1333' href='#n1333'>1333</a>
<a id='n1334' href='#n1334'>1334</a>
<a id='n1335' href='#n1335'>1335</a>
<a id='n1336' href='#n1336'>1336</a>
<a id='n1337' href='#n1337'>1337</a>
<a id='n1338' href='#n1338'>1338</a>
<a id='n1339' href='#n1339'>1339</a>
<a id='n1340' href='#n1340'>1340</a>
<a id='n1341' href='#n1341'>1341</a>
<a id='n1342' href='#n1342'>1342</a>
<a id='n1343' href='#n1343'>1343</a>
<a id='n1344' href='#n1344'>1344</a>
<a id='n1345' href='#n1345'>1345</a>
<a id='n1346' href='#n1346'>1346</a>
<a id='n1347' href='#n1347'>1347</a>
<a id='n1348' href='#n1348'>1348</a>
<a id='n1349' href='#n1349'>1349</a>
<a id='n1350' href='#n1350'>1350</a>
<a id='n1351' href='#n1351'>1351</a>
<a id='n1352' href='#n1352'>1352</a>
<a id='n1353' href='#n1353'>1353</a>
<a id='n1354' href='#n1354'>1354</a>
<a id='n1355' href='#n1355'>1355</a>
<a id='n1356' href='#n1356'>1356</a>
<a id='n1357' href='#n1357'>1357</a>
<a id='n1358' href='#n1358'>1358</a>
<a id='n1359' href='#n1359'>1359</a>
<a id='n1360' href='#n1360'>1360</a>
<a id='n1361' href='#n1361'>1361</a>
<a id='n1362' href='#n1362'>1362</a>
<a id='n1363' href='#n1363'>1363</a>
<a id='n1364' href='#n1364'>1364</a>
<a id='n1365' href='#n1365'>1365</a>
<a id='n1366' href='#n1366'>1366</a>
<a id='n1367' href='#n1367'>1367</a>
<a id='n1368' href='#n1368'>1368</a>
<a id='n1369' href='#n1369'>1369</a>
<a id='n1370' href='#n1370'>1370</a>
<a id='n1371' href='#n1371'>1371</a>
<a id='n1372' href='#n1372'>1372</a>
<a id='n1373' href='#n1373'>1373</a>
<a id='n1374' href='#n1374'>1374</a>
<a id='n1375' href='#n1375'>1375</a>
<a id='n1376' href='#n1376'>1376</a>
<a id='n1377' href='#n1377'>1377</a>
<a id='n1378' href='#n1378'>1378</a>
<a id='n1379' href='#n1379'>1379</a>
<a id='n1380' href='#n1380'>1380</a>
<a id='n1381' href='#n1381'>1381</a>
<a id='n1382' href='#n1382'>1382</a>
<a id='n1383' href='#n1383'>1383</a>
<a id='n1384' href='#n1384'>1384</a>
<a id='n1385' href='#n1385'>1385</a>
<a id='n1386' href='#n1386'>1386</a>
<a id='n1387' href='#n1387'>1387</a>
<a id='n1388' href='#n1388'>1388</a>
<a id='n1389' href='#n1389'>1389</a>
<a id='n1390' href='#n1390'>1390</a>
<a id='n1391' href='#n1391'>1391</a>
<a id='n1392' href='#n1392'>1392</a>
<a id='n1393' href='#n1393'>1393</a>
<a id='n1394' href='#n1394'>1394</a>
<a id='n1395' href='#n1395'>1395</a>
<a id='n1396' href='#n1396'>1396</a>
<a id='n1397' href='#n1397'>1397</a>
<a id='n1398' href='#n1398'>1398</a>
<a id='n1399' href='#n1399'>1399</a>
<a id='n1400' href='#n1400'>1400</a>
<a id='n1401' href='#n1401'>1401</a>
<a id='n1402' href='#n1402'>1402</a>
<a id='n1403' href='#n1403'>1403</a>
<a id='n1404' href='#n1404'>1404</a>
<a id='n1405' href='#n1405'>1405</a>
<a id='n1406' href='#n1406'>1406</a>
<a id='n1407' href='#n1407'>1407</a>
<a id='n1408' href='#n1408'>1408</a>
<a id='n1409' href='#n1409'>1409</a>
<a id='n1410' href='#n1410'>1410</a>
<a id='n1411' href='#n1411'>1411</a>
<a id='n1412' href='#n1412'>1412</a>
<a id='n1413' href='#n1413'>1413</a>
<a id='n1414' href='#n1414'>1414</a>
<a id='n1415' href='#n1415'>1415</a>
<a id='n1416' href='#n1416'>1416</a>
<a id='n1417' href='#n1417'>1417</a>
<a id='n1418' href='#n1418'>1418</a>
<a id='n1419' href='#n1419'>1419</a>
<a id='n1420' href='#n1420'>1420</a>
<a id='n1421' href='#n1421'>1421</a>
<a id='n1422' href='#n1422'>1422</a>
<a id='n1423' href='#n1423'>1423</a>
<a id='n1424' href='#n1424'>1424</a>
<a id='n1425' href='#n1425'>1425</a>
<a id='n1426' href='#n1426'>1426</a>
<a id='n1427' href='#n1427'>1427</a>
<a id='n1428' href='#n1428'>1428</a>
<a id='n1429' href='#n1429'>1429</a>
<a id='n1430' href='#n1430'>1430</a>
<a id='n1431' href='#n1431'>1431</a>
<a id='n1432' href='#n1432'>1432</a>
<a id='n1433' href='#n1433'>1433</a>
<a id='n1434' href='#n1434'>1434</a>
<a id='n1435' href='#n1435'>1435</a>
<a id='n1436' href='#n1436'>1436</a>
<a id='n1437' href='#n1437'>1437</a>
<a id='n1438' href='#n1438'>1438</a>
<a id='n1439' href='#n1439'>1439</a>
<a id='n1440' href='#n1440'>1440</a>
<a id='n1441' href='#n1441'>1441</a>
<a id='n1442' href='#n1442'>1442</a>
<a id='n1443' href='#n1443'>1443</a>
<a id='n1444' href='#n1444'>1444</a>
<a id='n1445' href='#n1445'>1445</a>
<a id='n1446' href='#n1446'>1446</a>
<a id='n1447' href='#n1447'>1447</a>
<a id='n1448' href='#n1448'>1448</a>
<a id='n1449' href='#n1449'>1449</a>
<a id='n1450' href='#n1450'>1450</a>
<a id='n1451' href='#n1451'>1451</a>
<a id='n1452' href='#n1452'>1452</a>
<a id='n1453' href='#n1453'>1453</a>
<a id='n1454' href='#n1454'>1454</a>
<a id='n1455' href='#n1455'>1455</a>
<a id='n1456' href='#n1456'>1456</a>
<a id='n1457' href='#n1457'>1457</a>
<a id='n1458' href='#n1458'>1458</a>
<a id='n1459' href='#n1459'>1459</a>
<a id='n1460' href='#n1460'>1460</a>
<a id='n1461' href='#n1461'>1461</a>
<a id='n1462' href='#n1462'>1462</a>
<a id='n1463' href='#n1463'>1463</a>
<a id='n1464' href='#n1464'>1464</a>
<a id='n1465' href='#n1465'>1465</a>
<a id='n1466' href='#n1466'>1466</a>
<a id='n1467' href='#n1467'>1467</a>
<a id='n1468' href='#n1468'>1468</a>
<a id='n1469' href='#n1469'>1469</a>
<a id='n1470' href='#n1470'>1470</a>
<a id='n1471' href='#n1471'>1471</a>
<a id='n1472' href='#n1472'>1472</a>
<a id='n1473' href='#n1473'>1473</a>
<a id='n1474' href='#n1474'>1474</a>
<a id='n1475' href='#n1475'>1475</a>
<a id='n1476' href='#n1476'>1476</a>
<a id='n1477' href='#n1477'>1477</a>
<a id='n1478' href='#n1478'>1478</a>
<a id='n1479' href='#n1479'>1479</a>
<a id='n1480' href='#n1480'>1480</a>
<a id='n1481' href='#n1481'>1481</a>
<a id='n1482' href='#n1482'>1482</a>
<a id='n1483' href='#n1483'>1483</a>
<a id='n1484' href='#n1484'>1484</a>
<a id='n1485' href='#n1485'>1485</a>
<a id='n1486' href='#n1486'>1486</a>
<a id='n1487' href='#n1487'>1487</a>
<a id='n1488' href='#n1488'>1488</a>
<a id='n1489' href='#n1489'>1489</a>
<a id='n1490' href='#n1490'>1490</a>
<a id='n1491' href='#n1491'>1491</a>
<a id='n1492' href='#n1492'>1492</a>
<a id='n1493' href='#n1493'>1493</a>
<a id='n1494' href='#n1494'>1494</a>
<a id='n1495' href='#n1495'>1495</a>
<a id='n1496' href='#n1496'>1496</a>
<a id='n1497' href='#n1497'>1497</a>
<a id='n1498' href='#n1498'>1498</a>
<a id='n1499' href='#n1499'>1499</a>
<a id='n1500' href='#n1500'>1500</a>
<a id='n1501' href='#n1501'>1501</a>
<a id='n1502' href='#n1502'>1502</a>
<a id='n1503' href='#n1503'>1503</a>
<a id='n1504' href='#n1504'>1504</a>
<a id='n1505' href='#n1505'>1505</a>
<a id='n1506' href='#n1506'>1506</a>
<a id='n1507' href='#n1507'>1507</a>
<a id='n1508' href='#n1508'>1508</a>
<a id='n1509' href='#n1509'>1509</a>
<a id='n1510' href='#n1510'>1510</a>
<a id='n1511' href='#n1511'>1511</a>
<a id='n1512' href='#n1512'>1512</a>
<a id='n1513' href='#n1513'>1513</a>
<a id='n1514' href='#n1514'>1514</a>
<a id='n1515' href='#n1515'>1515</a>
<a id='n1516' href='#n1516'>1516</a>
<a id='n1517' href='#n1517'>1517</a>
<a id='n1518' href='#n1518'>1518</a>
<a id='n1519' href='#n1519'>1519</a>
<a id='n1520' href='#n1520'>1520</a>
<a id='n1521' href='#n1521'>1521</a>
<a id='n1522' href='#n1522'>1522</a>
<a id='n1523' href='#n1523'>1523</a>
<a id='n1524' href='#n1524'>1524</a>
<a id='n1525' href='#n1525'>1525</a>
<a id='n1526' href='#n1526'>1526</a>
<a id='n1527' href='#n1527'>1527</a>
<a id='n1528' href='#n1528'>1528</a>
<a id='n1529' href='#n1529'>1529</a>
<a id='n1530' href='#n1530'>1530</a>
<a id='n1531' href='#n1531'>1531</a>
<a id='n1532' href='#n1532'>1532</a>
<a id='n1533' href='#n1533'>1533</a>
<a id='n1534' href='#n1534'>1534</a>
<a id='n1535' href='#n1535'>1535</a>
<a id='n1536' href='#n1536'>1536</a>
<a id='n1537' href='#n1537'>1537</a>
<a id='n1538' href='#n1538'>1538</a>
<a id='n1539' href='#n1539'>1539</a>
<a id='n1540' href='#n1540'>1540</a>
<a id='n1541' href='#n1541'>1541</a>
<a id='n1542' href='#n1542'>1542</a>
<a id='n1543' href='#n1543'>1543</a>
<a id='n1544' href='#n1544'>1544</a>
<a id='n1545' href='#n1545'>1545</a>
<a id='n1546' href='#n1546'>1546</a>
<a id='n1547' href='#n1547'>1547</a>
<a id='n1548' href='#n1548'>1548</a>
<a id='n1549' href='#n1549'>1549</a>
<a id='n1550' href='#n1550'>1550</a>
<a id='n1551' href='#n1551'>1551</a>
<a id='n1552' href='#n1552'>1552</a>
<a id='n1553' href='#n1553'>1553</a>
<a id='n1554' href='#n1554'>1554</a>
<a id='n1555' href='#n1555'>1555</a>
<a id='n1556' href='#n1556'>1556</a>
<a id='n1557' href='#n1557'>1557</a>
<a id='n1558' href='#n1558'>1558</a>
<a id='n1559' href='#n1559'>1559</a>
<a id='n1560' href='#n1560'>1560</a>
<a id='n1561' href='#n1561'>1561</a>
<a id='n1562' href='#n1562'>1562</a>
<a id='n1563' href='#n1563'>1563</a>
<a id='n1564' href='#n1564'>1564</a>
<a id='n1565' href='#n1565'>1565</a>
<a id='n1566' href='#n1566'>1566</a>
<a id='n1567' href='#n1567'>1567</a>
<a id='n1568' href='#n1568'>1568</a>
<a id='n1569' href='#n1569'>1569</a>
<a id='n1570' href='#n1570'>1570</a>
<a id='n1571' href='#n1571'>1571</a>
<a id='n1572' href='#n1572'>1572</a>
<a id='n1573' href='#n1573'>1573</a>
<a id='n1574' href='#n1574'>1574</a>
<a id='n1575' href='#n1575'>1575</a>
<a id='n1576' href='#n1576'>1576</a>
<a id='n1577' href='#n1577'>1577</a>
<a id='n1578' href='#n1578'>1578</a>
<a id='n1579' href='#n1579'>1579</a>
<a id='n1580' href='#n1580'>1580</a>
<a id='n1581' href='#n1581'>1581</a>
<a id='n1582' href='#n1582'>1582</a>
<a id='n1583' href='#n1583'>1583</a>
<a id='n1584' href='#n1584'>1584</a>
<a id='n1585' href='#n1585'>1585</a>
<a id='n1586' href='#n1586'>1586</a>
<a id='n1587' href='#n1587'>1587</a>
<a id='n1588' href='#n1588'>1588</a>
<a id='n1589' href='#n1589'>1589</a>
<a id='n1590' href='#n1590'>1590</a>
<a id='n1591' href='#n1591'>1591</a>
<a id='n1592' href='#n1592'>1592</a>
<a id='n1593' href='#n1593'>1593</a>
<a id='n1594' href='#n1594'>1594</a>
<a id='n1595' href='#n1595'>1595</a>
<a id='n1596' href='#n1596'>1596</a>
<a id='n1597' href='#n1597'>1597</a>
<a id='n1598' href='#n1598'>1598</a>
<a id='n1599' href='#n1599'>1599</a>
<a id='n1600' href='#n1600'>1600</a>
<a id='n1601' href='#n1601'>1601</a>
<a id='n1602' href='#n1602'>1602</a>
<a id='n1603' href='#n1603'>1603</a>
<a id='n1604' href='#n1604'>1604</a>
<a id='n1605' href='#n1605'>1605</a>
<a id='n1606' href='#n1606'>1606</a>
<a id='n1607' href='#n1607'>1607</a>
<a id='n1608' href='#n1608'>1608</a>
<a id='n1609' href='#n1609'>1609</a>
<a id='n1610' href='#n1610'>1610</a>
<a id='n1611' href='#n1611'>1611</a>
<a id='n1612' href='#n1612'>1612</a>
<a id='n1613' href='#n1613'>1613</a>
<a id='n1614' href='#n1614'>1614</a>
<a id='n1615' href='#n1615'>1615</a>
<a id='n1616' href='#n1616'>1616</a>
<a id='n1617' href='#n1617'>1617</a>
<a id='n1618' href='#n1618'>1618</a>
<a id='n1619' href='#n1619'>1619</a>
<a id='n1620' href='#n1620'>1620</a>
<a id='n1621' href='#n1621'>1621</a>
<a id='n1622' href='#n1622'>1622</a>
<a id='n1623' href='#n1623'>1623</a>
<a id='n1624' href='#n1624'>1624</a>
<a id='n1625' href='#n1625'>1625</a>
<a id='n1626' href='#n1626'>1626</a>
<a id='n1627' href='#n1627'>1627</a>
<a id='n1628' href='#n1628'>1628</a>
<a id='n1629' href='#n1629'>1629</a>
<a id='n1630' href='#n1630'>1630</a>
<a id='n1631' href='#n1631'>1631</a>
<a id='n1632' href='#n1632'>1632</a>
<a id='n1633' href='#n1633'>1633</a>
<a id='n1634' href='#n1634'>1634</a>
<a id='n1635' href='#n1635'>1635</a>
<a id='n1636' href='#n1636'>1636</a>
<a id='n1637' href='#n1637'>1637</a>
<a id='n1638' href='#n1638'>1638</a>
<a id='n1639' href='#n1639'>1639</a>
<a id='n1640' href='#n1640'>1640</a>
<a id='n1641' href='#n1641'>1641</a>
<a id='n1642' href='#n1642'>1642</a>
<a id='n1643' href='#n1643'>1643</a>
<a id='n1644' href='#n1644'>1644</a>
<a id='n1645' href='#n1645'>1645</a>
<a id='n1646' href='#n1646'>1646</a>
<a id='n1647' href='#n1647'>1647</a>
<a id='n1648' href='#n1648'>1648</a>
<a id='n1649' href='#n1649'>1649</a>
<a id='n1650' href='#n1650'>1650</a>
<a id='n1651' href='#n1651'>1651</a>
<a id='n1652' href='#n1652'>1652</a>
<a id='n1653' href='#n1653'>1653</a>
<a id='n1654' href='#n1654'>1654</a>
<a id='n1655' href='#n1655'>1655</a>
<a id='n1656' href='#n1656'>1656</a>
<a id='n1657' href='#n1657'>1657</a>
<a id='n1658' href='#n1658'>1658</a>
<a id='n1659' href='#n1659'>1659</a>
<a id='n1660' href='#n1660'>1660</a>
<a id='n1661' href='#n1661'>1661</a>
<a id='n1662' href='#n1662'>1662</a>
<a id='n1663' href='#n1663'>1663</a>
<a id='n1664' href='#n1664'>1664</a>
<a id='n1665' href='#n1665'>1665</a>
<a id='n1666' href='#n1666'>1666</a>
<a id='n1667' href='#n1667'>1667</a>
<a id='n1668' href='#n1668'>1668</a>
<a id='n1669' href='#n1669'>1669</a>
<a id='n1670' href='#n1670'>1670</a>
<a id='n1671' href='#n1671'>1671</a>
<a id='n1672' href='#n1672'>1672</a>
<a id='n1673' href='#n1673'>1673</a>
<a id='n1674' href='#n1674'>1674</a>
<a id='n1675' href='#n1675'>1675</a>
<a id='n1676' href='#n1676'>1676</a>
<a id='n1677' href='#n1677'>1677</a>
<a id='n1678' href='#n1678'>1678</a>
<a id='n1679' href='#n1679'>1679</a>
<a id='n1680' href='#n1680'>1680</a>
<a id='n1681' href='#n1681'>1681</a>
<a id='n1682' href='#n1682'>1682</a>
<a id='n1683' href='#n1683'>1683</a>
<a id='n1684' href='#n1684'>1684</a>
<a id='n1685' href='#n1685'>1685</a>
<a id='n1686' href='#n1686'>1686</a>
<a id='n1687' href='#n1687'>1687</a>
<a id='n1688' href='#n1688'>1688</a>
<a id='n1689' href='#n1689'>1689</a>
<a id='n1690' href='#n1690'>1690</a>
<a id='n1691' href='#n1691'>1691</a>
<a id='n1692' href='#n1692'>1692</a>
<a id='n1693' href='#n1693'>1693</a>
<a id='n1694' href='#n1694'>1694</a>
<a id='n1695' href='#n1695'>1695</a>
<a id='n1696' href='#n1696'>1696</a>
<a id='n1697' href='#n1697'>1697</a>
<a id='n1698' href='#n1698'>1698</a>
<a id='n1699' href='#n1699'>1699</a>
<a id='n1700' href='#n1700'>1700</a>
<a id='n1701' href='#n1701'>1701</a>
<a id='n1702' href='#n1702'>1702</a>
<a id='n1703' href='#n1703'>1703</a>
<a id='n1704' href='#n1704'>1704</a>
<a id='n1705' href='#n1705'>1705</a>
<a id='n1706' href='#n1706'>1706</a>
<a id='n1707' href='#n1707'>1707</a>
<a id='n1708' href='#n1708'>1708</a>
<a id='n1709' href='#n1709'>1709</a>
<a id='n1710' href='#n1710'>1710</a>
<a id='n1711' href='#n1711'>1711</a>
<a id='n1712' href='#n1712'>1712</a>
<a id='n1713' href='#n1713'>1713</a>
<a id='n1714' href='#n1714'>1714</a>
<a id='n1715' href='#n1715'>1715</a>
<a id='n1716' href='#n1716'>1716</a>
<a id='n1717' href='#n1717'>1717</a>
<a id='n1718' href='#n1718'>1718</a>
<a id='n1719' href='#n1719'>1719</a>
<a id='n1720' href='#n1720'>1720</a>
<a id='n1721' href='#n1721'>1721</a>
<a id='n1722' href='#n1722'>1722</a>
<a id='n1723' href='#n1723'>1723</a>
<a id='n1724' href='#n1724'>1724</a>
<a id='n1725' href='#n1725'>1725</a>
<a id='n1726' href='#n1726'>1726</a>
<a id='n1727' href='#n1727'>1727</a>
<a id='n1728' href='#n1728'>1728</a>
<a id='n1729' href='#n1729'>1729</a>
<a id='n1730' href='#n1730'>1730</a>
<a id='n1731' href='#n1731'>1731</a>
<a id='n1732' href='#n1732'>1732</a>
<a id='n1733' href='#n1733'>1733</a>
<a id='n1734' href='#n1734'>1734</a>
<a id='n1735' href='#n1735'>1735</a>
<a id='n1736' href='#n1736'>1736</a>
<a id='n1737' href='#n1737'>1737</a>
<a id='n1738' href='#n1738'>1738</a>
<a id='n1739' href='#n1739'>1739</a>
<a id='n1740' href='#n1740'>1740</a>
<a id='n1741' href='#n1741'>1741</a>
<a id='n1742' href='#n1742'>1742</a>
<a id='n1743' href='#n1743'>1743</a>
<a id='n1744' href='#n1744'>1744</a>
<a id='n1745' href='#n1745'>1745</a>
<a id='n1746' href='#n1746'>1746</a>
<a id='n1747' href='#n1747'>1747</a>
<a id='n1748' href='#n1748'>1748</a>
<a id='n1749' href='#n1749'>1749</a>
<a id='n1750' href='#n1750'>1750</a>
<a id='n1751' href='#n1751'>1751</a>
<a id='n1752' href='#n1752'>1752</a>
<a id='n1753' href='#n1753'>1753</a>
<a id='n1754' href='#n1754'>1754</a>
<a id='n1755' href='#n1755'>1755</a>
<a id='n1756' href='#n1756'>1756</a>
<a id='n1757' href='#n1757'>1757</a>
<a id='n1758' href='#n1758'>1758</a>
<a id='n1759' href='#n1759'>1759</a>
<a id='n1760' href='#n1760'>1760</a>
<a id='n1761' href='#n1761'>1761</a>
<a id='n1762' href='#n1762'>1762</a>
<a id='n1763' href='#n1763'>1763</a>
<a id='n1764' href='#n1764'>1764</a>
<a id='n1765' href='#n1765'>1765</a>
<a id='n1766' href='#n1766'>1766</a>
<a id='n1767' href='#n1767'>1767</a>
<a id='n1768' href='#n1768'>1768</a>
<a id='n1769' href='#n1769'>1769</a>
<a id='n1770' href='#n1770'>1770</a>
<a id='n1771' href='#n1771'>1771</a>
<a id='n1772' href='#n1772'>1772</a>
<a id='n1773' href='#n1773'>1773</a>
<a id='n1774' href='#n1774'>1774</a>
<a id='n1775' href='#n1775'>1775</a>
<a id='n1776' href='#n1776'>1776</a>
<a id='n1777' href='#n1777'>1777</a>
<a id='n1778' href='#n1778'>1778</a>
<a id='n1779' href='#n1779'>1779</a>
<a id='n1780' href='#n1780'>1780</a>
<a id='n1781' href='#n1781'>1781</a>
<a id='n1782' href='#n1782'>1782</a>
<a id='n1783' href='#n1783'>1783</a>
<a id='n1784' href='#n1784'>1784</a>
<a id='n1785' href='#n1785'>1785</a>
<a id='n1786' href='#n1786'>1786</a>
<a id='n1787' href='#n1787'>1787</a>
<a id='n1788' href='#n1788'>1788</a>
<a id='n1789' href='#n1789'>1789</a>
<a id='n1790' href='#n1790'>1790</a>
<a id='n1791' href='#n1791'>1791</a>
<a id='n1792' href='#n1792'>1792</a>
<a id='n1793' href='#n1793'>1793</a>
<a id='n1794' href='#n1794'>1794</a>
<a id='n1795' href='#n1795'>1795</a>
<a id='n1796' href='#n1796'>1796</a>
<a id='n1797' href='#n1797'>1797</a>
<a id='n1798' href='#n1798'>1798</a>
<a id='n1799' href='#n1799'>1799</a>
<a id='n1800' href='#n1800'>1800</a>
<a id='n1801' href='#n1801'>1801</a>
<a id='n1802' href='#n1802'>1802</a>
<a id='n1803' href='#n1803'>1803</a>
<a id='n1804' href='#n1804'>1804</a>
<a id='n1805' href='#n1805'>1805</a>
<a id='n1806' href='#n1806'>1806</a>
<a id='n1807' href='#n1807'>1807</a>
<a id='n1808' href='#n1808'>1808</a>
<a id='n1809' href='#n1809'>1809</a>
<a id='n1810' href='#n1810'>1810</a>
<a id='n1811' href='#n1811'>1811</a>
<a id='n1812' href='#n1812'>1812</a>
<a id='n1813' href='#n1813'>1813</a>
<a id='n1814' href='#n1814'>1814</a>
<a id='n1815' href='#n1815'>1815</a>
<a id='n1816' href='#n1816'>1816</a>
<a id='n1817' href='#n1817'>1817</a>
<a id='n1818' href='#n1818'>1818</a>
<a id='n1819' href='#n1819'>1819</a>
<a id='n1820' href='#n1820'>1820</a>
<a id='n1821' href='#n1821'>1821</a>
<a id='n1822' href='#n1822'>1822</a>
<a id='n1823' href='#n1823'>1823</a>
<a id='n1824' href='#n1824'>1824</a>
<a id='n1825' href='#n1825'>1825</a>
<a id='n1826' href='#n1826'>1826</a>
<a id='n1827' href='#n1827'>1827</a>
<a id='n1828' href='#n1828'>1828</a>
<a id='n1829' href='#n1829'>1829</a>
<a id='n1830' href='#n1830'>1830</a>
<a id='n1831' href='#n1831'>1831</a>
<a id='n1832' href='#n1832'>1832</a>
<a id='n1833' href='#n1833'>1833</a>
<a id='n1834' href='#n1834'>1834</a>
<a id='n1835' href='#n1835'>1835</a>
<a id='n1836' href='#n1836'>1836</a>
<a id='n1837' href='#n1837'>1837</a>
<a id='n1838' href='#n1838'>1838</a>
<a id='n1839' href='#n1839'>1839</a>
<a id='n1840' href='#n1840'>1840</a>
<a id='n1841' href='#n1841'>1841</a>
<a id='n1842' href='#n1842'>1842</a>
<a id='n1843' href='#n1843'>1843</a>
<a id='n1844' href='#n1844'>1844</a>
<a id='n1845' href='#n1845'>1845</a>
<a id='n1846' href='#n1846'>1846</a>
<a id='n1847' href='#n1847'>1847</a>
<a id='n1848' href='#n1848'>1848</a>
<a id='n1849' href='#n1849'>1849</a>
<a id='n1850' href='#n1850'>1850</a>
<a id='n1851' href='#n1851'>1851</a>
<a id='n1852' href='#n1852'>1852</a>
<a id='n1853' href='#n1853'>1853</a>
<a id='n1854' href='#n1854'>1854</a>
<a id='n1855' href='#n1855'>1855</a>
<a id='n1856' href='#n1856'>1856</a>
<a id='n1857' href='#n1857'>1857</a>
<a id='n1858' href='#n1858'>1858</a>
<a id='n1859' href='#n1859'>1859</a>
<a id='n1860' href='#n1860'>1860</a>
<a id='n1861' href='#n1861'>1861</a>
<a id='n1862' href='#n1862'>1862</a>
<a id='n1863' href='#n1863'>1863</a>
<a id='n1864' href='#n1864'>1864</a>
<a id='n1865' href='#n1865'>1865</a>
<a id='n1866' href='#n1866'>1866</a>
<a id='n1867' href='#n1867'>1867</a>
<a id='n1868' href='#n1868'>1868</a>
<a id='n1869' href='#n1869'>1869</a>
<a id='n1870' href='#n1870'>1870</a>
<a id='n1871' href='#n1871'>1871</a>
<a id='n1872' href='#n1872'>1872</a>
<a id='n1873' href='#n1873'>1873</a>
<a id='n1874' href='#n1874'>1874</a>
<a id='n1875' href='#n1875'>1875</a>
<a id='n1876' href='#n1876'>1876</a>
<a id='n1877' href='#n1877'>1877</a>
<a id='n1878' href='#n1878'>1878</a>
<a id='n1879' href='#n1879'>1879</a>
<a id='n1880' href='#n1880'>1880</a>
<a id='n1881' href='#n1881'>1881</a>
<a id='n1882' href='#n1882'>1882</a>
<a id='n1883' href='#n1883'>1883</a>
<a id='n1884' href='#n1884'>1884</a>
<a id='n1885' href='#n1885'>1885</a>
<a id='n1886' href='#n1886'>1886</a>
<a id='n1887' href='#n1887'>1887</a>
<a id='n1888' href='#n1888'>1888</a>
<a id='n1889' href='#n1889'>1889</a>
<a id='n1890' href='#n1890'>1890</a>
<a id='n1891' href='#n1891'>1891</a>
<a id='n1892' href='#n1892'>1892</a>
<a id='n1893' href='#n1893'>1893</a>
<a id='n1894' href='#n1894'>1894</a>
<a id='n1895' href='#n1895'>1895</a>
<a id='n1896' href='#n1896'>1896</a>
<a id='n1897' href='#n1897'>1897</a>
<a id='n1898' href='#n1898'>1898</a>
<a id='n1899' href='#n1899'>1899</a>
<a id='n1900' href='#n1900'>1900</a>
<a id='n1901' href='#n1901'>1901</a>
<a id='n1902' href='#n1902'>1902</a>
<a id='n1903' href='#n1903'>1903</a>
<a id='n1904' href='#n1904'>1904</a>
<a id='n1905' href='#n1905'>1905</a>
<a id='n1906' href='#n1906'>1906</a>
<a id='n1907' href='#n1907'>1907</a>
<a id='n1908' href='#n1908'>1908</a>
<a id='n1909' href='#n1909'>1909</a>
<a id='n1910' href='#n1910'>1910</a>
<a id='n1911' href='#n1911'>1911</a>
<a id='n1912' href='#n1912'>1912</a>
<a id='n1913' href='#n1913'>1913</a>
<a id='n1914' href='#n1914'>1914</a>
<a id='n1915' href='#n1915'>1915</a>
<a id='n1916' href='#n1916'>1916</a>
<a id='n1917' href='#n1917'>1917</a>
<a id='n1918' href='#n1918'>1918</a>
<a id='n1919' href='#n1919'>1919</a>
<a id='n1920' href='#n1920'>1920</a>
<a id='n1921' href='#n1921'>1921</a>
<a id='n1922' href='#n1922'>1922</a>
<a id='n1923' href='#n1923'>1923</a>
<a id='n1924' href='#n1924'>1924</a>
<a id='n1925' href='#n1925'>1925</a>
<a id='n1926' href='#n1926'>1926</a>
<a id='n1927' href='#n1927'>1927</a>
<a id='n1928' href='#n1928'>1928</a>
<a id='n1929' href='#n1929'>1929</a>
<a id='n1930' href='#n1930'>1930</a>
<a id='n1931' href='#n1931'>1931</a>
<a id='n1932' href='#n1932'>1932</a>
<a id='n1933' href='#n1933'>1933</a>
<a id='n1934' href='#n1934'>1934</a>
<a id='n1935' href='#n1935'>1935</a>
<a id='n1936' href='#n1936'>1936</a>
<a id='n1937' href='#n1937'>1937</a>
<a id='n1938' href='#n1938'>1938</a>
<a id='n1939' href='#n1939'>1939</a>
<a id='n1940' href='#n1940'>1940</a>
<a id='n1941' href='#n1941'>1941</a>
<a id='n1942' href='#n1942'>1942</a>
<a id='n1943' href='#n1943'>1943</a>
<a id='n1944' href='#n1944'>1944</a>
<a id='n1945' href='#n1945'>1945</a>
<a id='n1946' href='#n1946'>1946</a>
<a id='n1947' href='#n1947'>1947</a>
<a id='n1948' href='#n1948'>1948</a>
<a id='n1949' href='#n1949'>1949</a>
<a id='n1950' href='#n1950'>1950</a>
<a id='n1951' href='#n1951'>1951</a>
<a id='n1952' href='#n1952'>1952</a>
<a id='n1953' href='#n1953'>1953</a>
<a id='n1954' href='#n1954'>1954</a>
<a id='n1955' href='#n1955'>1955</a>
<a id='n1956' href='#n1956'>1956</a>
<a id='n1957' href='#n1957'>1957</a>
<a id='n1958' href='#n1958'>1958</a>
<a id='n1959' href='#n1959'>1959</a>
<a id='n1960' href='#n1960'>1960</a>
<a id='n1961' href='#n1961'>1961</a>
<a id='n1962' href='#n1962'>1962</a>
<a id='n1963' href='#n1963'>1963</a>
<a id='n1964' href='#n1964'>1964</a>
<a id='n1965' href='#n1965'>1965</a>
<a id='n1966' href='#n1966'>1966</a>
<a id='n1967' href='#n1967'>1967</a>
<a id='n1968' href='#n1968'>1968</a>
<a id='n1969' href='#n1969'>1969</a>
<a id='n1970' href='#n1970'>1970</a>
<a id='n1971' href='#n1971'>1971</a>
<a id='n1972' href='#n1972'>1972</a>
<a id='n1973' href='#n1973'>1973</a>
<a id='n1974' href='#n1974'>1974</a>
<a id='n1975' href='#n1975'>1975</a>
<a id='n1976' href='#n1976'>1976</a>
<a id='n1977' href='#n1977'>1977</a>
<a id='n1978' href='#n1978'>1978</a>
<a id='n1979' href='#n1979'>1979</a>
<a id='n1980' href='#n1980'>1980</a>
<a id='n1981' href='#n1981'>1981</a>
<a id='n1982' href='#n1982'>1982</a>
<a id='n1983' href='#n1983'>1983</a>
<a id='n1984' href='#n1984'>1984</a>
<a id='n1985' href='#n1985'>1985</a>
<a id='n1986' href='#n1986'>1986</a>
<a id='n1987' href='#n1987'>1987</a>
<a id='n1988' href='#n1988'>1988</a>
<a id='n1989' href='#n1989'>1989</a>
<a id='n1990' href='#n1990'>1990</a>
<a id='n1991' href='#n1991'>1991</a>
<a id='n1992' href='#n1992'>1992</a>
<a id='n1993' href='#n1993'>1993</a>
<a id='n1994' href='#n1994'>1994</a>
<a id='n1995' href='#n1995'>1995</a>
<a id='n1996' href='#n1996'>1996</a>
<a id='n1997' href='#n1997'>1997</a>
<a id='n1998' href='#n1998'>1998</a>
<a id='n1999' href='#n1999'>1999</a>
<a id='n2000' href='#n2000'>2000</a>
<a id='n2001' href='#n2001'>2001</a>
<a id='n2002' href='#n2002'>2002</a>
<a id='n2003' href='#n2003'>2003</a>
<a id='n2004' href='#n2004'>2004</a>
<a id='n2005' href='#n2005'>2005</a>
<a id='n2006' href='#n2006'>2006</a>
<a id='n2007' href='#n2007'>2007</a>
<a id='n2008' href='#n2008'>2008</a>
<a id='n2009' href='#n2009'>2009</a>
<a id='n2010' href='#n2010'>2010</a>
<a id='n2011' href='#n2011'>2011</a>
<a id='n2012' href='#n2012'>2012</a>
<a id='n2013' href='#n2013'>2013</a>
<a id='n2014' href='#n2014'>2014</a>
<a id='n2015' href='#n2015'>2015</a>
<a id='n2016' href='#n2016'>2016</a>
<a id='n2017' href='#n2017'>2017</a>
<a id='n2018' href='#n2018'>2018</a>
<a id='n2019' href='#n2019'>2019</a>
<a id='n2020' href='#n2020'>2020</a>
<a id='n2021' href='#n2021'>2021</a>
<a id='n2022' href='#n2022'>2022</a>
<a id='n2023' href='#n2023'>2023</a>
<a id='n2024' href='#n2024'>2024</a>
<a id='n2025' href='#n2025'>2025</a>
<a id='n2026' href='#n2026'>2026</a>
<a id='n2027' href='#n2027'>2027</a>
<a id='n2028' href='#n2028'>2028</a>
<a id='n2029' href='#n2029'>2029</a>
<a id='n2030' href='#n2030'>2030</a>
<a id='n2031' href='#n2031'>2031</a>
<a id='n2032' href='#n2032'>2032</a>
<a id='n2033' href='#n2033'>2033</a>
<a id='n2034' href='#n2034'>2034</a>
<a id='n2035' href='#n2035'>2035</a>
<a id='n2036' href='#n2036'>2036</a>
<a id='n2037' href='#n2037'>2037</a>
<a id='n2038' href='#n2038'>2038</a>
<a id='n2039' href='#n2039'>2039</a>
<a id='n2040' href='#n2040'>2040</a>
<a id='n2041' href='#n2041'>2041</a>
<a id='n2042' href='#n2042'>2042</a>
<a id='n2043' href='#n2043'>2043</a>
<a id='n2044' href='#n2044'>2044</a>
<a id='n2045' href='#n2045'>2045</a>
<a id='n2046' href='#n2046'>2046</a>
<a id='n2047' href='#n2047'>2047</a>
<a id='n2048' href='#n2048'>2048</a>
<a id='n2049' href='#n2049'>2049</a>
<a id='n2050' href='#n2050'>2050</a>
<a id='n2051' href='#n2051'>2051</a>
<a id='n2052' href='#n2052'>2052</a>
<a id='n2053' href='#n2053'>2053</a>
<a id='n2054' href='#n2054'>2054</a>
<a id='n2055' href='#n2055'>2055</a>
<a id='n2056' href='#n2056'>2056</a>
<a id='n2057' href='#n2057'>2057</a>
<a id='n2058' href='#n2058'>2058</a>
<a id='n2059' href='#n2059'>2059</a>
<a id='n2060' href='#n2060'>2060</a>
<a id='n2061' href='#n2061'>2061</a>
<a id='n2062' href='#n2062'>2062</a>
<a id='n2063' href='#n2063'>2063</a>
<a id='n2064' href='#n2064'>2064</a>
<a id='n2065' href='#n2065'>2065</a>
<a id='n2066' href='#n2066'>2066</a>
<a id='n2067' href='#n2067'>2067</a>
<a id='n2068' href='#n2068'>2068</a>
<a id='n2069' href='#n2069'>2069</a>
<a id='n2070' href='#n2070'>2070</a>
<a id='n2071' href='#n2071'>2071</a>
<a id='n2072' href='#n2072'>2072</a>
<a id='n2073' href='#n2073'>2073</a>
<a id='n2074' href='#n2074'>2074</a>
<a id='n2075' href='#n2075'>2075</a>
<a id='n2076' href='#n2076'>2076</a>
<a id='n2077' href='#n2077'>2077</a>
<a id='n2078' href='#n2078'>2078</a>
<a id='n2079' href='#n2079'>2079</a>
<a id='n2080' href='#n2080'>2080</a>
<a id='n2081' href='#n2081'>2081</a>
<a id='n2082' href='#n2082'>2082</a>
<a id='n2083' href='#n2083'>2083</a>
<a id='n2084' href='#n2084'>2084</a>
<a id='n2085' href='#n2085'>2085</a>
<a id='n2086' href='#n2086'>2086</a>
<a id='n2087' href='#n2087'>2087</a>
<a id='n2088' href='#n2088'>2088</a>
<a id='n2089' href='#n2089'>2089</a>
<a id='n2090' href='#n2090'>2090</a>
<a id='n2091' href='#n2091'>2091</a>
<a id='n2092' href='#n2092'>2092</a>
<a id='n2093' href='#n2093'>2093</a>
<a id='n2094' href='#n2094'>2094</a>
<a id='n2095' href='#n2095'>2095</a>
<a id='n2096' href='#n2096'>2096</a>
<a id='n2097' href='#n2097'>2097</a>
<a id='n2098' href='#n2098'>2098</a>
<a id='n2099' href='#n2099'>2099</a>
<a id='n2100' href='#n2100'>2100</a>
<a id='n2101' href='#n2101'>2101</a>
<a id='n2102' href='#n2102'>2102</a>
<a id='n2103' href='#n2103'>2103</a>
<a id='n2104' href='#n2104'>2104</a>
<a id='n2105' href='#n2105'>2105</a>
<a id='n2106' href='#n2106'>2106</a>
<a id='n2107' href='#n2107'>2107</a>
<a id='n2108' href='#n2108'>2108</a>
<a id='n2109' href='#n2109'>2109</a>
<a id='n2110' href='#n2110'>2110</a>
<a id='n2111' href='#n2111'>2111</a>
<a id='n2112' href='#n2112'>2112</a>
<a id='n2113' href='#n2113'>2113</a>
<a id='n2114' href='#n2114'>2114</a>
<a id='n2115' href='#n2115'>2115</a>
<a id='n2116' href='#n2116'>2116</a>
<a id='n2117' href='#n2117'>2117</a>
<a id='n2118' href='#n2118'>2118</a>
<a id='n2119' href='#n2119'>2119</a>
<a id='n2120' href='#n2120'>2120</a>
<a id='n2121' href='#n2121'>2121</a>
<a id='n2122' href='#n2122'>2122</a>
<a id='n2123' href='#n2123'>2123</a>
<a id='n2124' href='#n2124'>2124</a>
<a id='n2125' href='#n2125'>2125</a>
<a id='n2126' href='#n2126'>2126</a>
<a id='n2127' href='#n2127'>2127</a>
<a id='n2128' href='#n2128'>2128</a>
<a id='n2129' href='#n2129'>2129</a>
<a id='n2130' href='#n2130'>2130</a>
<a id='n2131' href='#n2131'>2131</a>
<a id='n2132' href='#n2132'>2132</a>
<a id='n2133' href='#n2133'>2133</a>
<a id='n2134' href='#n2134'>2134</a>
<a id='n2135' href='#n2135'>2135</a>
<a id='n2136' href='#n2136'>2136</a>
<a id='n2137' href='#n2137'>2137</a>
<a id='n2138' href='#n2138'>2138</a>
<a id='n2139' href='#n2139'>2139</a>
<a id='n2140' href='#n2140'>2140</a>
<a id='n2141' href='#n2141'>2141</a>
<a id='n2142' href='#n2142'>2142</a>
<a id='n2143' href='#n2143'>2143</a>
<a id='n2144' href='#n2144'>2144</a>
<a id='n2145' href='#n2145'>2145</a>
<a id='n2146' href='#n2146'>2146</a>
<a id='n2147' href='#n2147'>2147</a>
<a id='n2148' href='#n2148'>2148</a>
<a id='n2149' href='#n2149'>2149</a>
<a id='n2150' href='#n2150'>2150</a>
<a id='n2151' href='#n2151'>2151</a>
<a id='n2152' href='#n2152'>2152</a>
<a id='n2153' href='#n2153'>2153</a>
<a id='n2154' href='#n2154'>2154</a>
<a id='n2155' href='#n2155'>2155</a>
<a id='n2156' href='#n2156'>2156</a>
<a id='n2157' href='#n2157'>2157</a>
<a id='n2158' href='#n2158'>2158</a>
<a id='n2159' href='#n2159'>2159</a>
<a id='n2160' href='#n2160'>2160</a>
<a id='n2161' href='#n2161'>2161</a>
<a id='n2162' href='#n2162'>2162</a>
<a id='n2163' href='#n2163'>2163</a>
<a id='n2164' href='#n2164'>2164</a>
<a id='n2165' href='#n2165'>2165</a>
<a id='n2166' href='#n2166'>2166</a>
<a id='n2167' href='#n2167'>2167</a>
<a id='n2168' href='#n2168'>2168</a>
<a id='n2169' href='#n2169'>2169</a>
<a id='n2170' href='#n2170'>2170</a>
<a id='n2171' href='#n2171'>2171</a>
<a id='n2172' href='#n2172'>2172</a>
<a id='n2173' href='#n2173'>2173</a>
<a id='n2174' href='#n2174'>2174</a>
<a id='n2175' href='#n2175'>2175</a>
<a id='n2176' href='#n2176'>2176</a>
<a id='n2177' href='#n2177'>2177</a>
<a id='n2178' href='#n2178'>2178</a>
<a id='n2179' href='#n2179'>2179</a>
<a id='n2180' href='#n2180'>2180</a>
<a id='n2181' href='#n2181'>2181</a>
<a id='n2182' href='#n2182'>2182</a>
<a id='n2183' href='#n2183'>2183</a>
<a id='n2184' href='#n2184'>2184</a>
<a id='n2185' href='#n2185'>2185</a>
<a id='n2186' href='#n2186'>2186</a>
<a id='n2187' href='#n2187'>2187</a>
<a id='n2188' href='#n2188'>2188</a>
<a id='n2189' href='#n2189'>2189</a>
<a id='n2190' href='#n2190'>2190</a>
<a id='n2191' href='#n2191'>2191</a>
<a id='n2192' href='#n2192'>2192</a>
<a id='n2193' href='#n2193'>2193</a>
<a id='n2194' href='#n2194'>2194</a>
<a id='n2195' href='#n2195'>2195</a>
<a id='n2196' href='#n2196'>2196</a>
<a id='n2197' href='#n2197'>2197</a>
<a id='n2198' href='#n2198'>2198</a>
<a id='n2199' href='#n2199'>2199</a>
<a id='n2200' href='#n2200'>2200</a>
<a id='n2201' href='#n2201'>2201</a>
<a id='n2202' href='#n2202'>2202</a>
<a id='n2203' href='#n2203'>2203</a>
<a id='n2204' href='#n2204'>2204</a>
<a id='n2205' href='#n2205'>2205</a>
<a id='n2206' href='#n2206'>2206</a>
<a id='n2207' href='#n2207'>2207</a>
<a id='n2208' href='#n2208'>2208</a>
<a id='n2209' href='#n2209'>2209</a>
<a id='n2210' href='#n2210'>2210</a>
<a id='n2211' href='#n2211'>2211</a>
<a id='n2212' href='#n2212'>2212</a>
<a id='n2213' href='#n2213'>2213</a>
<a id='n2214' href='#n2214'>2214</a>
<a id='n2215' href='#n2215'>2215</a>
<a id='n2216' href='#n2216'>2216</a>
<a id='n2217' href='#n2217'>2217</a>
<a id='n2218' href='#n2218'>2218</a>
<a id='n2219' href='#n2219'>2219</a>
<a id='n2220' href='#n2220'>2220</a>
<a id='n2221' href='#n2221'>2221</a>
<a id='n2222' href='#n2222'>2222</a>
<a id='n2223' href='#n2223'>2223</a>
<a id='n2224' href='#n2224'>2224</a>
<a id='n2225' href='#n2225'>2225</a>
<a id='n2226' href='#n2226'>2226</a>
<a id='n2227' href='#n2227'>2227</a>
<a id='n2228' href='#n2228'>2228</a>
<a id='n2229' href='#n2229'>2229</a>
<a id='n2230' href='#n2230'>2230</a>
<a id='n2231' href='#n2231'>2231</a>
<a id='n2232' href='#n2232'>2232</a>
<a id='n2233' href='#n2233'>2233</a>
<a id='n2234' href='#n2234'>2234</a>
<a id='n2235' href='#n2235'>2235</a>
<a id='n2236' href='#n2236'>2236</a>
<a id='n2237' href='#n2237'>2237</a>
<a id='n2238' href='#n2238'>2238</a>
<a id='n2239' href='#n2239'>2239</a>
<a id='n2240' href='#n2240'>2240</a>
<a id='n2241' href='#n2241'>2241</a>
<a id='n2242' href='#n2242'>2242</a>
<a id='n2243' href='#n2243'>2243</a>
<a id='n2244' href='#n2244'>2244</a>
<a id='n2245' href='#n2245'>2245</a>
<a id='n2246' href='#n2246'>2246</a>
<a id='n2247' href='#n2247'>2247</a>
<a id='n2248' href='#n2248'>2248</a>
<a id='n2249' href='#n2249'>2249</a>
<a id='n2250' href='#n2250'>2250</a>
<a id='n2251' href='#n2251'>2251</a>
<a id='n2252' href='#n2252'>2252</a>
<a id='n2253' href='#n2253'>2253</a>
<a id='n2254' href='#n2254'>2254</a>
<a id='n2255' href='#n2255'>2255</a>
<a id='n2256' href='#n2256'>2256</a>
<a id='n2257' href='#n2257'>2257</a>
<a id='n2258' href='#n2258'>2258</a>
<a id='n2259' href='#n2259'>2259</a>
<a id='n2260' href='#n2260'>2260</a>
<a id='n2261' href='#n2261'>2261</a>
<a id='n2262' href='#n2262'>2262</a>
<a id='n2263' href='#n2263'>2263</a>
<a id='n2264' href='#n2264'>2264</a>
<a id='n2265' href='#n2265'>2265</a>
<a id='n2266' href='#n2266'>2266</a>
<a id='n2267' href='#n2267'>2267</a>
<a id='n2268' href='#n2268'>2268</a>
<a id='n2269' href='#n2269'>2269</a>
<a id='n2270' href='#n2270'>2270</a>
<a id='n2271' href='#n2271'>2271</a>
<a id='n2272' href='#n2272'>2272</a>
<a id='n2273' href='#n2273'>2273</a>
<a id='n2274' href='#n2274'>2274</a>
<a id='n2275' href='#n2275'>2275</a>
<a id='n2276' href='#n2276'>2276</a>
<a id='n2277' href='#n2277'>2277</a>
<a id='n2278' href='#n2278'>2278</a>
<a id='n2279' href='#n2279'>2279</a>
<a id='n2280' href='#n2280'>2280</a>
<a id='n2281' href='#n2281'>2281</a>
<a id='n2282' href='#n2282'>2282</a>
<a id='n2283' href='#n2283'>2283</a>
<a id='n2284' href='#n2284'>2284</a>
<a id='n2285' href='#n2285'>2285</a>
<a id='n2286' href='#n2286'>2286</a>
<a id='n2287' href='#n2287'>2287</a>
<a id='n2288' href='#n2288'>2288</a>
<a id='n2289' href='#n2289'>2289</a>
<a id='n2290' href='#n2290'>2290</a>
<a id='n2291' href='#n2291'>2291</a>
<a id='n2292' href='#n2292'>2292</a>
<a id='n2293' href='#n2293'>2293</a>
<a id='n2294' href='#n2294'>2294</a>
<a id='n2295' href='#n2295'>2295</a>
<a id='n2296' href='#n2296'>2296</a>
<a id='n2297' href='#n2297'>2297</a>
<a id='n2298' href='#n2298'>2298</a>
<a id='n2299' href='#n2299'>2299</a>
<a id='n2300' href='#n2300'>2300</a>
<a id='n2301' href='#n2301'>2301</a>
<a id='n2302' href='#n2302'>2302</a>
<a id='n2303' href='#n2303'>2303</a>
<a id='n2304' href='#n2304'>2304</a>
<a id='n2305' href='#n2305'>2305</a>
<a id='n2306' href='#n2306'>2306</a>
<a id='n2307' href='#n2307'>2307</a>
<a id='n2308' href='#n2308'>2308</a>
<a id='n2309' href='#n2309'>2309</a>
<a id='n2310' href='#n2310'>2310</a>
<a id='n2311' href='#n2311'>2311</a>
<a id='n2312' href='#n2312'>2312</a>
<a id='n2313' href='#n2313'>2313</a>
<a id='n2314' href='#n2314'>2314</a>
<a id='n2315' href='#n2315'>2315</a>
<a id='n2316' href='#n2316'>2316</a>
<a id='n2317' href='#n2317'>2317</a>
<a id='n2318' href='#n2318'>2318</a>
<a id='n2319' href='#n2319'>2319</a>
<a id='n2320' href='#n2320'>2320</a>
<a id='n2321' href='#n2321'>2321</a>
<a id='n2322' href='#n2322'>2322</a>
<a id='n2323' href='#n2323'>2323</a>
<a id='n2324' href='#n2324'>2324</a>
<a id='n2325' href='#n2325'>2325</a>
<a id='n2326' href='#n2326'>2326</a>
<a id='n2327' href='#n2327'>2327</a>
<a id='n2328' href='#n2328'>2328</a>
<a id='n2329' href='#n2329'>2329</a>
<a id='n2330' href='#n2330'>2330</a>
<a id='n2331' href='#n2331'>2331</a>
<a id='n2332' href='#n2332'>2332</a>
<a id='n2333' href='#n2333'>2333</a>
<a id='n2334' href='#n2334'>2334</a>
<a id='n2335' href='#n2335'>2335</a>
<a id='n2336' href='#n2336'>2336</a>
<a id='n2337' href='#n2337'>2337</a>
<a id='n2338' href='#n2338'>2338</a>
<a id='n2339' href='#n2339'>2339</a>
<a id='n2340' href='#n2340'>2340</a>
<a id='n2341' href='#n2341'>2341</a>
<a id='n2342' href='#n2342'>2342</a>
<a id='n2343' href='#n2343'>2343</a>
<a id='n2344' href='#n2344'>2344</a>
<a id='n2345' href='#n2345'>2345</a>
<a id='n2346' href='#n2346'>2346</a>
<a id='n2347' href='#n2347'>2347</a>
<a id='n2348' href='#n2348'>2348</a>
<a id='n2349' href='#n2349'>2349</a>
<a id='n2350' href='#n2350'>2350</a>
<a id='n2351' href='#n2351'>2351</a>
<a id='n2352' href='#n2352'>2352</a>
<a id='n2353' href='#n2353'>2353</a>
<a id='n2354' href='#n2354'>2354</a>
<a id='n2355' href='#n2355'>2355</a>
<a id='n2356' href='#n2356'>2356</a>
<a id='n2357' href='#n2357'>2357</a>
<a id='n2358' href='#n2358'>2358</a>
<a id='n2359' href='#n2359'>2359</a>
<a id='n2360' href='#n2360'>2360</a>
<a id='n2361' href='#n2361'>2361</a>
<a id='n2362' href='#n2362'>2362</a>
<a id='n2363' href='#n2363'>2363</a>
<a id='n2364' href='#n2364'>2364</a>
<a id='n2365' href='#n2365'>2365</a>
<a id='n2366' href='#n2366'>2366</a>
<a id='n2367' href='#n2367'>2367</a>
<a id='n2368' href='#n2368'>2368</a>
<a id='n2369' href='#n2369'>2369</a>
<a id='n2370' href='#n2370'>2370</a>
<a id='n2371' href='#n2371'>2371</a>
<a id='n2372' href='#n2372'>2372</a>
<a id='n2373' href='#n2373'>2373</a>
<a id='n2374' href='#n2374'>2374</a>
<a id='n2375' href='#n2375'>2375</a>
<a id='n2376' href='#n2376'>2376</a>
<a id='n2377' href='#n2377'>2377</a>
<a id='n2378' href='#n2378'>2378</a>
<a id='n2379' href='#n2379'>2379</a>
<a id='n2380' href='#n2380'>2380</a>
<a id='n2381' href='#n2381'>2381</a>
<a id='n2382' href='#n2382'>2382</a>
<a id='n2383' href='#n2383'>2383</a>
<a id='n2384' href='#n2384'>2384</a>
<a id='n2385' href='#n2385'>2385</a>
<a id='n2386' href='#n2386'>2386</a>
<a id='n2387' href='#n2387'>2387</a>
<a id='n2388' href='#n2388'>2388</a>
<a id='n2389' href='#n2389'>2389</a>
<a id='n2390' href='#n2390'>2390</a>
<a id='n2391' href='#n2391'>2391</a>
<a id='n2392' href='#n2392'>2392</a>
<a id='n2393' href='#n2393'>2393</a>
<a id='n2394' href='#n2394'>2394</a>
<a id='n2395' href='#n2395'>2395</a>
<a id='n2396' href='#n2396'>2396</a>
<a id='n2397' href='#n2397'>2397</a>
<a id='n2398' href='#n2398'>2398</a>
<a id='n2399' href='#n2399'>2399</a>
<a id='n2400' href='#n2400'>2400</a>
<a id='n2401' href='#n2401'>2401</a>
<a id='n2402' href='#n2402'>2402</a>
<a id='n2403' href='#n2403'>2403</a>
<a id='n2404' href='#n2404'>2404</a>
<a id='n2405' href='#n2405'>2405</a>
<a id='n2406' href='#n2406'>2406</a>
<a id='n2407' href='#n2407'>2407</a>
<a id='n2408' href='#n2408'>2408</a>
<a id='n2409' href='#n2409'>2409</a>
<a id='n2410' href='#n2410'>2410</a>
<a id='n2411' href='#n2411'>2411</a>
<a id='n2412' href='#n2412'>2412</a>
<a id='n2413' href='#n2413'>2413</a>
<a id='n2414' href='#n2414'>2414</a>
<a id='n2415' href='#n2415'>2415</a>
<a id='n2416' href='#n2416'>2416</a>
<a id='n2417' href='#n2417'>2417</a>
<a id='n2418' href='#n2418'>2418</a>
<a id='n2419' href='#n2419'>2419</a>
<a id='n2420' href='#n2420'>2420</a>
<a id='n2421' href='#n2421'>2421</a>
<a id='n2422' href='#n2422'>2422</a>
<a id='n2423' href='#n2423'>2423</a>
<a id='n2424' href='#n2424'>2424</a>
<a id='n2425' href='#n2425'>2425</a>
<a id='n2426' href='#n2426'>2426</a>
<a id='n2427' href='#n2427'>2427</a>
<a id='n2428' href='#n2428'>2428</a>
<a id='n2429' href='#n2429'>2429</a>
<a id='n2430' href='#n2430'>2430</a>
<a id='n2431' href='#n2431'>2431</a>
<a id='n2432' href='#n2432'>2432</a>
<a id='n2433' href='#n2433'>2433</a>
<a id='n2434' href='#n2434'>2434</a>
<a id='n2435' href='#n2435'>2435</a>
<a id='n2436' href='#n2436'>2436</a>
<a id='n2437' href='#n2437'>2437</a>
<a id='n2438' href='#n2438'>2438</a>
<a id='n2439' href='#n2439'>2439</a>
<a id='n2440' href='#n2440'>2440</a>
<a id='n2441' href='#n2441'>2441</a>
<a id='n2442' href='#n2442'>2442</a>
<a id='n2443' href='#n2443'>2443</a>
<a id='n2444' href='#n2444'>2444</a>
<a id='n2445' href='#n2445'>2445</a>
<a id='n2446' href='#n2446'>2446</a>
<a id='n2447' href='#n2447'>2447</a>
<a id='n2448' href='#n2448'>2448</a>
<a id='n2449' href='#n2449'>2449</a>
<a id='n2450' href='#n2450'>2450</a>
<a id='n2451' href='#n2451'>2451</a>
<a id='n2452' href='#n2452'>2452</a>
<a id='n2453' href='#n2453'>2453</a>
<a id='n2454' href='#n2454'>2454</a>
<a id='n2455' href='#n2455'>2455</a>
<a id='n2456' href='#n2456'>2456</a>
<a id='n2457' href='#n2457'>2457</a>
<a id='n2458' href='#n2458'>2458</a>
<a id='n2459' href='#n2459'>2459</a>
<a id='n2460' href='#n2460'>2460</a>
<a id='n2461' href='#n2461'>2461</a>
<a id='n2462' href='#n2462'>2462</a>
<a id='n2463' href='#n2463'>2463</a>
<a id='n2464' href='#n2464'>2464</a>
<a id='n2465' href='#n2465'>2465</a>
<a id='n2466' href='#n2466'>2466</a>
<a id='n2467' href='#n2467'>2467</a>
<a id='n2468' href='#n2468'>2468</a>
<a id='n2469' href='#n2469'>2469</a>
<a id='n2470' href='#n2470'>2470</a>
<a id='n2471' href='#n2471'>2471</a>
<a id='n2472' href='#n2472'>2472</a>
<a id='n2473' href='#n2473'>2473</a>
<a id='n2474' href='#n2474'>2474</a>
<a id='n2475' href='#n2475'>2475</a>
<a id='n2476' href='#n2476'>2476</a>
<a id='n2477' href='#n2477'>2477</a>
<a id='n2478' href='#n2478'>2478</a>
<a id='n2479' href='#n2479'>2479</a>
<a id='n2480' href='#n2480'>2480</a>
<a id='n2481' href='#n2481'>2481</a>
<a id='n2482' href='#n2482'>2482</a>
<a id='n2483' href='#n2483'>2483</a>
<a id='n2484' href='#n2484'>2484</a>
<a id='n2485' href='#n2485'>2485</a>
<a id='n2486' href='#n2486'>2486</a>
<a id='n2487' href='#n2487'>2487</a>
<a id='n2488' href='#n2488'>2488</a>
<a id='n2489' href='#n2489'>2489</a>
<a id='n2490' href='#n2490'>2490</a>
<a id='n2491' href='#n2491'>2491</a>
<a id='n2492' href='#n2492'>2492</a>
<a id='n2493' href='#n2493'>2493</a>
<a id='n2494' href='#n2494'>2494</a>
<a id='n2495' href='#n2495'>2495</a>
<a id='n2496' href='#n2496'>2496</a>
<a id='n2497' href='#n2497'>2497</a>
<a id='n2498' href='#n2498'>2498</a>
<a id='n2499' href='#n2499'>2499</a>
<a id='n2500' href='#n2500'>2500</a>
<a id='n2501' href='#n2501'>2501</a>
<a id='n2502' href='#n2502'>2502</a>
<a id='n2503' href='#n2503'>2503</a>
<a id='n2504' href='#n2504'>2504</a>
<a id='n2505' href='#n2505'>2505</a>
<a id='n2506' href='#n2506'>2506</a>
<a id='n2507' href='#n2507'>2507</a>
<a id='n2508' href='#n2508'>2508</a>
<a id='n2509' href='#n2509'>2509</a>
<a id='n2510' href='#n2510'>2510</a>
<a id='n2511' href='#n2511'>2511</a>
<a id='n2512' href='#n2512'>2512</a>
<a id='n2513' href='#n2513'>2513</a>
<a id='n2514' href='#n2514'>2514</a>
<a id='n2515' href='#n2515'>2515</a>
<a id='n2516' href='#n2516'>2516</a>
<a id='n2517' href='#n2517'>2517</a>
<a id='n2518' href='#n2518'>2518</a>
<a id='n2519' href='#n2519'>2519</a>
<a id='n2520' href='#n2520'>2520</a>
<a id='n2521' href='#n2521'>2521</a>
<a id='n2522' href='#n2522'>2522</a>
<a id='n2523' href='#n2523'>2523</a>
<a id='n2524' href='#n2524'>2524</a>
<a id='n2525' href='#n2525'>2525</a>
<a id='n2526' href='#n2526'>2526</a>
<a id='n2527' href='#n2527'>2527</a>
<a id='n2528' href='#n2528'>2528</a>
<a id='n2529' href='#n2529'>2529</a>
<a id='n2530' href='#n2530'>2530</a>
<a id='n2531' href='#n2531'>2531</a>
<a id='n2532' href='#n2532'>2532</a>
<a id='n2533' href='#n2533'>2533</a>
<a id='n2534' href='#n2534'>2534</a>
<a id='n2535' href='#n2535'>2535</a>
<a id='n2536' href='#n2536'>2536</a>
<a id='n2537' href='#n2537'>2537</a>
<a id='n2538' href='#n2538'>2538</a>
<a id='n2539' href='#n2539'>2539</a>
<a id='n2540' href='#n2540'>2540</a>
<a id='n2541' href='#n2541'>2541</a>
<a id='n2542' href='#n2542'>2542</a>
<a id='n2543' href='#n2543'>2543</a>
<a id='n2544' href='#n2544'>2544</a>
<a id='n2545' href='#n2545'>2545</a>
<a id='n2546' href='#n2546'>2546</a>
<a id='n2547' href='#n2547'>2547</a>
<a id='n2548' href='#n2548'>2548</a>
<a id='n2549' href='#n2549'>2549</a>
<a id='n2550' href='#n2550'>2550</a>
<a id='n2551' href='#n2551'>2551</a>
<a id='n2552' href='#n2552'>2552</a>
<a id='n2553' href='#n2553'>2553</a>
<a id='n2554' href='#n2554'>2554</a>
<a id='n2555' href='#n2555'>2555</a>
<a id='n2556' href='#n2556'>2556</a>
<a id='n2557' href='#n2557'>2557</a>
<a id='n2558' href='#n2558'>2558</a>
<a id='n2559' href='#n2559'>2559</a>
<a id='n2560' href='#n2560'>2560</a>
<a id='n2561' href='#n2561'>2561</a>
<a id='n2562' href='#n2562'>2562</a>
<a id='n2563' href='#n2563'>2563</a>
<a id='n2564' href='#n2564'>2564</a>
<a id='n2565' href='#n2565'>2565</a>
<a id='n2566' href='#n2566'>2566</a>
<a id='n2567' href='#n2567'>2567</a>
<a id='n2568' href='#n2568'>2568</a>
<a id='n2569' href='#n2569'>2569</a>
<a id='n2570' href='#n2570'>2570</a>
<a id='n2571' href='#n2571'>2571</a>
<a id='n2572' href='#n2572'>2572</a>
<a id='n2573' href='#n2573'>2573</a>
<a id='n2574' href='#n2574'>2574</a>
<a id='n2575' href='#n2575'>2575</a>
<a id='n2576' href='#n2576'>2576</a>
<a id='n2577' href='#n2577'>2577</a>
<a id='n2578' href='#n2578'>2578</a>
<a id='n2579' href='#n2579'>2579</a>
<a id='n2580' href='#n2580'>2580</a>
<a id='n2581' href='#n2581'>2581</a>
<a id='n2582' href='#n2582'>2582</a>
<a id='n2583' href='#n2583'>2583</a>
<a id='n2584' href='#n2584'>2584</a>
<a id='n2585' href='#n2585'>2585</a>
<a id='n2586' href='#n2586'>2586</a>
<a id='n2587' href='#n2587'>2587</a>
<a id='n2588' href='#n2588'>2588</a>
<a id='n2589' href='#n2589'>2589</a>
<a id='n2590' href='#n2590'>2590</a>
<a id='n2591' href='#n2591'>2591</a>
<a id='n2592' href='#n2592'>2592</a>
<a id='n2593' href='#n2593'>2593</a>
<a id='n2594' href='#n2594'>2594</a>
<a id='n2595' href='#n2595'>2595</a>
<a id='n2596' href='#n2596'>2596</a>
<a id='n2597' href='#n2597'>2597</a>
<a id='n2598' href='#n2598'>2598</a>
<a id='n2599' href='#n2599'>2599</a>
<a id='n2600' href='#n2600'>2600</a>
<a id='n2601' href='#n2601'>2601</a>
<a id='n2602' href='#n2602'>2602</a>
<a id='n2603' href='#n2603'>2603</a>
<a id='n2604' href='#n2604'>2604</a>
<a id='n2605' href='#n2605'>2605</a>
<a id='n2606' href='#n2606'>2606</a>
<a id='n2607' href='#n2607'>2607</a>
<a id='n2608' href='#n2608'>2608</a>
<a id='n2609' href='#n2609'>2609</a>
<a id='n2610' href='#n2610'>2610</a>
<a id='n2611' href='#n2611'>2611</a>
<a id='n2612' href='#n2612'>2612</a>
<a id='n2613' href='#n2613'>2613</a>
<a id='n2614' href='#n2614'>2614</a>
<a id='n2615' href='#n2615'>2615</a>
<a id='n2616' href='#n2616'>2616</a>
<a id='n2617' href='#n2617'>2617</a>
<a id='n2618' href='#n2618'>2618</a>
<a id='n2619' href='#n2619'>2619</a>
<a id='n2620' href='#n2620'>2620</a>
<a id='n2621' href='#n2621'>2621</a>
<a id='n2622' href='#n2622'>2622</a>
<a id='n2623' href='#n2623'>2623</a>
<a id='n2624' href='#n2624'>2624</a>
<a id='n2625' href='#n2625'>2625</a>
<a id='n2626' href='#n2626'>2626</a>
<a id='n2627' href='#n2627'>2627</a>
<a id='n2628' href='#n2628'>2628</a>
<a id='n2629' href='#n2629'>2629</a>
<a id='n2630' href='#n2630'>2630</a>
<a id='n2631' href='#n2631'>2631</a>
<a id='n2632' href='#n2632'>2632</a>
<a id='n2633' href='#n2633'>2633</a>
<a id='n2634' href='#n2634'>2634</a>
<a id='n2635' href='#n2635'>2635</a>
<a id='n2636' href='#n2636'>2636</a>
<a id='n2637' href='#n2637'>2637</a>
<a id='n2638' href='#n2638'>2638</a>
<a id='n2639' href='#n2639'>2639</a>
<a id='n2640' href='#n2640'>2640</a>
<a id='n2641' href='#n2641'>2641</a>
<a id='n2642' href='#n2642'>2642</a>
<a id='n2643' href='#n2643'>2643</a>
<a id='n2644' href='#n2644'>2644</a>
<a id='n2645' href='#n2645'>2645</a>
<a id='n2646' href='#n2646'>2646</a>
<a id='n2647' href='#n2647'>2647</a>
<a id='n2648' href='#n2648'>2648</a>
<a id='n2649' href='#n2649'>2649</a>
<a id='n2650' href='#n2650'>2650</a>
<a id='n2651' href='#n2651'>2651</a>
<a id='n2652' href='#n2652'>2652</a>
<a id='n2653' href='#n2653'>2653</a>
<a id='n2654' href='#n2654'>2654</a>
<a id='n2655' href='#n2655'>2655</a>
<a id='n2656' href='#n2656'>2656</a>
<a id='n2657' href='#n2657'>2657</a>
<a id='n2658' href='#n2658'>2658</a>
<a id='n2659' href='#n2659'>2659</a>
<a id='n2660' href='#n2660'>2660</a>
<a id='n2661' href='#n2661'>2661</a>
<a id='n2662' href='#n2662'>2662</a>
<a id='n2663' href='#n2663'>2663</a>
<a id='n2664' href='#n2664'>2664</a>
<a id='n2665' href='#n2665'>2665</a>
<a id='n2666' href='#n2666'>2666</a>
<a id='n2667' href='#n2667'>2667</a>
<a id='n2668' href='#n2668'>2668</a>
<a id='n2669' href='#n2669'>2669</a>
<a id='n2670' href='#n2670'>2670</a>
<a id='n2671' href='#n2671'>2671</a>
<a id='n2672' href='#n2672'>2672</a>
<a id='n2673' href='#n2673'>2673</a>
<a id='n2674' href='#n2674'>2674</a>
<a id='n2675' href='#n2675'>2675</a>
<a id='n2676' href='#n2676'>2676</a>
<a id='n2677' href='#n2677'>2677</a>
<a id='n2678' href='#n2678'>2678</a>
<a id='n2679' href='#n2679'>2679</a>
<a id='n2680' href='#n2680'>2680</a>
<a id='n2681' href='#n2681'>2681</a>
<a id='n2682' href='#n2682'>2682</a>
<a id='n2683' href='#n2683'>2683</a>
<a id='n2684' href='#n2684'>2684</a>
<a id='n2685' href='#n2685'>2685</a>
<a id='n2686' href='#n2686'>2686</a>
<a id='n2687' href='#n2687'>2687</a>
<a id='n2688' href='#n2688'>2688</a>
<a id='n2689' href='#n2689'>2689</a>
<a id='n2690' href='#n2690'>2690</a>
<a id='n2691' href='#n2691'>2691</a>
<a id='n2692' href='#n2692'>2692</a>
<a id='n2693' href='#n2693'>2693</a>
<a id='n2694' href='#n2694'>2694</a>
<a id='n2695' href='#n2695'>2695</a>
<a id='n2696' href='#n2696'>2696</a>
<a id='n2697' href='#n2697'>2697</a>
<a id='n2698' href='#n2698'>2698</a>
<a id='n2699' href='#n2699'>2699</a>
<a id='n2700' href='#n2700'>2700</a>
<a id='n2701' href='#n2701'>2701</a>
<a id='n2702' href='#n2702'>2702</a>
<a id='n2703' href='#n2703'>2703</a>
<a id='n2704' href='#n2704'>2704</a>
<a id='n2705' href='#n2705'>2705</a>
<a id='n2706' href='#n2706'>2706</a>
<a id='n2707' href='#n2707'>2707</a>
<a id='n2708' href='#n2708'>2708</a>
<a id='n2709' href='#n2709'>2709</a>
<a id='n2710' href='#n2710'>2710</a>
<a id='n2711' href='#n2711'>2711</a>
<a id='n2712' href='#n2712'>2712</a>
<a id='n2713' href='#n2713'>2713</a>
<a id='n2714' href='#n2714'>2714</a>
<a id='n2715' href='#n2715'>2715</a>
<a id='n2716' href='#n2716'>2716</a>
<a id='n2717' href='#n2717'>2717</a>
<a id='n2718' href='#n2718'>2718</a>
<a id='n2719' href='#n2719'>2719</a>
<a id='n2720' href='#n2720'>2720</a>
<a id='n2721' href='#n2721'>2721</a>
<a id='n2722' href='#n2722'>2722</a>
<a id='n2723' href='#n2723'>2723</a>
<a id='n2724' href='#n2724'>2724</a>
<a id='n2725' href='#n2725'>2725</a>
<a id='n2726' href='#n2726'>2726</a>
<a id='n2727' href='#n2727'>2727</a>
<a id='n2728' href='#n2728'>2728</a>
<a id='n2729' href='#n2729'>2729</a>
<a id='n2730' href='#n2730'>2730</a>
<a id='n2731' href='#n2731'>2731</a>
<a id='n2732' href='#n2732'>2732</a>
<a id='n2733' href='#n2733'>2733</a>
<a id='n2734' href='#n2734'>2734</a>
<a id='n2735' href='#n2735'>2735</a>
<a id='n2736' href='#n2736'>2736</a>
<a id='n2737' href='#n2737'>2737</a>
<a id='n2738' href='#n2738'>2738</a>
<a id='n2739' href='#n2739'>2739</a>
<a id='n2740' href='#n2740'>2740</a>
<a id='n2741' href='#n2741'>2741</a>
<a id='n2742' href='#n2742'>2742</a>
<a id='n2743' href='#n2743'>2743</a>
<a id='n2744' href='#n2744'>2744</a>
<a id='n2745' href='#n2745'>2745</a>
<a id='n2746' href='#n2746'>2746</a>
<a id='n2747' href='#n2747'>2747</a>
<a id='n2748' href='#n2748'>2748</a>
<a id='n2749' href='#n2749'>2749</a>
<a id='n2750' href='#n2750'>2750</a>
<a id='n2751' href='#n2751'>2751</a>
<a id='n2752' href='#n2752'>2752</a>
<a id='n2753' href='#n2753'>2753</a>
<a id='n2754' href='#n2754'>2754</a>
<a id='n2755' href='#n2755'>2755</a>
<a id='n2756' href='#n2756'>2756</a>
<a id='n2757' href='#n2757'>2757</a>
<a id='n2758' href='#n2758'>2758</a>
<a id='n2759' href='#n2759'>2759</a>
<a id='n2760' href='#n2760'>2760</a>
<a id='n2761' href='#n2761'>2761</a>
<a id='n2762' href='#n2762'>2762</a>
<a id='n2763' href='#n2763'>2763</a>
<a id='n2764' href='#n2764'>2764</a>
<a id='n2765' href='#n2765'>2765</a>
<a id='n2766' href='#n2766'>2766</a>
<a id='n2767' href='#n2767'>2767</a>
<a id='n2768' href='#n2768'>2768</a>
<a id='n2769' href='#n2769'>2769</a>
<a id='n2770' href='#n2770'>2770</a>
<a id='n2771' href='#n2771'>2771</a>
<a id='n2772' href='#n2772'>2772</a>
<a id='n2773' href='#n2773'>2773</a>
<a id='n2774' href='#n2774'>2774</a>
<a id='n2775' href='#n2775'>2775</a>
<a id='n2776' href='#n2776'>2776</a>
<a id='n2777' href='#n2777'>2777</a>
<a id='n2778' href='#n2778'>2778</a>
<a id='n2779' href='#n2779'>2779</a>
<a id='n2780' href='#n2780'>2780</a>
<a id='n2781' href='#n2781'>2781</a>
<a id='n2782' href='#n2782'>2782</a>
<a id='n2783' href='#n2783'>2783</a>
<a id='n2784' href='#n2784'>2784</a>
<a id='n2785' href='#n2785'>2785</a>
<a id='n2786' href='#n2786'>2786</a>
<a id='n2787' href='#n2787'>2787</a>
<a id='n2788' href='#n2788'>2788</a>
<a id='n2789' href='#n2789'>2789</a>
<a id='n2790' href='#n2790'>2790</a>
<a id='n2791' href='#n2791'>2791</a>
<a id='n2792' href='#n2792'>2792</a>
<a id='n2793' href='#n2793'>2793</a>
<a id='n2794' href='#n2794'>2794</a>
<a id='n2795' href='#n2795'>2795</a>
<a id='n2796' href='#n2796'>2796</a>
<a id='n2797' href='#n2797'>2797</a>
<a id='n2798' href='#n2798'>2798</a>
<a id='n2799' href='#n2799'>2799</a>
<a id='n2800' href='#n2800'>2800</a>
<a id='n2801' href='#n2801'>2801</a>
<a id='n2802' href='#n2802'>2802</a>
<a id='n2803' href='#n2803'>2803</a>
<a id='n2804' href='#n2804'>2804</a>
<a id='n2805' href='#n2805'>2805</a>
<a id='n2806' href='#n2806'>2806</a>
<a id='n2807' href='#n2807'>2807</a>
<a id='n2808' href='#n2808'>2808</a>
<a id='n2809' href='#n2809'>2809</a>
<a id='n2810' href='#n2810'>2810</a>
<a id='n2811' href='#n2811'>2811</a>
<a id='n2812' href='#n2812'>2812</a>
<a id='n2813' href='#n2813'>2813</a>
<a id='n2814' href='#n2814'>2814</a>
<a id='n2815' href='#n2815'>2815</a>
<a id='n2816' href='#n2816'>2816</a>
<a id='n2817' href='#n2817'>2817</a>
<a id='n2818' href='#n2818'>2818</a>
<a id='n2819' href='#n2819'>2819</a>
<a id='n2820' href='#n2820'>2820</a>
<a id='n2821' href='#n2821'>2821</a>
<a id='n2822' href='#n2822'>2822</a>
<a id='n2823' href='#n2823'>2823</a>
<a id='n2824' href='#n2824'>2824</a>
<a id='n2825' href='#n2825'>2825</a>
<a id='n2826' href='#n2826'>2826</a>
<a id='n2827' href='#n2827'>2827</a>
<a id='n2828' href='#n2828'>2828</a>
<a id='n2829' href='#n2829'>2829</a>
<a id='n2830' href='#n2830'>2830</a>
<a id='n2831' href='#n2831'>2831</a>
<a id='n2832' href='#n2832'>2832</a>
<a id='n2833' href='#n2833'>2833</a>
<a id='n2834' href='#n2834'>2834</a>
<a id='n2835' href='#n2835'>2835</a>
<a id='n2836' href='#n2836'>2836</a>
<a id='n2837' href='#n2837'>2837</a>
<a id='n2838' href='#n2838'>2838</a>
<a id='n2839' href='#n2839'>2839</a>
<a id='n2840' href='#n2840'>2840</a>
<a id='n2841' href='#n2841'>2841</a>
<a id='n2842' href='#n2842'>2842</a>
<a id='n2843' href='#n2843'>2843</a>
<a id='n2844' href='#n2844'>2844</a>
<a id='n2845' href='#n2845'>2845</a>
<a id='n2846' href='#n2846'>2846</a>
<a id='n2847' href='#n2847'>2847</a>
<a id='n2848' href='#n2848'>2848</a>
<a id='n2849' href='#n2849'>2849</a>
<a id='n2850' href='#n2850'>2850</a>
<a id='n2851' href='#n2851'>2851</a>
<a id='n2852' href='#n2852'>2852</a>
<a id='n2853' href='#n2853'>2853</a>
<a id='n2854' href='#n2854'>2854</a>
<a id='n2855' href='#n2855'>2855</a>
<a id='n2856' href='#n2856'>2856</a>
<a id='n2857' href='#n2857'>2857</a>
<a id='n2858' href='#n2858'>2858</a>
<a id='n2859' href='#n2859'>2859</a>
<a id='n2860' href='#n2860'>2860</a>
<a id='n2861' href='#n2861'>2861</a>
<a id='n2862' href='#n2862'>2862</a>
<a id='n2863' href='#n2863'>2863</a>
<a id='n2864' href='#n2864'>2864</a>
<a id='n2865' href='#n2865'>2865</a>
<a id='n2866' href='#n2866'>2866</a>
<a id='n2867' href='#n2867'>2867</a>
<a id='n2868' href='#n2868'>2868</a>
<a id='n2869' href='#n2869'>2869</a>
<a id='n2870' href='#n2870'>2870</a>
<a id='n2871' href='#n2871'>2871</a>
<a id='n2872' href='#n2872'>2872</a>
<a id='n2873' href='#n2873'>2873</a>
<a id='n2874' href='#n2874'>2874</a>
<a id='n2875' href='#n2875'>2875</a>
<a id='n2876' href='#n2876'>2876</a>
<a id='n2877' href='#n2877'>2877</a>
<a id='n2878' href='#n2878'>2878</a>
<a id='n2879' href='#n2879'>2879</a>
<a id='n2880' href='#n2880'>2880</a>
<a id='n2881' href='#n2881'>2881</a>
<a id='n2882' href='#n2882'>2882</a>
<a id='n2883' href='#n2883'>2883</a>
<a id='n2884' href='#n2884'>2884</a>
<a id='n2885' href='#n2885'>2885</a>
<a id='n2886' href='#n2886'>2886</a>
<a id='n2887' href='#n2887'>2887</a>
<a id='n2888' href='#n2888'>2888</a>
<a id='n2889' href='#n2889'>2889</a>
<a id='n2890' href='#n2890'>2890</a>
<a id='n2891' href='#n2891'>2891</a>
<a id='n2892' href='#n2892'>2892</a>
<a id='n2893' href='#n2893'>2893</a>
<a id='n2894' href='#n2894'>2894</a>
<a id='n2895' href='#n2895'>2895</a>
<a id='n2896' href='#n2896'>2896</a>
<a id='n2897' href='#n2897'>2897</a>
<a id='n2898' href='#n2898'>2898</a>
<a id='n2899' href='#n2899'>2899</a>
<a id='n2900' href='#n2900'>2900</a>
<a id='n2901' href='#n2901'>2901</a>
<a id='n2902' href='#n2902'>2902</a>
<a id='n2903' href='#n2903'>2903</a>
<a id='n2904' href='#n2904'>2904</a>
<a id='n2905' href='#n2905'>2905</a>
<a id='n2906' href='#n2906'>2906</a>
<a id='n2907' href='#n2907'>2907</a>
<a id='n2908' href='#n2908'>2908</a>
<a id='n2909' href='#n2909'>2909</a>
<a id='n2910' href='#n2910'>2910</a>
<a id='n2911' href='#n2911'>2911</a>
<a id='n2912' href='#n2912'>2912</a>
<a id='n2913' href='#n2913'>2913</a>
<a id='n2914' href='#n2914'>2914</a>
<a id='n2915' href='#n2915'>2915</a>
<a id='n2916' href='#n2916'>2916</a>
<a id='n2917' href='#n2917'>2917</a>
<a id='n2918' href='#n2918'>2918</a>
<a id='n2919' href='#n2919'>2919</a>
<a id='n2920' href='#n2920'>2920</a>
<a id='n2921' href='#n2921'>2921</a>
<a id='n2922' href='#n2922'>2922</a>
<a id='n2923' href='#n2923'>2923</a>
<a id='n2924' href='#n2924'>2924</a>
<a id='n2925' href='#n2925'>2925</a>
<a id='n2926' href='#n2926'>2926</a>
<a id='n2927' href='#n2927'>2927</a>
<a id='n2928' href='#n2928'>2928</a>
<a id='n2929' href='#n2929'>2929</a>
<a id='n2930' href='#n2930'>2930</a>
<a id='n2931' href='#n2931'>2931</a>
<a id='n2932' href='#n2932'>2932</a>
<a id='n2933' href='#n2933'>2933</a>
<a id='n2934' href='#n2934'>2934</a>
<a id='n2935' href='#n2935'>2935</a>
<a id='n2936' href='#n2936'>2936</a>
<a id='n2937' href='#n2937'>2937</a>
<a id='n2938' href='#n2938'>2938</a>
<a id='n2939' href='#n2939'>2939</a>
<a id='n2940' href='#n2940'>2940</a>
<a id='n2941' href='#n2941'>2941</a>
<a id='n2942' href='#n2942'>2942</a>
<a id='n2943' href='#n2943'>2943</a>
<a id='n2944' href='#n2944'>2944</a>
<a id='n2945' href='#n2945'>2945</a>
<a id='n2946' href='#n2946'>2946</a>
<a id='n2947' href='#n2947'>2947</a>
<a id='n2948' href='#n2948'>2948</a>
<a id='n2949' href='#n2949'>2949</a>
<a id='n2950' href='#n2950'>2950</a>
<a id='n2951' href='#n2951'>2951</a>
<a id='n2952' href='#n2952'>2952</a>
<a id='n2953' href='#n2953'>2953</a>
<a id='n2954' href='#n2954'>2954</a>
<a id='n2955' href='#n2955'>2955</a>
<a id='n2956' href='#n2956'>2956</a>
<a id='n2957' href='#n2957'>2957</a>
<a id='n2958' href='#n2958'>2958</a>
<a id='n2959' href='#n2959'>2959</a>
<a id='n2960' href='#n2960'>2960</a>
<a id='n2961' href='#n2961'>2961</a>
<a id='n2962' href='#n2962'>2962</a>
<a id='n2963' href='#n2963'>2963</a>
<a id='n2964' href='#n2964'>2964</a>
<a id='n2965' href='#n2965'>2965</a>
<a id='n2966' href='#n2966'>2966</a>
<a id='n2967' href='#n2967'>2967</a>
<a id='n2968' href='#n2968'>2968</a>
<a id='n2969' href='#n2969'>2969</a>
<a id='n2970' href='#n2970'>2970</a>
<a id='n2971' href='#n2971'>2971</a>
<a id='n2972' href='#n2972'>2972</a>
<a id='n2973' href='#n2973'>2973</a>
<a id='n2974' href='#n2974'>2974</a>
<a id='n2975' href='#n2975'>2975</a>
<a id='n2976' href='#n2976'>2976</a>
<a id='n2977' href='#n2977'>2977</a>
<a id='n2978' href='#n2978'>2978</a>
<a id='n2979' href='#n2979'>2979</a>
<a id='n2980' href='#n2980'>2980</a>
<a id='n2981' href='#n2981'>2981</a>
<a id='n2982' href='#n2982'>2982</a>
<a id='n2983' href='#n2983'>2983</a>
<a id='n2984' href='#n2984'>2984</a>
<a id='n2985' href='#n2985'>2985</a>
<a id='n2986' href='#n2986'>2986</a>
<a id='n2987' href='#n2987'>2987</a>
<a id='n2988' href='#n2988'>2988</a>
<a id='n2989' href='#n2989'>2989</a>
<a id='n2990' href='#n2990'>2990</a>
<a id='n2991' href='#n2991'>2991</a>
<a id='n2992' href='#n2992'>2992</a>
<a id='n2993' href='#n2993'>2993</a>
<a id='n2994' href='#n2994'>2994</a>
<a id='n2995' href='#n2995'>2995</a>
<a id='n2996' href='#n2996'>2996</a>
<a id='n2997' href='#n2997'>2997</a>
<a id='n2998' href='#n2998'>2998</a>
<a id='n2999' href='#n2999'>2999</a>
<a id='n3000' href='#n3000'>3000</a>
<a id='n3001' href='#n3001'>3001</a>
<a id='n3002' href='#n3002'>3002</a>
<a id='n3003' href='#n3003'>3003</a>
<a id='n3004' href='#n3004'>3004</a>
<a id='n3005' href='#n3005'>3005</a>
<a id='n3006' href='#n3006'>3006</a>
<a id='n3007' href='#n3007'>3007</a>
<a id='n3008' href='#n3008'>3008</a>
<a id='n3009' href='#n3009'>3009</a>
<a id='n3010' href='#n3010'>3010</a>
<a id='n3011' href='#n3011'>3011</a>
<a id='n3012' href='#n3012'>3012</a>
<a id='n3013' href='#n3013'>3013</a>
<a id='n3014' href='#n3014'>3014</a>
<a id='n3015' href='#n3015'>3015</a>
<a id='n3016' href='#n3016'>3016</a>
<a id='n3017' href='#n3017'>3017</a>
<a id='n3018' href='#n3018'>3018</a>
<a id='n3019' href='#n3019'>3019</a>
<a id='n3020' href='#n3020'>3020</a>
<a id='n3021' href='#n3021'>3021</a>
<a id='n3022' href='#n3022'>3022</a>
<a id='n3023' href='#n3023'>3023</a>
<a id='n3024' href='#n3024'>3024</a>
<a id='n3025' href='#n3025'>3025</a>
<a id='n3026' href='#n3026'>3026</a>
<a id='n3027' href='#n3027'>3027</a>
<a id='n3028' href='#n3028'>3028</a>
<a id='n3029' href='#n3029'>3029</a>
<a id='n3030' href='#n3030'>3030</a>
<a id='n3031' href='#n3031'>3031</a>
<a id='n3032' href='#n3032'>3032</a>
<a id='n3033' href='#n3033'>3033</a>
<a id='n3034' href='#n3034'>3034</a>
<a id='n3035' href='#n3035'>3035</a>
<a id='n3036' href='#n3036'>3036</a>
<a id='n3037' href='#n3037'>3037</a>
<a id='n3038' href='#n3038'>3038</a>
<a id='n3039' href='#n3039'>3039</a>
<a id='n3040' href='#n3040'>3040</a>
<a id='n3041' href='#n3041'>3041</a>
<a id='n3042' href='#n3042'>3042</a>
<a id='n3043' href='#n3043'>3043</a>
<a id='n3044' href='#n3044'>3044</a>
<a id='n3045' href='#n3045'>3045</a>
<a id='n3046' href='#n3046'>3046</a>
<a id='n3047' href='#n3047'>3047</a>
<a id='n3048' href='#n3048'>3048</a>
<a id='n3049' href='#n3049'>3049</a>
<a id='n3050' href='#n3050'>3050</a>
<a id='n3051' href='#n3051'>3051</a>
<a id='n3052' href='#n3052'>3052</a>
<a id='n3053' href='#n3053'>3053</a>
<a id='n3054' href='#n3054'>3054</a>
<a id='n3055' href='#n3055'>3055</a>
<a id='n3056' href='#n3056'>3056</a>
<a id='n3057' href='#n3057'>3057</a>
<a id='n3058' href='#n3058'>3058</a>
<a id='n3059' href='#n3059'>3059</a>
<a id='n3060' href='#n3060'>3060</a>
<a id='n3061' href='#n3061'>3061</a>
<a id='n3062' href='#n3062'>3062</a>
<a id='n3063' href='#n3063'>3063</a>
<a id='n3064' href='#n3064'>3064</a>
<a id='n3065' href='#n3065'>3065</a>
<a id='n3066' href='#n3066'>3066</a>
<a id='n3067' href='#n3067'>3067</a>
<a id='n3068' href='#n3068'>3068</a>
<a id='n3069' href='#n3069'>3069</a>
<a id='n3070' href='#n3070'>3070</a>
<a id='n3071' href='#n3071'>3071</a>
<a id='n3072' href='#n3072'>3072</a>
<a id='n3073' href='#n3073'>3073</a>
<a id='n3074' href='#n3074'>3074</a>
<a id='n3075' href='#n3075'>3075</a>
<a id='n3076' href='#n3076'>3076</a>
<a id='n3077' href='#n3077'>3077</a>
<a id='n3078' href='#n3078'>3078</a>
<a id='n3079' href='#n3079'>3079</a>
<a id='n3080' href='#n3080'>3080</a>
<a id='n3081' href='#n3081'>3081</a>
<a id='n3082' href='#n3082'>3082</a>
<a id='n3083' href='#n3083'>3083</a>
<a id='n3084' href='#n3084'>3084</a>
<a id='n3085' href='#n3085'>3085</a>
<a id='n3086' href='#n3086'>3086</a>
<a id='n3087' href='#n3087'>3087</a>
<a id='n3088' href='#n3088'>3088</a>
<a id='n3089' href='#n3089'>3089</a>
<a id='n3090' href='#n3090'>3090</a>
<a id='n3091' href='#n3091'>3091</a>
<a id='n3092' href='#n3092'>3092</a>
<a id='n3093' href='#n3093'>3093</a>
<a id='n3094' href='#n3094'>3094</a>
<a id='n3095' href='#n3095'>3095</a>
<a id='n3096' href='#n3096'>3096</a>
<a id='n3097' href='#n3097'>3097</a>
<a id='n3098' href='#n3098'>3098</a>
<a id='n3099' href='#n3099'>3099</a>
<a id='n3100' href='#n3100'>3100</a>
<a id='n3101' href='#n3101'>3101</a>
<a id='n3102' href='#n3102'>3102</a>
<a id='n3103' href='#n3103'>3103</a>
<a id='n3104' href='#n3104'>3104</a>
<a id='n3105' href='#n3105'>3105</a>
<a id='n3106' href='#n3106'>3106</a>
<a id='n3107' href='#n3107'>3107</a>
<a id='n3108' href='#n3108'>3108</a>
<a id='n3109' href='#n3109'>3109</a>
<a id='n3110' href='#n3110'>3110</a>
<a id='n3111' href='#n3111'>3111</a>
<a id='n3112' href='#n3112'>3112</a>
<a id='n3113' href='#n3113'>3113</a>
<a id='n3114' href='#n3114'>3114</a>
<a id='n3115' href='#n3115'>3115</a>
<a id='n3116' href='#n3116'>3116</a>
<a id='n3117' href='#n3117'>3117</a>
<a id='n3118' href='#n3118'>3118</a>
<a id='n3119' href='#n3119'>3119</a>
<a id='n3120' href='#n3120'>3120</a>
<a id='n3121' href='#n3121'>3121</a>
<a id='n3122' href='#n3122'>3122</a>
<a id='n3123' href='#n3123'>3123</a>
<a id='n3124' href='#n3124'>3124</a>
<a id='n3125' href='#n3125'>3125</a>
<a id='n3126' href='#n3126'>3126</a>
<a id='n3127' href='#n3127'>3127</a>
<a id='n3128' href='#n3128'>3128</a>
<a id='n3129' href='#n3129'>3129</a>
<a id='n3130' href='#n3130'>3130</a>
<a id='n3131' href='#n3131'>3131</a>
<a id='n3132' href='#n3132'>3132</a>
<a id='n3133' href='#n3133'>3133</a>
<a id='n3134' href='#n3134'>3134</a>
<a id='n3135' href='#n3135'>3135</a>
<a id='n3136' href='#n3136'>3136</a>
<a id='n3137' href='#n3137'>3137</a>
<a id='n3138' href='#n3138'>3138</a>
<a id='n3139' href='#n3139'>3139</a>
<a id='n3140' href='#n3140'>3140</a>
<a id='n3141' href='#n3141'>3141</a>
<a id='n3142' href='#n3142'>3142</a>
<a id='n3143' href='#n3143'>3143</a>
<a id='n3144' href='#n3144'>3144</a>
<a id='n3145' href='#n3145'>3145</a>
<a id='n3146' href='#n3146'>3146</a>
<a id='n3147' href='#n3147'>3147</a>
<a id='n3148' href='#n3148'>3148</a>
<a id='n3149' href='#n3149'>3149</a>
<a id='n3150' href='#n3150'>3150</a>
<a id='n3151' href='#n3151'>3151</a>
<a id='n3152' href='#n3152'>3152</a>
<a id='n3153' href='#n3153'>3153</a>
<a id='n3154' href='#n3154'>3154</a>
<a id='n3155' href='#n3155'>3155</a>
<a id='n3156' href='#n3156'>3156</a>
<a id='n3157' href='#n3157'>3157</a>
<a id='n3158' href='#n3158'>3158</a>
<a id='n3159' href='#n3159'>3159</a>
<a id='n3160' href='#n3160'>3160</a>
<a id='n3161' href='#n3161'>3161</a>
<a id='n3162' href='#n3162'>3162</a>
<a id='n3163' href='#n3163'>3163</a>
<a id='n3164' href='#n3164'>3164</a>
<a id='n3165' href='#n3165'>3165</a>
<a id='n3166' href='#n3166'>3166</a>
<a id='n3167' href='#n3167'>3167</a>
<a id='n3168' href='#n3168'>3168</a>
<a id='n3169' href='#n3169'>3169</a>
<a id='n3170' href='#n3170'>3170</a>
<a id='n3171' href='#n3171'>3171</a>
<a id='n3172' href='#n3172'>3172</a>
<a id='n3173' href='#n3173'>3173</a>
<a id='n3174' href='#n3174'>3174</a>
<a id='n3175' href='#n3175'>3175</a>
<a id='n3176' href='#n3176'>3176</a>
<a id='n3177' href='#n3177'>3177</a>
<a id='n3178' href='#n3178'>3178</a>
<a id='n3179' href='#n3179'>3179</a>
<a id='n3180' href='#n3180'>3180</a>
<a id='n3181' href='#n3181'>3181</a>
<a id='n3182' href='#n3182'>3182</a>
<a id='n3183' href='#n3183'>3183</a>
<a id='n3184' href='#n3184'>3184</a>
<a id='n3185' href='#n3185'>3185</a>
<a id='n3186' href='#n3186'>3186</a>
<a id='n3187' href='#n3187'>3187</a>
<a id='n3188' href='#n3188'>3188</a>
<a id='n3189' href='#n3189'>3189</a>
<a id='n3190' href='#n3190'>3190</a>
<a id='n3191' href='#n3191'>3191</a>
<a id='n3192' href='#n3192'>3192</a>
<a id='n3193' href='#n3193'>3193</a>
<a id='n3194' href='#n3194'>3194</a>
<a id='n3195' href='#n3195'>3195</a>
<a id='n3196' href='#n3196'>3196</a>
<a id='n3197' href='#n3197'>3197</a>
<a id='n3198' href='#n3198'>3198</a>
<a id='n3199' href='#n3199'>3199</a>
<a id='n3200' href='#n3200'>3200</a>
<a id='n3201' href='#n3201'>3201</a>
<a id='n3202' href='#n3202'>3202</a>
<a id='n3203' href='#n3203'>3203</a>
<a id='n3204' href='#n3204'>3204</a>
<a id='n3205' href='#n3205'>3205</a>
<a id='n3206' href='#n3206'>3206</a>
<a id='n3207' href='#n3207'>3207</a>
<a id='n3208' href='#n3208'>3208</a>
<a id='n3209' href='#n3209'>3209</a>
<a id='n3210' href='#n3210'>3210</a>
<a id='n3211' href='#n3211'>3211</a>
<a id='n3212' href='#n3212'>3212</a>
<a id='n3213' href='#n3213'>3213</a>
<a id='n3214' href='#n3214'>3214</a>
<a id='n3215' href='#n3215'>3215</a>
<a id='n3216' href='#n3216'>3216</a>
<a id='n3217' href='#n3217'>3217</a>
<a id='n3218' href='#n3218'>3218</a>
<a id='n3219' href='#n3219'>3219</a>
<a id='n3220' href='#n3220'>3220</a>
<a id='n3221' href='#n3221'>3221</a>
<a id='n3222' href='#n3222'>3222</a>
<a id='n3223' href='#n3223'>3223</a>
<a id='n3224' href='#n3224'>3224</a>
<a id='n3225' href='#n3225'>3225</a>
<a id='n3226' href='#n3226'>3226</a>
<a id='n3227' href='#n3227'>3227</a>
<a id='n3228' href='#n3228'>3228</a>
<a id='n3229' href='#n3229'>3229</a>
<a id='n3230' href='#n3230'>3230</a>
<a id='n3231' href='#n3231'>3231</a>
<a id='n3232' href='#n3232'>3232</a>
<a id='n3233' href='#n3233'>3233</a>
<a id='n3234' href='#n3234'>3234</a>
<a id='n3235' href='#n3235'>3235</a>
<a id='n3236' href='#n3236'>3236</a>
<a id='n3237' href='#n3237'>3237</a>
<a id='n3238' href='#n3238'>3238</a>
<a id='n3239' href='#n3239'>3239</a>
<a id='n3240' href='#n3240'>3240</a>
<a id='n3241' href='#n3241'>3241</a>
<a id='n3242' href='#n3242'>3242</a>
<a id='n3243' href='#n3243'>3243</a>
<a id='n3244' href='#n3244'>3244</a>
<a id='n3245' href='#n3245'>3245</a>
<a id='n3246' href='#n3246'>3246</a>
<a id='n3247' href='#n3247'>3247</a>
<a id='n3248' href='#n3248'>3248</a>
<a id='n3249' href='#n3249'>3249</a>
<a id='n3250' href='#n3250'>3250</a>
<a id='n3251' href='#n3251'>3251</a>
<a id='n3252' href='#n3252'>3252</a>
<a id='n3253' href='#n3253'>3253</a>
<a id='n3254' href='#n3254'>3254</a>
<a id='n3255' href='#n3255'>3255</a>
<a id='n3256' href='#n3256'>3256</a>
<a id='n3257' href='#n3257'>3257</a>
<a id='n3258' href='#n3258'>3258</a>
<a id='n3259' href='#n3259'>3259</a>
<a id='n3260' href='#n3260'>3260</a>
<a id='n3261' href='#n3261'>3261</a>
<a id='n3262' href='#n3262'>3262</a>
<a id='n3263' href='#n3263'>3263</a>
<a id='n3264' href='#n3264'>3264</a>
<a id='n3265' href='#n3265'>3265</a>
<a id='n3266' href='#n3266'>3266</a>
<a id='n3267' href='#n3267'>3267</a>
<a id='n3268' href='#n3268'>3268</a>
<a id='n3269' href='#n3269'>3269</a>
<a id='n3270' href='#n3270'>3270</a>
<a id='n3271' href='#n3271'>3271</a>
<a id='n3272' href='#n3272'>3272</a>
<a id='n3273' href='#n3273'>3273</a>
<a id='n3274' href='#n3274'>3274</a>
<a id='n3275' href='#n3275'>3275</a>
<a id='n3276' href='#n3276'>3276</a>
<a id='n3277' href='#n3277'>3277</a>
<a id='n3278' href='#n3278'>3278</a>
<a id='n3279' href='#n3279'>3279</a>
<a id='n3280' href='#n3280'>3280</a>
<a id='n3281' href='#n3281'>3281</a>
<a id='n3282' href='#n3282'>3282</a>
<a id='n3283' href='#n3283'>3283</a>
<a id='n3284' href='#n3284'>3284</a>
<a id='n3285' href='#n3285'>3285</a>
<a id='n3286' href='#n3286'>3286</a>
<a id='n3287' href='#n3287'>3287</a>
<a id='n3288' href='#n3288'>3288</a>
<a id='n3289' href='#n3289'>3289</a>
<a id='n3290' href='#n3290'>3290</a>
<a id='n3291' href='#n3291'>3291</a>
<a id='n3292' href='#n3292'>3292</a>
<a id='n3293' href='#n3293'>3293</a>
<a id='n3294' href='#n3294'>3294</a>
<a id='n3295' href='#n3295'>3295</a>
<a id='n3296' href='#n3296'>3296</a>
<a id='n3297' href='#n3297'>3297</a>
<a id='n3298' href='#n3298'>3298</a>
<a id='n3299' href='#n3299'>3299</a>
<a id='n3300' href='#n3300'>3300</a>
<a id='n3301' href='#n3301'>3301</a>
<a id='n3302' href='#n3302'>3302</a>
<a id='n3303' href='#n3303'>3303</a>
<a id='n3304' href='#n3304'>3304</a>
<a id='n3305' href='#n3305'>3305</a>
<a id='n3306' href='#n3306'>3306</a>
<a id='n3307' href='#n3307'>3307</a>
<a id='n3308' href='#n3308'>3308</a>
<a id='n3309' href='#n3309'>3309</a>
<a id='n3310' href='#n3310'>3310</a>
<a id='n3311' href='#n3311'>3311</a>
<a id='n3312' href='#n3312'>3312</a>
<a id='n3313' href='#n3313'>3313</a>
<a id='n3314' href='#n3314'>3314</a>
<a id='n3315' href='#n3315'>3315</a>
<a id='n3316' href='#n3316'>3316</a>
<a id='n3317' href='#n3317'>3317</a>
<a id='n3318' href='#n3318'>3318</a>
<a id='n3319' href='#n3319'>3319</a>
<a id='n3320' href='#n3320'>3320</a>
<a id='n3321' href='#n3321'>3321</a>
<a id='n3322' href='#n3322'>3322</a>
<a id='n3323' href='#n3323'>3323</a>
<a id='n3324' href='#n3324'>3324</a>
<a id='n3325' href='#n3325'>3325</a>
<a id='n3326' href='#n3326'>3326</a>
<a id='n3327' href='#n3327'>3327</a>
<a id='n3328' href='#n3328'>3328</a>
<a id='n3329' href='#n3329'>3329</a>
<a id='n3330' href='#n3330'>3330</a>
<a id='n3331' href='#n3331'>3331</a>
<a id='n3332' href='#n3332'>3332</a>
<a id='n3333' href='#n3333'>3333</a>
<a id='n3334' href='#n3334'>3334</a>
<a id='n3335' href='#n3335'>3335</a>
<a id='n3336' href='#n3336'>3336</a>
<a id='n3337' href='#n3337'>3337</a>
<a id='n3338' href='#n3338'>3338</a>
<a id='n3339' href='#n3339'>3339</a>
<a id='n3340' href='#n3340'>3340</a>
<a id='n3341' href='#n3341'>3341</a>
<a id='n3342' href='#n3342'>3342</a>
<a id='n3343' href='#n3343'>3343</a>
<a id='n3344' href='#n3344'>3344</a>
<a id='n3345' href='#n3345'>3345</a>
<a id='n3346' href='#n3346'>3346</a>
<a id='n3347' href='#n3347'>3347</a>
<a id='n3348' href='#n3348'>3348</a>
<a id='n3349' href='#n3349'>3349</a>
<a id='n3350' href='#n3350'>3350</a>
<a id='n3351' href='#n3351'>3351</a>
<a id='n3352' href='#n3352'>3352</a>
<a id='n3353' href='#n3353'>3353</a>
<a id='n3354' href='#n3354'>3354</a>
<a id='n3355' href='#n3355'>3355</a>
<a id='n3356' href='#n3356'>3356</a>
<a id='n3357' href='#n3357'>3357</a>
<a id='n3358' href='#n3358'>3358</a>
<a id='n3359' href='#n3359'>3359</a>
<a id='n3360' href='#n3360'>3360</a>
<a id='n3361' href='#n3361'>3361</a>
<a id='n3362' href='#n3362'>3362</a>
<a id='n3363' href='#n3363'>3363</a>
<a id='n3364' href='#n3364'>3364</a>
<a id='n3365' href='#n3365'>3365</a>
<a id='n3366' href='#n3366'>3366</a>
<a id='n3367' href='#n3367'>3367</a>
<a id='n3368' href='#n3368'>3368</a>
<a id='n3369' href='#n3369'>3369</a>
<a id='n3370' href='#n3370'>3370</a>
<a id='n3371' href='#n3371'>3371</a>
<a id='n3372' href='#n3372'>3372</a>
<a id='n3373' href='#n3373'>3373</a>
<a id='n3374' href='#n3374'>3374</a>
<a id='n3375' href='#n3375'>3375</a>
<a id='n3376' href='#n3376'>3376</a>
<a id='n3377' href='#n3377'>3377</a>
<a id='n3378' href='#n3378'>3378</a>
<a id='n3379' href='#n3379'>3379</a>
<a id='n3380' href='#n3380'>3380</a>
<a id='n3381' href='#n3381'>3381</a>
<a id='n3382' href='#n3382'>3382</a>
<a id='n3383' href='#n3383'>3383</a>
<a id='n3384' href='#n3384'>3384</a>
<a id='n3385' href='#n3385'>3385</a>
<a id='n3386' href='#n3386'>3386</a>
<a id='n3387' href='#n3387'>3387</a>
<a id='n3388' href='#n3388'>3388</a>
<a id='n3389' href='#n3389'>3389</a>
<a id='n3390' href='#n3390'>3390</a>
<a id='n3391' href='#n3391'>3391</a>
<a id='n3392' href='#n3392'>3392</a>
<a id='n3393' href='#n3393'>3393</a>
<a id='n3394' href='#n3394'>3394</a>
<a id='n3395' href='#n3395'>3395</a>
<a id='n3396' href='#n3396'>3396</a>
<a id='n3397' href='#n3397'>3397</a>
<a id='n3398' href='#n3398'>3398</a>
<a id='n3399' href='#n3399'>3399</a>
<a id='n3400' href='#n3400'>3400</a>
<a id='n3401' href='#n3401'>3401</a>
<a id='n3402' href='#n3402'>3402</a>
<a id='n3403' href='#n3403'>3403</a>
<a id='n3404' href='#n3404'>3404</a>
<a id='n3405' href='#n3405'>3405</a>
<a id='n3406' href='#n3406'>3406</a>
<a id='n3407' href='#n3407'>3407</a>
<a id='n3408' href='#n3408'>3408</a>
<a id='n3409' href='#n3409'>3409</a>
<a id='n3410' href='#n3410'>3410</a>
<a id='n3411' href='#n3411'>3411</a>
<a id='n3412' href='#n3412'>3412</a>
<a id='n3413' href='#n3413'>3413</a>
<a id='n3414' href='#n3414'>3414</a>
<a id='n3415' href='#n3415'>3415</a>
<a id='n3416' href='#n3416'>3416</a>
<a id='n3417' href='#n3417'>3417</a>
<a id='n3418' href='#n3418'>3418</a>
<a id='n3419' href='#n3419'>3419</a>
<a id='n3420' href='#n3420'>3420</a>
<a id='n3421' href='#n3421'>3421</a>
<a id='n3422' href='#n3422'>3422</a>
<a id='n3423' href='#n3423'>3423</a>
<a id='n3424' href='#n3424'>3424</a>
<a id='n3425' href='#n3425'>3425</a>
<a id='n3426' href='#n3426'>3426</a>
<a id='n3427' href='#n3427'>3427</a>
<a id='n3428' href='#n3428'>3428</a>
<a id='n3429' href='#n3429'>3429</a>
<a id='n3430' href='#n3430'>3430</a>
<a id='n3431' href='#n3431'>3431</a>
<a id='n3432' href='#n3432'>3432</a>
<a id='n3433' href='#n3433'>3433</a>
<a id='n3434' href='#n3434'>3434</a>
<a id='n3435' href='#n3435'>3435</a>
<a id='n3436' href='#n3436'>3436</a>
<a id='n3437' href='#n3437'>3437</a>
<a id='n3438' href='#n3438'>3438</a>
<a id='n3439' href='#n3439'>3439</a>
<a id='n3440' href='#n3440'>3440</a>
<a id='n3441' href='#n3441'>3441</a>
<a id='n3442' href='#n3442'>3442</a>
<a id='n3443' href='#n3443'>3443</a>
<a id='n3444' href='#n3444'>3444</a>
<a id='n3445' href='#n3445'>3445</a>
<a id='n3446' href='#n3446'>3446</a>
<a id='n3447' href='#n3447'>3447</a>
<a id='n3448' href='#n3448'>3448</a>
<a id='n3449' href='#n3449'>3449</a>
<a id='n3450' href='#n3450'>3450</a>
<a id='n3451' href='#n3451'>3451</a>
<a id='n3452' href='#n3452'>3452</a>
<a id='n3453' href='#n3453'>3453</a>
<a id='n3454' href='#n3454'>3454</a>
<a id='n3455' href='#n3455'>3455</a>
<a id='n3456' href='#n3456'>3456</a>
<a id='n3457' href='#n3457'>3457</a>
<a id='n3458' href='#n3458'>3458</a>
<a id='n3459' href='#n3459'>3459</a>
<a id='n3460' href='#n3460'>3460</a>
<a id='n3461' href='#n3461'>3461</a>
<a id='n3462' href='#n3462'>3462</a>
<a id='n3463' href='#n3463'>3463</a>
<a id='n3464' href='#n3464'>3464</a>
<a id='n3465' href='#n3465'>3465</a>
<a id='n3466' href='#n3466'>3466</a>
<a id='n3467' href='#n3467'>3467</a>
<a id='n3468' href='#n3468'>3468</a>
<a id='n3469' href='#n3469'>3469</a>
<a id='n3470' href='#n3470'>3470</a>
<a id='n3471' href='#n3471'>3471</a>
<a id='n3472' href='#n3472'>3472</a>
<a id='n3473' href='#n3473'>3473</a>
<a id='n3474' href='#n3474'>3474</a>
<a id='n3475' href='#n3475'>3475</a>
<a id='n3476' href='#n3476'>3476</a>
<a id='n3477' href='#n3477'>3477</a>
<a id='n3478' href='#n3478'>3478</a>
<a id='n3479' href='#n3479'>3479</a>
<a id='n3480' href='#n3480'>3480</a>
<a id='n3481' href='#n3481'>3481</a>
<a id='n3482' href='#n3482'>3482</a>
<a id='n3483' href='#n3483'>3483</a>
<a id='n3484' href='#n3484'>3484</a>
<a id='n3485' href='#n3485'>3485</a>
<a id='n3486' href='#n3486'>3486</a>
<a id='n3487' href='#n3487'>3487</a>
<a id='n3488' href='#n3488'>3488</a>
<a id='n3489' href='#n3489'>3489</a>
<a id='n3490' href='#n3490'>3490</a>
<a id='n3491' href='#n3491'>3491</a>
<a id='n3492' href='#n3492'>3492</a>
<a id='n3493' href='#n3493'>3493</a>
<a id='n3494' href='#n3494'>3494</a>
<a id='n3495' href='#n3495'>3495</a>
<a id='n3496' href='#n3496'>3496</a>
<a id='n3497' href='#n3497'>3497</a>
<a id='n3498' href='#n3498'>3498</a>
<a id='n3499' href='#n3499'>3499</a>
<a id='n3500' href='#n3500'>3500</a>
<a id='n3501' href='#n3501'>3501</a>
<a id='n3502' href='#n3502'>3502</a>
<a id='n3503' href='#n3503'>3503</a>
<a id='n3504' href='#n3504'>3504</a>
<a id='n3505' href='#n3505'>3505</a>
<a id='n3506' href='#n3506'>3506</a>
<a id='n3507' href='#n3507'>3507</a>
<a id='n3508' href='#n3508'>3508</a>
<a id='n3509' href='#n3509'>3509</a>
<a id='n3510' href='#n3510'>3510</a>
<a id='n3511' href='#n3511'>3511</a>
<a id='n3512' href='#n3512'>3512</a>
<a id='n3513' href='#n3513'>3513</a>
<a id='n3514' href='#n3514'>3514</a>
<a id='n3515' href='#n3515'>3515</a>
<a id='n3516' href='#n3516'>3516</a>
<a id='n3517' href='#n3517'>3517</a>
<a id='n3518' href='#n3518'>3518</a>
<a id='n3519' href='#n3519'>3519</a>
<a id='n3520' href='#n3520'>3520</a>
<a id='n3521' href='#n3521'>3521</a>
<a id='n3522' href='#n3522'>3522</a>
<a id='n3523' href='#n3523'>3523</a>
<a id='n3524' href='#n3524'>3524</a>
<a id='n3525' href='#n3525'>3525</a>
<a id='n3526' href='#n3526'>3526</a>
<a id='n3527' href='#n3527'>3527</a>
<a id='n3528' href='#n3528'>3528</a>
<a id='n3529' href='#n3529'>3529</a>
<a id='n3530' href='#n3530'>3530</a>
<a id='n3531' href='#n3531'>3531</a>
<a id='n3532' href='#n3532'>3532</a>
<a id='n3533' href='#n3533'>3533</a>
<a id='n3534' href='#n3534'>3534</a>
<a id='n3535' href='#n3535'>3535</a>
<a id='n3536' href='#n3536'>3536</a>
<a id='n3537' href='#n3537'>3537</a>
<a id='n3538' href='#n3538'>3538</a>
<a id='n3539' href='#n3539'>3539</a>
<a id='n3540' href='#n3540'>3540</a>
<a id='n3541' href='#n3541'>3541</a>
<a id='n3542' href='#n3542'>3542</a>
<a id='n3543' href='#n3543'>3543</a>
<a id='n3544' href='#n3544'>3544</a>
<a id='n3545' href='#n3545'>3545</a>
<a id='n3546' href='#n3546'>3546</a>
<a id='n3547' href='#n3547'>3547</a>
<a id='n3548' href='#n3548'>3548</a>
<a id='n3549' href='#n3549'>3549</a>
<a id='n3550' href='#n3550'>3550</a>
<a id='n3551' href='#n3551'>3551</a>
<a id='n3552' href='#n3552'>3552</a>
<a id='n3553' href='#n3553'>3553</a>
<a id='n3554' href='#n3554'>3554</a>
<a id='n3555' href='#n3555'>3555</a>
<a id='n3556' href='#n3556'>3556</a>
<a id='n3557' href='#n3557'>3557</a>
<a id='n3558' href='#n3558'>3558</a>
<a id='n3559' href='#n3559'>3559</a>
<a id='n3560' href='#n3560'>3560</a>
<a id='n3561' href='#n3561'>3561</a>
<a id='n3562' href='#n3562'>3562</a>
<a id='n3563' href='#n3563'>3563</a>
<a id='n3564' href='#n3564'>3564</a>
<a id='n3565' href='#n3565'>3565</a>
<a id='n3566' href='#n3566'>3566</a>
<a id='n3567' href='#n3567'>3567</a>
<a id='n3568' href='#n3568'>3568</a>
<a id='n3569' href='#n3569'>3569</a>
<a id='n3570' href='#n3570'>3570</a>
<a id='n3571' href='#n3571'>3571</a>
<a id='n3572' href='#n3572'>3572</a>
<a id='n3573' href='#n3573'>3573</a>
<a id='n3574' href='#n3574'>3574</a>
<a id='n3575' href='#n3575'>3575</a>
<a id='n3576' href='#n3576'>3576</a>
<a id='n3577' href='#n3577'>3577</a>
<a id='n3578' href='#n3578'>3578</a>
<a id='n3579' href='#n3579'>3579</a>
<a id='n3580' href='#n3580'>3580</a>
<a id='n3581' href='#n3581'>3581</a>
<a id='n3582' href='#n3582'>3582</a>
<a id='n3583' href='#n3583'>3583</a>
<a id='n3584' href='#n3584'>3584</a>
<a id='n3585' href='#n3585'>3585</a>
<a id='n3586' href='#n3586'>3586</a>
<a id='n3587' href='#n3587'>3587</a>
<a id='n3588' href='#n3588'>3588</a>
<a id='n3589' href='#n3589'>3589</a>
<a id='n3590' href='#n3590'>3590</a>
<a id='n3591' href='#n3591'>3591</a>
<a id='n3592' href='#n3592'>3592</a>
<a id='n3593' href='#n3593'>3593</a>
<a id='n3594' href='#n3594'>3594</a>
<a id='n3595' href='#n3595'>3595</a>
<a id='n3596' href='#n3596'>3596</a>
<a id='n3597' href='#n3597'>3597</a>
<a id='n3598' href='#n3598'>3598</a>
<a id='n3599' href='#n3599'>3599</a>
<a id='n3600' href='#n3600'>3600</a>
<a id='n3601' href='#n3601'>3601</a>
<a id='n3602' href='#n3602'>3602</a>
<a id='n3603' href='#n3603'>3603</a>
<a id='n3604' href='#n3604'>3604</a>
<a id='n3605' href='#n3605'>3605</a>
<a id='n3606' href='#n3606'>3606</a>
<a id='n3607' href='#n3607'>3607</a>
<a id='n3608' href='#n3608'>3608</a>
<a id='n3609' href='#n3609'>3609</a>
<a id='n3610' href='#n3610'>3610</a>
<a id='n3611' href='#n3611'>3611</a>
<a id='n3612' href='#n3612'>3612</a>
<a id='n3613' href='#n3613'>3613</a>
<a id='n3614' href='#n3614'>3614</a>
<a id='n3615' href='#n3615'>3615</a>
<a id='n3616' href='#n3616'>3616</a>
<a id='n3617' href='#n3617'>3617</a>
<a id='n3618' href='#n3618'>3618</a>
<a id='n3619' href='#n3619'>3619</a>
<a id='n3620' href='#n3620'>3620</a>
<a id='n3621' href='#n3621'>3621</a>
<a id='n3622' href='#n3622'>3622</a>
<a id='n3623' href='#n3623'>3623</a>
<a id='n3624' href='#n3624'>3624</a>
<a id='n3625' href='#n3625'>3625</a>
<a id='n3626' href='#n3626'>3626</a>
<a id='n3627' href='#n3627'>3627</a>
<a id='n3628' href='#n3628'>3628</a>
<a id='n3629' href='#n3629'>3629</a>
<a id='n3630' href='#n3630'>3630</a>
<a id='n3631' href='#n3631'>3631</a>
<a id='n3632' href='#n3632'>3632</a>
<a id='n3633' href='#n3633'>3633</a>
<a id='n3634' href='#n3634'>3634</a>
<a id='n3635' href='#n3635'>3635</a>
<a id='n3636' href='#n3636'>3636</a>
<a id='n3637' href='#n3637'>3637</a>
<a id='n3638' href='#n3638'>3638</a>
<a id='n3639' href='#n3639'>3639</a>
<a id='n3640' href='#n3640'>3640</a>
<a id='n3641' href='#n3641'>3641</a>
<a id='n3642' href='#n3642'>3642</a>
<a id='n3643' href='#n3643'>3643</a>
<a id='n3644' href='#n3644'>3644</a>
<a id='n3645' href='#n3645'>3645</a>
<a id='n3646' href='#n3646'>3646</a>
<a id='n3647' href='#n3647'>3647</a>
<a id='n3648' href='#n3648'>3648</a>
<a id='n3649' href='#n3649'>3649</a>
<a id='n3650' href='#n3650'>3650</a>
<a id='n3651' href='#n3651'>3651</a>
<a id='n3652' href='#n3652'>3652</a>
<a id='n3653' href='#n3653'>3653</a>
<a id='n3654' href='#n3654'>3654</a>
<a id='n3655' href='#n3655'>3655</a>
<a id='n3656' href='#n3656'>3656</a>
<a id='n3657' href='#n3657'>3657</a>
<a id='n3658' href='#n3658'>3658</a>
<a id='n3659' href='#n3659'>3659</a>
<a id='n3660' href='#n3660'>3660</a>
<a id='n3661' href='#n3661'>3661</a>
<a id='n3662' href='#n3662'>3662</a>
<a id='n3663' href='#n3663'>3663</a>
<a id='n3664' href='#n3664'>3664</a>
<a id='n3665' href='#n3665'>3665</a>
<a id='n3666' href='#n3666'>3666</a>
<a id='n3667' href='#n3667'>3667</a>
<a id='n3668' href='#n3668'>3668</a>
<a id='n3669' href='#n3669'>3669</a>
<a id='n3670' href='#n3670'>3670</a>
<a id='n3671' href='#n3671'>3671</a>
<a id='n3672' href='#n3672'>3672</a>
<a id='n3673' href='#n3673'>3673</a>
<a id='n3674' href='#n3674'>3674</a>
<a id='n3675' href='#n3675'>3675</a>
<a id='n3676' href='#n3676'>3676</a>
<a id='n3677' href='#n3677'>3677</a>
<a id='n3678' href='#n3678'>3678</a>
<a id='n3679' href='#n3679'>3679</a>
<a id='n3680' href='#n3680'>3680</a>
<a id='n3681' href='#n3681'>3681</a>
<a id='n3682' href='#n3682'>3682</a>
<a id='n3683' href='#n3683'>3683</a>
<a id='n3684' href='#n3684'>3684</a>
<a id='n3685' href='#n3685'>3685</a>
<a id='n3686' href='#n3686'>3686</a>
<a id='n3687' href='#n3687'>3687</a>
<a id='n3688' href='#n3688'>3688</a>
<a id='n3689' href='#n3689'>3689</a>
<a id='n3690' href='#n3690'>3690</a>
<a id='n3691' href='#n3691'>3691</a>
<a id='n3692' href='#n3692'>3692</a>
<a id='n3693' href='#n3693'>3693</a>
<a id='n3694' href='#n3694'>3694</a>
<a id='n3695' href='#n3695'>3695</a>
<a id='n3696' href='#n3696'>3696</a>
<a id='n3697' href='#n3697'>3697</a>
<a id='n3698' href='#n3698'>3698</a>
<a id='n3699' href='#n3699'>3699</a>
<a id='n3700' href='#n3700'>3700</a>
<a id='n3701' href='#n3701'>3701</a>
<a id='n3702' href='#n3702'>3702</a>
<a id='n3703' href='#n3703'>3703</a>
<a id='n3704' href='#n3704'>3704</a>
<a id='n3705' href='#n3705'>3705</a>
<a id='n3706' href='#n3706'>3706</a>
<a id='n3707' href='#n3707'>3707</a>
<a id='n3708' href='#n3708'>3708</a>
<a id='n3709' href='#n3709'>3709</a>
<a id='n3710' href='#n3710'>3710</a>
<a id='n3711' href='#n3711'>3711</a>
<a id='n3712' href='#n3712'>3712</a>
<a id='n3713' href='#n3713'>3713</a>
<a id='n3714' href='#n3714'>3714</a>
<a id='n3715' href='#n3715'>3715</a>
<a id='n3716' href='#n3716'>3716</a>
<a id='n3717' href='#n3717'>3717</a>
<a id='n3718' href='#n3718'>3718</a>
<a id='n3719' href='#n3719'>3719</a>
<a id='n3720' href='#n3720'>3720</a>
<a id='n3721' href='#n3721'>3721</a>
<a id='n3722' href='#n3722'>3722</a>
<a id='n3723' href='#n3723'>3723</a>
<a id='n3724' href='#n3724'>3724</a>
<a id='n3725' href='#n3725'>3725</a>
<a id='n3726' href='#n3726'>3726</a>
<a id='n3727' href='#n3727'>3727</a>
<a id='n3728' href='#n3728'>3728</a>
<a id='n3729' href='#n3729'>3729</a>
<a id='n3730' href='#n3730'>3730</a>
<a id='n3731' href='#n3731'>3731</a>
<a id='n3732' href='#n3732'>3732</a>
<a id='n3733' href='#n3733'>3733</a>
<a id='n3734' href='#n3734'>3734</a>
<a id='n3735' href='#n3735'>3735</a>
<a id='n3736' href='#n3736'>3736</a>
<a id='n3737' href='#n3737'>3737</a>
<a id='n3738' href='#n3738'>3738</a>
<a id='n3739' href='#n3739'>3739</a>
<a id='n3740' href='#n3740'>3740</a>
<a id='n3741' href='#n3741'>3741</a>
<a id='n3742' href='#n3742'>3742</a>
<a id='n3743' href='#n3743'>3743</a>
<a id='n3744' href='#n3744'>3744</a>
<a id='n3745' href='#n3745'>3745</a>
<a id='n3746' href='#n3746'>3746</a>
<a id='n3747' href='#n3747'>3747</a>
<a id='n3748' href='#n3748'>3748</a>
<a id='n3749' href='#n3749'>3749</a>
<a id='n3750' href='#n3750'>3750</a>
<a id='n3751' href='#n3751'>3751</a>
<a id='n3752' href='#n3752'>3752</a>
<a id='n3753' href='#n3753'>3753</a>
<a id='n3754' href='#n3754'>3754</a>
<a id='n3755' href='#n3755'>3755</a>
<a id='n3756' href='#n3756'>3756</a>
<a id='n3757' href='#n3757'>3757</a>
<a id='n3758' href='#n3758'>3758</a>
<a id='n3759' href='#n3759'>3759</a>
<a id='n3760' href='#n3760'>3760</a>
<a id='n3761' href='#n3761'>3761</a>
<a id='n3762' href='#n3762'>3762</a>
<a id='n3763' href='#n3763'>3763</a>
<a id='n3764' href='#n3764'>3764</a>
<a id='n3765' href='#n3765'>3765</a>
<a id='n3766' href='#n3766'>3766</a>
<a id='n3767' href='#n3767'>3767</a>
<a id='n3768' href='#n3768'>3768</a>
<a id='n3769' href='#n3769'>3769</a>
<a id='n3770' href='#n3770'>3770</a>
<a id='n3771' href='#n3771'>3771</a>
<a id='n3772' href='#n3772'>3772</a>
<a id='n3773' href='#n3773'>3773</a>
<a id='n3774' href='#n3774'>3774</a>
<a id='n3775' href='#n3775'>3775</a>
<a id='n3776' href='#n3776'>3776</a>
<a id='n3777' href='#n3777'>3777</a>
<a id='n3778' href='#n3778'>3778</a>
<a id='n3779' href='#n3779'>3779</a>
<a id='n3780' href='#n3780'>3780</a>
<a id='n3781' href='#n3781'>3781</a>
<a id='n3782' href='#n3782'>3782</a>
<a id='n3783' href='#n3783'>3783</a>
<a id='n3784' href='#n3784'>3784</a>
<a id='n3785' href='#n3785'>3785</a>
<a id='n3786' href='#n3786'>3786</a>
<a id='n3787' href='#n3787'>3787</a>
<a id='n3788' href='#n3788'>3788</a>
<a id='n3789' href='#n3789'>3789</a>
<a id='n3790' href='#n3790'>3790</a>
<a id='n3791' href='#n3791'>3791</a>
<a id='n3792' href='#n3792'>3792</a>
<a id='n3793' href='#n3793'>3793</a>
<a id='n3794' href='#n3794'>3794</a>
<a id='n3795' href='#n3795'>3795</a>
<a id='n3796' href='#n3796'>3796</a>
<a id='n3797' href='#n3797'>3797</a>
<a id='n3798' href='#n3798'>3798</a>
<a id='n3799' href='#n3799'>3799</a>
<a id='n3800' href='#n3800'>3800</a>
<a id='n3801' href='#n3801'>3801</a>
<a id='n3802' href='#n3802'>3802</a>
<a id='n3803' href='#n3803'>3803</a>
<a id='n3804' href='#n3804'>3804</a>
<a id='n3805' href='#n3805'>3805</a>
<a id='n3806' href='#n3806'>3806</a>
<a id='n3807' href='#n3807'>3807</a>
<a id='n3808' href='#n3808'>3808</a>
<a id='n3809' href='#n3809'>3809</a>
<a id='n3810' href='#n3810'>3810</a>
<a id='n3811' href='#n3811'>3811</a>
<a id='n3812' href='#n3812'>3812</a>
<a id='n3813' href='#n3813'>3813</a>
<a id='n3814' href='#n3814'>3814</a>
<a id='n3815' href='#n3815'>3815</a>
<a id='n3816' href='#n3816'>3816</a>
<a id='n3817' href='#n3817'>3817</a>
<a id='n3818' href='#n3818'>3818</a>
<a id='n3819' href='#n3819'>3819</a>
<a id='n3820' href='#n3820'>3820</a>
<a id='n3821' href='#n3821'>3821</a>
<a id='n3822' href='#n3822'>3822</a>
<a id='n3823' href='#n3823'>3823</a>
<a id='n3824' href='#n3824'>3824</a>
<a id='n3825' href='#n3825'>3825</a>
<a id='n3826' href='#n3826'>3826</a>
<a id='n3827' href='#n3827'>3827</a>
<a id='n3828' href='#n3828'>3828</a>
<a id='n3829' href='#n3829'>3829</a>
<a id='n3830' href='#n3830'>3830</a>
<a id='n3831' href='#n3831'>3831</a>
<a id='n3832' href='#n3832'>3832</a>
<a id='n3833' href='#n3833'>3833</a>
<a id='n3834' href='#n3834'>3834</a>
<a id='n3835' href='#n3835'>3835</a>
<a id='n3836' href='#n3836'>3836</a>
<a id='n3837' href='#n3837'>3837</a>
<a id='n3838' href='#n3838'>3838</a>
<a id='n3839' href='#n3839'>3839</a>
<a id='n3840' href='#n3840'>3840</a>
<a id='n3841' href='#n3841'>3841</a>
<a id='n3842' href='#n3842'>3842</a>
<a id='n3843' href='#n3843'>3843</a>
<a id='n3844' href='#n3844'>3844</a>
<a id='n3845' href='#n3845'>3845</a>
<a id='n3846' href='#n3846'>3846</a>
<a id='n3847' href='#n3847'>3847</a>
<a id='n3848' href='#n3848'>3848</a>
<a id='n3849' href='#n3849'>3849</a>
<a id='n3850' href='#n3850'>3850</a>
<a id='n3851' href='#n3851'>3851</a>
<a id='n3852' href='#n3852'>3852</a>
<a id='n3853' href='#n3853'>3853</a>
<a id='n3854' href='#n3854'>3854</a>
<a id='n3855' href='#n3855'>3855</a>
<a id='n3856' href='#n3856'>3856</a>
<a id='n3857' href='#n3857'>3857</a>
<a id='n3858' href='#n3858'>3858</a>
<a id='n3859' href='#n3859'>3859</a>
<a id='n3860' href='#n3860'>3860</a>
<a id='n3861' href='#n3861'>3861</a>
<a id='n3862' href='#n3862'>3862</a>
<a id='n3863' href='#n3863'>3863</a>
<a id='n3864' href='#n3864'>3864</a>
<a id='n3865' href='#n3865'>3865</a>
<a id='n3866' href='#n3866'>3866</a>
<a id='n3867' href='#n3867'>3867</a>
<a id='n3868' href='#n3868'>3868</a>
<a id='n3869' href='#n3869'>3869</a>
<a id='n3870' href='#n3870'>3870</a>
<a id='n3871' href='#n3871'>3871</a>
<a id='n3872' href='#n3872'>3872</a>
<a id='n3873' href='#n3873'>3873</a>
<a id='n3874' href='#n3874'>3874</a>
<a id='n3875' href='#n3875'>3875</a>
<a id='n3876' href='#n3876'>3876</a>
<a id='n3877' href='#n3877'>3877</a>
<a id='n3878' href='#n3878'>3878</a>
<a id='n3879' href='#n3879'>3879</a>
<a id='n3880' href='#n3880'>3880</a>
<a id='n3881' href='#n3881'>3881</a>
<a id='n3882' href='#n3882'>3882</a>
<a id='n3883' href='#n3883'>3883</a>
<a id='n3884' href='#n3884'>3884</a>
<a id='n3885' href='#n3885'>3885</a>
<a id='n3886' href='#n3886'>3886</a>
<a id='n3887' href='#n3887'>3887</a>
<a id='n3888' href='#n3888'>3888</a>
<a id='n3889' href='#n3889'>3889</a>
<a id='n3890' href='#n3890'>3890</a>
<a id='n3891' href='#n3891'>3891</a>
<a id='n3892' href='#n3892'>3892</a>
<a id='n3893' href='#n3893'>3893</a>
<a id='n3894' href='#n3894'>3894</a>
<a id='n3895' href='#n3895'>3895</a>
<a id='n3896' href='#n3896'>3896</a>
<a id='n3897' href='#n3897'>3897</a>
<a id='n3898' href='#n3898'>3898</a>
<a id='n3899' href='#n3899'>3899</a>
<a id='n3900' href='#n3900'>3900</a>
<a id='n3901' href='#n3901'>3901</a>
<a id='n3902' href='#n3902'>3902</a>
<a id='n3903' href='#n3903'>3903</a>
<a id='n3904' href='#n3904'>3904</a>
<a id='n3905' href='#n3905'>3905</a>
<a id='n3906' href='#n3906'>3906</a>
<a id='n3907' href='#n3907'>3907</a>
<a id='n3908' href='#n3908'>3908</a>
<a id='n3909' href='#n3909'>3909</a>
<a id='n3910' href='#n3910'>3910</a>
<a id='n3911' href='#n3911'>3911</a>
<a id='n3912' href='#n3912'>3912</a>
<a id='n3913' href='#n3913'>3913</a>
<a id='n3914' href='#n3914'>3914</a>
<a id='n3915' href='#n3915'>3915</a>
<a id='n3916' href='#n3916'>3916</a>
<a id='n3917' href='#n3917'>3917</a>
<a id='n3918' href='#n3918'>3918</a>
<a id='n3919' href='#n3919'>3919</a>
<a id='n3920' href='#n3920'>3920</a>
<a id='n3921' href='#n3921'>3921</a>
<a id='n3922' href='#n3922'>3922</a>
<a id='n3923' href='#n3923'>3923</a>
<a id='n3924' href='#n3924'>3924</a>
<a id='n3925' href='#n3925'>3925</a>
<a id='n3926' href='#n3926'>3926</a>
<a id='n3927' href='#n3927'>3927</a>
<a id='n3928' href='#n3928'>3928</a>
<a id='n3929' href='#n3929'>3929</a>
<a id='n3930' href='#n3930'>3930</a>
<a id='n3931' href='#n3931'>3931</a>
<a id='n3932' href='#n3932'>3932</a>
<a id='n3933' href='#n3933'>3933</a>
<a id='n3934' href='#n3934'>3934</a>
<a id='n3935' href='#n3935'>3935</a>
<a id='n3936' href='#n3936'>3936</a>
<a id='n3937' href='#n3937'>3937</a>
<a id='n3938' href='#n3938'>3938</a>
<a id='n3939' href='#n3939'>3939</a>
<a id='n3940' href='#n3940'>3940</a>
<a id='n3941' href='#n3941'>3941</a>
<a id='n3942' href='#n3942'>3942</a>
<a id='n3943' href='#n3943'>3943</a>
<a id='n3944' href='#n3944'>3944</a>
<a id='n3945' href='#n3945'>3945</a>
<a id='n3946' href='#n3946'>3946</a>
<a id='n3947' href='#n3947'>3947</a>
<a id='n3948' href='#n3948'>3948</a>
<a id='n3949' href='#n3949'>3949</a>
<a id='n3950' href='#n3950'>3950</a>
<a id='n3951' href='#n3951'>3951</a>
<a id='n3952' href='#n3952'>3952</a>
<a id='n3953' href='#n3953'>3953</a>
<a id='n3954' href='#n3954'>3954</a>
<a id='n3955' href='#n3955'>3955</a>
<a id='n3956' href='#n3956'>3956</a>
<a id='n3957' href='#n3957'>3957</a>
<a id='n3958' href='#n3958'>3958</a>
<a id='n3959' href='#n3959'>3959</a>
<a id='n3960' href='#n3960'>3960</a>
<a id='n3961' href='#n3961'>3961</a>
<a id='n3962' href='#n3962'>3962</a>
<a id='n3963' href='#n3963'>3963</a>
<a id='n3964' href='#n3964'>3964</a>
<a id='n3965' href='#n3965'>3965</a>
<a id='n3966' href='#n3966'>3966</a>
<a id='n3967' href='#n3967'>3967</a>
<a id='n3968' href='#n3968'>3968</a>
<a id='n3969' href='#n3969'>3969</a>
<a id='n3970' href='#n3970'>3970</a>
<a id='n3971' href='#n3971'>3971</a>
<a id='n3972' href='#n3972'>3972</a>
<a id='n3973' href='#n3973'>3973</a>
<a id='n3974' href='#n3974'>3974</a>
<a id='n3975' href='#n3975'>3975</a>
<a id='n3976' href='#n3976'>3976</a>
<a id='n3977' href='#n3977'>3977</a>
<a id='n3978' href='#n3978'>3978</a>
<a id='n3979' href='#n3979'>3979</a>
<a id='n3980' href='#n3980'>3980</a>
<a id='n3981' href='#n3981'>3981</a>
<a id='n3982' href='#n3982'>3982</a>
<a id='n3983' href='#n3983'>3983</a>
<a id='n3984' href='#n3984'>3984</a>
<a id='n3985' href='#n3985'>3985</a>
<a id='n3986' href='#n3986'>3986</a>
<a id='n3987' href='#n3987'>3987</a>
<a id='n3988' href='#n3988'>3988</a>
<a id='n3989' href='#n3989'>3989</a>
<a id='n3990' href='#n3990'>3990</a>
<a id='n3991' href='#n3991'>3991</a>
<a id='n3992' href='#n3992'>3992</a>
<a id='n3993' href='#n3993'>3993</a>
<a id='n3994' href='#n3994'>3994</a>
<a id='n3995' href='#n3995'>3995</a>
<a id='n3996' href='#n3996'>3996</a>
<a id='n3997' href='#n3997'>3997</a>
<a id='n3998' href='#n3998'>3998</a>
<a id='n3999' href='#n3999'>3999</a>
<a id='n4000' href='#n4000'>4000</a>
<a id='n4001' href='#n4001'>4001</a>
<a id='n4002' href='#n4002'>4002</a>
<a id='n4003' href='#n4003'>4003</a>
<a id='n4004' href='#n4004'>4004</a>
<a id='n4005' href='#n4005'>4005</a>
<a id='n4006' href='#n4006'>4006</a>
<a id='n4007' href='#n4007'>4007</a>
<a id='n4008' href='#n4008'>4008</a>
<a id='n4009' href='#n4009'>4009</a>
<a id='n4010' href='#n4010'>4010</a>
<a id='n4011' href='#n4011'>4011</a>
<a id='n4012' href='#n4012'>4012</a>
<a id='n4013' href='#n4013'>4013</a>
<a id='n4014' href='#n4014'>4014</a>
<a id='n4015' href='#n4015'>4015</a>
<a id='n4016' href='#n4016'>4016</a>
<a id='n4017' href='#n4017'>4017</a>
<a id='n4018' href='#n4018'>4018</a>
<a id='n4019' href='#n4019'>4019</a>
<a id='n4020' href='#n4020'>4020</a>
<a id='n4021' href='#n4021'>4021</a>
<a id='n4022' href='#n4022'>4022</a>
<a id='n4023' href='#n4023'>4023</a>
<a id='n4024' href='#n4024'>4024</a>
<a id='n4025' href='#n4025'>4025</a>
<a id='n4026' href='#n4026'>4026</a>
<a id='n4027' href='#n4027'>4027</a>
<a id='n4028' href='#n4028'>4028</a>
<a id='n4029' href='#n4029'>4029</a>
<a id='n4030' href='#n4030'>4030</a>
<a id='n4031' href='#n4031'>4031</a>
<a id='n4032' href='#n4032'>4032</a>
<a id='n4033' href='#n4033'>4033</a>
<a id='n4034' href='#n4034'>4034</a>
<a id='n4035' href='#n4035'>4035</a>
<a id='n4036' href='#n4036'>4036</a>
<a id='n4037' href='#n4037'>4037</a>
<a id='n4038' href='#n4038'>4038</a>
<a id='n4039' href='#n4039'>4039</a>
<a id='n4040' href='#n4040'>4040</a>
<a id='n4041' href='#n4041'>4041</a>
<a id='n4042' href='#n4042'>4042</a>
<a id='n4043' href='#n4043'>4043</a>
<a id='n4044' href='#n4044'>4044</a>
<a id='n4045' href='#n4045'>4045</a>
<a id='n4046' href='#n4046'>4046</a>
<a id='n4047' href='#n4047'>4047</a>
<a id='n4048' href='#n4048'>4048</a>
<a id='n4049' href='#n4049'>4049</a>
<a id='n4050' href='#n4050'>4050</a>
<a id='n4051' href='#n4051'>4051</a>
<a id='n4052' href='#n4052'>4052</a>
<a id='n4053' href='#n4053'>4053</a>
<a id='n4054' href='#n4054'>4054</a>
<a id='n4055' href='#n4055'>4055</a>
<a id='n4056' href='#n4056'>4056</a>
<a id='n4057' href='#n4057'>4057</a>
<a id='n4058' href='#n4058'>4058</a>
<a id='n4059' href='#n4059'>4059</a>
<a id='n4060' href='#n4060'>4060</a>
<a id='n4061' href='#n4061'>4061</a>
<a id='n4062' href='#n4062'>4062</a>
<a id='n4063' href='#n4063'>4063</a>
<a id='n4064' href='#n4064'>4064</a>
<a id='n4065' href='#n4065'>4065</a>
<a id='n4066' href='#n4066'>4066</a>
<a id='n4067' href='#n4067'>4067</a>
<a id='n4068' href='#n4068'>4068</a>
<a id='n4069' href='#n4069'>4069</a>
<a id='n4070' href='#n4070'>4070</a>
<a id='n4071' href='#n4071'>4071</a>
<a id='n4072' href='#n4072'>4072</a>
<a id='n4073' href='#n4073'>4073</a>
<a id='n4074' href='#n4074'>4074</a>
<a id='n4075' href='#n4075'>4075</a>
<a id='n4076' href='#n4076'>4076</a>
<a id='n4077' href='#n4077'>4077</a>
<a id='n4078' href='#n4078'>4078</a>
<a id='n4079' href='#n4079'>4079</a>
<a id='n4080' href='#n4080'>4080</a>
<a id='n4081' href='#n4081'>4081</a>
<a id='n4082' href='#n4082'>4082</a>
<a id='n4083' href='#n4083'>4083</a>
<a id='n4084' href='#n4084'>4084</a>
<a id='n4085' href='#n4085'>4085</a>
<a id='n4086' href='#n4086'>4086</a>
<a id='n4087' href='#n4087'>4087</a>
<a id='n4088' href='#n4088'>4088</a>
<a id='n4089' href='#n4089'>4089</a>
<a id='n4090' href='#n4090'>4090</a>
<a id='n4091' href='#n4091'>4091</a>
<a id='n4092' href='#n4092'>4092</a>
<a id='n4093' href='#n4093'>4093</a>
<a id='n4094' href='#n4094'>4094</a>
<a id='n4095' href='#n4095'>4095</a>
<a id='n4096' href='#n4096'>4096</a>
<a id='n4097' href='#n4097'>4097</a>
<a id='n4098' href='#n4098'>4098</a>
<a id='n4099' href='#n4099'>4099</a>
<a id='n4100' href='#n4100'>4100</a>
<a id='n4101' href='#n4101'>4101</a>
<a id='n4102' href='#n4102'>4102</a>
<a id='n4103' href='#n4103'>4103</a>
<a id='n4104' href='#n4104'>4104</a>
<a id='n4105' href='#n4105'>4105</a>
<a id='n4106' href='#n4106'>4106</a>
<a id='n4107' href='#n4107'>4107</a>
<a id='n4108' href='#n4108'>4108</a>
<a id='n4109' href='#n4109'>4109</a>
<a id='n4110' href='#n4110'>4110</a>
<a id='n4111' href='#n4111'>4111</a>
<a id='n4112' href='#n4112'>4112</a>
<a id='n4113' href='#n4113'>4113</a>
<a id='n4114' href='#n4114'>4114</a>
<a id='n4115' href='#n4115'>4115</a>
<a id='n4116' href='#n4116'>4116</a>
<a id='n4117' href='#n4117'>4117</a>
<a id='n4118' href='#n4118'>4118</a>
<a id='n4119' href='#n4119'>4119</a>
<a id='n4120' href='#n4120'>4120</a>
<a id='n4121' href='#n4121'>4121</a>
<a id='n4122' href='#n4122'>4122</a>
<a id='n4123' href='#n4123'>4123</a>
<a id='n4124' href='#n4124'>4124</a>
<a id='n4125' href='#n4125'>4125</a>
<a id='n4126' href='#n4126'>4126</a>
<a id='n4127' href='#n4127'>4127</a>
<a id='n4128' href='#n4128'>4128</a>
<a id='n4129' href='#n4129'>4129</a>
<a id='n4130' href='#n4130'>4130</a>
<a id='n4131' href='#n4131'>4131</a>
<a id='n4132' href='#n4132'>4132</a>
<a id='n4133' href='#n4133'>4133</a>
<a id='n4134' href='#n4134'>4134</a>
<a id='n4135' href='#n4135'>4135</a>
<a id='n4136' href='#n4136'>4136</a>
<a id='n4137' href='#n4137'>4137</a>
<a id='n4138' href='#n4138'>4138</a>
<a id='n4139' href='#n4139'>4139</a>
<a id='n4140' href='#n4140'>4140</a>
<a id='n4141' href='#n4141'>4141</a>
<a id='n4142' href='#n4142'>4142</a>
<a id='n4143' href='#n4143'>4143</a>
<a id='n4144' href='#n4144'>4144</a>
<a id='n4145' href='#n4145'>4145</a>
<a id='n4146' href='#n4146'>4146</a>
<a id='n4147' href='#n4147'>4147</a>
<a id='n4148' href='#n4148'>4148</a>
<a id='n4149' href='#n4149'>4149</a>
<a id='n4150' href='#n4150'>4150</a>
<a id='n4151' href='#n4151'>4151</a>
<a id='n4152' href='#n4152'>4152</a>
<a id='n4153' href='#n4153'>4153</a>
<a id='n4154' href='#n4154'>4154</a>
<a id='n4155' href='#n4155'>4155</a>
<a id='n4156' href='#n4156'>4156</a>
<a id='n4157' href='#n4157'>4157</a>
<a id='n4158' href='#n4158'>4158</a>
<a id='n4159' href='#n4159'>4159</a>
<a id='n4160' href='#n4160'>4160</a>
<a id='n4161' href='#n4161'>4161</a>
<a id='n4162' href='#n4162'>4162</a>
<a id='n4163' href='#n4163'>4163</a>
<a id='n4164' href='#n4164'>4164</a>
<a id='n4165' href='#n4165'>4165</a>
<a id='n4166' href='#n4166'>4166</a>
<a id='n4167' href='#n4167'>4167</a>
<a id='n4168' href='#n4168'>4168</a>
<a id='n4169' href='#n4169'>4169</a>
<a id='n4170' href='#n4170'>4170</a>
<a id='n4171' href='#n4171'>4171</a>
<a id='n4172' href='#n4172'>4172</a>
<a id='n4173' href='#n4173'>4173</a>
<a id='n4174' href='#n4174'>4174</a>
<a id='n4175' href='#n4175'>4175</a>
<a id='n4176' href='#n4176'>4176</a>
<a id='n4177' href='#n4177'>4177</a>
<a id='n4178' href='#n4178'>4178</a>
<a id='n4179' href='#n4179'>4179</a>
<a id='n4180' href='#n4180'>4180</a>
<a id='n4181' href='#n4181'>4181</a>
<a id='n4182' href='#n4182'>4182</a>
<a id='n4183' href='#n4183'>4183</a>
<a id='n4184' href='#n4184'>4184</a>
<a id='n4185' href='#n4185'>4185</a>
<a id='n4186' href='#n4186'>4186</a>
<a id='n4187' href='#n4187'>4187</a>
<a id='n4188' href='#n4188'>4188</a>
<a id='n4189' href='#n4189'>4189</a>
<a id='n4190' href='#n4190'>4190</a>
<a id='n4191' href='#n4191'>4191</a>
<a id='n4192' href='#n4192'>4192</a>
<a id='n4193' href='#n4193'>4193</a>
<a id='n4194' href='#n4194'>4194</a>
<a id='n4195' href='#n4195'>4195</a>
<a id='n4196' href='#n4196'>4196</a>
<a id='n4197' href='#n4197'>4197</a>
<a id='n4198' href='#n4198'>4198</a>
<a id='n4199' href='#n4199'>4199</a>
<a id='n4200' href='#n4200'>4200</a>
<a id='n4201' href='#n4201'>4201</a>
<a id='n4202' href='#n4202'>4202</a>
<a id='n4203' href='#n4203'>4203</a>
<a id='n4204' href='#n4204'>4204</a>
<a id='n4205' href='#n4205'>4205</a>
<a id='n4206' href='#n4206'>4206</a>
<a id='n4207' href='#n4207'>4207</a>
<a id='n4208' href='#n4208'>4208</a>
<a id='n4209' href='#n4209'>4209</a>
<a id='n4210' href='#n4210'>4210</a>
<a id='n4211' href='#n4211'>4211</a>
<a id='n4212' href='#n4212'>4212</a>
<a id='n4213' href='#n4213'>4213</a>
<a id='n4214' href='#n4214'>4214</a>
<a id='n4215' href='#n4215'>4215</a>
<a id='n4216' href='#n4216'>4216</a>
<a id='n4217' href='#n4217'>4217</a>
<a id='n4218' href='#n4218'>4218</a>
<a id='n4219' href='#n4219'>4219</a>
<a id='n4220' href='#n4220'>4220</a>
<a id='n4221' href='#n4221'>4221</a>
<a id='n4222' href='#n4222'>4222</a>
<a id='n4223' href='#n4223'>4223</a>
<a id='n4224' href='#n4224'>4224</a>
<a id='n4225' href='#n4225'>4225</a>
<a id='n4226' href='#n4226'>4226</a>
<a id='n4227' href='#n4227'>4227</a>
<a id='n4228' href='#n4228'>4228</a>
<a id='n4229' href='#n4229'>4229</a>
<a id='n4230' href='#n4230'>4230</a>
<a id='n4231' href='#n4231'>4231</a>
<a id='n4232' href='#n4232'>4232</a>
<a id='n4233' href='#n4233'>4233</a>
<a id='n4234' href='#n4234'>4234</a>
<a id='n4235' href='#n4235'>4235</a>
<a id='n4236' href='#n4236'>4236</a>
<a id='n4237' href='#n4237'>4237</a>
<a id='n4238' href='#n4238'>4238</a>
<a id='n4239' href='#n4239'>4239</a>
<a id='n4240' href='#n4240'>4240</a>
<a id='n4241' href='#n4241'>4241</a>
<a id='n4242' href='#n4242'>4242</a>
<a id='n4243' href='#n4243'>4243</a>
<a id='n4244' href='#n4244'>4244</a>
<a id='n4245' href='#n4245'>4245</a>
<a id='n4246' href='#n4246'>4246</a>
<a id='n4247' href='#n4247'>4247</a>
<a id='n4248' href='#n4248'>4248</a>
<a id='n4249' href='#n4249'>4249</a>
<a id='n4250' href='#n4250'>4250</a>
<a id='n4251' href='#n4251'>4251</a>
<a id='n4252' href='#n4252'>4252</a>
<a id='n4253' href='#n4253'>4253</a>
<a id='n4254' href='#n4254'>4254</a>
<a id='n4255' href='#n4255'>4255</a>
<a id='n4256' href='#n4256'>4256</a>
<a id='n4257' href='#n4257'>4257</a>
<a id='n4258' href='#n4258'>4258</a>
<a id='n4259' href='#n4259'>4259</a>
<a id='n4260' href='#n4260'>4260</a>
<a id='n4261' href='#n4261'>4261</a>
<a id='n4262' href='#n4262'>4262</a>
<a id='n4263' href='#n4263'>4263</a>
<a id='n4264' href='#n4264'>4264</a>
<a id='n4265' href='#n4265'>4265</a>
<a id='n4266' href='#n4266'>4266</a>
<a id='n4267' href='#n4267'>4267</a>
<a id='n4268' href='#n4268'>4268</a>
<a id='n4269' href='#n4269'>4269</a>
<a id='n4270' href='#n4270'>4270</a>
<a id='n4271' href='#n4271'>4271</a>
<a id='n4272' href='#n4272'>4272</a>
<a id='n4273' href='#n4273'>4273</a>
<a id='n4274' href='#n4274'>4274</a>
<a id='n4275' href='#n4275'>4275</a>
<a id='n4276' href='#n4276'>4276</a>
<a id='n4277' href='#n4277'>4277</a>
<a id='n4278' href='#n4278'>4278</a>
<a id='n4279' href='#n4279'>4279</a>
<a id='n4280' href='#n4280'>4280</a>
<a id='n4281' href='#n4281'>4281</a>
<a id='n4282' href='#n4282'>4282</a>
<a id='n4283' href='#n4283'>4283</a>
<a id='n4284' href='#n4284'>4284</a>
<a id='n4285' href='#n4285'>4285</a>
<a id='n4286' href='#n4286'>4286</a>
<a id='n4287' href='#n4287'>4287</a>
<a id='n4288' href='#n4288'>4288</a>
<a id='n4289' href='#n4289'>4289</a>
<a id='n4290' href='#n4290'>4290</a>
<a id='n4291' href='#n4291'>4291</a>
<a id='n4292' href='#n4292'>4292</a>
<a id='n4293' href='#n4293'>4293</a>
<a id='n4294' href='#n4294'>4294</a>
<a id='n4295' href='#n4295'>4295</a>
<a id='n4296' href='#n4296'>4296</a>
<a id='n4297' href='#n4297'>4297</a>
<a id='n4298' href='#n4298'>4298</a>
<a id='n4299' href='#n4299'>4299</a>
<a id='n4300' href='#n4300'>4300</a>
<a id='n4301' href='#n4301'>4301</a>
<a id='n4302' href='#n4302'>4302</a>
<a id='n4303' href='#n4303'>4303</a>
<a id='n4304' href='#n4304'>4304</a>
<a id='n4305' href='#n4305'>4305</a>
<a id='n4306' href='#n4306'>4306</a>
<a id='n4307' href='#n4307'>4307</a>
<a id='n4308' href='#n4308'>4308</a>
<a id='n4309' href='#n4309'>4309</a>
<a id='n4310' href='#n4310'>4310</a>
<a id='n4311' href='#n4311'>4311</a>
<a id='n4312' href='#n4312'>4312</a>
<a id='n4313' href='#n4313'>4313</a>
<a id='n4314' href='#n4314'>4314</a>
<a id='n4315' href='#n4315'>4315</a>
<a id='n4316' href='#n4316'>4316</a>
<a id='n4317' href='#n4317'>4317</a>
<a id='n4318' href='#n4318'>4318</a>
<a id='n4319' href='#n4319'>4319</a>
<a id='n4320' href='#n4320'>4320</a>
<a id='n4321' href='#n4321'>4321</a>
<a id='n4322' href='#n4322'>4322</a>
<a id='n4323' href='#n4323'>4323</a>
<a id='n4324' href='#n4324'>4324</a>
<a id='n4325' href='#n4325'>4325</a>
<a id='n4326' href='#n4326'>4326</a>
<a id='n4327' href='#n4327'>4327</a>
<a id='n4328' href='#n4328'>4328</a>
<a id='n4329' href='#n4329'>4329</a>
<a id='n4330' href='#n4330'>4330</a>
<a id='n4331' href='#n4331'>4331</a>
<a id='n4332' href='#n4332'>4332</a>
<a id='n4333' href='#n4333'>4333</a>
<a id='n4334' href='#n4334'>4334</a>
<a id='n4335' href='#n4335'>4335</a>
<a id='n4336' href='#n4336'>4336</a>
<a id='n4337' href='#n4337'>4337</a>
<a id='n4338' href='#n4338'>4338</a>
<a id='n4339' href='#n4339'>4339</a>
<a id='n4340' href='#n4340'>4340</a>
<a id='n4341' href='#n4341'>4341</a>
<a id='n4342' href='#n4342'>4342</a>
<a id='n4343' href='#n4343'>4343</a>
<a id='n4344' href='#n4344'>4344</a>
<a id='n4345' href='#n4345'>4345</a>
<a id='n4346' href='#n4346'>4346</a>
<a id='n4347' href='#n4347'>4347</a>
<a id='n4348' href='#n4348'>4348</a>
<a id='n4349' href='#n4349'>4349</a>
<a id='n4350' href='#n4350'>4350</a>
<a id='n4351' href='#n4351'>4351</a>
<a id='n4352' href='#n4352'>4352</a>
<a id='n4353' href='#n4353'>4353</a>
<a id='n4354' href='#n4354'>4354</a>
<a id='n4355' href='#n4355'>4355</a>
<a id='n4356' href='#n4356'>4356</a>
<a id='n4357' href='#n4357'>4357</a>
<a id='n4358' href='#n4358'>4358</a>
<a id='n4359' href='#n4359'>4359</a>
<a id='n4360' href='#n4360'>4360</a>
<a id='n4361' href='#n4361'>4361</a>
<a id='n4362' href='#n4362'>4362</a>
<a id='n4363' href='#n4363'>4363</a>
<a id='n4364' href='#n4364'>4364</a>
<a id='n4365' href='#n4365'>4365</a>
<a id='n4366' href='#n4366'>4366</a>
<a id='n4367' href='#n4367'>4367</a>
<a id='n4368' href='#n4368'>4368</a>
<a id='n4369' href='#n4369'>4369</a>
<a id='n4370' href='#n4370'>4370</a>
<a id='n4371' href='#n4371'>4371</a>
<a id='n4372' href='#n4372'>4372</a>
<a id='n4373' href='#n4373'>4373</a>
<a id='n4374' href='#n4374'>4374</a>
<a id='n4375' href='#n4375'>4375</a>
<a id='n4376' href='#n4376'>4376</a>
<a id='n4377' href='#n4377'>4377</a>
<a id='n4378' href='#n4378'>4378</a>
<a id='n4379' href='#n4379'>4379</a>
<a id='n4380' href='#n4380'>4380</a>
<a id='n4381' href='#n4381'>4381</a>
<a id='n4382' href='#n4382'>4382</a>
<a id='n4383' href='#n4383'>4383</a>
<a id='n4384' href='#n4384'>4384</a>
<a id='n4385' href='#n4385'>4385</a>
<a id='n4386' href='#n4386'>4386</a>
<a id='n4387' href='#n4387'>4387</a>
<a id='n4388' href='#n4388'>4388</a>
<a id='n4389' href='#n4389'>4389</a>
<a id='n4390' href='#n4390'>4390</a>
<a id='n4391' href='#n4391'>4391</a>
<a id='n4392' href='#n4392'>4392</a>
<a id='n4393' href='#n4393'>4393</a>
<a id='n4394' href='#n4394'>4394</a>
<a id='n4395' href='#n4395'>4395</a>
<a id='n4396' href='#n4396'>4396</a>
<a id='n4397' href='#n4397'>4397</a>
<a id='n4398' href='#n4398'>4398</a>
<a id='n4399' href='#n4399'>4399</a>
<a id='n4400' href='#n4400'>4400</a>
<a id='n4401' href='#n4401'>4401</a>
<a id='n4402' href='#n4402'>4402</a>
<a id='n4403' href='#n4403'>4403</a>
<a id='n4404' href='#n4404'>4404</a>
<a id='n4405' href='#n4405'>4405</a>
<a id='n4406' href='#n4406'>4406</a>
<a id='n4407' href='#n4407'>4407</a>
<a id='n4408' href='#n4408'>4408</a>
<a id='n4409' href='#n4409'>4409</a>
<a id='n4410' href='#n4410'>4410</a>
<a id='n4411' href='#n4411'>4411</a>
<a id='n4412' href='#n4412'>4412</a>
<a id='n4413' href='#n4413'>4413</a>
<a id='n4414' href='#n4414'>4414</a>
<a id='n4415' href='#n4415'>4415</a>
<a id='n4416' href='#n4416'>4416</a>
<a id='n4417' href='#n4417'>4417</a>
<a id='n4418' href='#n4418'>4418</a>
<a id='n4419' href='#n4419'>4419</a>
<a id='n4420' href='#n4420'>4420</a>
<a id='n4421' href='#n4421'>4421</a>
<a id='n4422' href='#n4422'>4422</a>
<a id='n4423' href='#n4423'>4423</a>
<a id='n4424' href='#n4424'>4424</a>
<a id='n4425' href='#n4425'>4425</a>
<a id='n4426' href='#n4426'>4426</a>
<a id='n4427' href='#n4427'>4427</a>
<a id='n4428' href='#n4428'>4428</a>
<a id='n4429' href='#n4429'>4429</a>
<a id='n4430' href='#n4430'>4430</a>
<a id='n4431' href='#n4431'>4431</a>
<a id='n4432' href='#n4432'>4432</a>
<a id='n4433' href='#n4433'>4433</a>
<a id='n4434' href='#n4434'>4434</a>
<a id='n4435' href='#n4435'>4435</a>
<a id='n4436' href='#n4436'>4436</a>
<a id='n4437' href='#n4437'>4437</a>
<a id='n4438' href='#n4438'>4438</a>
<a id='n4439' href='#n4439'>4439</a>
<a id='n4440' href='#n4440'>4440</a>
<a id='n4441' href='#n4441'>4441</a>
<a id='n4442' href='#n4442'>4442</a>
<a id='n4443' href='#n4443'>4443</a>
<a id='n4444' href='#n4444'>4444</a>
<a id='n4445' href='#n4445'>4445</a>
<a id='n4446' href='#n4446'>4446</a>
<a id='n4447' href='#n4447'>4447</a>
<a id='n4448' href='#n4448'>4448</a>
<a id='n4449' href='#n4449'>4449</a>
<a id='n4450' href='#n4450'>4450</a>
<a id='n4451' href='#n4451'>4451</a>
<a id='n4452' href='#n4452'>4452</a>
<a id='n4453' href='#n4453'>4453</a>
<a id='n4454' href='#n4454'>4454</a>
<a id='n4455' href='#n4455'>4455</a>
<a id='n4456' href='#n4456'>4456</a>
<a id='n4457' href='#n4457'>4457</a>
<a id='n4458' href='#n4458'>4458</a>
<a id='n4459' href='#n4459'>4459</a>
<a id='n4460' href='#n4460'>4460</a>
<a id='n4461' href='#n4461'>4461</a>
<a id='n4462' href='#n4462'>4462</a>
<a id='n4463' href='#n4463'>4463</a>
<a id='n4464' href='#n4464'>4464</a>
<a id='n4465' href='#n4465'>4465</a>
<a id='n4466' href='#n4466'>4466</a>
<a id='n4467' href='#n4467'>4467</a>
<a id='n4468' href='#n4468'>4468</a>
<a id='n4469' href='#n4469'>4469</a>
<a id='n4470' href='#n4470'>4470</a>
<a id='n4471' href='#n4471'>4471</a>
<a id='n4472' href='#n4472'>4472</a>
<a id='n4473' href='#n4473'>4473</a>
<a id='n4474' href='#n4474'>4474</a>
<a id='n4475' href='#n4475'>4475</a>
<a id='n4476' href='#n4476'>4476</a>
<a id='n4477' href='#n4477'>4477</a>
<a id='n4478' href='#n4478'>4478</a>
<a id='n4479' href='#n4479'>4479</a>
<a id='n4480' href='#n4480'>4480</a>
<a id='n4481' href='#n4481'>4481</a>
<a id='n4482' href='#n4482'>4482</a>
<a id='n4483' href='#n4483'>4483</a>
<a id='n4484' href='#n4484'>4484</a>
<a id='n4485' href='#n4485'>4485</a>
<a id='n4486' href='#n4486'>4486</a>
<a id='n4487' href='#n4487'>4487</a>
<a id='n4488' href='#n4488'>4488</a>
<a id='n4489' href='#n4489'>4489</a>
<a id='n4490' href='#n4490'>4490</a>
<a id='n4491' href='#n4491'>4491</a>
<a id='n4492' href='#n4492'>4492</a>
<a id='n4493' href='#n4493'>4493</a>
<a id='n4494' href='#n4494'>4494</a>
<a id='n4495' href='#n4495'>4495</a>
<a id='n4496' href='#n4496'>4496</a>
<a id='n4497' href='#n4497'>4497</a>
<a id='n4498' href='#n4498'>4498</a>
<a id='n4499' href='#n4499'>4499</a>
<a id='n4500' href='#n4500'>4500</a>
<a id='n4501' href='#n4501'>4501</a>
<a id='n4502' href='#n4502'>4502</a>
<a id='n4503' href='#n4503'>4503</a>
<a id='n4504' href='#n4504'>4504</a>
<a id='n4505' href='#n4505'>4505</a>
<a id='n4506' href='#n4506'>4506</a>
<a id='n4507' href='#n4507'>4507</a>
<a id='n4508' href='#n4508'>4508</a>
<a id='n4509' href='#n4509'>4509</a>
<a id='n4510' href='#n4510'>4510</a>
<a id='n4511' href='#n4511'>4511</a>
<a id='n4512' href='#n4512'>4512</a>
<a id='n4513' href='#n4513'>4513</a>
<a id='n4514' href='#n4514'>4514</a>
<a id='n4515' href='#n4515'>4515</a>
<a id='n4516' href='#n4516'>4516</a>
<a id='n4517' href='#n4517'>4517</a>
<a id='n4518' href='#n4518'>4518</a>
<a id='n4519' href='#n4519'>4519</a>
<a id='n4520' href='#n4520'>4520</a>
<a id='n4521' href='#n4521'>4521</a>
<a id='n4522' href='#n4522'>4522</a>
<a id='n4523' href='#n4523'>4523</a>
<a id='n4524' href='#n4524'>4524</a>
<a id='n4525' href='#n4525'>4525</a>
<a id='n4526' href='#n4526'>4526</a>
<a id='n4527' href='#n4527'>4527</a>
<a id='n4528' href='#n4528'>4528</a>
<a id='n4529' href='#n4529'>4529</a>
<a id='n4530' href='#n4530'>4530</a>
<a id='n4531' href='#n4531'>4531</a>
<a id='n4532' href='#n4532'>4532</a>
<a id='n4533' href='#n4533'>4533</a>
<a id='n4534' href='#n4534'>4534</a>
<a id='n4535' href='#n4535'>4535</a>
<a id='n4536' href='#n4536'>4536</a>
<a id='n4537' href='#n4537'>4537</a>
<a id='n4538' href='#n4538'>4538</a>
<a id='n4539' href='#n4539'>4539</a>
<a id='n4540' href='#n4540'>4540</a>
<a id='n4541' href='#n4541'>4541</a>
<a id='n4542' href='#n4542'>4542</a>
<a id='n4543' href='#n4543'>4543</a>
<a id='n4544' href='#n4544'>4544</a>
<a id='n4545' href='#n4545'>4545</a>
<a id='n4546' href='#n4546'>4546</a>
<a id='n4547' href='#n4547'>4547</a>
<a id='n4548' href='#n4548'>4548</a>
<a id='n4549' href='#n4549'>4549</a>
<a id='n4550' href='#n4550'>4550</a>
<a id='n4551' href='#n4551'>4551</a>
<a id='n4552' href='#n4552'>4552</a>
<a id='n4553' href='#n4553'>4553</a>
<a id='n4554' href='#n4554'>4554</a>
<a id='n4555' href='#n4555'>4555</a>
<a id='n4556' href='#n4556'>4556</a>
<a id='n4557' href='#n4557'>4557</a>
<a id='n4558' href='#n4558'>4558</a>
<a id='n4559' href='#n4559'>4559</a>
<a id='n4560' href='#n4560'>4560</a>
<a id='n4561' href='#n4561'>4561</a>
<a id='n4562' href='#n4562'>4562</a>
<a id='n4563' href='#n4563'>4563</a>
<a id='n4564' href='#n4564'>4564</a>
<a id='n4565' href='#n4565'>4565</a>
<a id='n4566' href='#n4566'>4566</a>
<a id='n4567' href='#n4567'>4567</a>
<a id='n4568' href='#n4568'>4568</a>
<a id='n4569' href='#n4569'>4569</a>
<a id='n4570' href='#n4570'>4570</a>
<a id='n4571' href='#n4571'>4571</a>
<a id='n4572' href='#n4572'>4572</a>
<a id='n4573' href='#n4573'>4573</a>
<a id='n4574' href='#n4574'>4574</a>
<a id='n4575' href='#n4575'>4575</a>
<a id='n4576' href='#n4576'>4576</a>
<a id='n4577' href='#n4577'>4577</a>
<a id='n4578' href='#n4578'>4578</a>
<a id='n4579' href='#n4579'>4579</a>
<a id='n4580' href='#n4580'>4580</a>
<a id='n4581' href='#n4581'>4581</a>
<a id='n4582' href='#n4582'>4582</a>
<a id='n4583' href='#n4583'>4583</a>
<a id='n4584' href='#n4584'>4584</a>
<a id='n4585' href='#n4585'>4585</a>
<a id='n4586' href='#n4586'>4586</a>
<a id='n4587' href='#n4587'>4587</a>
<a id='n4588' href='#n4588'>4588</a>
<a id='n4589' href='#n4589'>4589</a>
<a id='n4590' href='#n4590'>4590</a>
<a id='n4591' href='#n4591'>4591</a>
<a id='n4592' href='#n4592'>4592</a>
<a id='n4593' href='#n4593'>4593</a>
<a id='n4594' href='#n4594'>4594</a>
<a id='n4595' href='#n4595'>4595</a>
<a id='n4596' href='#n4596'>4596</a>
<a id='n4597' href='#n4597'>4597</a>
<a id='n4598' href='#n4598'>4598</a>
<a id='n4599' href='#n4599'>4599</a>
<a id='n4600' href='#n4600'>4600</a>
<a id='n4601' href='#n4601'>4601</a>
<a id='n4602' href='#n4602'>4602</a>
<a id='n4603' href='#n4603'>4603</a>
<a id='n4604' href='#n4604'>4604</a>
<a id='n4605' href='#n4605'>4605</a>
<a id='n4606' href='#n4606'>4606</a>
<a id='n4607' href='#n4607'>4607</a>
<a id='n4608' href='#n4608'>4608</a>
<a id='n4609' href='#n4609'>4609</a>
<a id='n4610' href='#n4610'>4610</a>
<a id='n4611' href='#n4611'>4611</a>
<a id='n4612' href='#n4612'>4612</a>
<a id='n4613' href='#n4613'>4613</a>
<a id='n4614' href='#n4614'>4614</a>
<a id='n4615' href='#n4615'>4615</a>
<a id='n4616' href='#n4616'>4616</a>
<a id='n4617' href='#n4617'>4617</a>
<a id='n4618' href='#n4618'>4618</a>
<a id='n4619' href='#n4619'>4619</a>
<a id='n4620' href='#n4620'>4620</a>
<a id='n4621' href='#n4621'>4621</a>
<a id='n4622' href='#n4622'>4622</a>
<a id='n4623' href='#n4623'>4623</a>
<a id='n4624' href='#n4624'>4624</a>
<a id='n4625' href='#n4625'>4625</a>
<a id='n4626' href='#n4626'>4626</a>
<a id='n4627' href='#n4627'>4627</a>
<a id='n4628' href='#n4628'>4628</a>
<a id='n4629' href='#n4629'>4629</a>
<a id='n4630' href='#n4630'>4630</a>
<a id='n4631' href='#n4631'>4631</a>
<a id='n4632' href='#n4632'>4632</a>
<a id='n4633' href='#n4633'>4633</a>
<a id='n4634' href='#n4634'>4634</a>
<a id='n4635' href='#n4635'>4635</a>
<a id='n4636' href='#n4636'>4636</a>
<a id='n4637' href='#n4637'>4637</a>
<a id='n4638' href='#n4638'>4638</a>
<a id='n4639' href='#n4639'>4639</a>
<a id='n4640' href='#n4640'>4640</a>
<a id='n4641' href='#n4641'>4641</a>
<a id='n4642' href='#n4642'>4642</a>
<a id='n4643' href='#n4643'>4643</a>
<a id='n4644' href='#n4644'>4644</a>
<a id='n4645' href='#n4645'>4645</a>
<a id='n4646' href='#n4646'>4646</a>
<a id='n4647' href='#n4647'>4647</a>
<a id='n4648' href='#n4648'>4648</a>
<a id='n4649' href='#n4649'>4649</a>
<a id='n4650' href='#n4650'>4650</a>
<a id='n4651' href='#n4651'>4651</a>
<a id='n4652' href='#n4652'>4652</a>
<a id='n4653' href='#n4653'>4653</a>
<a id='n4654' href='#n4654'>4654</a>
<a id='n4655' href='#n4655'>4655</a>
<a id='n4656' href='#n4656'>4656</a>
<a id='n4657' href='#n4657'>4657</a>
<a id='n4658' href='#n4658'>4658</a>
<a id='n4659' href='#n4659'>4659</a>
<a id='n4660' href='#n4660'>4660</a>
<a id='n4661' href='#n4661'>4661</a>
<a id='n4662' href='#n4662'>4662</a>
<a id='n4663' href='#n4663'>4663</a>
<a id='n4664' href='#n4664'>4664</a>
<a id='n4665' href='#n4665'>4665</a>
<a id='n4666' href='#n4666'>4666</a>
<a id='n4667' href='#n4667'>4667</a>
<a id='n4668' href='#n4668'>4668</a>
<a id='n4669' href='#n4669'>4669</a>
<a id='n4670' href='#n4670'>4670</a>
<a id='n4671' href='#n4671'>4671</a>
<a id='n4672' href='#n4672'>4672</a>
<a id='n4673' href='#n4673'>4673</a>
<a id='n4674' href='#n4674'>4674</a>
<a id='n4675' href='#n4675'>4675</a>
<a id='n4676' href='#n4676'>4676</a>
<a id='n4677' href='#n4677'>4677</a>
<a id='n4678' href='#n4678'>4678</a>
<a id='n4679' href='#n4679'>4679</a>
<a id='n4680' href='#n4680'>4680</a>
<a id='n4681' href='#n4681'>4681</a>
<a id='n4682' href='#n4682'>4682</a>
<a id='n4683' href='#n4683'>4683</a>
<a id='n4684' href='#n4684'>4684</a>
<a id='n4685' href='#n4685'>4685</a>
<a id='n4686' href='#n4686'>4686</a>
<a id='n4687' href='#n4687'>4687</a>
<a id='n4688' href='#n4688'>4688</a>
<a id='n4689' href='#n4689'>4689</a>
<a id='n4690' href='#n4690'>4690</a>
<a id='n4691' href='#n4691'>4691</a>
<a id='n4692' href='#n4692'>4692</a>
<a id='n4693' href='#n4693'>4693</a>
<a id='n4694' href='#n4694'>4694</a>
<a id='n4695' href='#n4695'>4695</a>
<a id='n4696' href='#n4696'>4696</a>
<a id='n4697' href='#n4697'>4697</a>
<a id='n4698' href='#n4698'>4698</a>
<a id='n4699' href='#n4699'>4699</a>
<a id='n4700' href='#n4700'>4700</a>
<a id='n4701' href='#n4701'>4701</a>
<a id='n4702' href='#n4702'>4702</a>
<a id='n4703' href='#n4703'>4703</a>
<a id='n4704' href='#n4704'>4704</a>
<a id='n4705' href='#n4705'>4705</a>
<a id='n4706' href='#n4706'>4706</a>
<a id='n4707' href='#n4707'>4707</a>
<a id='n4708' href='#n4708'>4708</a>
<a id='n4709' href='#n4709'>4709</a>
<a id='n4710' href='#n4710'>4710</a>
<a id='n4711' href='#n4711'>4711</a>
<a id='n4712' href='#n4712'>4712</a>
<a id='n4713' href='#n4713'>4713</a>
<a id='n4714' href='#n4714'>4714</a>
<a id='n4715' href='#n4715'>4715</a>
<a id='n4716' href='#n4716'>4716</a>
<a id='n4717' href='#n4717'>4717</a>
<a id='n4718' href='#n4718'>4718</a>
<a id='n4719' href='#n4719'>4719</a>
<a id='n4720' href='#n4720'>4720</a>
<a id='n4721' href='#n4721'>4721</a>
<a id='n4722' href='#n4722'>4722</a>
<a id='n4723' href='#n4723'>4723</a>
<a id='n4724' href='#n4724'>4724</a>
<a id='n4725' href='#n4725'>4725</a>
<a id='n4726' href='#n4726'>4726</a>
<a id='n4727' href='#n4727'>4727</a>
<a id='n4728' href='#n4728'>4728</a>
<a id='n4729' href='#n4729'>4729</a>
<a id='n4730' href='#n4730'>4730</a>
<a id='n4731' href='#n4731'>4731</a>
<a id='n4732' href='#n4732'>4732</a>
<a id='n4733' href='#n4733'>4733</a>
<a id='n4734' href='#n4734'>4734</a>
<a id='n4735' href='#n4735'>4735</a>
<a id='n4736' href='#n4736'>4736</a>
<a id='n4737' href='#n4737'>4737</a>
<a id='n4738' href='#n4738'>4738</a>
<a id='n4739' href='#n4739'>4739</a>
<a id='n4740' href='#n4740'>4740</a>
<a id='n4741' href='#n4741'>4741</a>
<a id='n4742' href='#n4742'>4742</a>
<a id='n4743' href='#n4743'>4743</a>
<a id='n4744' href='#n4744'>4744</a>
<a id='n4745' href='#n4745'>4745</a>
<a id='n4746' href='#n4746'>4746</a>
<a id='n4747' href='#n4747'>4747</a>
<a id='n4748' href='#n4748'>4748</a>
<a id='n4749' href='#n4749'>4749</a>
<a id='n4750' href='#n4750'>4750</a>
<a id='n4751' href='#n4751'>4751</a>
<a id='n4752' href='#n4752'>4752</a>
<a id='n4753' href='#n4753'>4753</a>
<a id='n4754' href='#n4754'>4754</a>
<a id='n4755' href='#n4755'>4755</a>
<a id='n4756' href='#n4756'>4756</a>
<a id='n4757' href='#n4757'>4757</a>
<a id='n4758' href='#n4758'>4758</a>
<a id='n4759' href='#n4759'>4759</a>
<a id='n4760' href='#n4760'>4760</a>
<a id='n4761' href='#n4761'>4761</a>
<a id='n4762' href='#n4762'>4762</a>
<a id='n4763' href='#n4763'>4763</a>
<a id='n4764' href='#n4764'>4764</a>
<a id='n4765' href='#n4765'>4765</a>
<a id='n4766' href='#n4766'>4766</a>
<a id='n4767' href='#n4767'>4767</a>
<a id='n4768' href='#n4768'>4768</a>
<a id='n4769' href='#n4769'>4769</a>
<a id='n4770' href='#n4770'>4770</a>
<a id='n4771' href='#n4771'>4771</a>
<a id='n4772' href='#n4772'>4772</a>
<a id='n4773' href='#n4773'>4773</a>
<a id='n4774' href='#n4774'>4774</a>
<a id='n4775' href='#n4775'>4775</a>
<a id='n4776' href='#n4776'>4776</a>
<a id='n4777' href='#n4777'>4777</a>
<a id='n4778' href='#n4778'>4778</a>
<a id='n4779' href='#n4779'>4779</a>
<a id='n4780' href='#n4780'>4780</a>
<a id='n4781' href='#n4781'>4781</a>
<a id='n4782' href='#n4782'>4782</a>
<a id='n4783' href='#n4783'>4783</a>
<a id='n4784' href='#n4784'>4784</a>
<a id='n4785' href='#n4785'>4785</a>
<a id='n4786' href='#n4786'>4786</a>
<a id='n4787' href='#n4787'>4787</a>
<a id='n4788' href='#n4788'>4788</a>
<a id='n4789' href='#n4789'>4789</a>
<a id='n4790' href='#n4790'>4790</a>
<a id='n4791' href='#n4791'>4791</a>
<a id='n4792' href='#n4792'>4792</a>
<a id='n4793' href='#n4793'>4793</a>
<a id='n4794' href='#n4794'>4794</a>
<a id='n4795' href='#n4795'>4795</a>
<a id='n4796' href='#n4796'>4796</a>
<a id='n4797' href='#n4797'>4797</a>
<a id='n4798' href='#n4798'>4798</a>
<a id='n4799' href='#n4799'>4799</a>
<a id='n4800' href='#n4800'>4800</a>
<a id='n4801' href='#n4801'>4801</a>
<a id='n4802' href='#n4802'>4802</a>
<a id='n4803' href='#n4803'>4803</a>
<a id='n4804' href='#n4804'>4804</a>
<a id='n4805' href='#n4805'>4805</a>
<a id='n4806' href='#n4806'>4806</a>
<a id='n4807' href='#n4807'>4807</a>
<a id='n4808' href='#n4808'>4808</a>
<a id='n4809' href='#n4809'>4809</a>
<a id='n4810' href='#n4810'>4810</a>
<a id='n4811' href='#n4811'>4811</a>
<a id='n4812' href='#n4812'>4812</a>
<a id='n4813' href='#n4813'>4813</a>
<a id='n4814' href='#n4814'>4814</a>
<a id='n4815' href='#n4815'>4815</a>
<a id='n4816' href='#n4816'>4816</a>
<a id='n4817' href='#n4817'>4817</a>
<a id='n4818' href='#n4818'>4818</a>
<a id='n4819' href='#n4819'>4819</a>
<a id='n4820' href='#n4820'>4820</a>
<a id='n4821' href='#n4821'>4821</a>
<a id='n4822' href='#n4822'>4822</a>
<a id='n4823' href='#n4823'>4823</a>
<a id='n4824' href='#n4824'>4824</a>
<a id='n4825' href='#n4825'>4825</a>
<a id='n4826' href='#n4826'>4826</a>
<a id='n4827' href='#n4827'>4827</a>
<a id='n4828' href='#n4828'>4828</a>
<a id='n4829' href='#n4829'>4829</a>
<a id='n4830' href='#n4830'>4830</a>
<a id='n4831' href='#n4831'>4831</a>
<a id='n4832' href='#n4832'>4832</a>
<a id='n4833' href='#n4833'>4833</a>
<a id='n4834' href='#n4834'>4834</a>
<a id='n4835' href='#n4835'>4835</a>
<a id='n4836' href='#n4836'>4836</a>
<a id='n4837' href='#n4837'>4837</a>
<a id='n4838' href='#n4838'>4838</a>
<a id='n4839' href='#n4839'>4839</a>
<a id='n4840' href='#n4840'>4840</a>
<a id='n4841' href='#n4841'>4841</a>
<a id='n4842' href='#n4842'>4842</a>
<a id='n4843' href='#n4843'>4843</a>
<a id='n4844' href='#n4844'>4844</a>
<a id='n4845' href='#n4845'>4845</a>
<a id='n4846' href='#n4846'>4846</a>
<a id='n4847' href='#n4847'>4847</a>
<a id='n4848' href='#n4848'>4848</a>
<a id='n4849' href='#n4849'>4849</a>
<a id='n4850' href='#n4850'>4850</a>
<a id='n4851' href='#n4851'>4851</a>
<a id='n4852' href='#n4852'>4852</a>
<a id='n4853' href='#n4853'>4853</a>
<a id='n4854' href='#n4854'>4854</a>
<a id='n4855' href='#n4855'>4855</a>
<a id='n4856' href='#n4856'>4856</a>
<a id='n4857' href='#n4857'>4857</a>
<a id='n4858' href='#n4858'>4858</a>
<a id='n4859' href='#n4859'>4859</a>
<a id='n4860' href='#n4860'>4860</a>
<a id='n4861' href='#n4861'>4861</a>
<a id='n4862' href='#n4862'>4862</a>
<a id='n4863' href='#n4863'>4863</a>
<a id='n4864' href='#n4864'>4864</a>
<a id='n4865' href='#n4865'>4865</a>
<a id='n4866' href='#n4866'>4866</a>
<a id='n4867' href='#n4867'>4867</a>
<a id='n4868' href='#n4868'>4868</a>
<a id='n4869' href='#n4869'>4869</a>
<a id='n4870' href='#n4870'>4870</a>
<a id='n4871' href='#n4871'>4871</a>
<a id='n4872' href='#n4872'>4872</a>
<a id='n4873' href='#n4873'>4873</a>
<a id='n4874' href='#n4874'>4874</a>
<a id='n4875' href='#n4875'>4875</a>
<a id='n4876' href='#n4876'>4876</a>
<a id='n4877' href='#n4877'>4877</a>
<a id='n4878' href='#n4878'>4878</a>
<a id='n4879' href='#n4879'>4879</a>
<a id='n4880' href='#n4880'>4880</a>
<a id='n4881' href='#n4881'>4881</a>
<a id='n4882' href='#n4882'>4882</a>
<a id='n4883' href='#n4883'>4883</a>
<a id='n4884' href='#n4884'>4884</a>
<a id='n4885' href='#n4885'>4885</a>
<a id='n4886' href='#n4886'>4886</a>
<a id='n4887' href='#n4887'>4887</a>
<a id='n4888' href='#n4888'>4888</a>
<a id='n4889' href='#n4889'>4889</a>
<a id='n4890' href='#n4890'>4890</a>
<a id='n4891' href='#n4891'>4891</a>
<a id='n4892' href='#n4892'>4892</a>
<a id='n4893' href='#n4893'>4893</a>
<a id='n4894' href='#n4894'>4894</a>
<a id='n4895' href='#n4895'>4895</a>
<a id='n4896' href='#n4896'>4896</a>
<a id='n4897' href='#n4897'>4897</a>
<a id='n4898' href='#n4898'>4898</a>
<a id='n4899' href='#n4899'>4899</a>
<a id='n4900' href='#n4900'>4900</a>
<a id='n4901' href='#n4901'>4901</a>
<a id='n4902' href='#n4902'>4902</a>
<a id='n4903' href='#n4903'>4903</a>
<a id='n4904' href='#n4904'>4904</a>
<a id='n4905' href='#n4905'>4905</a>
<a id='n4906' href='#n4906'>4906</a>
<a id='n4907' href='#n4907'>4907</a>
<a id='n4908' href='#n4908'>4908</a>
<a id='n4909' href='#n4909'>4909</a>
<a id='n4910' href='#n4910'>4910</a>
<a id='n4911' href='#n4911'>4911</a>
<a id='n4912' href='#n4912'>4912</a>
<a id='n4913' href='#n4913'>4913</a>
<a id='n4914' href='#n4914'>4914</a>
<a id='n4915' href='#n4915'>4915</a>
<a id='n4916' href='#n4916'>4916</a>
<a id='n4917' href='#n4917'>4917</a>
<a id='n4918' href='#n4918'>4918</a>
<a id='n4919' href='#n4919'>4919</a>
<a id='n4920' href='#n4920'>4920</a>
<a id='n4921' href='#n4921'>4921</a>
<a id='n4922' href='#n4922'>4922</a>
<a id='n4923' href='#n4923'>4923</a>
<a id='n4924' href='#n4924'>4924</a>
<a id='n4925' href='#n4925'>4925</a>
<a id='n4926' href='#n4926'>4926</a>
<a id='n4927' href='#n4927'>4927</a>
<a id='n4928' href='#n4928'>4928</a>
<a id='n4929' href='#n4929'>4929</a>
<a id='n4930' href='#n4930'>4930</a>
<a id='n4931' href='#n4931'>4931</a>
<a id='n4932' href='#n4932'>4932</a>
<a id='n4933' href='#n4933'>4933</a>
<a id='n4934' href='#n4934'>4934</a>
<a id='n4935' href='#n4935'>4935</a>
<a id='n4936' href='#n4936'>4936</a>
<a id='n4937' href='#n4937'>4937</a>
<a id='n4938' href='#n4938'>4938</a>
<a id='n4939' href='#n4939'>4939</a>
<a id='n4940' href='#n4940'>4940</a>
<a id='n4941' href='#n4941'>4941</a>
<a id='n4942' href='#n4942'>4942</a>
<a id='n4943' href='#n4943'>4943</a>
<a id='n4944' href='#n4944'>4944</a>
<a id='n4945' href='#n4945'>4945</a>
<a id='n4946' href='#n4946'>4946</a>
<a id='n4947' href='#n4947'>4947</a>
<a id='n4948' href='#n4948'>4948</a>
<a id='n4949' href='#n4949'>4949</a>
<a id='n4950' href='#n4950'>4950</a>
<a id='n4951' href='#n4951'>4951</a>
<a id='n4952' href='#n4952'>4952</a>
<a id='n4953' href='#n4953'>4953</a>
<a id='n4954' href='#n4954'>4954</a>
<a id='n4955' href='#n4955'>4955</a>
<a id='n4956' href='#n4956'>4956</a>
<a id='n4957' href='#n4957'>4957</a>
<a id='n4958' href='#n4958'>4958</a>
<a id='n4959' href='#n4959'>4959</a>
<a id='n4960' href='#n4960'>4960</a>
<a id='n4961' href='#n4961'>4961</a>
<a id='n4962' href='#n4962'>4962</a>
<a id='n4963' href='#n4963'>4963</a>
<a id='n4964' href='#n4964'>4964</a>
<a id='n4965' href='#n4965'>4965</a>
<a id='n4966' href='#n4966'>4966</a>
<a id='n4967' href='#n4967'>4967</a>
<a id='n4968' href='#n4968'>4968</a>
<a id='n4969' href='#n4969'>4969</a>
<a id='n4970' href='#n4970'>4970</a>
<a id='n4971' href='#n4971'>4971</a>
<a id='n4972' href='#n4972'>4972</a>
<a id='n4973' href='#n4973'>4973</a>
<a id='n4974' href='#n4974'>4974</a>
<a id='n4975' href='#n4975'>4975</a>
<a id='n4976' href='#n4976'>4976</a>
<a id='n4977' href='#n4977'>4977</a>
<a id='n4978' href='#n4978'>4978</a>
<a id='n4979' href='#n4979'>4979</a>
<a id='n4980' href='#n4980'>4980</a>
<a id='n4981' href='#n4981'>4981</a>
<a id='n4982' href='#n4982'>4982</a>
<a id='n4983' href='#n4983'>4983</a>
<a id='n4984' href='#n4984'>4984</a>
<a id='n4985' href='#n4985'>4985</a>
<a id='n4986' href='#n4986'>4986</a>
<a id='n4987' href='#n4987'>4987</a>
<a id='n4988' href='#n4988'>4988</a>
<a id='n4989' href='#n4989'>4989</a>
<a id='n4990' href='#n4990'>4990</a>
<a id='n4991' href='#n4991'>4991</a>
<a id='n4992' href='#n4992'>4992</a>
<a id='n4993' href='#n4993'>4993</a>
<a id='n4994' href='#n4994'>4994</a>
<a id='n4995' href='#n4995'>4995</a>
<a id='n4996' href='#n4996'>4996</a>
<a id='n4997' href='#n4997'>4997</a>
<a id='n4998' href='#n4998'>4998</a>
<a id='n4999' href='#n4999'>4999</a>
<a id='n5000' href='#n5000'>5000</a>
<a id='n5001' href='#n5001'>5001</a>
<a id='n5002' href='#n5002'>5002</a>
<a id='n5003' href='#n5003'>5003</a>
<a id='n5004' href='#n5004'>5004</a>
<a id='n5005' href='#n5005'>5005</a>
<a id='n5006' href='#n5006'>5006</a>
<a id='n5007' href='#n5007'>5007</a>
<a id='n5008' href='#n5008'>5008</a>
<a id='n5009' href='#n5009'>5009</a>
<a id='n5010' href='#n5010'>5010</a>
<a id='n5011' href='#n5011'>5011</a>
<a id='n5012' href='#n5012'>5012</a>
<a id='n5013' href='#n5013'>5013</a>
<a id='n5014' href='#n5014'>5014</a>
<a id='n5015' href='#n5015'>5015</a>
<a id='n5016' href='#n5016'>5016</a>
<a id='n5017' href='#n5017'>5017</a>
<a id='n5018' href='#n5018'>5018</a>
<a id='n5019' href='#n5019'>5019</a>
<a id='n5020' href='#n5020'>5020</a>
<a id='n5021' href='#n5021'>5021</a>
<a id='n5022' href='#n5022'>5022</a>
<a id='n5023' href='#n5023'>5023</a>
<a id='n5024' href='#n5024'>5024</a>
<a id='n5025' href='#n5025'>5025</a>
<a id='n5026' href='#n5026'>5026</a>
<a id='n5027' href='#n5027'>5027</a>
<a id='n5028' href='#n5028'>5028</a>
<a id='n5029' href='#n5029'>5029</a>
<a id='n5030' href='#n5030'>5030</a>
<a id='n5031' href='#n5031'>5031</a>
<a id='n5032' href='#n5032'>5032</a>
<a id='n5033' href='#n5033'>5033</a>
<a id='n5034' href='#n5034'>5034</a>
<a id='n5035' href='#n5035'>5035</a>
<a id='n5036' href='#n5036'>5036</a>
<a id='n5037' href='#n5037'>5037</a>
<a id='n5038' href='#n5038'>5038</a>
<a id='n5039' href='#n5039'>5039</a>
<a id='n5040' href='#n5040'>5040</a>
<a id='n5041' href='#n5041'>5041</a>
<a id='n5042' href='#n5042'>5042</a>
<a id='n5043' href='#n5043'>5043</a>
<a id='n5044' href='#n5044'>5044</a>
<a id='n5045' href='#n5045'>5045</a>
<a id='n5046' href='#n5046'>5046</a>
<a id='n5047' href='#n5047'>5047</a>
<a id='n5048' href='#n5048'>5048</a>
<a id='n5049' href='#n5049'>5049</a>
<a id='n5050' href='#n5050'>5050</a>
<a id='n5051' href='#n5051'>5051</a>
<a id='n5052' href='#n5052'>5052</a>
<a id='n5053' href='#n5053'>5053</a>
<a id='n5054' href='#n5054'>5054</a>
<a id='n5055' href='#n5055'>5055</a>
<a id='n5056' href='#n5056'>5056</a>
<a id='n5057' href='#n5057'>5057</a>
<a id='n5058' href='#n5058'>5058</a>
<a id='n5059' href='#n5059'>5059</a>
<a id='n5060' href='#n5060'>5060</a>
<a id='n5061' href='#n5061'>5061</a>
<a id='n5062' href='#n5062'>5062</a>
<a id='n5063' href='#n5063'>5063</a>
<a id='n5064' href='#n5064'>5064</a>
<a id='n5065' href='#n5065'>5065</a>
<a id='n5066' href='#n5066'>5066</a>
<a id='n5067' href='#n5067'>5067</a>
<a id='n5068' href='#n5068'>5068</a>
<a id='n5069' href='#n5069'>5069</a>
<a id='n5070' href='#n5070'>5070</a>
<a id='n5071' href='#n5071'>5071</a>
<a id='n5072' href='#n5072'>5072</a>
<a id='n5073' href='#n5073'>5073</a>
<a id='n5074' href='#n5074'>5074</a>
<a id='n5075' href='#n5075'>5075</a>
<a id='n5076' href='#n5076'>5076</a>
<a id='n5077' href='#n5077'>5077</a>
<a id='n5078' href='#n5078'>5078</a>
<a id='n5079' href='#n5079'>5079</a>
<a id='n5080' href='#n5080'>5080</a>
<a id='n5081' href='#n5081'>5081</a>
<a id='n5082' href='#n5082'>5082</a>
<a id='n5083' href='#n5083'>5083</a>
<a id='n5084' href='#n5084'>5084</a>
<a id='n5085' href='#n5085'>5085</a>
<a id='n5086' href='#n5086'>5086</a>
<a id='n5087' href='#n5087'>5087</a>
<a id='n5088' href='#n5088'>5088</a>
<a id='n5089' href='#n5089'>5089</a>
<a id='n5090' href='#n5090'>5090</a>
<a id='n5091' href='#n5091'>5091</a>
<a id='n5092' href='#n5092'>5092</a>
<a id='n5093' href='#n5093'>5093</a>
<a id='n5094' href='#n5094'>5094</a>
<a id='n5095' href='#n5095'>5095</a>
<a id='n5096' href='#n5096'>5096</a>
<a id='n5097' href='#n5097'>5097</a>
<a id='n5098' href='#n5098'>5098</a>
<a id='n5099' href='#n5099'>5099</a>
<a id='n5100' href='#n5100'>5100</a>
<a id='n5101' href='#n5101'>5101</a>
<a id='n5102' href='#n5102'>5102</a>
<a id='n5103' href='#n5103'>5103</a>
<a id='n5104' href='#n5104'>5104</a>
<a id='n5105' href='#n5105'>5105</a>
<a id='n5106' href='#n5106'>5106</a>
<a id='n5107' href='#n5107'>5107</a>
<a id='n5108' href='#n5108'>5108</a>
<a id='n5109' href='#n5109'>5109</a>
<a id='n5110' href='#n5110'>5110</a>
<a id='n5111' href='#n5111'>5111</a>
<a id='n5112' href='#n5112'>5112</a>
<a id='n5113' href='#n5113'>5113</a>
<a id='n5114' href='#n5114'>5114</a>
<a id='n5115' href='#n5115'>5115</a>
<a id='n5116' href='#n5116'>5116</a>
<a id='n5117' href='#n5117'>5117</a>
<a id='n5118' href='#n5118'>5118</a>
<a id='n5119' href='#n5119'>5119</a>
<a id='n5120' href='#n5120'>5120</a>
<a id='n5121' href='#n5121'>5121</a>
<a id='n5122' href='#n5122'>5122</a>
<a id='n5123' href='#n5123'>5123</a>
<a id='n5124' href='#n5124'>5124</a>
<a id='n5125' href='#n5125'>5125</a>
<a id='n5126' href='#n5126'>5126</a>
<a id='n5127' href='#n5127'>5127</a>
<a id='n5128' href='#n5128'>5128</a>
<a id='n5129' href='#n5129'>5129</a>
<a id='n5130' href='#n5130'>5130</a>
<a id='n5131' href='#n5131'>5131</a>
<a id='n5132' href='#n5132'>5132</a>
<a id='n5133' href='#n5133'>5133</a>
<a id='n5134' href='#n5134'>5134</a>
<a id='n5135' href='#n5135'>5135</a>
<a id='n5136' href='#n5136'>5136</a>
<a id='n5137' href='#n5137'>5137</a>
<a id='n5138' href='#n5138'>5138</a>
<a id='n5139' href='#n5139'>5139</a>
<a id='n5140' href='#n5140'>5140</a>
<a id='n5141' href='#n5141'>5141</a>
<a id='n5142' href='#n5142'>5142</a>
<a id='n5143' href='#n5143'>5143</a>
<a id='n5144' href='#n5144'>5144</a>
<a id='n5145' href='#n5145'>5145</a>
<a id='n5146' href='#n5146'>5146</a>
<a id='n5147' href='#n5147'>5147</a>
<a id='n5148' href='#n5148'>5148</a>
<a id='n5149' href='#n5149'>5149</a>
<a id='n5150' href='#n5150'>5150</a>
<a id='n5151' href='#n5151'>5151</a>
<a id='n5152' href='#n5152'>5152</a>
<a id='n5153' href='#n5153'>5153</a>
<a id='n5154' href='#n5154'>5154</a>
<a id='n5155' href='#n5155'>5155</a>
<a id='n5156' href='#n5156'>5156</a>
<a id='n5157' href='#n5157'>5157</a>
<a id='n5158' href='#n5158'>5158</a>
<a id='n5159' href='#n5159'>5159</a>
<a id='n5160' href='#n5160'>5160</a>
<a id='n5161' href='#n5161'>5161</a>
<a id='n5162' href='#n5162'>5162</a>
<a id='n5163' href='#n5163'>5163</a>
<a id='n5164' href='#n5164'>5164</a>
<a id='n5165' href='#n5165'>5165</a>
<a id='n5166' href='#n5166'>5166</a>
<a id='n5167' href='#n5167'>5167</a>
<a id='n5168' href='#n5168'>5168</a>
<a id='n5169' href='#n5169'>5169</a>
<a id='n5170' href='#n5170'>5170</a>
<a id='n5171' href='#n5171'>5171</a>
<a id='n5172' href='#n5172'>5172</a>
<a id='n5173' href='#n5173'>5173</a>
<a id='n5174' href='#n5174'>5174</a>
<a id='n5175' href='#n5175'>5175</a>
<a id='n5176' href='#n5176'>5176</a>
<a id='n5177' href='#n5177'>5177</a>
<a id='n5178' href='#n5178'>5178</a>
<a id='n5179' href='#n5179'>5179</a>
<a id='n5180' href='#n5180'>5180</a>
<a id='n5181' href='#n5181'>5181</a>
<a id='n5182' href='#n5182'>5182</a>
<a id='n5183' href='#n5183'>5183</a>
<a id='n5184' href='#n5184'>5184</a>
<a id='n5185' href='#n5185'>5185</a>
<a id='n5186' href='#n5186'>5186</a>
<a id='n5187' href='#n5187'>5187</a>
<a id='n5188' href='#n5188'>5188</a>
<a id='n5189' href='#n5189'>5189</a>
<a id='n5190' href='#n5190'>5190</a>
<a id='n5191' href='#n5191'>5191</a>
<a id='n5192' href='#n5192'>5192</a>
<a id='n5193' href='#n5193'>5193</a>
<a id='n5194' href='#n5194'>5194</a>
<a id='n5195' href='#n5195'>5195</a>
<a id='n5196' href='#n5196'>5196</a>
<a id='n5197' href='#n5197'>5197</a>
<a id='n5198' href='#n5198'>5198</a>
<a id='n5199' href='#n5199'>5199</a>
<a id='n5200' href='#n5200'>5200</a>
<a id='n5201' href='#n5201'>5201</a>
<a id='n5202' href='#n5202'>5202</a>
<a id='n5203' href='#n5203'>5203</a>
<a id='n5204' href='#n5204'>5204</a>
<a id='n5205' href='#n5205'>5205</a>
<a id='n5206' href='#n5206'>5206</a>
<a id='n5207' href='#n5207'>5207</a>
<a id='n5208' href='#n5208'>5208</a>
<a id='n5209' href='#n5209'>5209</a>
<a id='n5210' href='#n5210'>5210</a>
<a id='n5211' href='#n5211'>5211</a>
<a id='n5212' href='#n5212'>5212</a>
<a id='n5213' href='#n5213'>5213</a>
<a id='n5214' href='#n5214'>5214</a>
<a id='n5215' href='#n5215'>5215</a>
<a id='n5216' href='#n5216'>5216</a>
<a id='n5217' href='#n5217'>5217</a>
<a id='n5218' href='#n5218'>5218</a>
<a id='n5219' href='#n5219'>5219</a>
<a id='n5220' href='#n5220'>5220</a>
<a id='n5221' href='#n5221'>5221</a>
<a id='n5222' href='#n5222'>5222</a>
<a id='n5223' href='#n5223'>5223</a>
<a id='n5224' href='#n5224'>5224</a>
<a id='n5225' href='#n5225'>5225</a>
<a id='n5226' href='#n5226'>5226</a>
<a id='n5227' href='#n5227'>5227</a>
<a id='n5228' href='#n5228'>5228</a>
<a id='n5229' href='#n5229'>5229</a>
<a id='n5230' href='#n5230'>5230</a>
<a id='n5231' href='#n5231'>5231</a>
<a id='n5232' href='#n5232'>5232</a>
<a id='n5233' href='#n5233'>5233</a>
<a id='n5234' href='#n5234'>5234</a>
<a id='n5235' href='#n5235'>5235</a>
<a id='n5236' href='#n5236'>5236</a>
<a id='n5237' href='#n5237'>5237</a>
<a id='n5238' href='#n5238'>5238</a>
<a id='n5239' href='#n5239'>5239</a>
<a id='n5240' href='#n5240'>5240</a>
<a id='n5241' href='#n5241'>5241</a>
<a id='n5242' href='#n5242'>5242</a>
<a id='n5243' href='#n5243'>5243</a>
<a id='n5244' href='#n5244'>5244</a>
<a id='n5245' href='#n5245'>5245</a>
<a id='n5246' href='#n5246'>5246</a>
<a id='n5247' href='#n5247'>5247</a>
<a id='n5248' href='#n5248'>5248</a>
<a id='n5249' href='#n5249'>5249</a>
<a id='n5250' href='#n5250'>5250</a>
<a id='n5251' href='#n5251'>5251</a>
<a id='n5252' href='#n5252'>5252</a>
<a id='n5253' href='#n5253'>5253</a>
<a id='n5254' href='#n5254'>5254</a>
<a id='n5255' href='#n5255'>5255</a>
<a id='n5256' href='#n5256'>5256</a>
<a id='n5257' href='#n5257'>5257</a>
<a id='n5258' href='#n5258'>5258</a>
<a id='n5259' href='#n5259'>5259</a>
<a id='n5260' href='#n5260'>5260</a>
<a id='n5261' href='#n5261'>5261</a>
<a id='n5262' href='#n5262'>5262</a>
<a id='n5263' href='#n5263'>5263</a>
<a id='n5264' href='#n5264'>5264</a>
<a id='n5265' href='#n5265'>5265</a>
<a id='n5266' href='#n5266'>5266</a>
<a id='n5267' href='#n5267'>5267</a>
<a id='n5268' href='#n5268'>5268</a>
<a id='n5269' href='#n5269'>5269</a>
<a id='n5270' href='#n5270'>5270</a>
<a id='n5271' href='#n5271'>5271</a>
<a id='n5272' href='#n5272'>5272</a>
<a id='n5273' href='#n5273'>5273</a>
<a id='n5274' href='#n5274'>5274</a>
<a id='n5275' href='#n5275'>5275</a>
<a id='n5276' href='#n5276'>5276</a>
<a id='n5277' href='#n5277'>5277</a>
<a id='n5278' href='#n5278'>5278</a>
<a id='n5279' href='#n5279'>5279</a>
<a id='n5280' href='#n5280'>5280</a>
<a id='n5281' href='#n5281'>5281</a>
<a id='n5282' href='#n5282'>5282</a>
<a id='n5283' href='#n5283'>5283</a>
<a id='n5284' href='#n5284'>5284</a>
<a id='n5285' href='#n5285'>5285</a>
<a id='n5286' href='#n5286'>5286</a>
<a id='n5287' href='#n5287'>5287</a>
<a id='n5288' href='#n5288'>5288</a>
<a id='n5289' href='#n5289'>5289</a>
<a id='n5290' href='#n5290'>5290</a>
<a id='n5291' href='#n5291'>5291</a>
<a id='n5292' href='#n5292'>5292</a>
<a id='n5293' href='#n5293'>5293</a>
<a id='n5294' href='#n5294'>5294</a>
<a id='n5295' href='#n5295'>5295</a>
<a id='n5296' href='#n5296'>5296</a>
<a id='n5297' href='#n5297'>5297</a>
<a id='n5298' href='#n5298'>5298</a>
<a id='n5299' href='#n5299'>5299</a>
<a id='n5300' href='#n5300'>5300</a>
<a id='n5301' href='#n5301'>5301</a>
<a id='n5302' href='#n5302'>5302</a>
<a id='n5303' href='#n5303'>5303</a>
<a id='n5304' href='#n5304'>5304</a>
<a id='n5305' href='#n5305'>5305</a>
<a id='n5306' href='#n5306'>5306</a>
<a id='n5307' href='#n5307'>5307</a>
<a id='n5308' href='#n5308'>5308</a>
<a id='n5309' href='#n5309'>5309</a>
<a id='n5310' href='#n5310'>5310</a>
<a id='n5311' href='#n5311'>5311</a>
<a id='n5312' href='#n5312'>5312</a>
<a id='n5313' href='#n5313'>5313</a>
<a id='n5314' href='#n5314'>5314</a>
<a id='n5315' href='#n5315'>5315</a>
<a id='n5316' href='#n5316'>5316</a>
<a id='n5317' href='#n5317'>5317</a>
<a id='n5318' href='#n5318'>5318</a>
<a id='n5319' href='#n5319'>5319</a>
<a id='n5320' href='#n5320'>5320</a>
<a id='n5321' href='#n5321'>5321</a>
<a id='n5322' href='#n5322'>5322</a>
<a id='n5323' href='#n5323'>5323</a>
<a id='n5324' href='#n5324'>5324</a>
<a id='n5325' href='#n5325'>5325</a>
<a id='n5326' href='#n5326'>5326</a>
<a id='n5327' href='#n5327'>5327</a>
<a id='n5328' href='#n5328'>5328</a>
<a id='n5329' href='#n5329'>5329</a>
<a id='n5330' href='#n5330'>5330</a>
<a id='n5331' href='#n5331'>5331</a>
<a id='n5332' href='#n5332'>5332</a>
<a id='n5333' href='#n5333'>5333</a>
<a id='n5334' href='#n5334'>5334</a>
<a id='n5335' href='#n5335'>5335</a>
<a id='n5336' href='#n5336'>5336</a>
<a id='n5337' href='#n5337'>5337</a>
<a id='n5338' href='#n5338'>5338</a>
<a id='n5339' href='#n5339'>5339</a>
<a id='n5340' href='#n5340'>5340</a>
<a id='n5341' href='#n5341'>5341</a>
<a id='n5342' href='#n5342'>5342</a>
<a id='n5343' href='#n5343'>5343</a>
<a id='n5344' href='#n5344'>5344</a>
<a id='n5345' href='#n5345'>5345</a>
<a id='n5346' href='#n5346'>5346</a>
<a id='n5347' href='#n5347'>5347</a>
<a id='n5348' href='#n5348'>5348</a>
<a id='n5349' href='#n5349'>5349</a>
<a id='n5350' href='#n5350'>5350</a>
<a id='n5351' href='#n5351'>5351</a>
<a id='n5352' href='#n5352'>5352</a>
<a id='n5353' href='#n5353'>5353</a>
<a id='n5354' href='#n5354'>5354</a>
<a id='n5355' href='#n5355'>5355</a>
<a id='n5356' href='#n5356'>5356</a>
<a id='n5357' href='#n5357'>5357</a>
<a id='n5358' href='#n5358'>5358</a>
<a id='n5359' href='#n5359'>5359</a>
<a id='n5360' href='#n5360'>5360</a>
<a id='n5361' href='#n5361'>5361</a>
<a id='n5362' href='#n5362'>5362</a>
<a id='n5363' href='#n5363'>5363</a>
<a id='n5364' href='#n5364'>5364</a>
<a id='n5365' href='#n5365'>5365</a>
<a id='n5366' href='#n5366'>5366</a>
<a id='n5367' href='#n5367'>5367</a>
<a id='n5368' href='#n5368'>5368</a>
<a id='n5369' href='#n5369'>5369</a>
<a id='n5370' href='#n5370'>5370</a>
<a id='n5371' href='#n5371'>5371</a>
<a id='n5372' href='#n5372'>5372</a>
<a id='n5373' href='#n5373'>5373</a>
<a id='n5374' href='#n5374'>5374</a>
<a id='n5375' href='#n5375'>5375</a>
<a id='n5376' href='#n5376'>5376</a>
<a id='n5377' href='#n5377'>5377</a>
<a id='n5378' href='#n5378'>5378</a>
<a id='n5379' href='#n5379'>5379</a>
<a id='n5380' href='#n5380'>5380</a>
<a id='n5381' href='#n5381'>5381</a>
<a id='n5382' href='#n5382'>5382</a>
<a id='n5383' href='#n5383'>5383</a>
<a id='n5384' href='#n5384'>5384</a>
<a id='n5385' href='#n5385'>5385</a>
<a id='n5386' href='#n5386'>5386</a>
<a id='n5387' href='#n5387'>5387</a>
<a id='n5388' href='#n5388'>5388</a>
<a id='n5389' href='#n5389'>5389</a>
<a id='n5390' href='#n5390'>5390</a>
<a id='n5391' href='#n5391'>5391</a>
<a id='n5392' href='#n5392'>5392</a>
<a id='n5393' href='#n5393'>5393</a>
<a id='n5394' href='#n5394'>5394</a>
<a id='n5395' href='#n5395'>5395</a>
<a id='n5396' href='#n5396'>5396</a>
<a id='n5397' href='#n5397'>5397</a>
<a id='n5398' href='#n5398'>5398</a>
<a id='n5399' href='#n5399'>5399</a>
<a id='n5400' href='#n5400'>5400</a>
<a id='n5401' href='#n5401'>5401</a>
<a id='n5402' href='#n5402'>5402</a>
<a id='n5403' href='#n5403'>5403</a>
<a id='n5404' href='#n5404'>5404</a>
<a id='n5405' href='#n5405'>5405</a>
<a id='n5406' href='#n5406'>5406</a>
<a id='n5407' href='#n5407'>5407</a>
<a id='n5408' href='#n5408'>5408</a>
<a id='n5409' href='#n5409'>5409</a>
<a id='n5410' href='#n5410'>5410</a>
<a id='n5411' href='#n5411'>5411</a>
<a id='n5412' href='#n5412'>5412</a>
<a id='n5413' href='#n5413'>5413</a>
<a id='n5414' href='#n5414'>5414</a>
<a id='n5415' href='#n5415'>5415</a>
<a id='n5416' href='#n5416'>5416</a>
<a id='n5417' href='#n5417'>5417</a>
<a id='n5418' href='#n5418'>5418</a>
<a id='n5419' href='#n5419'>5419</a>
<a id='n5420' href='#n5420'>5420</a>
<a id='n5421' href='#n5421'>5421</a>
<a id='n5422' href='#n5422'>5422</a>
<a id='n5423' href='#n5423'>5423</a>
<a id='n5424' href='#n5424'>5424</a>
<a id='n5425' href='#n5425'>5425</a>
<a id='n5426' href='#n5426'>5426</a>
<a id='n5427' href='#n5427'>5427</a>
<a id='n5428' href='#n5428'>5428</a>
<a id='n5429' href='#n5429'>5429</a>
<a id='n5430' href='#n5430'>5430</a>
<a id='n5431' href='#n5431'>5431</a>
<a id='n5432' href='#n5432'>5432</a>
<a id='n5433' href='#n5433'>5433</a>
<a id='n5434' href='#n5434'>5434</a>
<a id='n5435' href='#n5435'>5435</a>
<a id='n5436' href='#n5436'>5436</a>
<a id='n5437' href='#n5437'>5437</a>
<a id='n5438' href='#n5438'>5438</a>
<a id='n5439' href='#n5439'>5439</a>
<a id='n5440' href='#n5440'>5440</a>
<a id='n5441' href='#n5441'>5441</a>
<a id='n5442' href='#n5442'>5442</a>
<a id='n5443' href='#n5443'>5443</a>
<a id='n5444' href='#n5444'>5444</a>
<a id='n5445' href='#n5445'>5445</a>
<a id='n5446' href='#n5446'>5446</a>
<a id='n5447' href='#n5447'>5447</a>
<a id='n5448' href='#n5448'>5448</a>
<a id='n5449' href='#n5449'>5449</a>
<a id='n5450' href='#n5450'>5450</a>
<a id='n5451' href='#n5451'>5451</a>
<a id='n5452' href='#n5452'>5452</a>
<a id='n5453' href='#n5453'>5453</a>
<a id='n5454' href='#n5454'>5454</a>
<a id='n5455' href='#n5455'>5455</a>
<a id='n5456' href='#n5456'>5456</a>
<a id='n5457' href='#n5457'>5457</a>
<a id='n5458' href='#n5458'>5458</a>
<a id='n5459' href='#n5459'>5459</a>
<a id='n5460' href='#n5460'>5460</a>
<a id='n5461' href='#n5461'>5461</a>
<a id='n5462' href='#n5462'>5462</a>
<a id='n5463' href='#n5463'>5463</a>
<a id='n5464' href='#n5464'>5464</a>
<a id='n5465' href='#n5465'>5465</a>
<a id='n5466' href='#n5466'>5466</a>
<a id='n5467' href='#n5467'>5467</a>
<a id='n5468' href='#n5468'>5468</a>
<a id='n5469' href='#n5469'>5469</a>
<a id='n5470' href='#n5470'>5470</a>
<a id='n5471' href='#n5471'>5471</a>
<a id='n5472' href='#n5472'>5472</a>
<a id='n5473' href='#n5473'>5473</a>
<a id='n5474' href='#n5474'>5474</a>
<a id='n5475' href='#n5475'>5475</a>
<a id='n5476' href='#n5476'>5476</a>
<a id='n5477' href='#n5477'>5477</a>
<a id='n5478' href='#n5478'>5478</a>
<a id='n5479' href='#n5479'>5479</a>
<a id='n5480' href='#n5480'>5480</a>
<a id='n5481' href='#n5481'>5481</a>
<a id='n5482' href='#n5482'>5482</a>
<a id='n5483' href='#n5483'>5483</a>
<a id='n5484' href='#n5484'>5484</a>
<a id='n5485' href='#n5485'>5485</a>
<a id='n5486' href='#n5486'>5486</a>
<a id='n5487' href='#n5487'>5487</a>
<a id='n5488' href='#n5488'>5488</a>
<a id='n5489' href='#n5489'>5489</a>
<a id='n5490' href='#n5490'>5490</a>
<a id='n5491' href='#n5491'>5491</a>
<a id='n5492' href='#n5492'>5492</a>
<a id='n5493' href='#n5493'>5493</a>
<a id='n5494' href='#n5494'>5494</a>
<a id='n5495' href='#n5495'>5495</a>
<a id='n5496' href='#n5496'>5496</a>
<a id='n5497' href='#n5497'>5497</a>
<a id='n5498' href='#n5498'>5498</a>
<a id='n5499' href='#n5499'>5499</a>
<a id='n5500' href='#n5500'>5500</a>
<a id='n5501' href='#n5501'>5501</a>
<a id='n5502' href='#n5502'>5502</a>
<a id='n5503' href='#n5503'>5503</a>
<a id='n5504' href='#n5504'>5504</a>
<a id='n5505' href='#n5505'>5505</a>
<a id='n5506' href='#n5506'>5506</a>
<a id='n5507' href='#n5507'>5507</a>
<a id='n5508' href='#n5508'>5508</a>
<a id='n5509' href='#n5509'>5509</a>
<a id='n5510' href='#n5510'>5510</a>
<a id='n5511' href='#n5511'>5511</a>
<a id='n5512' href='#n5512'>5512</a>
<a id='n5513' href='#n5513'>5513</a>
<a id='n5514' href='#n5514'>5514</a>
<a id='n5515' href='#n5515'>5515</a>
<a id='n5516' href='#n5516'>5516</a>
<a id='n5517' href='#n5517'>5517</a>
<a id='n5518' href='#n5518'>5518</a>
<a id='n5519' href='#n5519'>5519</a>
<a id='n5520' href='#n5520'>5520</a>
<a id='n5521' href='#n5521'>5521</a>
<a id='n5522' href='#n5522'>5522</a>
<a id='n5523' href='#n5523'>5523</a>
<a id='n5524' href='#n5524'>5524</a>
<a id='n5525' href='#n5525'>5525</a>
<a id='n5526' href='#n5526'>5526</a>
<a id='n5527' href='#n5527'>5527</a>
<a id='n5528' href='#n5528'>5528</a>
<a id='n5529' href='#n5529'>5529</a>
<a id='n5530' href='#n5530'>5530</a>
<a id='n5531' href='#n5531'>5531</a>
<a id='n5532' href='#n5532'>5532</a>
<a id='n5533' href='#n5533'>5533</a>
<a id='n5534' href='#n5534'>5534</a>
<a id='n5535' href='#n5535'>5535</a>
<a id='n5536' href='#n5536'>5536</a>
<a id='n5537' href='#n5537'>5537</a>
<a id='n5538' href='#n5538'>5538</a>
<a id='n5539' href='#n5539'>5539</a>
<a id='n5540' href='#n5540'>5540</a>
<a id='n5541' href='#n5541'>5541</a>
<a id='n5542' href='#n5542'>5542</a>
<a id='n5543' href='#n5543'>5543</a>
<a id='n5544' href='#n5544'>5544</a>
<a id='n5545' href='#n5545'>5545</a>
<a id='n5546' href='#n5546'>5546</a>
<a id='n5547' href='#n5547'>5547</a>
<a id='n5548' href='#n5548'>5548</a>
<a id='n5549' href='#n5549'>5549</a>
<a id='n5550' href='#n5550'>5550</a>
<a id='n5551' href='#n5551'>5551</a>
<a id='n5552' href='#n5552'>5552</a>
<a id='n5553' href='#n5553'>5553</a>
<a id='n5554' href='#n5554'>5554</a>
<a id='n5555' href='#n5555'>5555</a>
<a id='n5556' href='#n5556'>5556</a>
<a id='n5557' href='#n5557'>5557</a>
<a id='n5558' href='#n5558'>5558</a>
<a id='n5559' href='#n5559'>5559</a>
<a id='n5560' href='#n5560'>5560</a>
<a id='n5561' href='#n5561'>5561</a>
<a id='n5562' href='#n5562'>5562</a>
<a id='n5563' href='#n5563'>5563</a>
<a id='n5564' href='#n5564'>5564</a>
<a id='n5565' href='#n5565'>5565</a>
<a id='n5566' href='#n5566'>5566</a>
<a id='n5567' href='#n5567'>5567</a>
<a id='n5568' href='#n5568'>5568</a>
<a id='n5569' href='#n5569'>5569</a>
<a id='n5570' href='#n5570'>5570</a>
<a id='n5571' href='#n5571'>5571</a>
<a id='n5572' href='#n5572'>5572</a>
<a id='n5573' href='#n5573'>5573</a>
<a id='n5574' href='#n5574'>5574</a>
<a id='n5575' href='#n5575'>5575</a>
<a id='n5576' href='#n5576'>5576</a>
<a id='n5577' href='#n5577'>5577</a>
<a id='n5578' href='#n5578'>5578</a>
<a id='n5579' href='#n5579'>5579</a>
<a id='n5580' href='#n5580'>5580</a>
<a id='n5581' href='#n5581'>5581</a>
<a id='n5582' href='#n5582'>5582</a>
<a id='n5583' href='#n5583'>5583</a>
<a id='n5584' href='#n5584'>5584</a>
<a id='n5585' href='#n5585'>5585</a>
<a id='n5586' href='#n5586'>5586</a>
<a id='n5587' href='#n5587'>5587</a>
<a id='n5588' href='#n5588'>5588</a>
<a id='n5589' href='#n5589'>5589</a>
<a id='n5590' href='#n5590'>5590</a>
<a id='n5591' href='#n5591'>5591</a>
<a id='n5592' href='#n5592'>5592</a>
<a id='n5593' href='#n5593'>5593</a>
<a id='n5594' href='#n5594'>5594</a>
<a id='n5595' href='#n5595'>5595</a>
<a id='n5596' href='#n5596'>5596</a>
<a id='n5597' href='#n5597'>5597</a>
<a id='n5598' href='#n5598'>5598</a>
<a id='n5599' href='#n5599'>5599</a>
<a id='n5600' href='#n5600'>5600</a>
<a id='n5601' href='#n5601'>5601</a>
<a id='n5602' href='#n5602'>5602</a>
<a id='n5603' href='#n5603'>5603</a>
<a id='n5604' href='#n5604'>5604</a>
<a id='n5605' href='#n5605'>5605</a>
<a id='n5606' href='#n5606'>5606</a>
<a id='n5607' href='#n5607'>5607</a>
<a id='n5608' href='#n5608'>5608</a>
<a id='n5609' href='#n5609'>5609</a>
<a id='n5610' href='#n5610'>5610</a>
<a id='n5611' href='#n5611'>5611</a>
<a id='n5612' href='#n5612'>5612</a>
<a id='n5613' href='#n5613'>5613</a>
<a id='n5614' href='#n5614'>5614</a>
<a id='n5615' href='#n5615'>5615</a>
<a id='n5616' href='#n5616'>5616</a>
<a id='n5617' href='#n5617'>5617</a>
<a id='n5618' href='#n5618'>5618</a>
<a id='n5619' href='#n5619'>5619</a>
<a id='n5620' href='#n5620'>5620</a>
<a id='n5621' href='#n5621'>5621</a>
<a id='n5622' href='#n5622'>5622</a>
<a id='n5623' href='#n5623'>5623</a>
<a id='n5624' href='#n5624'>5624</a>
<a id='n5625' href='#n5625'>5625</a>
<a id='n5626' href='#n5626'>5626</a>
<a id='n5627' href='#n5627'>5627</a>
<a id='n5628' href='#n5628'>5628</a>
<a id='n5629' href='#n5629'>5629</a>
<a id='n5630' href='#n5630'>5630</a>
<a id='n5631' href='#n5631'>5631</a>
<a id='n5632' href='#n5632'>5632</a>
<a id='n5633' href='#n5633'>5633</a>
<a id='n5634' href='#n5634'>5634</a>
<a id='n5635' href='#n5635'>5635</a>
<a id='n5636' href='#n5636'>5636</a>
<a id='n5637' href='#n5637'>5637</a>
<a id='n5638' href='#n5638'>5638</a>
<a id='n5639' href='#n5639'>5639</a>
<a id='n5640' href='#n5640'>5640</a>
<a id='n5641' href='#n5641'>5641</a>
<a id='n5642' href='#n5642'>5642</a>
<a id='n5643' href='#n5643'>5643</a>
<a id='n5644' href='#n5644'>5644</a>
<a id='n5645' href='#n5645'>5645</a>
<a id='n5646' href='#n5646'>5646</a>
<a id='n5647' href='#n5647'>5647</a>
<a id='n5648' href='#n5648'>5648</a>
<a id='n5649' href='#n5649'>5649</a>
<a id='n5650' href='#n5650'>5650</a>
<a id='n5651' href='#n5651'>5651</a>
<a id='n5652' href='#n5652'>5652</a>
<a id='n5653' href='#n5653'>5653</a>
<a id='n5654' href='#n5654'>5654</a>
<a id='n5655' href='#n5655'>5655</a>
<a id='n5656' href='#n5656'>5656</a>
<a id='n5657' href='#n5657'>5657</a>
<a id='n5658' href='#n5658'>5658</a>
<a id='n5659' href='#n5659'>5659</a>
<a id='n5660' href='#n5660'>5660</a>
<a id='n5661' href='#n5661'>5661</a>
<a id='n5662' href='#n5662'>5662</a>
<a id='n5663' href='#n5663'>5663</a>
<a id='n5664' href='#n5664'>5664</a>
<a id='n5665' href='#n5665'>5665</a>
<a id='n5666' href='#n5666'>5666</a>
<a id='n5667' href='#n5667'>5667</a>
<a id='n5668' href='#n5668'>5668</a>
<a id='n5669' href='#n5669'>5669</a>
<a id='n5670' href='#n5670'>5670</a>
<a id='n5671' href='#n5671'>5671</a>
<a id='n5672' href='#n5672'>5672</a>
<a id='n5673' href='#n5673'>5673</a>
<a id='n5674' href='#n5674'>5674</a>
<a id='n5675' href='#n5675'>5675</a>
<a id='n5676' href='#n5676'>5676</a>
<a id='n5677' href='#n5677'>5677</a>
<a id='n5678' href='#n5678'>5678</a>
<a id='n5679' href='#n5679'>5679</a>
<a id='n5680' href='#n5680'>5680</a>
<a id='n5681' href='#n5681'>5681</a>
<a id='n5682' href='#n5682'>5682</a>
<a id='n5683' href='#n5683'>5683</a>
<a id='n5684' href='#n5684'>5684</a>
<a id='n5685' href='#n5685'>5685</a>
<a id='n5686' href='#n5686'>5686</a>
<a id='n5687' href='#n5687'>5687</a>
<a id='n5688' href='#n5688'>5688</a>
<a id='n5689' href='#n5689'>5689</a>
<a id='n5690' href='#n5690'>5690</a>
<a id='n5691' href='#n5691'>5691</a>
<a id='n5692' href='#n5692'>5692</a>
<a id='n5693' href='#n5693'>5693</a>
<a id='n5694' href='#n5694'>5694</a>
<a id='n5695' href='#n5695'>5695</a>
<a id='n5696' href='#n5696'>5696</a>
<a id='n5697' href='#n5697'>5697</a>
<a id='n5698' href='#n5698'>5698</a>
<a id='n5699' href='#n5699'>5699</a>
<a id='n5700' href='#n5700'>5700</a>
<a id='n5701' href='#n5701'>5701</a>
<a id='n5702' href='#n5702'>5702</a>
<a id='n5703' href='#n5703'>5703</a>
<a id='n5704' href='#n5704'>5704</a>
<a id='n5705' href='#n5705'>5705</a>
<a id='n5706' href='#n5706'>5706</a>
<a id='n5707' href='#n5707'>5707</a>
<a id='n5708' href='#n5708'>5708</a>
<a id='n5709' href='#n5709'>5709</a>
<a id='n5710' href='#n5710'>5710</a>
<a id='n5711' href='#n5711'>5711</a>
<a id='n5712' href='#n5712'>5712</a>
<a id='n5713' href='#n5713'>5713</a>
<a id='n5714' href='#n5714'>5714</a>
<a id='n5715' href='#n5715'>5715</a>
<a id='n5716' href='#n5716'>5716</a>
<a id='n5717' href='#n5717'>5717</a>
<a id='n5718' href='#n5718'>5718</a>
<a id='n5719' href='#n5719'>5719</a>
<a id='n5720' href='#n5720'>5720</a>
<a id='n5721' href='#n5721'>5721</a>
<a id='n5722' href='#n5722'>5722</a>
<a id='n5723' href='#n5723'>5723</a>
<a id='n5724' href='#n5724'>5724</a>
<a id='n5725' href='#n5725'>5725</a>
<a id='n5726' href='#n5726'>5726</a>
<a id='n5727' href='#n5727'>5727</a>
<a id='n5728' href='#n5728'>5728</a>
<a id='n5729' href='#n5729'>5729</a>
<a id='n5730' href='#n5730'>5730</a>
<a id='n5731' href='#n5731'>5731</a>
<a id='n5732' href='#n5732'>5732</a>
<a id='n5733' href='#n5733'>5733</a>
<a id='n5734' href='#n5734'>5734</a>
<a id='n5735' href='#n5735'>5735</a>
<a id='n5736' href='#n5736'>5736</a>
<a id='n5737' href='#n5737'>5737</a>
<a id='n5738' href='#n5738'>5738</a>
<a id='n5739' href='#n5739'>5739</a>
<a id='n5740' href='#n5740'>5740</a>
<a id='n5741' href='#n5741'>5741</a>
<a id='n5742' href='#n5742'>5742</a>
<a id='n5743' href='#n5743'>5743</a>
<a id='n5744' href='#n5744'>5744</a>
<a id='n5745' href='#n5745'>5745</a>
<a id='n5746' href='#n5746'>5746</a>
<a id='n5747' href='#n5747'>5747</a>
<a id='n5748' href='#n5748'>5748</a>
<a id='n5749' href='#n5749'>5749</a>
<a id='n5750' href='#n5750'>5750</a>
<a id='n5751' href='#n5751'>5751</a>
<a id='n5752' href='#n5752'>5752</a>
<a id='n5753' href='#n5753'>5753</a>
<a id='n5754' href='#n5754'>5754</a>
<a id='n5755' href='#n5755'>5755</a>
<a id='n5756' href='#n5756'>5756</a>
<a id='n5757' href='#n5757'>5757</a>
<a id='n5758' href='#n5758'>5758</a>
<a id='n5759' href='#n5759'>5759</a>
<a id='n5760' href='#n5760'>5760</a>
<a id='n5761' href='#n5761'>5761</a>
<a id='n5762' href='#n5762'>5762</a>
<a id='n5763' href='#n5763'>5763</a>
<a id='n5764' href='#n5764'>5764</a>
<a id='n5765' href='#n5765'>5765</a>
<a id='n5766' href='#n5766'>5766</a>
<a id='n5767' href='#n5767'>5767</a>
<a id='n5768' href='#n5768'>5768</a>
<a id='n5769' href='#n5769'>5769</a>
<a id='n5770' href='#n5770'>5770</a>
<a id='n5771' href='#n5771'>5771</a>
<a id='n5772' href='#n5772'>5772</a>
<a id='n5773' href='#n5773'>5773</a>
<a id='n5774' href='#n5774'>5774</a>
<a id='n5775' href='#n5775'>5775</a>
<a id='n5776' href='#n5776'>5776</a>
<a id='n5777' href='#n5777'>5777</a>
<a id='n5778' href='#n5778'>5778</a>
<a id='n5779' href='#n5779'>5779</a>
<a id='n5780' href='#n5780'>5780</a>
<a id='n5781' href='#n5781'>5781</a>
<a id='n5782' href='#n5782'>5782</a>
<a id='n5783' href='#n5783'>5783</a>
<a id='n5784' href='#n5784'>5784</a>
<a id='n5785' href='#n5785'>5785</a>
<a id='n5786' href='#n5786'>5786</a>
<a id='n5787' href='#n5787'>5787</a>
<a id='n5788' href='#n5788'>5788</a>
<a id='n5789' href='#n5789'>5789</a>
<a id='n5790' href='#n5790'>5790</a>
<a id='n5791' href='#n5791'>5791</a>
<a id='n5792' href='#n5792'>5792</a>
<a id='n5793' href='#n5793'>5793</a>
<a id='n5794' href='#n5794'>5794</a>
<a id='n5795' href='#n5795'>5795</a>
<a id='n5796' href='#n5796'>5796</a>
<a id='n5797' href='#n5797'>5797</a>
<a id='n5798' href='#n5798'>5798</a>
<a id='n5799' href='#n5799'>5799</a>
<a id='n5800' href='#n5800'>5800</a>
<a id='n5801' href='#n5801'>5801</a>
<a id='n5802' href='#n5802'>5802</a>
<a id='n5803' href='#n5803'>5803</a>
<a id='n5804' href='#n5804'>5804</a>
<a id='n5805' href='#n5805'>5805</a>
<a id='n5806' href='#n5806'>5806</a>
<a id='n5807' href='#n5807'>5807</a>
<a id='n5808' href='#n5808'>5808</a>
<a id='n5809' href='#n5809'>5809</a>
<a id='n5810' href='#n5810'>5810</a>
<a id='n5811' href='#n5811'>5811</a>
<a id='n5812' href='#n5812'>5812</a>
<a id='n5813' href='#n5813'>5813</a>
<a id='n5814' href='#n5814'>5814</a>
<a id='n5815' href='#n5815'>5815</a>
<a id='n5816' href='#n5816'>5816</a>
<a id='n5817' href='#n5817'>5817</a>
<a id='n5818' href='#n5818'>5818</a>
<a id='n5819' href='#n5819'>5819</a>
<a id='n5820' href='#n5820'>5820</a>
<a id='n5821' href='#n5821'>5821</a>
<a id='n5822' href='#n5822'>5822</a>
<a id='n5823' href='#n5823'>5823</a>
<a id='n5824' href='#n5824'>5824</a>
<a id='n5825' href='#n5825'>5825</a>
<a id='n5826' href='#n5826'>5826</a>
<a id='n5827' href='#n5827'>5827</a>
<a id='n5828' href='#n5828'>5828</a>
<a id='n5829' href='#n5829'>5829</a>
<a id='n5830' href='#n5830'>5830</a>
<a id='n5831' href='#n5831'>5831</a>
<a id='n5832' href='#n5832'>5832</a>
<a id='n5833' href='#n5833'>5833</a>
<a id='n5834' href='#n5834'>5834</a>
<a id='n5835' href='#n5835'>5835</a>
<a id='n5836' href='#n5836'>5836</a>
<a id='n5837' href='#n5837'>5837</a>
<a id='n5838' href='#n5838'>5838</a>
<a id='n5839' href='#n5839'>5839</a>
<a id='n5840' href='#n5840'>5840</a>
<a id='n5841' href='#n5841'>5841</a>
<a id='n5842' href='#n5842'>5842</a>
<a id='n5843' href='#n5843'>5843</a>
<a id='n5844' href='#n5844'>5844</a>
<a id='n5845' href='#n5845'>5845</a>
<a id='n5846' href='#n5846'>5846</a>
<a id='n5847' href='#n5847'>5847</a>
<a id='n5848' href='#n5848'>5848</a>
<a id='n5849' href='#n5849'>5849</a>
<a id='n5850' href='#n5850'>5850</a>
<a id='n5851' href='#n5851'>5851</a>
<a id='n5852' href='#n5852'>5852</a>
<a id='n5853' href='#n5853'>5853</a>
<a id='n5854' href='#n5854'>5854</a>
<a id='n5855' href='#n5855'>5855</a>
<a id='n5856' href='#n5856'>5856</a>
<a id='n5857' href='#n5857'>5857</a>
<a id='n5858' href='#n5858'>5858</a>
<a id='n5859' href='#n5859'>5859</a>
<a id='n5860' href='#n5860'>5860</a>
<a id='n5861' href='#n5861'>5861</a>
<a id='n5862' href='#n5862'>5862</a>
<a id='n5863' href='#n5863'>5863</a>
<a id='n5864' href='#n5864'>5864</a>
<a id='n5865' href='#n5865'>5865</a>
<a id='n5866' href='#n5866'>5866</a>
<a id='n5867' href='#n5867'>5867</a>
<a id='n5868' href='#n5868'>5868</a>
<a id='n5869' href='#n5869'>5869</a>
<a id='n5870' href='#n5870'>5870</a>
<a id='n5871' href='#n5871'>5871</a>
<a id='n5872' href='#n5872'>5872</a>
<a id='n5873' href='#n5873'>5873</a>
<a id='n5874' href='#n5874'>5874</a>
<a id='n5875' href='#n5875'>5875</a>
<a id='n5876' href='#n5876'>5876</a>
<a id='n5877' href='#n5877'>5877</a>
<a id='n5878' href='#n5878'>5878</a>
<a id='n5879' href='#n5879'>5879</a>
<a id='n5880' href='#n5880'>5880</a>
<a id='n5881' href='#n5881'>5881</a>
<a id='n5882' href='#n5882'>5882</a>
<a id='n5883' href='#n5883'>5883</a>
<a id='n5884' href='#n5884'>5884</a>
<a id='n5885' href='#n5885'>5885</a>
<a id='n5886' href='#n5886'>5886</a>
<a id='n5887' href='#n5887'>5887</a>
<a id='n5888' href='#n5888'>5888</a>
<a id='n5889' href='#n5889'>5889</a>
<a id='n5890' href='#n5890'>5890</a>
<a id='n5891' href='#n5891'>5891</a>
<a id='n5892' href='#n5892'>5892</a>
<a id='n5893' href='#n5893'>5893</a>
<a id='n5894' href='#n5894'>5894</a>
<a id='n5895' href='#n5895'>5895</a>
<a id='n5896' href='#n5896'>5896</a>
<a id='n5897' href='#n5897'>5897</a>
<a id='n5898' href='#n5898'>5898</a>
<a id='n5899' href='#n5899'>5899</a>
<a id='n5900' href='#n5900'>5900</a>
<a id='n5901' href='#n5901'>5901</a>
<a id='n5902' href='#n5902'>5902</a>
<a id='n5903' href='#n5903'>5903</a>
<a id='n5904' href='#n5904'>5904</a>
<a id='n5905' href='#n5905'>5905</a>
<a id='n5906' href='#n5906'>5906</a>
<a id='n5907' href='#n5907'>5907</a>
<a id='n5908' href='#n5908'>5908</a>
<a id='n5909' href='#n5909'>5909</a>
<a id='n5910' href='#n5910'>5910</a>
<a id='n5911' href='#n5911'>5911</a>
<a id='n5912' href='#n5912'>5912</a>
<a id='n5913' href='#n5913'>5913</a>
<a id='n5914' href='#n5914'>5914</a>
<a id='n5915' href='#n5915'>5915</a>
<a id='n5916' href='#n5916'>5916</a>
<a id='n5917' href='#n5917'>5917</a>
<a id='n5918' href='#n5918'>5918</a>
<a id='n5919' href='#n5919'>5919</a>
<a id='n5920' href='#n5920'>5920</a>
<a id='n5921' href='#n5921'>5921</a>
<a id='n5922' href='#n5922'>5922</a>
<a id='n5923' href='#n5923'>5923</a>
<a id='n5924' href='#n5924'>5924</a>
<a id='n5925' href='#n5925'>5925</a>
<a id='n5926' href='#n5926'>5926</a>
<a id='n5927' href='#n5927'>5927</a>
<a id='n5928' href='#n5928'>5928</a>
<a id='n5929' href='#n5929'>5929</a>
<a id='n5930' href='#n5930'>5930</a>
<a id='n5931' href='#n5931'>5931</a>
<a id='n5932' href='#n5932'>5932</a>
<a id='n5933' href='#n5933'>5933</a>
<a id='n5934' href='#n5934'>5934</a>
<a id='n5935' href='#n5935'>5935</a>
<a id='n5936' href='#n5936'>5936</a>
<a id='n5937' href='#n5937'>5937</a>
<a id='n5938' href='#n5938'>5938</a>
<a id='n5939' href='#n5939'>5939</a>
<a id='n5940' href='#n5940'>5940</a>
<a id='n5941' href='#n5941'>5941</a>
<a id='n5942' href='#n5942'>5942</a>
<a id='n5943' href='#n5943'>5943</a>
<a id='n5944' href='#n5944'>5944</a>
<a id='n5945' href='#n5945'>5945</a>
<a id='n5946' href='#n5946'>5946</a>
<a id='n5947' href='#n5947'>5947</a>
<a id='n5948' href='#n5948'>5948</a>
<a id='n5949' href='#n5949'>5949</a>
<a id='n5950' href='#n5950'>5950</a>
<a id='n5951' href='#n5951'>5951</a>
<a id='n5952' href='#n5952'>5952</a>
<a id='n5953' href='#n5953'>5953</a>
<a id='n5954' href='#n5954'>5954</a>
<a id='n5955' href='#n5955'>5955</a>
<a id='n5956' href='#n5956'>5956</a>
<a id='n5957' href='#n5957'>5957</a>
<a id='n5958' href='#n5958'>5958</a>
<a id='n5959' href='#n5959'>5959</a>
<a id='n5960' href='#n5960'>5960</a>
<a id='n5961' href='#n5961'>5961</a>
<a id='n5962' href='#n5962'>5962</a>
<a id='n5963' href='#n5963'>5963</a>
<a id='n5964' href='#n5964'>5964</a>
<a id='n5965' href='#n5965'>5965</a>
<a id='n5966' href='#n5966'>5966</a>
<a id='n5967' href='#n5967'>5967</a>
<a id='n5968' href='#n5968'>5968</a>
<a id='n5969' href='#n5969'>5969</a>
<a id='n5970' href='#n5970'>5970</a>
<a id='n5971' href='#n5971'>5971</a>
<a id='n5972' href='#n5972'>5972</a>
<a id='n5973' href='#n5973'>5973</a>
<a id='n5974' href='#n5974'>5974</a>
<a id='n5975' href='#n5975'>5975</a>
<a id='n5976' href='#n5976'>5976</a>
<a id='n5977' href='#n5977'>5977</a>
<a id='n5978' href='#n5978'>5978</a>
<a id='n5979' href='#n5979'>5979</a>
<a id='n5980' href='#n5980'>5980</a>
<a id='n5981' href='#n5981'>5981</a>
<a id='n5982' href='#n5982'>5982</a>
<a id='n5983' href='#n5983'>5983</a>
<a id='n5984' href='#n5984'>5984</a>
<a id='n5985' href='#n5985'>5985</a>
<a id='n5986' href='#n5986'>5986</a>
<a id='n5987' href='#n5987'>5987</a>
<a id='n5988' href='#n5988'>5988</a>
<a id='n5989' href='#n5989'>5989</a>
<a id='n5990' href='#n5990'>5990</a>
<a id='n5991' href='#n5991'>5991</a>
<a id='n5992' href='#n5992'>5992</a>
<a id='n5993' href='#n5993'>5993</a>
<a id='n5994' href='#n5994'>5994</a>
<a id='n5995' href='#n5995'>5995</a>
<a id='n5996' href='#n5996'>5996</a>
<a id='n5997' href='#n5997'>5997</a>
<a id='n5998' href='#n5998'>5998</a>
<a id='n5999' href='#n5999'>5999</a>
<a id='n6000' href='#n6000'>6000</a>
<a id='n6001' href='#n6001'>6001</a>
<a id='n6002' href='#n6002'>6002</a>
<a id='n6003' href='#n6003'>6003</a>
<a id='n6004' href='#n6004'>6004</a>
<a id='n6005' href='#n6005'>6005</a>
<a id='n6006' href='#n6006'>6006</a>
<a id='n6007' href='#n6007'>6007</a>
<a id='n6008' href='#n6008'>6008</a>
<a id='n6009' href='#n6009'>6009</a>
<a id='n6010' href='#n6010'>6010</a>
<a id='n6011' href='#n6011'>6011</a>
<a id='n6012' href='#n6012'>6012</a>
<a id='n6013' href='#n6013'>6013</a>
<a id='n6014' href='#n6014'>6014</a>
<a id='n6015' href='#n6015'>6015</a>
<a id='n6016' href='#n6016'>6016</a>
<a id='n6017' href='#n6017'>6017</a>
<a id='n6018' href='#n6018'>6018</a>
<a id='n6019' href='#n6019'>6019</a>
<a id='n6020' href='#n6020'>6020</a>
<a id='n6021' href='#n6021'>6021</a>
<a id='n6022' href='#n6022'>6022</a>
<a id='n6023' href='#n6023'>6023</a>
<a id='n6024' href='#n6024'>6024</a>
<a id='n6025' href='#n6025'>6025</a>
<a id='n6026' href='#n6026'>6026</a>
<a id='n6027' href='#n6027'>6027</a>
<a id='n6028' href='#n6028'>6028</a>
<a id='n6029' href='#n6029'>6029</a>
<a id='n6030' href='#n6030'>6030</a>
<a id='n6031' href='#n6031'>6031</a>
<a id='n6032' href='#n6032'>6032</a>
<a id='n6033' href='#n6033'>6033</a>
<a id='n6034' href='#n6034'>6034</a>
<a id='n6035' href='#n6035'>6035</a>
<a id='n6036' href='#n6036'>6036</a>
<a id='n6037' href='#n6037'>6037</a>
<a id='n6038' href='#n6038'>6038</a>
<a id='n6039' href='#n6039'>6039</a>
<a id='n6040' href='#n6040'>6040</a>
<a id='n6041' href='#n6041'>6041</a>
<a id='n6042' href='#n6042'>6042</a>
<a id='n6043' href='#n6043'>6043</a>
<a id='n6044' href='#n6044'>6044</a>
<a id='n6045' href='#n6045'>6045</a>
<a id='n6046' href='#n6046'>6046</a>
<a id='n6047' href='#n6047'>6047</a>
<a id='n6048' href='#n6048'>6048</a>
<a id='n6049' href='#n6049'>6049</a>
<a id='n6050' href='#n6050'>6050</a>
<a id='n6051' href='#n6051'>6051</a>
<a id='n6052' href='#n6052'>6052</a>
<a id='n6053' href='#n6053'>6053</a>
<a id='n6054' href='#n6054'>6054</a>
<a id='n6055' href='#n6055'>6055</a>
<a id='n6056' href='#n6056'>6056</a>
<a id='n6057' href='#n6057'>6057</a>
<a id='n6058' href='#n6058'>6058</a>
<a id='n6059' href='#n6059'>6059</a>
<a id='n6060' href='#n6060'>6060</a>
<a id='n6061' href='#n6061'>6061</a>
<a id='n6062' href='#n6062'>6062</a>
<a id='n6063' href='#n6063'>6063</a>
<a id='n6064' href='#n6064'>6064</a>
<a id='n6065' href='#n6065'>6065</a>
<a id='n6066' href='#n6066'>6066</a>
<a id='n6067' href='#n6067'>6067</a>
<a id='n6068' href='#n6068'>6068</a>
<a id='n6069' href='#n6069'>6069</a>
<a id='n6070' href='#n6070'>6070</a>
<a id='n6071' href='#n6071'>6071</a>
<a id='n6072' href='#n6072'>6072</a>
<a id='n6073' href='#n6073'>6073</a>
<a id='n6074' href='#n6074'>6074</a>
<a id='n6075' href='#n6075'>6075</a>
<a id='n6076' href='#n6076'>6076</a>
<a id='n6077' href='#n6077'>6077</a>
<a id='n6078' href='#n6078'>6078</a>
<a id='n6079' href='#n6079'>6079</a>
<a id='n6080' href='#n6080'>6080</a>
<a id='n6081' href='#n6081'>6081</a>
<a id='n6082' href='#n6082'>6082</a>
<a id='n6083' href='#n6083'>6083</a>
<a id='n6084' href='#n6084'>6084</a>
<a id='n6085' href='#n6085'>6085</a>
<a id='n6086' href='#n6086'>6086</a>
<a id='n6087' href='#n6087'>6087</a>
<a id='n6088' href='#n6088'>6088</a>
<a id='n6089' href='#n6089'>6089</a>
<a id='n6090' href='#n6090'>6090</a>
<a id='n6091' href='#n6091'>6091</a>
<a id='n6092' href='#n6092'>6092</a>
<a id='n6093' href='#n6093'>6093</a>
<a id='n6094' href='#n6094'>6094</a>
<a id='n6095' href='#n6095'>6095</a>
<a id='n6096' href='#n6096'>6096</a>
<a id='n6097' href='#n6097'>6097</a>
<a id='n6098' href='#n6098'>6098</a>
<a id='n6099' href='#n6099'>6099</a>
<a id='n6100' href='#n6100'>6100</a>
<a id='n6101' href='#n6101'>6101</a>
<a id='n6102' href='#n6102'>6102</a>
<a id='n6103' href='#n6103'>6103</a>
<a id='n6104' href='#n6104'>6104</a>
<a id='n6105' href='#n6105'>6105</a>
<a id='n6106' href='#n6106'>6106</a>
<a id='n6107' href='#n6107'>6107</a>
<a id='n6108' href='#n6108'>6108</a>
<a id='n6109' href='#n6109'>6109</a>
<a id='n6110' href='#n6110'>6110</a>
<a id='n6111' href='#n6111'>6111</a>
<a id='n6112' href='#n6112'>6112</a>
<a id='n6113' href='#n6113'>6113</a>
<a id='n6114' href='#n6114'>6114</a>
<a id='n6115' href='#n6115'>6115</a>
<a id='n6116' href='#n6116'>6116</a>
<a id='n6117' href='#n6117'>6117</a>
<a id='n6118' href='#n6118'>6118</a>
<a id='n6119' href='#n6119'>6119</a>
<a id='n6120' href='#n6120'>6120</a>
<a id='n6121' href='#n6121'>6121</a>
<a id='n6122' href='#n6122'>6122</a>
<a id='n6123' href='#n6123'>6123</a>
<a id='n6124' href='#n6124'>6124</a>
<a id='n6125' href='#n6125'>6125</a>
<a id='n6126' href='#n6126'>6126</a>
<a id='n6127' href='#n6127'>6127</a>
<a id='n6128' href='#n6128'>6128</a>
<a id='n6129' href='#n6129'>6129</a>
<a id='n6130' href='#n6130'>6130</a>
<a id='n6131' href='#n6131'>6131</a>
<a id='n6132' href='#n6132'>6132</a>
<a id='n6133' href='#n6133'>6133</a>
<a id='n6134' href='#n6134'>6134</a>
<a id='n6135' href='#n6135'>6135</a>
<a id='n6136' href='#n6136'>6136</a>
<a id='n6137' href='#n6137'>6137</a>
<a id='n6138' href='#n6138'>6138</a>
<a id='n6139' href='#n6139'>6139</a>
<a id='n6140' href='#n6140'>6140</a>
<a id='n6141' href='#n6141'>6141</a>
<a id='n6142' href='#n6142'>6142</a>
<a id='n6143' href='#n6143'>6143</a>
<a id='n6144' href='#n6144'>6144</a>
<a id='n6145' href='#n6145'>6145</a>
<a id='n6146' href='#n6146'>6146</a>
<a id='n6147' href='#n6147'>6147</a>
<a id='n6148' href='#n6148'>6148</a>
<a id='n6149' href='#n6149'>6149</a>
<a id='n6150' href='#n6150'>6150</a>
<a id='n6151' href='#n6151'>6151</a>
<a id='n6152' href='#n6152'>6152</a>
<a id='n6153' href='#n6153'>6153</a>
<a id='n6154' href='#n6154'>6154</a>
<a id='n6155' href='#n6155'>6155</a>
<a id='n6156' href='#n6156'>6156</a>
<a id='n6157' href='#n6157'>6157</a>
<a id='n6158' href='#n6158'>6158</a>
<a id='n6159' href='#n6159'>6159</a>
<a id='n6160' href='#n6160'>6160</a>
<a id='n6161' href='#n6161'>6161</a>
<a id='n6162' href='#n6162'>6162</a>
<a id='n6163' href='#n6163'>6163</a>
<a id='n6164' href='#n6164'>6164</a>
<a id='n6165' href='#n6165'>6165</a>
<a id='n6166' href='#n6166'>6166</a>
<a id='n6167' href='#n6167'>6167</a>
<a id='n6168' href='#n6168'>6168</a>
<a id='n6169' href='#n6169'>6169</a>
<a id='n6170' href='#n6170'>6170</a>
<a id='n6171' href='#n6171'>6171</a>
<a id='n6172' href='#n6172'>6172</a>
<a id='n6173' href='#n6173'>6173</a>
<a id='n6174' href='#n6174'>6174</a>
<a id='n6175' href='#n6175'>6175</a>
<a id='n6176' href='#n6176'>6176</a>
<a id='n6177' href='#n6177'>6177</a>
<a id='n6178' href='#n6178'>6178</a>
<a id='n6179' href='#n6179'>6179</a>
<a id='n6180' href='#n6180'>6180</a>
<a id='n6181' href='#n6181'>6181</a>
<a id='n6182' href='#n6182'>6182</a>
<a id='n6183' href='#n6183'>6183</a>
<a id='n6184' href='#n6184'>6184</a>
<a id='n6185' href='#n6185'>6185</a>
<a id='n6186' href='#n6186'>6186</a>
<a id='n6187' href='#n6187'>6187</a>
<a id='n6188' href='#n6188'>6188</a>
<a id='n6189' href='#n6189'>6189</a>
<a id='n6190' href='#n6190'>6190</a>
<a id='n6191' href='#n6191'>6191</a>
<a id='n6192' href='#n6192'>6192</a>
<a id='n6193' href='#n6193'>6193</a>
<a id='n6194' href='#n6194'>6194</a>
<a id='n6195' href='#n6195'>6195</a>
<a id='n6196' href='#n6196'>6196</a>
<a id='n6197' href='#n6197'>6197</a>
<a id='n6198' href='#n6198'>6198</a>
<a id='n6199' href='#n6199'>6199</a>
<a id='n6200' href='#n6200'>6200</a>
<a id='n6201' href='#n6201'>6201</a>
<a id='n6202' href='#n6202'>6202</a>
<a id='n6203' href='#n6203'>6203</a>
<a id='n6204' href='#n6204'>6204</a>
<a id='n6205' href='#n6205'>6205</a>
<a id='n6206' href='#n6206'>6206</a>
<a id='n6207' href='#n6207'>6207</a>
<a id='n6208' href='#n6208'>6208</a>
<a id='n6209' href='#n6209'>6209</a>
<a id='n6210' href='#n6210'>6210</a>
<a id='n6211' href='#n6211'>6211</a>
<a id='n6212' href='#n6212'>6212</a>
<a id='n6213' href='#n6213'>6213</a>
<a id='n6214' href='#n6214'>6214</a>
<a id='n6215' href='#n6215'>6215</a>
<a id='n6216' href='#n6216'>6216</a>
<a id='n6217' href='#n6217'>6217</a>
<a id='n6218' href='#n6218'>6218</a>
<a id='n6219' href='#n6219'>6219</a>
<a id='n6220' href='#n6220'>6220</a>
<a id='n6221' href='#n6221'>6221</a>
<a id='n6222' href='#n6222'>6222</a>
<a id='n6223' href='#n6223'>6223</a>
<a id='n6224' href='#n6224'>6224</a>
<a id='n6225' href='#n6225'>6225</a>
<a id='n6226' href='#n6226'>6226</a>
<a id='n6227' href='#n6227'>6227</a>
<a id='n6228' href='#n6228'>6228</a>
<a id='n6229' href='#n6229'>6229</a>
<a id='n6230' href='#n6230'>6230</a>
<a id='n6231' href='#n6231'>6231</a>
<a id='n6232' href='#n6232'>6232</a>
<a id='n6233' href='#n6233'>6233</a>
<a id='n6234' href='#n6234'>6234</a>
<a id='n6235' href='#n6235'>6235</a>
<a id='n6236' href='#n6236'>6236</a>
<a id='n6237' href='#n6237'>6237</a>
<a id='n6238' href='#n6238'>6238</a>
<a id='n6239' href='#n6239'>6239</a>
<a id='n6240' href='#n6240'>6240</a>
<a id='n6241' href='#n6241'>6241</a>
<a id='n6242' href='#n6242'>6242</a>
<a id='n6243' href='#n6243'>6243</a>
<a id='n6244' href='#n6244'>6244</a>
<a id='n6245' href='#n6245'>6245</a>
<a id='n6246' href='#n6246'>6246</a>
<a id='n6247' href='#n6247'>6247</a>
<a id='n6248' href='#n6248'>6248</a>
<a id='n6249' href='#n6249'>6249</a>
<a id='n6250' href='#n6250'>6250</a>
<a id='n6251' href='#n6251'>6251</a>
<a id='n6252' href='#n6252'>6252</a>
<a id='n6253' href='#n6253'>6253</a>
<a id='n6254' href='#n6254'>6254</a>
<a id='n6255' href='#n6255'>6255</a>
<a id='n6256' href='#n6256'>6256</a>
<a id='n6257' href='#n6257'>6257</a>
<a id='n6258' href='#n6258'>6258</a>
<a id='n6259' href='#n6259'>6259</a>
<a id='n6260' href='#n6260'>6260</a>
<a id='n6261' href='#n6261'>6261</a>
<a id='n6262' href='#n6262'>6262</a>
<a id='n6263' href='#n6263'>6263</a>
<a id='n6264' href='#n6264'>6264</a>
<a id='n6265' href='#n6265'>6265</a>
<a id='n6266' href='#n6266'>6266</a>
<a id='n6267' href='#n6267'>6267</a>
<a id='n6268' href='#n6268'>6268</a>
<a id='n6269' href='#n6269'>6269</a>
<a id='n6270' href='#n6270'>6270</a>
<a id='n6271' href='#n6271'>6271</a>
<a id='n6272' href='#n6272'>6272</a>
<a id='n6273' href='#n6273'>6273</a>
<a id='n6274' href='#n6274'>6274</a>
<a id='n6275' href='#n6275'>6275</a>
<a id='n6276' href='#n6276'>6276</a>
<a id='n6277' href='#n6277'>6277</a>
<a id='n6278' href='#n6278'>6278</a>
<a id='n6279' href='#n6279'>6279</a>
<a id='n6280' href='#n6280'>6280</a>
<a id='n6281' href='#n6281'>6281</a>
<a id='n6282' href='#n6282'>6282</a>
<a id='n6283' href='#n6283'>6283</a>
<a id='n6284' href='#n6284'>6284</a>
<a id='n6285' href='#n6285'>6285</a>
<a id='n6286' href='#n6286'>6286</a>
<a id='n6287' href='#n6287'>6287</a>
<a id='n6288' href='#n6288'>6288</a>
<a id='n6289' href='#n6289'>6289</a>
<a id='n6290' href='#n6290'>6290</a>
<a id='n6291' href='#n6291'>6291</a>
<a id='n6292' href='#n6292'>6292</a>
<a id='n6293' href='#n6293'>6293</a>
<a id='n6294' href='#n6294'>6294</a>
<a id='n6295' href='#n6295'>6295</a>
<a id='n6296' href='#n6296'>6296</a>
<a id='n6297' href='#n6297'>6297</a>
<a id='n6298' href='#n6298'>6298</a>
<a id='n6299' href='#n6299'>6299</a>
<a id='n6300' href='#n6300'>6300</a>
<a id='n6301' href='#n6301'>6301</a>
<a id='n6302' href='#n6302'>6302</a>
<a id='n6303' href='#n6303'>6303</a>
<a id='n6304' href='#n6304'>6304</a>
<a id='n6305' href='#n6305'>6305</a>
<a id='n6306' href='#n6306'>6306</a>
<a id='n6307' href='#n6307'>6307</a>
<a id='n6308' href='#n6308'>6308</a>
<a id='n6309' href='#n6309'>6309</a>
<a id='n6310' href='#n6310'>6310</a>
<a id='n6311' href='#n6311'>6311</a>
<a id='n6312' href='#n6312'>6312</a>
<a id='n6313' href='#n6313'>6313</a>
<a id='n6314' href='#n6314'>6314</a>
<a id='n6315' href='#n6315'>6315</a>
<a id='n6316' href='#n6316'>6316</a>
<a id='n6317' href='#n6317'>6317</a>
<a id='n6318' href='#n6318'>6318</a>
<a id='n6319' href='#n6319'>6319</a>
<a id='n6320' href='#n6320'>6320</a>
<a id='n6321' href='#n6321'>6321</a>
<a id='n6322' href='#n6322'>6322</a>
<a id='n6323' href='#n6323'>6323</a>
<a id='n6324' href='#n6324'>6324</a>
<a id='n6325' href='#n6325'>6325</a>
<a id='n6326' href='#n6326'>6326</a>
<a id='n6327' href='#n6327'>6327</a>
<a id='n6328' href='#n6328'>6328</a>
<a id='n6329' href='#n6329'>6329</a>
<a id='n6330' href='#n6330'>6330</a>
<a id='n6331' href='#n6331'>6331</a>
<a id='n6332' href='#n6332'>6332</a>
<a id='n6333' href='#n6333'>6333</a>
<a id='n6334' href='#n6334'>6334</a>
<a id='n6335' href='#n6335'>6335</a>
<a id='n6336' href='#n6336'>6336</a>
<a id='n6337' href='#n6337'>6337</a>
<a id='n6338' href='#n6338'>6338</a>
<a id='n6339' href='#n6339'>6339</a>
<a id='n6340' href='#n6340'>6340</a>
<a id='n6341' href='#n6341'>6341</a>
<a id='n6342' href='#n6342'>6342</a>
<a id='n6343' href='#n6343'>6343</a>
<a id='n6344' href='#n6344'>6344</a>
<a id='n6345' href='#n6345'>6345</a>
<a id='n6346' href='#n6346'>6346</a>
<a id='n6347' href='#n6347'>6347</a>
<a id='n6348' href='#n6348'>6348</a>
<a id='n6349' href='#n6349'>6349</a>
<a id='n6350' href='#n6350'>6350</a>
<a id='n6351' href='#n6351'>6351</a>
<a id='n6352' href='#n6352'>6352</a>
<a id='n6353' href='#n6353'>6353</a>
<a id='n6354' href='#n6354'>6354</a>
<a id='n6355' href='#n6355'>6355</a>
<a id='n6356' href='#n6356'>6356</a>
<a id='n6357' href='#n6357'>6357</a>
<a id='n6358' href='#n6358'>6358</a>
<a id='n6359' href='#n6359'>6359</a>
<a id='n6360' href='#n6360'>6360</a>
<a id='n6361' href='#n6361'>6361</a>
<a id='n6362' href='#n6362'>6362</a>
<a id='n6363' href='#n6363'>6363</a>
<a id='n6364' href='#n6364'>6364</a>
<a id='n6365' href='#n6365'>6365</a>
<a id='n6366' href='#n6366'>6366</a>
<a id='n6367' href='#n6367'>6367</a>
<a id='n6368' href='#n6368'>6368</a>
<a id='n6369' href='#n6369'>6369</a>
<a id='n6370' href='#n6370'>6370</a>
<a id='n6371' href='#n6371'>6371</a>
<a id='n6372' href='#n6372'>6372</a>
<a id='n6373' href='#n6373'>6373</a>
<a id='n6374' href='#n6374'>6374</a>
<a id='n6375' href='#n6375'>6375</a>
<a id='n6376' href='#n6376'>6376</a>
<a id='n6377' href='#n6377'>6377</a>
<a id='n6378' href='#n6378'>6378</a>
<a id='n6379' href='#n6379'>6379</a>
<a id='n6380' href='#n6380'>6380</a>
<a id='n6381' href='#n6381'>6381</a>
<a id='n6382' href='#n6382'>6382</a>
<a id='n6383' href='#n6383'>6383</a>
<a id='n6384' href='#n6384'>6384</a>
<a id='n6385' href='#n6385'>6385</a>
<a id='n6386' href='#n6386'>6386</a>
<a id='n6387' href='#n6387'>6387</a>
<a id='n6388' href='#n6388'>6388</a>
<a id='n6389' href='#n6389'>6389</a>
<a id='n6390' href='#n6390'>6390</a>
<a id='n6391' href='#n6391'>6391</a>
<a id='n6392' href='#n6392'>6392</a>
<a id='n6393' href='#n6393'>6393</a>
<a id='n6394' href='#n6394'>6394</a>
<a id='n6395' href='#n6395'>6395</a>
<a id='n6396' href='#n6396'>6396</a>
<a id='n6397' href='#n6397'>6397</a>
<a id='n6398' href='#n6398'>6398</a>
<a id='n6399' href='#n6399'>6399</a>
<a id='n6400' href='#n6400'>6400</a>
<a id='n6401' href='#n6401'>6401</a>
<a id='n6402' href='#n6402'>6402</a>
<a id='n6403' href='#n6403'>6403</a>
<a id='n6404' href='#n6404'>6404</a>
<a id='n6405' href='#n6405'>6405</a>
<a id='n6406' href='#n6406'>6406</a>
<a id='n6407' href='#n6407'>6407</a>
<a id='n6408' href='#n6408'>6408</a>
<a id='n6409' href='#n6409'>6409</a>
<a id='n6410' href='#n6410'>6410</a>
<a id='n6411' href='#n6411'>6411</a>
<a id='n6412' href='#n6412'>6412</a>
<a id='n6413' href='#n6413'>6413</a>
<a id='n6414' href='#n6414'>6414</a>
<a id='n6415' href='#n6415'>6415</a>
<a id='n6416' href='#n6416'>6416</a>
<a id='n6417' href='#n6417'>6417</a>
<a id='n6418' href='#n6418'>6418</a>
<a id='n6419' href='#n6419'>6419</a>
<a id='n6420' href='#n6420'>6420</a>
<a id='n6421' href='#n6421'>6421</a>
<a id='n6422' href='#n6422'>6422</a>
<a id='n6423' href='#n6423'>6423</a>
<a id='n6424' href='#n6424'>6424</a>
<a id='n6425' href='#n6425'>6425</a>
<a id='n6426' href='#n6426'>6426</a>
<a id='n6427' href='#n6427'>6427</a>
<a id='n6428' href='#n6428'>6428</a>
<a id='n6429' href='#n6429'>6429</a>
<a id='n6430' href='#n6430'>6430</a>
<a id='n6431' href='#n6431'>6431</a>
<a id='n6432' href='#n6432'>6432</a>
<a id='n6433' href='#n6433'>6433</a>
<a id='n6434' href='#n6434'>6434</a>
<a id='n6435' href='#n6435'>6435</a>
<a id='n6436' href='#n6436'>6436</a>
<a id='n6437' href='#n6437'>6437</a>
<a id='n6438' href='#n6438'>6438</a>
<a id='n6439' href='#n6439'>6439</a>
<a id='n6440' href='#n6440'>6440</a>
<a id='n6441' href='#n6441'>6441</a>
<a id='n6442' href='#n6442'>6442</a>
<a id='n6443' href='#n6443'>6443</a>
<a id='n6444' href='#n6444'>6444</a>
<a id='n6445' href='#n6445'>6445</a>
<a id='n6446' href='#n6446'>6446</a>
<a id='n6447' href='#n6447'>6447</a>
<a id='n6448' href='#n6448'>6448</a>
<a id='n6449' href='#n6449'>6449</a>
<a id='n6450' href='#n6450'>6450</a>
<a id='n6451' href='#n6451'>6451</a>
<a id='n6452' href='#n6452'>6452</a>
<a id='n6453' href='#n6453'>6453</a>
<a id='n6454' href='#n6454'>6454</a>
<a id='n6455' href='#n6455'>6455</a>
<a id='n6456' href='#n6456'>6456</a>
<a id='n6457' href='#n6457'>6457</a>
<a id='n6458' href='#n6458'>6458</a>
<a id='n6459' href='#n6459'>6459</a>
<a id='n6460' href='#n6460'>6460</a>
<a id='n6461' href='#n6461'>6461</a>
<a id='n6462' href='#n6462'>6462</a>
<a id='n6463' href='#n6463'>6463</a>
<a id='n6464' href='#n6464'>6464</a>
<a id='n6465' href='#n6465'>6465</a>
<a id='n6466' href='#n6466'>6466</a>
<a id='n6467' href='#n6467'>6467</a>
<a id='n6468' href='#n6468'>6468</a>
<a id='n6469' href='#n6469'>6469</a>
<a id='n6470' href='#n6470'>6470</a>
<a id='n6471' href='#n6471'>6471</a>
<a id='n6472' href='#n6472'>6472</a>
<a id='n6473' href='#n6473'>6473</a>
<a id='n6474' href='#n6474'>6474</a>
<a id='n6475' href='#n6475'>6475</a>
<a id='n6476' href='#n6476'>6476</a>
<a id='n6477' href='#n6477'>6477</a>
<a id='n6478' href='#n6478'>6478</a>
<a id='n6479' href='#n6479'>6479</a>
<a id='n6480' href='#n6480'>6480</a>
<a id='n6481' href='#n6481'>6481</a>
<a id='n6482' href='#n6482'>6482</a>
<a id='n6483' href='#n6483'>6483</a>
<a id='n6484' href='#n6484'>6484</a>
<a id='n6485' href='#n6485'>6485</a>
<a id='n6486' href='#n6486'>6486</a>
<a id='n6487' href='#n6487'>6487</a>
<a id='n6488' href='#n6488'>6488</a>
<a id='n6489' href='#n6489'>6489</a>
<a id='n6490' href='#n6490'>6490</a>
<a id='n6491' href='#n6491'>6491</a>
<a id='n6492' href='#n6492'>6492</a>
<a id='n6493' href='#n6493'>6493</a>
<a id='n6494' href='#n6494'>6494</a>
<a id='n6495' href='#n6495'>6495</a>
<a id='n6496' href='#n6496'>6496</a>
<a id='n6497' href='#n6497'>6497</a>
<a id='n6498' href='#n6498'>6498</a>
<a id='n6499' href='#n6499'>6499</a>
<a id='n6500' href='#n6500'>6500</a>
<a id='n6501' href='#n6501'>6501</a>
<a id='n6502' href='#n6502'>6502</a>
<a id='n6503' href='#n6503'>6503</a>
<a id='n6504' href='#n6504'>6504</a>
<a id='n6505' href='#n6505'>6505</a>
<a id='n6506' href='#n6506'>6506</a>
<a id='n6507' href='#n6507'>6507</a>
<a id='n6508' href='#n6508'>6508</a>
<a id='n6509' href='#n6509'>6509</a>
<a id='n6510' href='#n6510'>6510</a>
<a id='n6511' href='#n6511'>6511</a>
<a id='n6512' href='#n6512'>6512</a>
<a id='n6513' href='#n6513'>6513</a>
<a id='n6514' href='#n6514'>6514</a>
<a id='n6515' href='#n6515'>6515</a>
<a id='n6516' href='#n6516'>6516</a>
<a id='n6517' href='#n6517'>6517</a>
<a id='n6518' href='#n6518'>6518</a>
<a id='n6519' href='#n6519'>6519</a>
<a id='n6520' href='#n6520'>6520</a>
<a id='n6521' href='#n6521'>6521</a>
<a id='n6522' href='#n6522'>6522</a>
<a id='n6523' href='#n6523'>6523</a>
<a id='n6524' href='#n6524'>6524</a>
<a id='n6525' href='#n6525'>6525</a>
<a id='n6526' href='#n6526'>6526</a>
<a id='n6527' href='#n6527'>6527</a>
<a id='n6528' href='#n6528'>6528</a>
<a id='n6529' href='#n6529'>6529</a>
<a id='n6530' href='#n6530'>6530</a>
<a id='n6531' href='#n6531'>6531</a>
<a id='n6532' href='#n6532'>6532</a>
<a id='n6533' href='#n6533'>6533</a>
<a id='n6534' href='#n6534'>6534</a>
<a id='n6535' href='#n6535'>6535</a>
<a id='n6536' href='#n6536'>6536</a>
<a id='n6537' href='#n6537'>6537</a>
<a id='n6538' href='#n6538'>6538</a>
<a id='n6539' href='#n6539'>6539</a>
<a id='n6540' href='#n6540'>6540</a>
<a id='n6541' href='#n6541'>6541</a>
<a id='n6542' href='#n6542'>6542</a>
<a id='n6543' href='#n6543'>6543</a>
<a id='n6544' href='#n6544'>6544</a>
<a id='n6545' href='#n6545'>6545</a>
<a id='n6546' href='#n6546'>6546</a>
<a id='n6547' href='#n6547'>6547</a>
<a id='n6548' href='#n6548'>6548</a>
<a id='n6549' href='#n6549'>6549</a>
<a id='n6550' href='#n6550'>6550</a>
<a id='n6551' href='#n6551'>6551</a>
<a id='n6552' href='#n6552'>6552</a>
<a id='n6553' href='#n6553'>6553</a>
<a id='n6554' href='#n6554'>6554</a>
<a id='n6555' href='#n6555'>6555</a>
<a id='n6556' href='#n6556'>6556</a>
<a id='n6557' href='#n6557'>6557</a>
<a id='n6558' href='#n6558'>6558</a>
<a id='n6559' href='#n6559'>6559</a>
<a id='n6560' href='#n6560'>6560</a>
<a id='n6561' href='#n6561'>6561</a>
<a id='n6562' href='#n6562'>6562</a>
<a id='n6563' href='#n6563'>6563</a>
<a id='n6564' href='#n6564'>6564</a>
<a id='n6565' href='#n6565'>6565</a>
<a id='n6566' href='#n6566'>6566</a>
<a id='n6567' href='#n6567'>6567</a>
<a id='n6568' href='#n6568'>6568</a>
<a id='n6569' href='#n6569'>6569</a>
<a id='n6570' href='#n6570'>6570</a>
<a id='n6571' href='#n6571'>6571</a>
<a id='n6572' href='#n6572'>6572</a>
<a id='n6573' href='#n6573'>6573</a>
<a id='n6574' href='#n6574'>6574</a>
<a id='n6575' href='#n6575'>6575</a>
<a id='n6576' href='#n6576'>6576</a>
<a id='n6577' href='#n6577'>6577</a>
<a id='n6578' href='#n6578'>6578</a>
<a id='n6579' href='#n6579'>6579</a>
<a id='n6580' href='#n6580'>6580</a>
<a id='n6581' href='#n6581'>6581</a>
<a id='n6582' href='#n6582'>6582</a>
<a id='n6583' href='#n6583'>6583</a>
<a id='n6584' href='#n6584'>6584</a>
<a id='n6585' href='#n6585'>6585</a>
<a id='n6586' href='#n6586'>6586</a>
<a id='n6587' href='#n6587'>6587</a>
<a id='n6588' href='#n6588'>6588</a>
<a id='n6589' href='#n6589'>6589</a>
<a id='n6590' href='#n6590'>6590</a>
<a id='n6591' href='#n6591'>6591</a>
<a id='n6592' href='#n6592'>6592</a>
<a id='n6593' href='#n6593'>6593</a>
<a id='n6594' href='#n6594'>6594</a>
<a id='n6595' href='#n6595'>6595</a>
<a id='n6596' href='#n6596'>6596</a>
<a id='n6597' href='#n6597'>6597</a>
<a id='n6598' href='#n6598'>6598</a>
<a id='n6599' href='#n6599'>6599</a>
<a id='n6600' href='#n6600'>6600</a>
<a id='n6601' href='#n6601'>6601</a>
<a id='n6602' href='#n6602'>6602</a>
<a id='n6603' href='#n6603'>6603</a>
<a id='n6604' href='#n6604'>6604</a>
<a id='n6605' href='#n6605'>6605</a>
<a id='n6606' href='#n6606'>6606</a>
<a id='n6607' href='#n6607'>6607</a>
<a id='n6608' href='#n6608'>6608</a>
<a id='n6609' href='#n6609'>6609</a>
<a id='n6610' href='#n6610'>6610</a>
<a id='n6611' href='#n6611'>6611</a>
<a id='n6612' href='#n6612'>6612</a>
<a id='n6613' href='#n6613'>6613</a>
<a id='n6614' href='#n6614'>6614</a>
<a id='n6615' href='#n6615'>6615</a>
<a id='n6616' href='#n6616'>6616</a>
<a id='n6617' href='#n6617'>6617</a>
<a id='n6618' href='#n6618'>6618</a>
<a id='n6619' href='#n6619'>6619</a>
<a id='n6620' href='#n6620'>6620</a>
<a id='n6621' href='#n6621'>6621</a>
<a id='n6622' href='#n6622'>6622</a>
<a id='n6623' href='#n6623'>6623</a>
<a id='n6624' href='#n6624'>6624</a>
<a id='n6625' href='#n6625'>6625</a>
<a id='n6626' href='#n6626'>6626</a>
<a id='n6627' href='#n6627'>6627</a>
<a id='n6628' href='#n6628'>6628</a>
<a id='n6629' href='#n6629'>6629</a>
<a id='n6630' href='#n6630'>6630</a>
<a id='n6631' href='#n6631'>6631</a>
<a id='n6632' href='#n6632'>6632</a>
<a id='n6633' href='#n6633'>6633</a>
<a id='n6634' href='#n6634'>6634</a>
<a id='n6635' href='#n6635'>6635</a>
<a id='n6636' href='#n6636'>6636</a>
<a id='n6637' href='#n6637'>6637</a>
<a id='n6638' href='#n6638'>6638</a>
<a id='n6639' href='#n6639'>6639</a>
<a id='n6640' href='#n6640'>6640</a>
<a id='n6641' href='#n6641'>6641</a>
<a id='n6642' href='#n6642'>6642</a>
<a id='n6643' href='#n6643'>6643</a>
<a id='n6644' href='#n6644'>6644</a>
<a id='n6645' href='#n6645'>6645</a>
<a id='n6646' href='#n6646'>6646</a>
<a id='n6647' href='#n6647'>6647</a>
<a id='n6648' href='#n6648'>6648</a>
<a id='n6649' href='#n6649'>6649</a>
<a id='n6650' href='#n6650'>6650</a>
<a id='n6651' href='#n6651'>6651</a>
<a id='n6652' href='#n6652'>6652</a>
<a id='n6653' href='#n6653'>6653</a>
<a id='n6654' href='#n6654'>6654</a>
<a id='n6655' href='#n6655'>6655</a>
<a id='n6656' href='#n6656'>6656</a>
<a id='n6657' href='#n6657'>6657</a>
<a id='n6658' href='#n6658'>6658</a>
<a id='n6659' href='#n6659'>6659</a>
<a id='n6660' href='#n6660'>6660</a>
<a id='n6661' href='#n6661'>6661</a>
<a id='n6662' href='#n6662'>6662</a>
<a id='n6663' href='#n6663'>6663</a>
<a id='n6664' href='#n6664'>6664</a>
<a id='n6665' href='#n6665'>6665</a>
<a id='n6666' href='#n6666'>6666</a>
<a id='n6667' href='#n6667'>6667</a>
<a id='n6668' href='#n6668'>6668</a>
<a id='n6669' href='#n6669'>6669</a>
<a id='n6670' href='#n6670'>6670</a>
<a id='n6671' href='#n6671'>6671</a>
<a id='n6672' href='#n6672'>6672</a>
<a id='n6673' href='#n6673'>6673</a>
<a id='n6674' href='#n6674'>6674</a>
<a id='n6675' href='#n6675'>6675</a>
<a id='n6676' href='#n6676'>6676</a>
<a id='n6677' href='#n6677'>6677</a>
<a id='n6678' href='#n6678'>6678</a>
<a id='n6679' href='#n6679'>6679</a>
<a id='n6680' href='#n6680'>6680</a>
<a id='n6681' href='#n6681'>6681</a>
<a id='n6682' href='#n6682'>6682</a>
<a id='n6683' href='#n6683'>6683</a>
<a id='n6684' href='#n6684'>6684</a>
<a id='n6685' href='#n6685'>6685</a>
<a id='n6686' href='#n6686'>6686</a>
<a id='n6687' href='#n6687'>6687</a>
<a id='n6688' href='#n6688'>6688</a>
<a id='n6689' href='#n6689'>6689</a>
<a id='n6690' href='#n6690'>6690</a>
<a id='n6691' href='#n6691'>6691</a>
<a id='n6692' href='#n6692'>6692</a>
<a id='n6693' href='#n6693'>6693</a>
<a id='n6694' href='#n6694'>6694</a>
<a id='n6695' href='#n6695'>6695</a>
<a id='n6696' href='#n6696'>6696</a>
<a id='n6697' href='#n6697'>6697</a>
<a id='n6698' href='#n6698'>6698</a>
<a id='n6699' href='#n6699'>6699</a>
<a id='n6700' href='#n6700'>6700</a>
<a id='n6701' href='#n6701'>6701</a>
<a id='n6702' href='#n6702'>6702</a>
<a id='n6703' href='#n6703'>6703</a>
<a id='n6704' href='#n6704'>6704</a>
<a id='n6705' href='#n6705'>6705</a>
<a id='n6706' href='#n6706'>6706</a>
<a id='n6707' href='#n6707'>6707</a>
<a id='n6708' href='#n6708'>6708</a>
<a id='n6709' href='#n6709'>6709</a>
<a id='n6710' href='#n6710'>6710</a>
<a id='n6711' href='#n6711'>6711</a>
<a id='n6712' href='#n6712'>6712</a>
<a id='n6713' href='#n6713'>6713</a>
<a id='n6714' href='#n6714'>6714</a>
<a id='n6715' href='#n6715'>6715</a>
<a id='n6716' href='#n6716'>6716</a>
<a id='n6717' href='#n6717'>6717</a>
<a id='n6718' href='#n6718'>6718</a>
<a id='n6719' href='#n6719'>6719</a>
<a id='n6720' href='#n6720'>6720</a>
<a id='n6721' href='#n6721'>6721</a>
<a id='n6722' href='#n6722'>6722</a>
<a id='n6723' href='#n6723'>6723</a>
<a id='n6724' href='#n6724'>6724</a>
<a id='n6725' href='#n6725'>6725</a>
<a id='n6726' href='#n6726'>6726</a>
<a id='n6727' href='#n6727'>6727</a>
<a id='n6728' href='#n6728'>6728</a>
<a id='n6729' href='#n6729'>6729</a>
<a id='n6730' href='#n6730'>6730</a>
<a id='n6731' href='#n6731'>6731</a>
<a id='n6732' href='#n6732'>6732</a>
<a id='n6733' href='#n6733'>6733</a>
<a id='n6734' href='#n6734'>6734</a>
<a id='n6735' href='#n6735'>6735</a>
<a id='n6736' href='#n6736'>6736</a>
<a id='n6737' href='#n6737'>6737</a>
<a id='n6738' href='#n6738'>6738</a>
<a id='n6739' href='#n6739'>6739</a>
<a id='n6740' href='#n6740'>6740</a>
<a id='n6741' href='#n6741'>6741</a>
<a id='n6742' href='#n6742'>6742</a>
<a id='n6743' href='#n6743'>6743</a>
<a id='n6744' href='#n6744'>6744</a>
<a id='n6745' href='#n6745'>6745</a>
<a id='n6746' href='#n6746'>6746</a>
<a id='n6747' href='#n6747'>6747</a>
<a id='n6748' href='#n6748'>6748</a>
<a id='n6749' href='#n6749'>6749</a>
<a id='n6750' href='#n6750'>6750</a>
<a id='n6751' href='#n6751'>6751</a>
<a id='n6752' href='#n6752'>6752</a>
<a id='n6753' href='#n6753'>6753</a>
<a id='n6754' href='#n6754'>6754</a>
<a id='n6755' href='#n6755'>6755</a>
<a id='n6756' href='#n6756'>6756</a>
<a id='n6757' href='#n6757'>6757</a>
<a id='n6758' href='#n6758'>6758</a>
<a id='n6759' href='#n6759'>6759</a>
<a id='n6760' href='#n6760'>6760</a>
<a id='n6761' href='#n6761'>6761</a>
<a id='n6762' href='#n6762'>6762</a>
<a id='n6763' href='#n6763'>6763</a>
<a id='n6764' href='#n6764'>6764</a>
<a id='n6765' href='#n6765'>6765</a>
<a id='n6766' href='#n6766'>6766</a>
<a id='n6767' href='#n6767'>6767</a>
<a id='n6768' href='#n6768'>6768</a>
<a id='n6769' href='#n6769'>6769</a>
<a id='n6770' href='#n6770'>6770</a>
<a id='n6771' href='#n6771'>6771</a>
<a id='n6772' href='#n6772'>6772</a>
<a id='n6773' href='#n6773'>6773</a>
<a id='n6774' href='#n6774'>6774</a>
<a id='n6775' href='#n6775'>6775</a>
<a id='n6776' href='#n6776'>6776</a>
<a id='n6777' href='#n6777'>6777</a>
<a id='n6778' href='#n6778'>6778</a>
<a id='n6779' href='#n6779'>6779</a>
<a id='n6780' href='#n6780'>6780</a>
<a id='n6781' href='#n6781'>6781</a>
<a id='n6782' href='#n6782'>6782</a>
<a id='n6783' href='#n6783'>6783</a>
<a id='n6784' href='#n6784'>6784</a>
<a id='n6785' href='#n6785'>6785</a>
<a id='n6786' href='#n6786'>6786</a>
<a id='n6787' href='#n6787'>6787</a>
<a id='n6788' href='#n6788'>6788</a>
<a id='n6789' href='#n6789'>6789</a>
<a id='n6790' href='#n6790'>6790</a>
<a id='n6791' href='#n6791'>6791</a>
<a id='n6792' href='#n6792'>6792</a>
<a id='n6793' href='#n6793'>6793</a>
<a id='n6794' href='#n6794'>6794</a>
<a id='n6795' href='#n6795'>6795</a>
<a id='n6796' href='#n6796'>6796</a>
<a id='n6797' href='#n6797'>6797</a>
<a id='n6798' href='#n6798'>6798</a>
<a id='n6799' href='#n6799'>6799</a>
<a id='n6800' href='#n6800'>6800</a>
<a id='n6801' href='#n6801'>6801</a>
<a id='n6802' href='#n6802'>6802</a>
<a id='n6803' href='#n6803'>6803</a>
<a id='n6804' href='#n6804'>6804</a>
<a id='n6805' href='#n6805'>6805</a>
<a id='n6806' href='#n6806'>6806</a>
<a id='n6807' href='#n6807'>6807</a>
<a id='n6808' href='#n6808'>6808</a>
<a id='n6809' href='#n6809'>6809</a>
<a id='n6810' href='#n6810'>6810</a>
<a id='n6811' href='#n6811'>6811</a>
<a id='n6812' href='#n6812'>6812</a>
<a id='n6813' href='#n6813'>6813</a>
<a id='n6814' href='#n6814'>6814</a>
<a id='n6815' href='#n6815'>6815</a>
<a id='n6816' href='#n6816'>6816</a>
<a id='n6817' href='#n6817'>6817</a>
<a id='n6818' href='#n6818'>6818</a>
<a id='n6819' href='#n6819'>6819</a>
<a id='n6820' href='#n6820'>6820</a>
<a id='n6821' href='#n6821'>6821</a>
<a id='n6822' href='#n6822'>6822</a>
<a id='n6823' href='#n6823'>6823</a>
<a id='n6824' href='#n6824'>6824</a>
<a id='n6825' href='#n6825'>6825</a>
<a id='n6826' href='#n6826'>6826</a>
<a id='n6827' href='#n6827'>6827</a>
<a id='n6828' href='#n6828'>6828</a>
<a id='n6829' href='#n6829'>6829</a>
<a id='n6830' href='#n6830'>6830</a>
<a id='n6831' href='#n6831'>6831</a>
<a id='n6832' href='#n6832'>6832</a>
<a id='n6833' href='#n6833'>6833</a>
<a id='n6834' href='#n6834'>6834</a>
<a id='n6835' href='#n6835'>6835</a>
<a id='n6836' href='#n6836'>6836</a>
<a id='n6837' href='#n6837'>6837</a>
<a id='n6838' href='#n6838'>6838</a>
<a id='n6839' href='#n6839'>6839</a>
<a id='n6840' href='#n6840'>6840</a>
<a id='n6841' href='#n6841'>6841</a>
<a id='n6842' href='#n6842'>6842</a>
<a id='n6843' href='#n6843'>6843</a>
<a id='n6844' href='#n6844'>6844</a>
<a id='n6845' href='#n6845'>6845</a>
<a id='n6846' href='#n6846'>6846</a>
<a id='n6847' href='#n6847'>6847</a>
<a id='n6848' href='#n6848'>6848</a>
<a id='n6849' href='#n6849'>6849</a>
<a id='n6850' href='#n6850'>6850</a>
<a id='n6851' href='#n6851'>6851</a>
<a id='n6852' href='#n6852'>6852</a>
<a id='n6853' href='#n6853'>6853</a>
<a id='n6854' href='#n6854'>6854</a>
<a id='n6855' href='#n6855'>6855</a>
<a id='n6856' href='#n6856'>6856</a>
<a id='n6857' href='#n6857'>6857</a>
<a id='n6858' href='#n6858'>6858</a>
<a id='n6859' href='#n6859'>6859</a>
<a id='n6860' href='#n6860'>6860</a>
<a id='n6861' href='#n6861'>6861</a>
<a id='n6862' href='#n6862'>6862</a>
<a id='n6863' href='#n6863'>6863</a>
<a id='n6864' href='#n6864'>6864</a>
<a id='n6865' href='#n6865'>6865</a>
<a id='n6866' href='#n6866'>6866</a>
<a id='n6867' href='#n6867'>6867</a>
<a id='n6868' href='#n6868'>6868</a>
<a id='n6869' href='#n6869'>6869</a>
<a id='n6870' href='#n6870'>6870</a>
<a id='n6871' href='#n6871'>6871</a>
<a id='n6872' href='#n6872'>6872</a>
<a id='n6873' href='#n6873'>6873</a>
<a id='n6874' href='#n6874'>6874</a>
<a id='n6875' href='#n6875'>6875</a>
<a id='n6876' href='#n6876'>6876</a>
<a id='n6877' href='#n6877'>6877</a>
<a id='n6878' href='#n6878'>6878</a>
<a id='n6879' href='#n6879'>6879</a>
<a id='n6880' href='#n6880'>6880</a>
<a id='n6881' href='#n6881'>6881</a>
<a id='n6882' href='#n6882'>6882</a>
<a id='n6883' href='#n6883'>6883</a>
<a id='n6884' href='#n6884'>6884</a>
<a id='n6885' href='#n6885'>6885</a>
<a id='n6886' href='#n6886'>6886</a>
<a id='n6887' href='#n6887'>6887</a>
<a id='n6888' href='#n6888'>6888</a>
<a id='n6889' href='#n6889'>6889</a>
<a id='n6890' href='#n6890'>6890</a>
<a id='n6891' href='#n6891'>6891</a>
<a id='n6892' href='#n6892'>6892</a>
<a id='n6893' href='#n6893'>6893</a>
<a id='n6894' href='#n6894'>6894</a>
<a id='n6895' href='#n6895'>6895</a>
<a id='n6896' href='#n6896'>6896</a>
<a id='n6897' href='#n6897'>6897</a>
<a id='n6898' href='#n6898'>6898</a>
<a id='n6899' href='#n6899'>6899</a>
<a id='n6900' href='#n6900'>6900</a>
<a id='n6901' href='#n6901'>6901</a>
<a id='n6902' href='#n6902'>6902</a>
<a id='n6903' href='#n6903'>6903</a>
<a id='n6904' href='#n6904'>6904</a>
<a id='n6905' href='#n6905'>6905</a>
<a id='n6906' href='#n6906'>6906</a>
<a id='n6907' href='#n6907'>6907</a>
<a id='n6908' href='#n6908'>6908</a>
<a id='n6909' href='#n6909'>6909</a>
<a id='n6910' href='#n6910'>6910</a>
<a id='n6911' href='#n6911'>6911</a>
<a id='n6912' href='#n6912'>6912</a>
<a id='n6913' href='#n6913'>6913</a>
<a id='n6914' href='#n6914'>6914</a>
<a id='n6915' href='#n6915'>6915</a>
<a id='n6916' href='#n6916'>6916</a>
<a id='n6917' href='#n6917'>6917</a>
<a id='n6918' href='#n6918'>6918</a>
<a id='n6919' href='#n6919'>6919</a>
<a id='n6920' href='#n6920'>6920</a>
<a id='n6921' href='#n6921'>6921</a>
<a id='n6922' href='#n6922'>6922</a>
<a id='n6923' href='#n6923'>6923</a>
<a id='n6924' href='#n6924'>6924</a>
<a id='n6925' href='#n6925'>6925</a>
<a id='n6926' href='#n6926'>6926</a>
<a id='n6927' href='#n6927'>6927</a>
<a id='n6928' href='#n6928'>6928</a>
<a id='n6929' href='#n6929'>6929</a>
<a id='n6930' href='#n6930'>6930</a>
<a id='n6931' href='#n6931'>6931</a>
<a id='n6932' href='#n6932'>6932</a>
<a id='n6933' href='#n6933'>6933</a>
<a id='n6934' href='#n6934'>6934</a>
<a id='n6935' href='#n6935'>6935</a>
<a id='n6936' href='#n6936'>6936</a>
<a id='n6937' href='#n6937'>6937</a>
<a id='n6938' href='#n6938'>6938</a>
<a id='n6939' href='#n6939'>6939</a>
<a id='n6940' href='#n6940'>6940</a>
<a id='n6941' href='#n6941'>6941</a>
<a id='n6942' href='#n6942'>6942</a>
<a id='n6943' href='#n6943'>6943</a>
<a id='n6944' href='#n6944'>6944</a>
<a id='n6945' href='#n6945'>6945</a>
<a id='n6946' href='#n6946'>6946</a>
<a id='n6947' href='#n6947'>6947</a>
<a id='n6948' href='#n6948'>6948</a>
<a id='n6949' href='#n6949'>6949</a>
<a id='n6950' href='#n6950'>6950</a>
<a id='n6951' href='#n6951'>6951</a>
<a id='n6952' href='#n6952'>6952</a>
<a id='n6953' href='#n6953'>6953</a>
<a id='n6954' href='#n6954'>6954</a>
<a id='n6955' href='#n6955'>6955</a>
<a id='n6956' href='#n6956'>6956</a>
<a id='n6957' href='#n6957'>6957</a>
<a id='n6958' href='#n6958'>6958</a>
<a id='n6959' href='#n6959'>6959</a>
<a id='n6960' href='#n6960'>6960</a>
<a id='n6961' href='#n6961'>6961</a>
<a id='n6962' href='#n6962'>6962</a>
<a id='n6963' href='#n6963'>6963</a>
<a id='n6964' href='#n6964'>6964</a>
<a id='n6965' href='#n6965'>6965</a>
<a id='n6966' href='#n6966'>6966</a>
<a id='n6967' href='#n6967'>6967</a>
<a id='n6968' href='#n6968'>6968</a>
<a id='n6969' href='#n6969'>6969</a>
<a id='n6970' href='#n6970'>6970</a>
<a id='n6971' href='#n6971'>6971</a>
<a id='n6972' href='#n6972'>6972</a>
<a id='n6973' href='#n6973'>6973</a>
<a id='n6974' href='#n6974'>6974</a>
<a id='n6975' href='#n6975'>6975</a>
<a id='n6976' href='#n6976'>6976</a>
<a id='n6977' href='#n6977'>6977</a>
<a id='n6978' href='#n6978'>6978</a>
<a id='n6979' href='#n6979'>6979</a>
<a id='n6980' href='#n6980'>6980</a>
<a id='n6981' href='#n6981'>6981</a>
<a id='n6982' href='#n6982'>6982</a>
<a id='n6983' href='#n6983'>6983</a>
<a id='n6984' href='#n6984'>6984</a>
<a id='n6985' href='#n6985'>6985</a>
<a id='n6986' href='#n6986'>6986</a>
<a id='n6987' href='#n6987'>6987</a>
<a id='n6988' href='#n6988'>6988</a>
<a id='n6989' href='#n6989'>6989</a>
<a id='n6990' href='#n6990'>6990</a>
<a id='n6991' href='#n6991'>6991</a>
<a id='n6992' href='#n6992'>6992</a>
<a id='n6993' href='#n6993'>6993</a>
<a id='n6994' href='#n6994'>6994</a>
<a id='n6995' href='#n6995'>6995</a>
<a id='n6996' href='#n6996'>6996</a>
<a id='n6997' href='#n6997'>6997</a>
<a id='n6998' href='#n6998'>6998</a>
<a id='n6999' href='#n6999'>6999</a>
<a id='n7000' href='#n7000'>7000</a>
<a id='n7001' href='#n7001'>7001</a>
<a id='n7002' href='#n7002'>7002</a>
<a id='n7003' href='#n7003'>7003</a>
<a id='n7004' href='#n7004'>7004</a>
<a id='n7005' href='#n7005'>7005</a>
<a id='n7006' href='#n7006'>7006</a>
<a id='n7007' href='#n7007'>7007</a>
<a id='n7008' href='#n7008'>7008</a>
<a id='n7009' href='#n7009'>7009</a>
<a id='n7010' href='#n7010'>7010</a>
<a id='n7011' href='#n7011'>7011</a>
<a id='n7012' href='#n7012'>7012</a>
<a id='n7013' href='#n7013'>7013</a>
<a id='n7014' href='#n7014'>7014</a>
<a id='n7015' href='#n7015'>7015</a>
<a id='n7016' href='#n7016'>7016</a>
<a id='n7017' href='#n7017'>7017</a>
<a id='n7018' href='#n7018'>7018</a>
<a id='n7019' href='#n7019'>7019</a>
<a id='n7020' href='#n7020'>7020</a>
<a id='n7021' href='#n7021'>7021</a>
<a id='n7022' href='#n7022'>7022</a>
<a id='n7023' href='#n7023'>7023</a>
<a id='n7024' href='#n7024'>7024</a>
<a id='n7025' href='#n7025'>7025</a>
<a id='n7026' href='#n7026'>7026</a>
<a id='n7027' href='#n7027'>7027</a>
<a id='n7028' href='#n7028'>7028</a>
<a id='n7029' href='#n7029'>7029</a>
<a id='n7030' href='#n7030'>7030</a>
<a id='n7031' href='#n7031'>7031</a>
<a id='n7032' href='#n7032'>7032</a>
<a id='n7033' href='#n7033'>7033</a>
<a id='n7034' href='#n7034'>7034</a>
<a id='n7035' href='#n7035'>7035</a>
<a id='n7036' href='#n7036'>7036</a>
<a id='n7037' href='#n7037'>7037</a>
<a id='n7038' href='#n7038'>7038</a>
<a id='n7039' href='#n7039'>7039</a>
<a id='n7040' href='#n7040'>7040</a>
<a id='n7041' href='#n7041'>7041</a>
<a id='n7042' href='#n7042'>7042</a>
<a id='n7043' href='#n7043'>7043</a>
<a id='n7044' href='#n7044'>7044</a>
<a id='n7045' href='#n7045'>7045</a>
<a id='n7046' href='#n7046'>7046</a>
<a id='n7047' href='#n7047'>7047</a>
<a id='n7048' href='#n7048'>7048</a>
<a id='n7049' href='#n7049'>7049</a>
<a id='n7050' href='#n7050'>7050</a>
<a id='n7051' href='#n7051'>7051</a>
<a id='n7052' href='#n7052'>7052</a>
<a id='n7053' href='#n7053'>7053</a>
<a id='n7054' href='#n7054'>7054</a>
<a id='n7055' href='#n7055'>7055</a>
<a id='n7056' href='#n7056'>7056</a>
<a id='n7057' href='#n7057'>7057</a>
<a id='n7058' href='#n7058'>7058</a>
<a id='n7059' href='#n7059'>7059</a>
<a id='n7060' href='#n7060'>7060</a>
<a id='n7061' href='#n7061'>7061</a>
<a id='n7062' href='#n7062'>7062</a>
<a id='n7063' href='#n7063'>7063</a>
<a id='n7064' href='#n7064'>7064</a>
<a id='n7065' href='#n7065'>7065</a>
<a id='n7066' href='#n7066'>7066</a>
<a id='n7067' href='#n7067'>7067</a>
<a id='n7068' href='#n7068'>7068</a>
<a id='n7069' href='#n7069'>7069</a>
<a id='n7070' href='#n7070'>7070</a>
<a id='n7071' href='#n7071'>7071</a>
<a id='n7072' href='#n7072'>7072</a>
<a id='n7073' href='#n7073'>7073</a>
<a id='n7074' href='#n7074'>7074</a>
<a id='n7075' href='#n7075'>7075</a>
<a id='n7076' href='#n7076'>7076</a>
<a id='n7077' href='#n7077'>7077</a>
<a id='n7078' href='#n7078'>7078</a>
<a id='n7079' href='#n7079'>7079</a>
<a id='n7080' href='#n7080'>7080</a>
<a id='n7081' href='#n7081'>7081</a>
<a id='n7082' href='#n7082'>7082</a>
<a id='n7083' href='#n7083'>7083</a>
<a id='n7084' href='#n7084'>7084</a>
<a id='n7085' href='#n7085'>7085</a>
<a id='n7086' href='#n7086'>7086</a>
<a id='n7087' href='#n7087'>7087</a>
<a id='n7088' href='#n7088'>7088</a>
<a id='n7089' href='#n7089'>7089</a>
<a id='n7090' href='#n7090'>7090</a>
<a id='n7091' href='#n7091'>7091</a>
<a id='n7092' href='#n7092'>7092</a>
<a id='n7093' href='#n7093'>7093</a>
<a id='n7094' href='#n7094'>7094</a>
<a id='n7095' href='#n7095'>7095</a>
<a id='n7096' href='#n7096'>7096</a>
<a id='n7097' href='#n7097'>7097</a>
<a id='n7098' href='#n7098'>7098</a>
<a id='n7099' href='#n7099'>7099</a>
<a id='n7100' href='#n7100'>7100</a>
<a id='n7101' href='#n7101'>7101</a>
<a id='n7102' href='#n7102'>7102</a>
<a id='n7103' href='#n7103'>7103</a>
<a id='n7104' href='#n7104'>7104</a>
<a id='n7105' href='#n7105'>7105</a>
<a id='n7106' href='#n7106'>7106</a>
<a id='n7107' href='#n7107'>7107</a>
<a id='n7108' href='#n7108'>7108</a>
<a id='n7109' href='#n7109'>7109</a>
<a id='n7110' href='#n7110'>7110</a>
<a id='n7111' href='#n7111'>7111</a>
<a id='n7112' href='#n7112'>7112</a>
<a id='n7113' href='#n7113'>7113</a>
<a id='n7114' href='#n7114'>7114</a>
<a id='n7115' href='#n7115'>7115</a>
<a id='n7116' href='#n7116'>7116</a>
<a id='n7117' href='#n7117'>7117</a>
<a id='n7118' href='#n7118'>7118</a>
<a id='n7119' href='#n7119'>7119</a>
<a id='n7120' href='#n7120'>7120</a>
<a id='n7121' href='#n7121'>7121</a>
<a id='n7122' href='#n7122'>7122</a>
<a id='n7123' href='#n7123'>7123</a>
<a id='n7124' href='#n7124'>7124</a>
<a id='n7125' href='#n7125'>7125</a>
<a id='n7126' href='#n7126'>7126</a>
<a id='n7127' href='#n7127'>7127</a>
<a id='n7128' href='#n7128'>7128</a>
<a id='n7129' href='#n7129'>7129</a>
<a id='n7130' href='#n7130'>7130</a>
<a id='n7131' href='#n7131'>7131</a>
<a id='n7132' href='#n7132'>7132</a>
<a id='n7133' href='#n7133'>7133</a>
<a id='n7134' href='#n7134'>7134</a>
<a id='n7135' href='#n7135'>7135</a>
<a id='n7136' href='#n7136'>7136</a>
<a id='n7137' href='#n7137'>7137</a>
<a id='n7138' href='#n7138'>7138</a>
<a id='n7139' href='#n7139'>7139</a>
<a id='n7140' href='#n7140'>7140</a>
<a id='n7141' href='#n7141'>7141</a>
<a id='n7142' href='#n7142'>7142</a>
<a id='n7143' href='#n7143'>7143</a>
<a id='n7144' href='#n7144'>7144</a>
<a id='n7145' href='#n7145'>7145</a>
<a id='n7146' href='#n7146'>7146</a>
<a id='n7147' href='#n7147'>7147</a>
<a id='n7148' href='#n7148'>7148</a>
<a id='n7149' href='#n7149'>7149</a>
<a id='n7150' href='#n7150'>7150</a>
<a id='n7151' href='#n7151'>7151</a>
<a id='n7152' href='#n7152'>7152</a>
<a id='n7153' href='#n7153'>7153</a>
<a id='n7154' href='#n7154'>7154</a>
<a id='n7155' href='#n7155'>7155</a>
<a id='n7156' href='#n7156'>7156</a>
<a id='n7157' href='#n7157'>7157</a>
<a id='n7158' href='#n7158'>7158</a>
<a id='n7159' href='#n7159'>7159</a>
<a id='n7160' href='#n7160'>7160</a>
<a id='n7161' href='#n7161'>7161</a>
<a id='n7162' href='#n7162'>7162</a>
<a id='n7163' href='#n7163'>7163</a>
<a id='n7164' href='#n7164'>7164</a>
<a id='n7165' href='#n7165'>7165</a>
<a id='n7166' href='#n7166'>7166</a>
<a id='n7167' href='#n7167'>7167</a>
<a id='n7168' href='#n7168'>7168</a>
<a id='n7169' href='#n7169'>7169</a>
<a id='n7170' href='#n7170'>7170</a>
<a id='n7171' href='#n7171'>7171</a>
<a id='n7172' href='#n7172'>7172</a>
<a id='n7173' href='#n7173'>7173</a>
<a id='n7174' href='#n7174'>7174</a>
<a id='n7175' href='#n7175'>7175</a>
<a id='n7176' href='#n7176'>7176</a>
<a id='n7177' href='#n7177'>7177</a>
<a id='n7178' href='#n7178'>7178</a>
<a id='n7179' href='#n7179'>7179</a>
<a id='n7180' href='#n7180'>7180</a>
<a id='n7181' href='#n7181'>7181</a>
<a id='n7182' href='#n7182'>7182</a>
<a id='n7183' href='#n7183'>7183</a>
<a id='n7184' href='#n7184'>7184</a>
<a id='n7185' href='#n7185'>7185</a>
<a id='n7186' href='#n7186'>7186</a>
<a id='n7187' href='#n7187'>7187</a>
<a id='n7188' href='#n7188'>7188</a>
<a id='n7189' href='#n7189'>7189</a>
<a id='n7190' href='#n7190'>7190</a>
<a id='n7191' href='#n7191'>7191</a>
<a id='n7192' href='#n7192'>7192</a>
<a id='n7193' href='#n7193'>7193</a>
<a id='n7194' href='#n7194'>7194</a>
<a id='n7195' href='#n7195'>7195</a>
<a id='n7196' href='#n7196'>7196</a>
<a id='n7197' href='#n7197'>7197</a>
<a id='n7198' href='#n7198'>7198</a>
<a id='n7199' href='#n7199'>7199</a>
<a id='n7200' href='#n7200'>7200</a>
<a id='n7201' href='#n7201'>7201</a>
<a id='n7202' href='#n7202'>7202</a>
<a id='n7203' href='#n7203'>7203</a>
<a id='n7204' href='#n7204'>7204</a>
<a id='n7205' href='#n7205'>7205</a>
<a id='n7206' href='#n7206'>7206</a>
<a id='n7207' href='#n7207'>7207</a>
<a id='n7208' href='#n7208'>7208</a>
<a id='n7209' href='#n7209'>7209</a>
<a id='n7210' href='#n7210'>7210</a>
<a id='n7211' href='#n7211'>7211</a>
<a id='n7212' href='#n7212'>7212</a>
<a id='n7213' href='#n7213'>7213</a>
<a id='n7214' href='#n7214'>7214</a>
<a id='n7215' href='#n7215'>7215</a>
<a id='n7216' href='#n7216'>7216</a>
<a id='n7217' href='#n7217'>7217</a>
<a id='n7218' href='#n7218'>7218</a>
<a id='n7219' href='#n7219'>7219</a>
<a id='n7220' href='#n7220'>7220</a>
<a id='n7221' href='#n7221'>7221</a>
<a id='n7222' href='#n7222'>7222</a>
<a id='n7223' href='#n7223'>7223</a>
<a id='n7224' href='#n7224'>7224</a>
<a id='n7225' href='#n7225'>7225</a>
<a id='n7226' href='#n7226'>7226</a>
<a id='n7227' href='#n7227'>7227</a>
<a id='n7228' href='#n7228'>7228</a>
<a id='n7229' href='#n7229'>7229</a>
<a id='n7230' href='#n7230'>7230</a>
<a id='n7231' href='#n7231'>7231</a>
<a id='n7232' href='#n7232'>7232</a>
<a id='n7233' href='#n7233'>7233</a>
<a id='n7234' href='#n7234'>7234</a>
<a id='n7235' href='#n7235'>7235</a>
<a id='n7236' href='#n7236'>7236</a>
<a id='n7237' href='#n7237'>7237</a>
<a id='n7238' href='#n7238'>7238</a>
<a id='n7239' href='#n7239'>7239</a>
<a id='n7240' href='#n7240'>7240</a>
<a id='n7241' href='#n7241'>7241</a>
<a id='n7242' href='#n7242'>7242</a>
<a id='n7243' href='#n7243'>7243</a>
<a id='n7244' href='#n7244'>7244</a>
<a id='n7245' href='#n7245'>7245</a>
<a id='n7246' href='#n7246'>7246</a>
<a id='n7247' href='#n7247'>7247</a>
<a id='n7248' href='#n7248'>7248</a>
<a id='n7249' href='#n7249'>7249</a>
<a id='n7250' href='#n7250'>7250</a>
<a id='n7251' href='#n7251'>7251</a>
<a id='n7252' href='#n7252'>7252</a>
<a id='n7253' href='#n7253'>7253</a>
<a id='n7254' href='#n7254'>7254</a>
<a id='n7255' href='#n7255'>7255</a>
<a id='n7256' href='#n7256'>7256</a>
<a id='n7257' href='#n7257'>7257</a>
<a id='n7258' href='#n7258'>7258</a>
<a id='n7259' href='#n7259'>7259</a>
<a id='n7260' href='#n7260'>7260</a>
<a id='n7261' href='#n7261'>7261</a>
<a id='n7262' href='#n7262'>7262</a>
<a id='n7263' href='#n7263'>7263</a>
<a id='n7264' href='#n7264'>7264</a>
<a id='n7265' href='#n7265'>7265</a>
<a id='n7266' href='#n7266'>7266</a>
<a id='n7267' href='#n7267'>7267</a>
<a id='n7268' href='#n7268'>7268</a>
<a id='n7269' href='#n7269'>7269</a>
<a id='n7270' href='#n7270'>7270</a>
<a id='n7271' href='#n7271'>7271</a>
<a id='n7272' href='#n7272'>7272</a>
<a id='n7273' href='#n7273'>7273</a>
<a id='n7274' href='#n7274'>7274</a>
<a id='n7275' href='#n7275'>7275</a>
<a id='n7276' href='#n7276'>7276</a>
<a id='n7277' href='#n7277'>7277</a>
<a id='n7278' href='#n7278'>7278</a>
<a id='n7279' href='#n7279'>7279</a>
<a id='n7280' href='#n7280'>7280</a>
<a id='n7281' href='#n7281'>7281</a>
<a id='n7282' href='#n7282'>7282</a>
<a id='n7283' href='#n7283'>7283</a>
<a id='n7284' href='#n7284'>7284</a>
<a id='n7285' href='#n7285'>7285</a>
<a id='n7286' href='#n7286'>7286</a>
<a id='n7287' href='#n7287'>7287</a>
<a id='n7288' href='#n7288'>7288</a>
<a id='n7289' href='#n7289'>7289</a>
<a id='n7290' href='#n7290'>7290</a>
<a id='n7291' href='#n7291'>7291</a>
<a id='n7292' href='#n7292'>7292</a>
<a id='n7293' href='#n7293'>7293</a>
<a id='n7294' href='#n7294'>7294</a>
<a id='n7295' href='#n7295'>7295</a>
<a id='n7296' href='#n7296'>7296</a>
<a id='n7297' href='#n7297'>7297</a>
<a id='n7298' href='#n7298'>7298</a>
<a id='n7299' href='#n7299'>7299</a>
<a id='n7300' href='#n7300'>7300</a>
<a id='n7301' href='#n7301'>7301</a>
<a id='n7302' href='#n7302'>7302</a>
<a id='n7303' href='#n7303'>7303</a>
<a id='n7304' href='#n7304'>7304</a>
<a id='n7305' href='#n7305'>7305</a>
<a id='n7306' href='#n7306'>7306</a>
<a id='n7307' href='#n7307'>7307</a>
<a id='n7308' href='#n7308'>7308</a>
<a id='n7309' href='#n7309'>7309</a>
<a id='n7310' href='#n7310'>7310</a>
<a id='n7311' href='#n7311'>7311</a>
<a id='n7312' href='#n7312'>7312</a>
<a id='n7313' href='#n7313'>7313</a>
<a id='n7314' href='#n7314'>7314</a>
<a id='n7315' href='#n7315'>7315</a>
<a id='n7316' href='#n7316'>7316</a>
<a id='n7317' href='#n7317'>7317</a>
<a id='n7318' href='#n7318'>7318</a>
<a id='n7319' href='#n7319'>7319</a>
<a id='n7320' href='#n7320'>7320</a>
<a id='n7321' href='#n7321'>7321</a>
<a id='n7322' href='#n7322'>7322</a>
<a id='n7323' href='#n7323'>7323</a>
<a id='n7324' href='#n7324'>7324</a>
<a id='n7325' href='#n7325'>7325</a>
<a id='n7326' href='#n7326'>7326</a>
<a id='n7327' href='#n7327'>7327</a>
<a id='n7328' href='#n7328'>7328</a>
<a id='n7329' href='#n7329'>7329</a>
<a id='n7330' href='#n7330'>7330</a>
<a id='n7331' href='#n7331'>7331</a>
<a id='n7332' href='#n7332'>7332</a>
<a id='n7333' href='#n7333'>7333</a>
<a id='n7334' href='#n7334'>7334</a>
<a id='n7335' href='#n7335'>7335</a>
<a id='n7336' href='#n7336'>7336</a>
<a id='n7337' href='#n7337'>7337</a>
<a id='n7338' href='#n7338'>7338</a>
<a id='n7339' href='#n7339'>7339</a>
<a id='n7340' href='#n7340'>7340</a>
<a id='n7341' href='#n7341'>7341</a>
<a id='n7342' href='#n7342'>7342</a>
<a id='n7343' href='#n7343'>7343</a>
<a id='n7344' href='#n7344'>7344</a>
<a id='n7345' href='#n7345'>7345</a>
<a id='n7346' href='#n7346'>7346</a>
<a id='n7347' href='#n7347'>7347</a>
<a id='n7348' href='#n7348'>7348</a>
<a id='n7349' href='#n7349'>7349</a>
<a id='n7350' href='#n7350'>7350</a>
<a id='n7351' href='#n7351'>7351</a>
<a id='n7352' href='#n7352'>7352</a>
<a id='n7353' href='#n7353'>7353</a>
<a id='n7354' href='#n7354'>7354</a>
<a id='n7355' href='#n7355'>7355</a>
<a id='n7356' href='#n7356'>7356</a>
<a id='n7357' href='#n7357'>7357</a>
<a id='n7358' href='#n7358'>7358</a>
<a id='n7359' href='#n7359'>7359</a>
<a id='n7360' href='#n7360'>7360</a>
<a id='n7361' href='#n7361'>7361</a>
<a id='n7362' href='#n7362'>7362</a>
<a id='n7363' href='#n7363'>7363</a>
<a id='n7364' href='#n7364'>7364</a>
<a id='n7365' href='#n7365'>7365</a>
<a id='n7366' href='#n7366'>7366</a>
<a id='n7367' href='#n7367'>7367</a>
<a id='n7368' href='#n7368'>7368</a>
<a id='n7369' href='#n7369'>7369</a>
<a id='n7370' href='#n7370'>7370</a>
<a id='n7371' href='#n7371'>7371</a>
<a id='n7372' href='#n7372'>7372</a>
<a id='n7373' href='#n7373'>7373</a>
<a id='n7374' href='#n7374'>7374</a>
<a id='n7375' href='#n7375'>7375</a>
<a id='n7376' href='#n7376'>7376</a>
<a id='n7377' href='#n7377'>7377</a>
<a id='n7378' href='#n7378'>7378</a>
<a id='n7379' href='#n7379'>7379</a>
<a id='n7380' href='#n7380'>7380</a>
<a id='n7381' href='#n7381'>7381</a>
<a id='n7382' href='#n7382'>7382</a>
<a id='n7383' href='#n7383'>7383</a>
<a id='n7384' href='#n7384'>7384</a>
<a id='n7385' href='#n7385'>7385</a>
<a id='n7386' href='#n7386'>7386</a>
<a id='n7387' href='#n7387'>7387</a>
<a id='n7388' href='#n7388'>7388</a>
<a id='n7389' href='#n7389'>7389</a>
<a id='n7390' href='#n7390'>7390</a>
<a id='n7391' href='#n7391'>7391</a>
<a id='n7392' href='#n7392'>7392</a>
<a id='n7393' href='#n7393'>7393</a>
<a id='n7394' href='#n7394'>7394</a>
<a id='n7395' href='#n7395'>7395</a>
<a id='n7396' href='#n7396'>7396</a>
<a id='n7397' href='#n7397'>7397</a>
<a id='n7398' href='#n7398'>7398</a>
<a id='n7399' href='#n7399'>7399</a>
<a id='n7400' href='#n7400'>7400</a>
<a id='n7401' href='#n7401'>7401</a>
<a id='n7402' href='#n7402'>7402</a>
<a id='n7403' href='#n7403'>7403</a>
<a id='n7404' href='#n7404'>7404</a>
<a id='n7405' href='#n7405'>7405</a>
<a id='n7406' href='#n7406'>7406</a>
<a id='n7407' href='#n7407'>7407</a>
<a id='n7408' href='#n7408'>7408</a>
<a id='n7409' href='#n7409'>7409</a>
<a id='n7410' href='#n7410'>7410</a>
<a id='n7411' href='#n7411'>7411</a>
<a id='n7412' href='#n7412'>7412</a>
<a id='n7413' href='#n7413'>7413</a>
<a id='n7414' href='#n7414'>7414</a>
<a id='n7415' href='#n7415'>7415</a>
<a id='n7416' href='#n7416'>7416</a>
<a id='n7417' href='#n7417'>7417</a>
<a id='n7418' href='#n7418'>7418</a>
<a id='n7419' href='#n7419'>7419</a>
<a id='n7420' href='#n7420'>7420</a>
<a id='n7421' href='#n7421'>7421</a>
<a id='n7422' href='#n7422'>7422</a>
<a id='n7423' href='#n7423'>7423</a>
<a id='n7424' href='#n7424'>7424</a>
<a id='n7425' href='#n7425'>7425</a>
<a id='n7426' href='#n7426'>7426</a>
<a id='n7427' href='#n7427'>7427</a>
<a id='n7428' href='#n7428'>7428</a>
<a id='n7429' href='#n7429'>7429</a>
<a id='n7430' href='#n7430'>7430</a>
<a id='n7431' href='#n7431'>7431</a>
<a id='n7432' href='#n7432'>7432</a>
<a id='n7433' href='#n7433'>7433</a>
<a id='n7434' href='#n7434'>7434</a>
<a id='n7435' href='#n7435'>7435</a>
<a id='n7436' href='#n7436'>7436</a>
<a id='n7437' href='#n7437'>7437</a>
<a id='n7438' href='#n7438'>7438</a>
<a id='n7439' href='#n7439'>7439</a>
<a id='n7440' href='#n7440'>7440</a>
<a id='n7441' href='#n7441'>7441</a>
<a id='n7442' href='#n7442'>7442</a>
<a id='n7443' href='#n7443'>7443</a>
<a id='n7444' href='#n7444'>7444</a>
<a id='n7445' href='#n7445'>7445</a>
<a id='n7446' href='#n7446'>7446</a>
<a id='n7447' href='#n7447'>7447</a>
<a id='n7448' href='#n7448'>7448</a>
<a id='n7449' href='#n7449'>7449</a>
<a id='n7450' href='#n7450'>7450</a>
<a id='n7451' href='#n7451'>7451</a>
<a id='n7452' href='#n7452'>7452</a>
<a id='n7453' href='#n7453'>7453</a>
<a id='n7454' href='#n7454'>7454</a>
<a id='n7455' href='#n7455'>7455</a>
<a id='n7456' href='#n7456'>7456</a>
<a id='n7457' href='#n7457'>7457</a>
<a id='n7458' href='#n7458'>7458</a>
<a id='n7459' href='#n7459'>7459</a>
<a id='n7460' href='#n7460'>7460</a>
<a id='n7461' href='#n7461'>7461</a>
<a id='n7462' href='#n7462'>7462</a>
<a id='n7463' href='#n7463'>7463</a>
<a id='n7464' href='#n7464'>7464</a>
<a id='n7465' href='#n7465'>7465</a>
<a id='n7466' href='#n7466'>7466</a>
<a id='n7467' href='#n7467'>7467</a>
<a id='n7468' href='#n7468'>7468</a>
<a id='n7469' href='#n7469'>7469</a>
<a id='n7470' href='#n7470'>7470</a>
<a id='n7471' href='#n7471'>7471</a>
<a id='n7472' href='#n7472'>7472</a>
<a id='n7473' href='#n7473'>7473</a>
<a id='n7474' href='#n7474'>7474</a>
<a id='n7475' href='#n7475'>7475</a>
<a id='n7476' href='#n7476'>7476</a>
<a id='n7477' href='#n7477'>7477</a>
<a id='n7478' href='#n7478'>7478</a>
<a id='n7479' href='#n7479'>7479</a>
<a id='n7480' href='#n7480'>7480</a>
<a id='n7481' href='#n7481'>7481</a>
<a id='n7482' href='#n7482'>7482</a>
<a id='n7483' href='#n7483'>7483</a>
<a id='n7484' href='#n7484'>7484</a>
<a id='n7485' href='#n7485'>7485</a>
<a id='n7486' href='#n7486'>7486</a>
<a id='n7487' href='#n7487'>7487</a>
<a id='n7488' href='#n7488'>7488</a>
<a id='n7489' href='#n7489'>7489</a>
<a id='n7490' href='#n7490'>7490</a>
<a id='n7491' href='#n7491'>7491</a>
<a id='n7492' href='#n7492'>7492</a>
<a id='n7493' href='#n7493'>7493</a>
<a id='n7494' href='#n7494'>7494</a>
<a id='n7495' href='#n7495'>7495</a>
<a id='n7496' href='#n7496'>7496</a>
<a id='n7497' href='#n7497'>7497</a>
<a id='n7498' href='#n7498'>7498</a>
<a id='n7499' href='#n7499'>7499</a>
<a id='n7500' href='#n7500'>7500</a>
<a id='n7501' href='#n7501'>7501</a>
<a id='n7502' href='#n7502'>7502</a>
<a id='n7503' href='#n7503'>7503</a>
<a id='n7504' href='#n7504'>7504</a>
<a id='n7505' href='#n7505'>7505</a>
<a id='n7506' href='#n7506'>7506</a>
<a id='n7507' href='#n7507'>7507</a>
<a id='n7508' href='#n7508'>7508</a>
<a id='n7509' href='#n7509'>7509</a>
<a id='n7510' href='#n7510'>7510</a>
<a id='n7511' href='#n7511'>7511</a>
<a id='n7512' href='#n7512'>7512</a>
<a id='n7513' href='#n7513'>7513</a>
<a id='n7514' href='#n7514'>7514</a>
<a id='n7515' href='#n7515'>7515</a>
<a id='n7516' href='#n7516'>7516</a>
<a id='n7517' href='#n7517'>7517</a>
<a id='n7518' href='#n7518'>7518</a>
<a id='n7519' href='#n7519'>7519</a>
<a id='n7520' href='#n7520'>7520</a>
<a id='n7521' href='#n7521'>7521</a>
<a id='n7522' href='#n7522'>7522</a>
<a id='n7523' href='#n7523'>7523</a>
<a id='n7524' href='#n7524'>7524</a>
<a id='n7525' href='#n7525'>7525</a>
<a id='n7526' href='#n7526'>7526</a>
<a id='n7527' href='#n7527'>7527</a>
<a id='n7528' href='#n7528'>7528</a>
<a id='n7529' href='#n7529'>7529</a>
<a id='n7530' href='#n7530'>7530</a>
<a id='n7531' href='#n7531'>7531</a>
<a id='n7532' href='#n7532'>7532</a>
<a id='n7533' href='#n7533'>7533</a>
<a id='n7534' href='#n7534'>7534</a>
<a id='n7535' href='#n7535'>7535</a>
<a id='n7536' href='#n7536'>7536</a>
<a id='n7537' href='#n7537'>7537</a>
<a id='n7538' href='#n7538'>7538</a>
<a id='n7539' href='#n7539'>7539</a>
<a id='n7540' href='#n7540'>7540</a>
<a id='n7541' href='#n7541'>7541</a>
<a id='n7542' href='#n7542'>7542</a>
<a id='n7543' href='#n7543'>7543</a>
<a id='n7544' href='#n7544'>7544</a>
<a id='n7545' href='#n7545'>7545</a>
<a id='n7546' href='#n7546'>7546</a>
<a id='n7547' href='#n7547'>7547</a>
<a id='n7548' href='#n7548'>7548</a>
<a id='n7549' href='#n7549'>7549</a>
<a id='n7550' href='#n7550'>7550</a>
<a id='n7551' href='#n7551'>7551</a>
<a id='n7552' href='#n7552'>7552</a>
<a id='n7553' href='#n7553'>7553</a>
<a id='n7554' href='#n7554'>7554</a>
<a id='n7555' href='#n7555'>7555</a>
<a id='n7556' href='#n7556'>7556</a>
<a id='n7557' href='#n7557'>7557</a>
<a id='n7558' href='#n7558'>7558</a>
<a id='n7559' href='#n7559'>7559</a>
<a id='n7560' href='#n7560'>7560</a>
<a id='n7561' href='#n7561'>7561</a>
<a id='n7562' href='#n7562'>7562</a>
<a id='n7563' href='#n7563'>7563</a>
<a id='n7564' href='#n7564'>7564</a>
<a id='n7565' href='#n7565'>7565</a>
<a id='n7566' href='#n7566'>7566</a>
<a id='n7567' href='#n7567'>7567</a>
<a id='n7568' href='#n7568'>7568</a>
<a id='n7569' href='#n7569'>7569</a>
<a id='n7570' href='#n7570'>7570</a>
<a id='n7571' href='#n7571'>7571</a>
<a id='n7572' href='#n7572'>7572</a>
<a id='n7573' href='#n7573'>7573</a>
<a id='n7574' href='#n7574'>7574</a>
<a id='n7575' href='#n7575'>7575</a>
<a id='n7576' href='#n7576'>7576</a>
<a id='n7577' href='#n7577'>7577</a>
<a id='n7578' href='#n7578'>7578</a>
<a id='n7579' href='#n7579'>7579</a>
<a id='n7580' href='#n7580'>7580</a>
<a id='n7581' href='#n7581'>7581</a>
<a id='n7582' href='#n7582'>7582</a>
<a id='n7583' href='#n7583'>7583</a>
<a id='n7584' href='#n7584'>7584</a>
<a id='n7585' href='#n7585'>7585</a>
<a id='n7586' href='#n7586'>7586</a>
<a id='n7587' href='#n7587'>7587</a>
<a id='n7588' href='#n7588'>7588</a>
<a id='n7589' href='#n7589'>7589</a>
<a id='n7590' href='#n7590'>7590</a>
<a id='n7591' href='#n7591'>7591</a>
<a id='n7592' href='#n7592'>7592</a>
<a id='n7593' href='#n7593'>7593</a>
<a id='n7594' href='#n7594'>7594</a>
<a id='n7595' href='#n7595'>7595</a>
<a id='n7596' href='#n7596'>7596</a>
<a id='n7597' href='#n7597'>7597</a>
<a id='n7598' href='#n7598'>7598</a>
<a id='n7599' href='#n7599'>7599</a>
<a id='n7600' href='#n7600'>7600</a>
<a id='n7601' href='#n7601'>7601</a>
<a id='n7602' href='#n7602'>7602</a>
<a id='n7603' href='#n7603'>7603</a>
<a id='n7604' href='#n7604'>7604</a>
<a id='n7605' href='#n7605'>7605</a>
<a id='n7606' href='#n7606'>7606</a>
<a id='n7607' href='#n7607'>7607</a>
<a id='n7608' href='#n7608'>7608</a>
<a id='n7609' href='#n7609'>7609</a>
<a id='n7610' href='#n7610'>7610</a>
<a id='n7611' href='#n7611'>7611</a>
<a id='n7612' href='#n7612'>7612</a>
<a id='n7613' href='#n7613'>7613</a>
<a id='n7614' href='#n7614'>7614</a>
<a id='n7615' href='#n7615'>7615</a>
<a id='n7616' href='#n7616'>7616</a>
<a id='n7617' href='#n7617'>7617</a>
<a id='n7618' href='#n7618'>7618</a>
<a id='n7619' href='#n7619'>7619</a>
<a id='n7620' href='#n7620'>7620</a>
<a id='n7621' href='#n7621'>7621</a>
<a id='n7622' href='#n7622'>7622</a>
<a id='n7623' href='#n7623'>7623</a>
<a id='n7624' href='#n7624'>7624</a>
<a id='n7625' href='#n7625'>7625</a>
<a id='n7626' href='#n7626'>7626</a>
<a id='n7627' href='#n7627'>7627</a>
<a id='n7628' href='#n7628'>7628</a>
<a id='n7629' href='#n7629'>7629</a>
<a id='n7630' href='#n7630'>7630</a>
<a id='n7631' href='#n7631'>7631</a>
<a id='n7632' href='#n7632'>7632</a>
<a id='n7633' href='#n7633'>7633</a>
<a id='n7634' href='#n7634'>7634</a>
<a id='n7635' href='#n7635'>7635</a>
<a id='n7636' href='#n7636'>7636</a>
<a id='n7637' href='#n7637'>7637</a>
<a id='n7638' href='#n7638'>7638</a>
<a id='n7639' href='#n7639'>7639</a>
<a id='n7640' href='#n7640'>7640</a>
<a id='n7641' href='#n7641'>7641</a>
<a id='n7642' href='#n7642'>7642</a>
<a id='n7643' href='#n7643'>7643</a>
<a id='n7644' href='#n7644'>7644</a>
<a id='n7645' href='#n7645'>7645</a>
<a id='n7646' href='#n7646'>7646</a>
<a id='n7647' href='#n7647'>7647</a>
<a id='n7648' href='#n7648'>7648</a>
<a id='n7649' href='#n7649'>7649</a>
<a id='n7650' href='#n7650'>7650</a>
<a id='n7651' href='#n7651'>7651</a>
<a id='n7652' href='#n7652'>7652</a>
<a id='n7653' href='#n7653'>7653</a>
<a id='n7654' href='#n7654'>7654</a>
<a id='n7655' href='#n7655'>7655</a>
<a id='n7656' href='#n7656'>7656</a>
<a id='n7657' href='#n7657'>7657</a>
<a id='n7658' href='#n7658'>7658</a>
<a id='n7659' href='#n7659'>7659</a>
<a id='n7660' href='#n7660'>7660</a>
<a id='n7661' href='#n7661'>7661</a>
<a id='n7662' href='#n7662'>7662</a>
<a id='n7663' href='#n7663'>7663</a>
<a id='n7664' href='#n7664'>7664</a>
<a id='n7665' href='#n7665'>7665</a>
<a id='n7666' href='#n7666'>7666</a>
<a id='n7667' href='#n7667'>7667</a>
<a id='n7668' href='#n7668'>7668</a>
<a id='n7669' href='#n7669'>7669</a>
<a id='n7670' href='#n7670'>7670</a>
<a id='n7671' href='#n7671'>7671</a>
<a id='n7672' href='#n7672'>7672</a>
<a id='n7673' href='#n7673'>7673</a>
<a id='n7674' href='#n7674'>7674</a>
<a id='n7675' href='#n7675'>7675</a>
<a id='n7676' href='#n7676'>7676</a>
<a id='n7677' href='#n7677'>7677</a>
<a id='n7678' href='#n7678'>7678</a>
<a id='n7679' href='#n7679'>7679</a>
<a id='n7680' href='#n7680'>7680</a>
<a id='n7681' href='#n7681'>7681</a>
<a id='n7682' href='#n7682'>7682</a>
<a id='n7683' href='#n7683'>7683</a>
<a id='n7684' href='#n7684'>7684</a>
<a id='n7685' href='#n7685'>7685</a>
<a id='n7686' href='#n7686'>7686</a>
<a id='n7687' href='#n7687'>7687</a>
<a id='n7688' href='#n7688'>7688</a>
<a id='n7689' href='#n7689'>7689</a>
<a id='n7690' href='#n7690'>7690</a>
<a id='n7691' href='#n7691'>7691</a>
<a id='n7692' href='#n7692'>7692</a>
<a id='n7693' href='#n7693'>7693</a>
<a id='n7694' href='#n7694'>7694</a>
<a id='n7695' href='#n7695'>7695</a>
<a id='n7696' href='#n7696'>7696</a>
<a id='n7697' href='#n7697'>7697</a>
<a id='n7698' href='#n7698'>7698</a>
<a id='n7699' href='#n7699'>7699</a>
<a id='n7700' href='#n7700'>7700</a>
<a id='n7701' href='#n7701'>7701</a>
<a id='n7702' href='#n7702'>7702</a>
<a id='n7703' href='#n7703'>7703</a>
<a id='n7704' href='#n7704'>7704</a>
<a id='n7705' href='#n7705'>7705</a>
<a id='n7706' href='#n7706'>7706</a>
<a id='n7707' href='#n7707'>7707</a>
<a id='n7708' href='#n7708'>7708</a>
<a id='n7709' href='#n7709'>7709</a>
<a id='n7710' href='#n7710'>7710</a>
<a id='n7711' href='#n7711'>7711</a>
<a id='n7712' href='#n7712'>7712</a>
<a id='n7713' href='#n7713'>7713</a>
<a id='n7714' href='#n7714'>7714</a>
<a id='n7715' href='#n7715'>7715</a>
<a id='n7716' href='#n7716'>7716</a>
<a id='n7717' href='#n7717'>7717</a>
<a id='n7718' href='#n7718'>7718</a>
<a id='n7719' href='#n7719'>7719</a>
<a id='n7720' href='#n7720'>7720</a>
<a id='n7721' href='#n7721'>7721</a>
<a id='n7722' href='#n7722'>7722</a>
<a id='n7723' href='#n7723'>7723</a>
<a id='n7724' href='#n7724'>7724</a>
<a id='n7725' href='#n7725'>7725</a>
<a id='n7726' href='#n7726'>7726</a>
<a id='n7727' href='#n7727'>7727</a>
<a id='n7728' href='#n7728'>7728</a>
<a id='n7729' href='#n7729'>7729</a>
<a id='n7730' href='#n7730'>7730</a>
<a id='n7731' href='#n7731'>7731</a>
<a id='n7732' href='#n7732'>7732</a>
<a id='n7733' href='#n7733'>7733</a>
<a id='n7734' href='#n7734'>7734</a>
<a id='n7735' href='#n7735'>7735</a>
<a id='n7736' href='#n7736'>7736</a>
<a id='n7737' href='#n7737'>7737</a>
<a id='n7738' href='#n7738'>7738</a>
<a id='n7739' href='#n7739'>7739</a>
<a id='n7740' href='#n7740'>7740</a>
<a id='n7741' href='#n7741'>7741</a>
<a id='n7742' href='#n7742'>7742</a>
<a id='n7743' href='#n7743'>7743</a>
<a id='n7744' href='#n7744'>7744</a>
<a id='n7745' href='#n7745'>7745</a>
<a id='n7746' href='#n7746'>7746</a>
<a id='n7747' href='#n7747'>7747</a>
<a id='n7748' href='#n7748'>7748</a>
<a id='n7749' href='#n7749'>7749</a>
<a id='n7750' href='#n7750'>7750</a>
<a id='n7751' href='#n7751'>7751</a>
<a id='n7752' href='#n7752'>7752</a>
<a id='n7753' href='#n7753'>7753</a>
<a id='n7754' href='#n7754'>7754</a>
<a id='n7755' href='#n7755'>7755</a>
<a id='n7756' href='#n7756'>7756</a>
<a id='n7757' href='#n7757'>7757</a>
<a id='n7758' href='#n7758'>7758</a>
<a id='n7759' href='#n7759'>7759</a>
<a id='n7760' href='#n7760'>7760</a>
<a id='n7761' href='#n7761'>7761</a>
<a id='n7762' href='#n7762'>7762</a>
<a id='n7763' href='#n7763'>7763</a>
<a id='n7764' href='#n7764'>7764</a>
<a id='n7765' href='#n7765'>7765</a>
<a id='n7766' href='#n7766'>7766</a>
<a id='n7767' href='#n7767'>7767</a>
<a id='n7768' href='#n7768'>7768</a>
<a id='n7769' href='#n7769'>7769</a>
<a id='n7770' href='#n7770'>7770</a>
<a id='n7771' href='#n7771'>7771</a>
<a id='n7772' href='#n7772'>7772</a>
<a id='n7773' href='#n7773'>7773</a>
<a id='n7774' href='#n7774'>7774</a>
<a id='n7775' href='#n7775'>7775</a>
<a id='n7776' href='#n7776'>7776</a>
<a id='n7777' href='#n7777'>7777</a>
<a id='n7778' href='#n7778'>7778</a>
<a id='n7779' href='#n7779'>7779</a>
<a id='n7780' href='#n7780'>7780</a>
<a id='n7781' href='#n7781'>7781</a>
<a id='n7782' href='#n7782'>7782</a>
<a id='n7783' href='#n7783'>7783</a>
<a id='n7784' href='#n7784'>7784</a>
<a id='n7785' href='#n7785'>7785</a>
<a id='n7786' href='#n7786'>7786</a>
<a id='n7787' href='#n7787'>7787</a>
<a id='n7788' href='#n7788'>7788</a>
<a id='n7789' href='#n7789'>7789</a>
<a id='n7790' href='#n7790'>7790</a>
<a id='n7791' href='#n7791'>7791</a>
<a id='n7792' href='#n7792'>7792</a>
<a id='n7793' href='#n7793'>7793</a>
<a id='n7794' href='#n7794'>7794</a>
<a id='n7795' href='#n7795'>7795</a>
<a id='n7796' href='#n7796'>7796</a>
<a id='n7797' href='#n7797'>7797</a>
<a id='n7798' href='#n7798'>7798</a>
<a id='n7799' href='#n7799'>7799</a>
<a id='n7800' href='#n7800'>7800</a>
<a id='n7801' href='#n7801'>7801</a>
<a id='n7802' href='#n7802'>7802</a>
<a id='n7803' href='#n7803'>7803</a>
<a id='n7804' href='#n7804'>7804</a>
<a id='n7805' href='#n7805'>7805</a>
<a id='n7806' href='#n7806'>7806</a>
<a id='n7807' href='#n7807'>7807</a>
<a id='n7808' href='#n7808'>7808</a>
<a id='n7809' href='#n7809'>7809</a>
<a id='n7810' href='#n7810'>7810</a>
<a id='n7811' href='#n7811'>7811</a>
<a id='n7812' href='#n7812'>7812</a>
<a id='n7813' href='#n7813'>7813</a>
<a id='n7814' href='#n7814'>7814</a>
<a id='n7815' href='#n7815'>7815</a>
<a id='n7816' href='#n7816'>7816</a>
<a id='n7817' href='#n7817'>7817</a>
<a id='n7818' href='#n7818'>7818</a>
<a id='n7819' href='#n7819'>7819</a>
<a id='n7820' href='#n7820'>7820</a>
<a id='n7821' href='#n7821'>7821</a>
<a id='n7822' href='#n7822'>7822</a>
<a id='n7823' href='#n7823'>7823</a>
<a id='n7824' href='#n7824'>7824</a>
<a id='n7825' href='#n7825'>7825</a>
<a id='n7826' href='#n7826'>7826</a>
<a id='n7827' href='#n7827'>7827</a>
<a id='n7828' href='#n7828'>7828</a>
<a id='n7829' href='#n7829'>7829</a>
<a id='n7830' href='#n7830'>7830</a>
<a id='n7831' href='#n7831'>7831</a>
<a id='n7832' href='#n7832'>7832</a>
<a id='n7833' href='#n7833'>7833</a>
<a id='n7834' href='#n7834'>7834</a>
<a id='n7835' href='#n7835'>7835</a>
<a id='n7836' href='#n7836'>7836</a>
<a id='n7837' href='#n7837'>7837</a>
<a id='n7838' href='#n7838'>7838</a>
<a id='n7839' href='#n7839'>7839</a>
<a id='n7840' href='#n7840'>7840</a>
<a id='n7841' href='#n7841'>7841</a>
<a id='n7842' href='#n7842'>7842</a>
<a id='n7843' href='#n7843'>7843</a>
<a id='n7844' href='#n7844'>7844</a>
<a id='n7845' href='#n7845'>7845</a>
<a id='n7846' href='#n7846'>7846</a>
<a id='n7847' href='#n7847'>7847</a>
<a id='n7848' href='#n7848'>7848</a>
<a id='n7849' href='#n7849'>7849</a>
<a id='n7850' href='#n7850'>7850</a>
<a id='n7851' href='#n7851'>7851</a>
<a id='n7852' href='#n7852'>7852</a>
<a id='n7853' href='#n7853'>7853</a>
<a id='n7854' href='#n7854'>7854</a>
<a id='n7855' href='#n7855'>7855</a>
<a id='n7856' href='#n7856'>7856</a>
<a id='n7857' href='#n7857'>7857</a>
<a id='n7858' href='#n7858'>7858</a>
<a id='n7859' href='#n7859'>7859</a>
<a id='n7860' href='#n7860'>7860</a>
<a id='n7861' href='#n7861'>7861</a>
<a id='n7862' href='#n7862'>7862</a>
<a id='n7863' href='#n7863'>7863</a>
<a id='n7864' href='#n7864'>7864</a>
<a id='n7865' href='#n7865'>7865</a>
<a id='n7866' href='#n7866'>7866</a>
<a id='n7867' href='#n7867'>7867</a>
<a id='n7868' href='#n7868'>7868</a>
<a id='n7869' href='#n7869'>7869</a>
<a id='n7870' href='#n7870'>7870</a>
<a id='n7871' href='#n7871'>7871</a>
<a id='n7872' href='#n7872'>7872</a>
<a id='n7873' href='#n7873'>7873</a>
<a id='n7874' href='#n7874'>7874</a>
<a id='n7875' href='#n7875'>7875</a>
<a id='n7876' href='#n7876'>7876</a>
<a id='n7877' href='#n7877'>7877</a>
<a id='n7878' href='#n7878'>7878</a>
<a id='n7879' href='#n7879'>7879</a>
<a id='n7880' href='#n7880'>7880</a>
<a id='n7881' href='#n7881'>7881</a>
<a id='n7882' href='#n7882'>7882</a>
<a id='n7883' href='#n7883'>7883</a>
<a id='n7884' href='#n7884'>7884</a>
<a id='n7885' href='#n7885'>7885</a>
<a id='n7886' href='#n7886'>7886</a>
<a id='n7887' href='#n7887'>7887</a>
<a id='n7888' href='#n7888'>7888</a>
<a id='n7889' href='#n7889'>7889</a>
<a id='n7890' href='#n7890'>7890</a>
<a id='n7891' href='#n7891'>7891</a>
<a id='n7892' href='#n7892'>7892</a>
<a id='n7893' href='#n7893'>7893</a>
<a id='n7894' href='#n7894'>7894</a>
<a id='n7895' href='#n7895'>7895</a>
<a id='n7896' href='#n7896'>7896</a>
<a id='n7897' href='#n7897'>7897</a>
<a id='n7898' href='#n7898'>7898</a>
<a id='n7899' href='#n7899'>7899</a>
<a id='n7900' href='#n7900'>7900</a>
<a id='n7901' href='#n7901'>7901</a>
<a id='n7902' href='#n7902'>7902</a>
<a id='n7903' href='#n7903'>7903</a>
<a id='n7904' href='#n7904'>7904</a>
<a id='n7905' href='#n7905'>7905</a>
<a id='n7906' href='#n7906'>7906</a>
<a id='n7907' href='#n7907'>7907</a>
<a id='n7908' href='#n7908'>7908</a>
<a id='n7909' href='#n7909'>7909</a>
<a id='n7910' href='#n7910'>7910</a>
<a id='n7911' href='#n7911'>7911</a>
<a id='n7912' href='#n7912'>7912</a>
<a id='n7913' href='#n7913'>7913</a>
<a id='n7914' href='#n7914'>7914</a>
<a id='n7915' href='#n7915'>7915</a>
<a id='n7916' href='#n7916'>7916</a>
<a id='n7917' href='#n7917'>7917</a>
<a id='n7918' href='#n7918'>7918</a>
<a id='n7919' href='#n7919'>7919</a>
<a id='n7920' href='#n7920'>7920</a>
<a id='n7921' href='#n7921'>7921</a>
<a id='n7922' href='#n7922'>7922</a>
<a id='n7923' href='#n7923'>7923</a>
<a id='n7924' href='#n7924'>7924</a>
<a id='n7925' href='#n7925'>7925</a>
<a id='n7926' href='#n7926'>7926</a>
<a id='n7927' href='#n7927'>7927</a>
<a id='n7928' href='#n7928'>7928</a>
<a id='n7929' href='#n7929'>7929</a>
<a id='n7930' href='#n7930'>7930</a>
<a id='n7931' href='#n7931'>7931</a>
<a id='n7932' href='#n7932'>7932</a>
<a id='n7933' href='#n7933'>7933</a>
<a id='n7934' href='#n7934'>7934</a>
<a id='n7935' href='#n7935'>7935</a>
<a id='n7936' href='#n7936'>7936</a>
<a id='n7937' href='#n7937'>7937</a>
<a id='n7938' href='#n7938'>7938</a>
<a id='n7939' href='#n7939'>7939</a>
<a id='n7940' href='#n7940'>7940</a>
<a id='n7941' href='#n7941'>7941</a>
<a id='n7942' href='#n7942'>7942</a>
<a id='n7943' href='#n7943'>7943</a>
<a id='n7944' href='#n7944'>7944</a>
<a id='n7945' href='#n7945'>7945</a>
<a id='n7946' href='#n7946'>7946</a>
<a id='n7947' href='#n7947'>7947</a>
<a id='n7948' href='#n7948'>7948</a>
<a id='n7949' href='#n7949'>7949</a>
<a id='n7950' href='#n7950'>7950</a>
<a id='n7951' href='#n7951'>7951</a>
<a id='n7952' href='#n7952'>7952</a>
<a id='n7953' href='#n7953'>7953</a>
<a id='n7954' href='#n7954'>7954</a>
<a id='n7955' href='#n7955'>7955</a>
<a id='n7956' href='#n7956'>7956</a>
<a id='n7957' href='#n7957'>7957</a>
<a id='n7958' href='#n7958'>7958</a>
<a id='n7959' href='#n7959'>7959</a>
<a id='n7960' href='#n7960'>7960</a>
<a id='n7961' href='#n7961'>7961</a>
<a id='n7962' href='#n7962'>7962</a>
<a id='n7963' href='#n7963'>7963</a>
<a id='n7964' href='#n7964'>7964</a>
<a id='n7965' href='#n7965'>7965</a>
<a id='n7966' href='#n7966'>7966</a>
<a id='n7967' href='#n7967'>7967</a>
<a id='n7968' href='#n7968'>7968</a>
<a id='n7969' href='#n7969'>7969</a>
<a id='n7970' href='#n7970'>7970</a>
<a id='n7971' href='#n7971'>7971</a>
<a id='n7972' href='#n7972'>7972</a>
<a id='n7973' href='#n7973'>7973</a>
<a id='n7974' href='#n7974'>7974</a>
<a id='n7975' href='#n7975'>7975</a>
<a id='n7976' href='#n7976'>7976</a>
<a id='n7977' href='#n7977'>7977</a>
<a id='n7978' href='#n7978'>7978</a>
<a id='n7979' href='#n7979'>7979</a>
<a id='n7980' href='#n7980'>7980</a>
<a id='n7981' href='#n7981'>7981</a>
<a id='n7982' href='#n7982'>7982</a>
<a id='n7983' href='#n7983'>7983</a>
<a id='n7984' href='#n7984'>7984</a>
<a id='n7985' href='#n7985'>7985</a>
<a id='n7986' href='#n7986'>7986</a>
<a id='n7987' href='#n7987'>7987</a>
<a id='n7988' href='#n7988'>7988</a>
<a id='n7989' href='#n7989'>7989</a>
<a id='n7990' href='#n7990'>7990</a>
<a id='n7991' href='#n7991'>7991</a>
<a id='n7992' href='#n7992'>7992</a>
<a id='n7993' href='#n7993'>7993</a>
<a id='n7994' href='#n7994'>7994</a>
<a id='n7995' href='#n7995'>7995</a>
<a id='n7996' href='#n7996'>7996</a>
<a id='n7997' href='#n7997'>7997</a>
<a id='n7998' href='#n7998'>7998</a>
<a id='n7999' href='#n7999'>7999</a>
<a id='n8000' href='#n8000'>8000</a>
<a id='n8001' href='#n8001'>8001</a>
<a id='n8002' href='#n8002'>8002</a>
<a id='n8003' href='#n8003'>8003</a>
<a id='n8004' href='#n8004'>8004</a>
<a id='n8005' href='#n8005'>8005</a>
<a id='n8006' href='#n8006'>8006</a>
<a id='n8007' href='#n8007'>8007</a>
<a id='n8008' href='#n8008'>8008</a>
<a id='n8009' href='#n8009'>8009</a>
<a id='n8010' href='#n8010'>8010</a>
<a id='n8011' href='#n8011'>8011</a>
<a id='n8012' href='#n8012'>8012</a>
<a id='n8013' href='#n8013'>8013</a>
<a id='n8014' href='#n8014'>8014</a>
<a id='n8015' href='#n8015'>8015</a>
<a id='n8016' href='#n8016'>8016</a>
<a id='n8017' href='#n8017'>8017</a>
<a id='n8018' href='#n8018'>8018</a>
<a id='n8019' href='#n8019'>8019</a>
<a id='n8020' href='#n8020'>8020</a>
<a id='n8021' href='#n8021'>8021</a>
<a id='n8022' href='#n8022'>8022</a>
<a id='n8023' href='#n8023'>8023</a>
<a id='n8024' href='#n8024'>8024</a>
<a id='n8025' href='#n8025'>8025</a>
<a id='n8026' href='#n8026'>8026</a>
<a id='n8027' href='#n8027'>8027</a>
<a id='n8028' href='#n8028'>8028</a>
<a id='n8029' href='#n8029'>8029</a>
<a id='n8030' href='#n8030'>8030</a>
<a id='n8031' href='#n8031'>8031</a>
<a id='n8032' href='#n8032'>8032</a>
<a id='n8033' href='#n8033'>8033</a>
<a id='n8034' href='#n8034'>8034</a>
<a id='n8035' href='#n8035'>8035</a>
<a id='n8036' href='#n8036'>8036</a>
<a id='n8037' href='#n8037'>8037</a>
<a id='n8038' href='#n8038'>8038</a>
<a id='n8039' href='#n8039'>8039</a>
<a id='n8040' href='#n8040'>8040</a>
<a id='n8041' href='#n8041'>8041</a>
<a id='n8042' href='#n8042'>8042</a>
<a id='n8043' href='#n8043'>8043</a>
<a id='n8044' href='#n8044'>8044</a>
<a id='n8045' href='#n8045'>8045</a>
<a id='n8046' href='#n8046'>8046</a>
<a id='n8047' href='#n8047'>8047</a>
<a id='n8048' href='#n8048'>8048</a>
<a id='n8049' href='#n8049'>8049</a>
<a id='n8050' href='#n8050'>8050</a>
<a id='n8051' href='#n8051'>8051</a>
<a id='n8052' href='#n8052'>8052</a>
<a id='n8053' href='#n8053'>8053</a>
<a id='n8054' href='#n8054'>8054</a>
<a id='n8055' href='#n8055'>8055</a>
<a id='n8056' href='#n8056'>8056</a>
<a id='n8057' href='#n8057'>8057</a>
<a id='n8058' href='#n8058'>8058</a>
<a id='n8059' href='#n8059'>8059</a>
<a id='n8060' href='#n8060'>8060</a>
<a id='n8061' href='#n8061'>8061</a>
<a id='n8062' href='#n8062'>8062</a>
<a id='n8063' href='#n8063'>8063</a>
<a id='n8064' href='#n8064'>8064</a>
<a id='n8065' href='#n8065'>8065</a>
<a id='n8066' href='#n8066'>8066</a>
<a id='n8067' href='#n8067'>8067</a>
<a id='n8068' href='#n8068'>8068</a>
<a id='n8069' href='#n8069'>8069</a>
<a id='n8070' href='#n8070'>8070</a>
<a id='n8071' href='#n8071'>8071</a>
<a id='n8072' href='#n8072'>8072</a>
<a id='n8073' href='#n8073'>8073</a>
<a id='n8074' href='#n8074'>8074</a>
<a id='n8075' href='#n8075'>8075</a>
<a id='n8076' href='#n8076'>8076</a>
<a id='n8077' href='#n8077'>8077</a>
<a id='n8078' href='#n8078'>8078</a>
<a id='n8079' href='#n8079'>8079</a>
<a id='n8080' href='#n8080'>8080</a>
<a id='n8081' href='#n8081'>8081</a>
<a id='n8082' href='#n8082'>8082</a>
<a id='n8083' href='#n8083'>8083</a>
<a id='n8084' href='#n8084'>8084</a>
<a id='n8085' href='#n8085'>8085</a>
<a id='n8086' href='#n8086'>8086</a>
<a id='n8087' href='#n8087'>8087</a>
<a id='n8088' href='#n8088'>8088</a>
<a id='n8089' href='#n8089'>8089</a>
<a id='n8090' href='#n8090'>8090</a>
<a id='n8091' href='#n8091'>8091</a>
<a id='n8092' href='#n8092'>8092</a>
<a id='n8093' href='#n8093'>8093</a>
<a id='n8094' href='#n8094'>8094</a>
<a id='n8095' href='#n8095'>8095</a>
<a id='n8096' href='#n8096'>8096</a>
<a id='n8097' href='#n8097'>8097</a>
<a id='n8098' href='#n8098'>8098</a>
<a id='n8099' href='#n8099'>8099</a>
<a id='n8100' href='#n8100'>8100</a>
<a id='n8101' href='#n8101'>8101</a>
<a id='n8102' href='#n8102'>8102</a>
<a id='n8103' href='#n8103'>8103</a>
<a id='n8104' href='#n8104'>8104</a>
<a id='n8105' href='#n8105'>8105</a>
<a id='n8106' href='#n8106'>8106</a>
<a id='n8107' href='#n8107'>8107</a>
<a id='n8108' href='#n8108'>8108</a>
<a id='n8109' href='#n8109'>8109</a>
<a id='n8110' href='#n8110'>8110</a>
<a id='n8111' href='#n8111'>8111</a>
<a id='n8112' href='#n8112'>8112</a>
<a id='n8113' href='#n8113'>8113</a>
<a id='n8114' href='#n8114'>8114</a>
<a id='n8115' href='#n8115'>8115</a>
<a id='n8116' href='#n8116'>8116</a>
<a id='n8117' href='#n8117'>8117</a>
<a id='n8118' href='#n8118'>8118</a>
<a id='n8119' href='#n8119'>8119</a>
<a id='n8120' href='#n8120'>8120</a>
<a id='n8121' href='#n8121'>8121</a>
<a id='n8122' href='#n8122'>8122</a>
<a id='n8123' href='#n8123'>8123</a>
<a id='n8124' href='#n8124'>8124</a>
<a id='n8125' href='#n8125'>8125</a>
<a id='n8126' href='#n8126'>8126</a>
<a id='n8127' href='#n8127'>8127</a>
<a id='n8128' href='#n8128'>8128</a>
<a id='n8129' href='#n8129'>8129</a>
<a id='n8130' href='#n8130'>8130</a>
<a id='n8131' href='#n8131'>8131</a>
<a id='n8132' href='#n8132'>8132</a>
<a id='n8133' href='#n8133'>8133</a>
<a id='n8134' href='#n8134'>8134</a>
<a id='n8135' href='#n8135'>8135</a>
<a id='n8136' href='#n8136'>8136</a>
<a id='n8137' href='#n8137'>8137</a>
<a id='n8138' href='#n8138'>8138</a>
<a id='n8139' href='#n8139'>8139</a>
<a id='n8140' href='#n8140'>8140</a>
<a id='n8141' href='#n8141'>8141</a>
<a id='n8142' href='#n8142'>8142</a>
<a id='n8143' href='#n8143'>8143</a>
<a id='n8144' href='#n8144'>8144</a>
<a id='n8145' href='#n8145'>8145</a>
<a id='n8146' href='#n8146'>8146</a>
<a id='n8147' href='#n8147'>8147</a>
<a id='n8148' href='#n8148'>8148</a>
<a id='n8149' href='#n8149'>8149</a>
<a id='n8150' href='#n8150'>8150</a>
<a id='n8151' href='#n8151'>8151</a>
<a id='n8152' href='#n8152'>8152</a>
<a id='n8153' href='#n8153'>8153</a>
<a id='n8154' href='#n8154'>8154</a>
<a id='n8155' href='#n8155'>8155</a>
<a id='n8156' href='#n8156'>8156</a>
<a id='n8157' href='#n8157'>8157</a>
<a id='n8158' href='#n8158'>8158</a>
<a id='n8159' href='#n8159'>8159</a>
<a id='n8160' href='#n8160'>8160</a>
<a id='n8161' href='#n8161'>8161</a>
<a id='n8162' href='#n8162'>8162</a>
<a id='n8163' href='#n8163'>8163</a>
<a id='n8164' href='#n8164'>8164</a>
<a id='n8165' href='#n8165'>8165</a>
<a id='n8166' href='#n8166'>8166</a>
<a id='n8167' href='#n8167'>8167</a>
<a id='n8168' href='#n8168'>8168</a>
<a id='n8169' href='#n8169'>8169</a>
<a id='n8170' href='#n8170'>8170</a>
<a id='n8171' href='#n8171'>8171</a>
<a id='n8172' href='#n8172'>8172</a>
<a id='n8173' href='#n8173'>8173</a>
<a id='n8174' href='#n8174'>8174</a>
<a id='n8175' href='#n8175'>8175</a>
<a id='n8176' href='#n8176'>8176</a>
<a id='n8177' href='#n8177'>8177</a>
<a id='n8178' href='#n8178'>8178</a>
<a id='n8179' href='#n8179'>8179</a>
<a id='n8180' href='#n8180'>8180</a>
<a id='n8181' href='#n8181'>8181</a>
<a id='n8182' href='#n8182'>8182</a>
<a id='n8183' href='#n8183'>8183</a>
<a id='n8184' href='#n8184'>8184</a>
<a id='n8185' href='#n8185'>8185</a>
<a id='n8186' href='#n8186'>8186</a>
<a id='n8187' href='#n8187'>8187</a>
<a id='n8188' href='#n8188'>8188</a>
<a id='n8189' href='#n8189'>8189</a>
<a id='n8190' href='#n8190'>8190</a>
<a id='n8191' href='#n8191'>8191</a>
<a id='n8192' href='#n8192'>8192</a>
<a id='n8193' href='#n8193'>8193</a>
<a id='n8194' href='#n8194'>8194</a>
<a id='n8195' href='#n8195'>8195</a>
<a id='n8196' href='#n8196'>8196</a>
<a id='n8197' href='#n8197'>8197</a>
<a id='n8198' href='#n8198'>8198</a>
<a id='n8199' href='#n8199'>8199</a>
<a id='n8200' href='#n8200'>8200</a>
<a id='n8201' href='#n8201'>8201</a>
<a id='n8202' href='#n8202'>8202</a>
<a id='n8203' href='#n8203'>8203</a>
<a id='n8204' href='#n8204'>8204</a>
<a id='n8205' href='#n8205'>8205</a>
<a id='n8206' href='#n8206'>8206</a>
<a id='n8207' href='#n8207'>8207</a>
<a id='n8208' href='#n8208'>8208</a>
<a id='n8209' href='#n8209'>8209</a>
<a id='n8210' href='#n8210'>8210</a>
<a id='n8211' href='#n8211'>8211</a>
<a id='n8212' href='#n8212'>8212</a>
<a id='n8213' href='#n8213'>8213</a>
<a id='n8214' href='#n8214'>8214</a>
<a id='n8215' href='#n8215'>8215</a>
<a id='n8216' href='#n8216'>8216</a>
<a id='n8217' href='#n8217'>8217</a>
<a id='n8218' href='#n8218'>8218</a>
<a id='n8219' href='#n8219'>8219</a>
<a id='n8220' href='#n8220'>8220</a>
<a id='n8221' href='#n8221'>8221</a>
<a id='n8222' href='#n8222'>8222</a>
<a id='n8223' href='#n8223'>8223</a>
<a id='n8224' href='#n8224'>8224</a>
<a id='n8225' href='#n8225'>8225</a>
<a id='n8226' href='#n8226'>8226</a>
<a id='n8227' href='#n8227'>8227</a>
<a id='n8228' href='#n8228'>8228</a>
<a id='n8229' href='#n8229'>8229</a>
<a id='n8230' href='#n8230'>8230</a>
<a id='n8231' href='#n8231'>8231</a>
<a id='n8232' href='#n8232'>8232</a>
<a id='n8233' href='#n8233'>8233</a>
<a id='n8234' href='#n8234'>8234</a>
<a id='n8235' href='#n8235'>8235</a>
<a id='n8236' href='#n8236'>8236</a>
<a id='n8237' href='#n8237'>8237</a>
<a id='n8238' href='#n8238'>8238</a>
<a id='n8239' href='#n8239'>8239</a>
<a id='n8240' href='#n8240'>8240</a>
<a id='n8241' href='#n8241'>8241</a>
<a id='n8242' href='#n8242'>8242</a>
<a id='n8243' href='#n8243'>8243</a>
<a id='n8244' href='#n8244'>8244</a>
<a id='n8245' href='#n8245'>8245</a>
<a id='n8246' href='#n8246'>8246</a>
<a id='n8247' href='#n8247'>8247</a>
<a id='n8248' href='#n8248'>8248</a>
<a id='n8249' href='#n8249'>8249</a>
<a id='n8250' href='#n8250'>8250</a>
<a id='n8251' href='#n8251'>8251</a>
<a id='n8252' href='#n8252'>8252</a>
<a id='n8253' href='#n8253'>8253</a>
<a id='n8254' href='#n8254'>8254</a>
<a id='n8255' href='#n8255'>8255</a>
<a id='n8256' href='#n8256'>8256</a>
<a id='n8257' href='#n8257'>8257</a>
<a id='n8258' href='#n8258'>8258</a>
<a id='n8259' href='#n8259'>8259</a>
<a id='n8260' href='#n8260'>8260</a>
<a id='n8261' href='#n8261'>8261</a>
<a id='n8262' href='#n8262'>8262</a>
<a id='n8263' href='#n8263'>8263</a>
<a id='n8264' href='#n8264'>8264</a>
<a id='n8265' href='#n8265'>8265</a>
<a id='n8266' href='#n8266'>8266</a>
<a id='n8267' href='#n8267'>8267</a>
<a id='n8268' href='#n8268'>8268</a>
<a id='n8269' href='#n8269'>8269</a>
<a id='n8270' href='#n8270'>8270</a>
<a id='n8271' href='#n8271'>8271</a>
<a id='n8272' href='#n8272'>8272</a>
<a id='n8273' href='#n8273'>8273</a>
<a id='n8274' href='#n8274'>8274</a>
<a id='n8275' href='#n8275'>8275</a>
<a id='n8276' href='#n8276'>8276</a>
<a id='n8277' href='#n8277'>8277</a>
<a id='n8278' href='#n8278'>8278</a>
<a id='n8279' href='#n8279'>8279</a>
<a id='n8280' href='#n8280'>8280</a>
<a id='n8281' href='#n8281'>8281</a>
<a id='n8282' href='#n8282'>8282</a>
<a id='n8283' href='#n8283'>8283</a>
<a id='n8284' href='#n8284'>8284</a>
<a id='n8285' href='#n8285'>8285</a>
<a id='n8286' href='#n8286'>8286</a>
<a id='n8287' href='#n8287'>8287</a>
<a id='n8288' href='#n8288'>8288</a>
<a id='n8289' href='#n8289'>8289</a>
<a id='n8290' href='#n8290'>8290</a>
<a id='n8291' href='#n8291'>8291</a>
<a id='n8292' href='#n8292'>8292</a>
<a id='n8293' href='#n8293'>8293</a>
<a id='n8294' href='#n8294'>8294</a>
<a id='n8295' href='#n8295'>8295</a>
<a id='n8296' href='#n8296'>8296</a>
<a id='n8297' href='#n8297'>8297</a>
<a id='n8298' href='#n8298'>8298</a>
<a id='n8299' href='#n8299'>8299</a>
<a id='n8300' href='#n8300'>8300</a>
<a id='n8301' href='#n8301'>8301</a>
<a id='n8302' href='#n8302'>8302</a>
<a id='n8303' href='#n8303'>8303</a>
<a id='n8304' href='#n8304'>8304</a>
<a id='n8305' href='#n8305'>8305</a>
<a id='n8306' href='#n8306'>8306</a>
<a id='n8307' href='#n8307'>8307</a>
<a id='n8308' href='#n8308'>8308</a>
<a id='n8309' href='#n8309'>8309</a>
<a id='n8310' href='#n8310'>8310</a>
<a id='n8311' href='#n8311'>8311</a>
<a id='n8312' href='#n8312'>8312</a>
<a id='n8313' href='#n8313'>8313</a>
<a id='n8314' href='#n8314'>8314</a>
<a id='n8315' href='#n8315'>8315</a>
<a id='n8316' href='#n8316'>8316</a>
<a id='n8317' href='#n8317'>8317</a>
<a id='n8318' href='#n8318'>8318</a>
<a id='n8319' href='#n8319'>8319</a>
<a id='n8320' href='#n8320'>8320</a>
<a id='n8321' href='#n8321'>8321</a>
<a id='n8322' href='#n8322'>8322</a>
<a id='n8323' href='#n8323'>8323</a>
<a id='n8324' href='#n8324'>8324</a>
<a id='n8325' href='#n8325'>8325</a>
<a id='n8326' href='#n8326'>8326</a>
<a id='n8327' href='#n8327'>8327</a>
<a id='n8328' href='#n8328'>8328</a>
<a id='n8329' href='#n8329'>8329</a>
<a id='n8330' href='#n8330'>8330</a>
<a id='n8331' href='#n8331'>8331</a>
<a id='n8332' href='#n8332'>8332</a>
<a id='n8333' href='#n8333'>8333</a>
<a id='n8334' href='#n8334'>8334</a>
<a id='n8335' href='#n8335'>8335</a>
<a id='n8336' href='#n8336'>8336</a>
<a id='n8337' href='#n8337'>8337</a>
<a id='n8338' href='#n8338'>8338</a>
<a id='n8339' href='#n8339'>8339</a>
<a id='n8340' href='#n8340'>8340</a>
<a id='n8341' href='#n8341'>8341</a>
<a id='n8342' href='#n8342'>8342</a>
<a id='n8343' href='#n8343'>8343</a>
<a id='n8344' href='#n8344'>8344</a>
<a id='n8345' href='#n8345'>8345</a>
<a id='n8346' href='#n8346'>8346</a>
<a id='n8347' href='#n8347'>8347</a>
<a id='n8348' href='#n8348'>8348</a>
<a id='n8349' href='#n8349'>8349</a>
<a id='n8350' href='#n8350'>8350</a>
<a id='n8351' href='#n8351'>8351</a>
<a id='n8352' href='#n8352'>8352</a>
<a id='n8353' href='#n8353'>8353</a>
<a id='n8354' href='#n8354'>8354</a>
<a id='n8355' href='#n8355'>8355</a>
<a id='n8356' href='#n8356'>8356</a>
<a id='n8357' href='#n8357'>8357</a>
<a id='n8358' href='#n8358'>8358</a>
<a id='n8359' href='#n8359'>8359</a>
<a id='n8360' href='#n8360'>8360</a>
<a id='n8361' href='#n8361'>8361</a>
<a id='n8362' href='#n8362'>8362</a>
<a id='n8363' href='#n8363'>8363</a>
<a id='n8364' href='#n8364'>8364</a>
<a id='n8365' href='#n8365'>8365</a>
<a id='n8366' href='#n8366'>8366</a>
<a id='n8367' href='#n8367'>8367</a>
<a id='n8368' href='#n8368'>8368</a>
<a id='n8369' href='#n8369'>8369</a>
<a id='n8370' href='#n8370'>8370</a>
<a id='n8371' href='#n8371'>8371</a>
<a id='n8372' href='#n8372'>8372</a>
<a id='n8373' href='#n8373'>8373</a>
<a id='n8374' href='#n8374'>8374</a>
<a id='n8375' href='#n8375'>8375</a>
<a id='n8376' href='#n8376'>8376</a>
<a id='n8377' href='#n8377'>8377</a>
<a id='n8378' href='#n8378'>8378</a>
<a id='n8379' href='#n8379'>8379</a>
<a id='n8380' href='#n8380'>8380</a>
<a id='n8381' href='#n8381'>8381</a>
<a id='n8382' href='#n8382'>8382</a>
<a id='n8383' href='#n8383'>8383</a>
<a id='n8384' href='#n8384'>8384</a>
<a id='n8385' href='#n8385'>8385</a>
<a id='n8386' href='#n8386'>8386</a>
<a id='n8387' href='#n8387'>8387</a>
<a id='n8388' href='#n8388'>8388</a>
<a id='n8389' href='#n8389'>8389</a>
<a id='n8390' href='#n8390'>8390</a>
<a id='n8391' href='#n8391'>8391</a>
<a id='n8392' href='#n8392'>8392</a>
<a id='n8393' href='#n8393'>8393</a>
<a id='n8394' href='#n8394'>8394</a>
<a id='n8395' href='#n8395'>8395</a>
<a id='n8396' href='#n8396'>8396</a>
<a id='n8397' href='#n8397'>8397</a>
<a id='n8398' href='#n8398'>8398</a>
<a id='n8399' href='#n8399'>8399</a>
<a id='n8400' href='#n8400'>8400</a>
<a id='n8401' href='#n8401'>8401</a>
<a id='n8402' href='#n8402'>8402</a>
<a id='n8403' href='#n8403'>8403</a>
<a id='n8404' href='#n8404'>8404</a>
<a id='n8405' href='#n8405'>8405</a>
<a id='n8406' href='#n8406'>8406</a>
<a id='n8407' href='#n8407'>8407</a>
<a id='n8408' href='#n8408'>8408</a>
<a id='n8409' href='#n8409'>8409</a>
<a id='n8410' href='#n8410'>8410</a>
<a id='n8411' href='#n8411'>8411</a>
<a id='n8412' href='#n8412'>8412</a>
<a id='n8413' href='#n8413'>8413</a>
<a id='n8414' href='#n8414'>8414</a>
<a id='n8415' href='#n8415'>8415</a>
<a id='n8416' href='#n8416'>8416</a>
<a id='n8417' href='#n8417'>8417</a>
<a id='n8418' href='#n8418'>8418</a>
<a id='n8419' href='#n8419'>8419</a>
<a id='n8420' href='#n8420'>8420</a>
<a id='n8421' href='#n8421'>8421</a>
<a id='n8422' href='#n8422'>8422</a>
<a id='n8423' href='#n8423'>8423</a>
<a id='n8424' href='#n8424'>8424</a>
<a id='n8425' href='#n8425'>8425</a>
<a id='n8426' href='#n8426'>8426</a>
<a id='n8427' href='#n8427'>8427</a>
<a id='n8428' href='#n8428'>8428</a>
<a id='n8429' href='#n8429'>8429</a>
<a id='n8430' href='#n8430'>8430</a>
<a id='n8431' href='#n8431'>8431</a>
<a id='n8432' href='#n8432'>8432</a>
<a id='n8433' href='#n8433'>8433</a>
<a id='n8434' href='#n8434'>8434</a>
<a id='n8435' href='#n8435'>8435</a>
<a id='n8436' href='#n8436'>8436</a>
<a id='n8437' href='#n8437'>8437</a>
<a id='n8438' href='#n8438'>8438</a>
<a id='n8439' href='#n8439'>8439</a>
<a id='n8440' href='#n8440'>8440</a>
<a id='n8441' href='#n8441'>8441</a>
<a id='n8442' href='#n8442'>8442</a>
<a id='n8443' href='#n8443'>8443</a>
<a id='n8444' href='#n8444'>8444</a>
<a id='n8445' href='#n8445'>8445</a>
<a id='n8446' href='#n8446'>8446</a>
<a id='n8447' href='#n8447'>8447</a>
<a id='n8448' href='#n8448'>8448</a>
<a id='n8449' href='#n8449'>8449</a>
<a id='n8450' href='#n8450'>8450</a>
<a id='n8451' href='#n8451'>8451</a>
<a id='n8452' href='#n8452'>8452</a>
<a id='n8453' href='#n8453'>8453</a>
<a id='n8454' href='#n8454'>8454</a>
<a id='n8455' href='#n8455'>8455</a>
<a id='n8456' href='#n8456'>8456</a>
<a id='n8457' href='#n8457'>8457</a>
<a id='n8458' href='#n8458'>8458</a>
<a id='n8459' href='#n8459'>8459</a>
<a id='n8460' href='#n8460'>8460</a>
<a id='n8461' href='#n8461'>8461</a>
<a id='n8462' href='#n8462'>8462</a>
<a id='n8463' href='#n8463'>8463</a>
<a id='n8464' href='#n8464'>8464</a>
<a id='n8465' href='#n8465'>8465</a>
<a id='n8466' href='#n8466'>8466</a>
<a id='n8467' href='#n8467'>8467</a>
<a id='n8468' href='#n8468'>8468</a>
<a id='n8469' href='#n8469'>8469</a>
<a id='n8470' href='#n8470'>8470</a>
<a id='n8471' href='#n8471'>8471</a>
<a id='n8472' href='#n8472'>8472</a>
<a id='n8473' href='#n8473'>8473</a>
<a id='n8474' href='#n8474'>8474</a>
<a id='n8475' href='#n8475'>8475</a>
<a id='n8476' href='#n8476'>8476</a>
<a id='n8477' href='#n8477'>8477</a>
<a id='n8478' href='#n8478'>8478</a>
<a id='n8479' href='#n8479'>8479</a>
<a id='n8480' href='#n8480'>8480</a>
<a id='n8481' href='#n8481'>8481</a>
<a id='n8482' href='#n8482'>8482</a>
<a id='n8483' href='#n8483'>8483</a>
<a id='n8484' href='#n8484'>8484</a>
<a id='n8485' href='#n8485'>8485</a>
<a id='n8486' href='#n8486'>8486</a>
<a id='n8487' href='#n8487'>8487</a>
<a id='n8488' href='#n8488'>8488</a>
<a id='n8489' href='#n8489'>8489</a>
<a id='n8490' href='#n8490'>8490</a>
<a id='n8491' href='#n8491'>8491</a>
<a id='n8492' href='#n8492'>8492</a>
<a id='n8493' href='#n8493'>8493</a>
<a id='n8494' href='#n8494'>8494</a>
<a id='n8495' href='#n8495'>8495</a>
<a id='n8496' href='#n8496'>8496</a>
<a id='n8497' href='#n8497'>8497</a>
<a id='n8498' href='#n8498'>8498</a>
<a id='n8499' href='#n8499'>8499</a>
<a id='n8500' href='#n8500'>8500</a>
<a id='n8501' href='#n8501'>8501</a>
<a id='n8502' href='#n8502'>8502</a>
<a id='n8503' href='#n8503'>8503</a>
<a id='n8504' href='#n8504'>8504</a>
<a id='n8505' href='#n8505'>8505</a>
<a id='n8506' href='#n8506'>8506</a>
<a id='n8507' href='#n8507'>8507</a>
<a id='n8508' href='#n8508'>8508</a>
<a id='n8509' href='#n8509'>8509</a>
<a id='n8510' href='#n8510'>8510</a>
<a id='n8511' href='#n8511'>8511</a>
<a id='n8512' href='#n8512'>8512</a>
<a id='n8513' href='#n8513'>8513</a>
<a id='n8514' href='#n8514'>8514</a>
<a id='n8515' href='#n8515'>8515</a>
<a id='n8516' href='#n8516'>8516</a>
<a id='n8517' href='#n8517'>8517</a>
<a id='n8518' href='#n8518'>8518</a>
<a id='n8519' href='#n8519'>8519</a>
<a id='n8520' href='#n8520'>8520</a>
<a id='n8521' href='#n8521'>8521</a>
<a id='n8522' href='#n8522'>8522</a>
<a id='n8523' href='#n8523'>8523</a>
<a id='n8524' href='#n8524'>8524</a>
<a id='n8525' href='#n8525'>8525</a>
<a id='n8526' href='#n8526'>8526</a>
<a id='n8527' href='#n8527'>8527</a>
<a id='n8528' href='#n8528'>8528</a>
<a id='n8529' href='#n8529'>8529</a>
<a id='n8530' href='#n8530'>8530</a>
<a id='n8531' href='#n8531'>8531</a>
<a id='n8532' href='#n8532'>8532</a>
<a id='n8533' href='#n8533'>8533</a>
<a id='n8534' href='#n8534'>8534</a>
<a id='n8535' href='#n8535'>8535</a>
<a id='n8536' href='#n8536'>8536</a>
<a id='n8537' href='#n8537'>8537</a>
<a id='n8538' href='#n8538'>8538</a>
<a id='n8539' href='#n8539'>8539</a>
<a id='n8540' href='#n8540'>8540</a>
<a id='n8541' href='#n8541'>8541</a>
<a id='n8542' href='#n8542'>8542</a>
<a id='n8543' href='#n8543'>8543</a>
<a id='n8544' href='#n8544'>8544</a>
<a id='n8545' href='#n8545'>8545</a>
<a id='n8546' href='#n8546'>8546</a>
<a id='n8547' href='#n8547'>8547</a>
<a id='n8548' href='#n8548'>8548</a>
<a id='n8549' href='#n8549'>8549</a>
<a id='n8550' href='#n8550'>8550</a>
<a id='n8551' href='#n8551'>8551</a>
<a id='n8552' href='#n8552'>8552</a>
<a id='n8553' href='#n8553'>8553</a>
<a id='n8554' href='#n8554'>8554</a>
<a id='n8555' href='#n8555'>8555</a>
<a id='n8556' href='#n8556'>8556</a>
<a id='n8557' href='#n8557'>8557</a>
<a id='n8558' href='#n8558'>8558</a>
<a id='n8559' href='#n8559'>8559</a>
<a id='n8560' href='#n8560'>8560</a>
<a id='n8561' href='#n8561'>8561</a>
<a id='n8562' href='#n8562'>8562</a>
<a id='n8563' href='#n8563'>8563</a>
<a id='n8564' href='#n8564'>8564</a>
<a id='n8565' href='#n8565'>8565</a>
<a id='n8566' href='#n8566'>8566</a>
<a id='n8567' href='#n8567'>8567</a>
<a id='n8568' href='#n8568'>8568</a>
<a id='n8569' href='#n8569'>8569</a>
<a id='n8570' href='#n8570'>8570</a>
<a id='n8571' href='#n8571'>8571</a>
<a id='n8572' href='#n8572'>8572</a>
<a id='n8573' href='#n8573'>8573</a>
<a id='n8574' href='#n8574'>8574</a>
<a id='n8575' href='#n8575'>8575</a>
<a id='n8576' href='#n8576'>8576</a>
<a id='n8577' href='#n8577'>8577</a>
<a id='n8578' href='#n8578'>8578</a>
<a id='n8579' href='#n8579'>8579</a>
<a id='n8580' href='#n8580'>8580</a>
<a id='n8581' href='#n8581'>8581</a>
<a id='n8582' href='#n8582'>8582</a>
<a id='n8583' href='#n8583'>8583</a>
<a id='n8584' href='#n8584'>8584</a>
<a id='n8585' href='#n8585'>8585</a>
<a id='n8586' href='#n8586'>8586</a>
<a id='n8587' href='#n8587'>8587</a>
<a id='n8588' href='#n8588'>8588</a>
<a id='n8589' href='#n8589'>8589</a>
<a id='n8590' href='#n8590'>8590</a>
<a id='n8591' href='#n8591'>8591</a>
<a id='n8592' href='#n8592'>8592</a>
<a id='n8593' href='#n8593'>8593</a>
<a id='n8594' href='#n8594'>8594</a>
<a id='n8595' href='#n8595'>8595</a>
<a id='n8596' href='#n8596'>8596</a>
<a id='n8597' href='#n8597'>8597</a>
<a id='n8598' href='#n8598'>8598</a>
<a id='n8599' href='#n8599'>8599</a>
<a id='n8600' href='#n8600'>8600</a>
<a id='n8601' href='#n8601'>8601</a>
<a id='n8602' href='#n8602'>8602</a>
<a id='n8603' href='#n8603'>8603</a>
<a id='n8604' href='#n8604'>8604</a>
<a id='n8605' href='#n8605'>8605</a>
<a id='n8606' href='#n8606'>8606</a>
<a id='n8607' href='#n8607'>8607</a>
<a id='n8608' href='#n8608'>8608</a>
<a id='n8609' href='#n8609'>8609</a>
<a id='n8610' href='#n8610'>8610</a>
<a id='n8611' href='#n8611'>8611</a>
<a id='n8612' href='#n8612'>8612</a>
<a id='n8613' href='#n8613'>8613</a>
<a id='n8614' href='#n8614'>8614</a>
<a id='n8615' href='#n8615'>8615</a>
<a id='n8616' href='#n8616'>8616</a>
<a id='n8617' href='#n8617'>8617</a>
<a id='n8618' href='#n8618'>8618</a>
<a id='n8619' href='#n8619'>8619</a>
<a id='n8620' href='#n8620'>8620</a>
<a id='n8621' href='#n8621'>8621</a>
<a id='n8622' href='#n8622'>8622</a>
<a id='n8623' href='#n8623'>8623</a>
<a id='n8624' href='#n8624'>8624</a>
<a id='n8625' href='#n8625'>8625</a>
<a id='n8626' href='#n8626'>8626</a>
<a id='n8627' href='#n8627'>8627</a>
<a id='n8628' href='#n8628'>8628</a>
<a id='n8629' href='#n8629'>8629</a>
<a id='n8630' href='#n8630'>8630</a>
<a id='n8631' href='#n8631'>8631</a>
<a id='n8632' href='#n8632'>8632</a>
<a id='n8633' href='#n8633'>8633</a>
<a id='n8634' href='#n8634'>8634</a>
<a id='n8635' href='#n8635'>8635</a>
<a id='n8636' href='#n8636'>8636</a>
<a id='n8637' href='#n8637'>8637</a>
<a id='n8638' href='#n8638'>8638</a>
<a id='n8639' href='#n8639'>8639</a>
<a id='n8640' href='#n8640'>8640</a>
<a id='n8641' href='#n8641'>8641</a>
<a id='n8642' href='#n8642'>8642</a>
<a id='n8643' href='#n8643'>8643</a>
<a id='n8644' href='#n8644'>8644</a>
<a id='n8645' href='#n8645'>8645</a>
<a id='n8646' href='#n8646'>8646</a>
<a id='n8647' href='#n8647'>8647</a>
<a id='n8648' href='#n8648'>8648</a>
<a id='n8649' href='#n8649'>8649</a>
<a id='n8650' href='#n8650'>8650</a>
<a id='n8651' href='#n8651'>8651</a>
<a id='n8652' href='#n8652'>8652</a>
<a id='n8653' href='#n8653'>8653</a>
<a id='n8654' href='#n8654'>8654</a>
<a id='n8655' href='#n8655'>8655</a>
<a id='n8656' href='#n8656'>8656</a>
<a id='n8657' href='#n8657'>8657</a>
<a id='n8658' href='#n8658'>8658</a>
<a id='n8659' href='#n8659'>8659</a>
<a id='n8660' href='#n8660'>8660</a>
<a id='n8661' href='#n8661'>8661</a>
<a id='n8662' href='#n8662'>8662</a>
<a id='n8663' href='#n8663'>8663</a>
<a id='n8664' href='#n8664'>8664</a>
<a id='n8665' href='#n8665'>8665</a>
<a id='n8666' href='#n8666'>8666</a>
<a id='n8667' href='#n8667'>8667</a>
<a id='n8668' href='#n8668'>8668</a>
<a id='n8669' href='#n8669'>8669</a>
<a id='n8670' href='#n8670'>8670</a>
<a id='n8671' href='#n8671'>8671</a>
<a id='n8672' href='#n8672'>8672</a>
<a id='n8673' href='#n8673'>8673</a>
<a id='n8674' href='#n8674'>8674</a>
<a id='n8675' href='#n8675'>8675</a>
<a id='n8676' href='#n8676'>8676</a>
<a id='n8677' href='#n8677'>8677</a>
<a id='n8678' href='#n8678'>8678</a>
<a id='n8679' href='#n8679'>8679</a>
<a id='n8680' href='#n8680'>8680</a>
<a id='n8681' href='#n8681'>8681</a>
<a id='n8682' href='#n8682'>8682</a>
<a id='n8683' href='#n8683'>8683</a>
<a id='n8684' href='#n8684'>8684</a>
<a id='n8685' href='#n8685'>8685</a>
<a id='n8686' href='#n8686'>8686</a>
<a id='n8687' href='#n8687'>8687</a>
<a id='n8688' href='#n8688'>8688</a>
<a id='n8689' href='#n8689'>8689</a>
<a id='n8690' href='#n8690'>8690</a>
<a id='n8691' href='#n8691'>8691</a>
<a id='n8692' href='#n8692'>8692</a>
<a id='n8693' href='#n8693'>8693</a>
<a id='n8694' href='#n8694'>8694</a>
<a id='n8695' href='#n8695'>8695</a>
<a id='n8696' href='#n8696'>8696</a>
<a id='n8697' href='#n8697'>8697</a>
<a id='n8698' href='#n8698'>8698</a>
<a id='n8699' href='#n8699'>8699</a>
<a id='n8700' href='#n8700'>8700</a>
<a id='n8701' href='#n8701'>8701</a>
<a id='n8702' href='#n8702'>8702</a>
<a id='n8703' href='#n8703'>8703</a>
<a id='n8704' href='#n8704'>8704</a>
<a id='n8705' href='#n8705'>8705</a>
<a id='n8706' href='#n8706'>8706</a>
<a id='n8707' href='#n8707'>8707</a>
<a id='n8708' href='#n8708'>8708</a>
<a id='n8709' href='#n8709'>8709</a>
<a id='n8710' href='#n8710'>8710</a>
<a id='n8711' href='#n8711'>8711</a>
<a id='n8712' href='#n8712'>8712</a>
<a id='n8713' href='#n8713'>8713</a>
<a id='n8714' href='#n8714'>8714</a>
<a id='n8715' href='#n8715'>8715</a>
<a id='n8716' href='#n8716'>8716</a>
<a id='n8717' href='#n8717'>8717</a>
<a id='n8718' href='#n8718'>8718</a>
<a id='n8719' href='#n8719'>8719</a>
<a id='n8720' href='#n8720'>8720</a>
<a id='n8721' href='#n8721'>8721</a>
<a id='n8722' href='#n8722'>8722</a>
<a id='n8723' href='#n8723'>8723</a>
<a id='n8724' href='#n8724'>8724</a>
<a id='n8725' href='#n8725'>8725</a>
<a id='n8726' href='#n8726'>8726</a>
<a id='n8727' href='#n8727'>8727</a>
<a id='n8728' href='#n8728'>8728</a>
<a id='n8729' href='#n8729'>8729</a>
<a id='n8730' href='#n8730'>8730</a>
<a id='n8731' href='#n8731'>8731</a>
<a id='n8732' href='#n8732'>8732</a>
<a id='n8733' href='#n8733'>8733</a>
<a id='n8734' href='#n8734'>8734</a>
<a id='n8735' href='#n8735'>8735</a>
<a id='n8736' href='#n8736'>8736</a>
<a id='n8737' href='#n8737'>8737</a>
<a id='n8738' href='#n8738'>8738</a>
<a id='n8739' href='#n8739'>8739</a>
<a id='n8740' href='#n8740'>8740</a>
<a id='n8741' href='#n8741'>8741</a>
<a id='n8742' href='#n8742'>8742</a>
<a id='n8743' href='#n8743'>8743</a>
<a id='n8744' href='#n8744'>8744</a>
<a id='n8745' href='#n8745'>8745</a>
<a id='n8746' href='#n8746'>8746</a>
<a id='n8747' href='#n8747'>8747</a>
<a id='n8748' href='#n8748'>8748</a>
<a id='n8749' href='#n8749'>8749</a>
<a id='n8750' href='#n8750'>8750</a>
<a id='n8751' href='#n8751'>8751</a>
<a id='n8752' href='#n8752'>8752</a>
<a id='n8753' href='#n8753'>8753</a>
<a id='n8754' href='#n8754'>8754</a>
<a id='n8755' href='#n8755'>8755</a>
<a id='n8756' href='#n8756'>8756</a>
<a id='n8757' href='#n8757'>8757</a>
<a id='n8758' href='#n8758'>8758</a>
<a id='n8759' href='#n8759'>8759</a>
<a id='n8760' href='#n8760'>8760</a>
<a id='n8761' href='#n8761'>8761</a>
<a id='n8762' href='#n8762'>8762</a>
<a id='n8763' href='#n8763'>8763</a>
<a id='n8764' href='#n8764'>8764</a>
<a id='n8765' href='#n8765'>8765</a>
<a id='n8766' href='#n8766'>8766</a>
<a id='n8767' href='#n8767'>8767</a>
<a id='n8768' href='#n8768'>8768</a>
<a id='n8769' href='#n8769'>8769</a>
<a id='n8770' href='#n8770'>8770</a>
<a id='n8771' href='#n8771'>8771</a>
<a id='n8772' href='#n8772'>8772</a>
<a id='n8773' href='#n8773'>8773</a>
<a id='n8774' href='#n8774'>8774</a>
<a id='n8775' href='#n8775'>8775</a>
<a id='n8776' href='#n8776'>8776</a>
<a id='n8777' href='#n8777'>8777</a>
<a id='n8778' href='#n8778'>8778</a>
<a id='n8779' href='#n8779'>8779</a>
<a id='n8780' href='#n8780'>8780</a>
<a id='n8781' href='#n8781'>8781</a>
<a id='n8782' href='#n8782'>8782</a>
<a id='n8783' href='#n8783'>8783</a>
<a id='n8784' href='#n8784'>8784</a>
<a id='n8785' href='#n8785'>8785</a>
<a id='n8786' href='#n8786'>8786</a>
<a id='n8787' href='#n8787'>8787</a>
<a id='n8788' href='#n8788'>8788</a>
<a id='n8789' href='#n8789'>8789</a>
<a id='n8790' href='#n8790'>8790</a>
<a id='n8791' href='#n8791'>8791</a>
<a id='n8792' href='#n8792'>8792</a>
<a id='n8793' href='#n8793'>8793</a>
<a id='n8794' href='#n8794'>8794</a>
<a id='n8795' href='#n8795'>8795</a>
<a id='n8796' href='#n8796'>8796</a>
<a id='n8797' href='#n8797'>8797</a>
<a id='n8798' href='#n8798'>8798</a>
<a id='n8799' href='#n8799'>8799</a>
<a id='n8800' href='#n8800'>8800</a>
<a id='n8801' href='#n8801'>8801</a>
<a id='n8802' href='#n8802'>8802</a>
<a id='n8803' href='#n8803'>8803</a>
<a id='n8804' href='#n8804'>8804</a>
<a id='n8805' href='#n8805'>8805</a>
<a id='n8806' href='#n8806'>8806</a>
<a id='n8807' href='#n8807'>8807</a>
<a id='n8808' href='#n8808'>8808</a>
<a id='n8809' href='#n8809'>8809</a>
<a id='n8810' href='#n8810'>8810</a>
<a id='n8811' href='#n8811'>8811</a>
<a id='n8812' href='#n8812'>8812</a>
<a id='n8813' href='#n8813'>8813</a>
<a id='n8814' href='#n8814'>8814</a>
<a id='n8815' href='#n8815'>8815</a>
<a id='n8816' href='#n8816'>8816</a>
<a id='n8817' href='#n8817'>8817</a>
<a id='n8818' href='#n8818'>8818</a>
<a id='n8819' href='#n8819'>8819</a>
<a id='n8820' href='#n8820'>8820</a>
<a id='n8821' href='#n8821'>8821</a>
<a id='n8822' href='#n8822'>8822</a>
<a id='n8823' href='#n8823'>8823</a>
<a id='n8824' href='#n8824'>8824</a>
<a id='n8825' href='#n8825'>8825</a>
<a id='n8826' href='#n8826'>8826</a>
<a id='n8827' href='#n8827'>8827</a>
<a id='n8828' href='#n8828'>8828</a>
<a id='n8829' href='#n8829'>8829</a>
<a id='n8830' href='#n8830'>8830</a>
<a id='n8831' href='#n8831'>8831</a>
<a id='n8832' href='#n8832'>8832</a>
<a id='n8833' href='#n8833'>8833</a>
<a id='n8834' href='#n8834'>8834</a>
<a id='n8835' href='#n8835'>8835</a>
<a id='n8836' href='#n8836'>8836</a>
<a id='n8837' href='#n8837'>8837</a>
<a id='n8838' href='#n8838'>8838</a>
<a id='n8839' href='#n8839'>8839</a>
<a id='n8840' href='#n8840'>8840</a>
<a id='n8841' href='#n8841'>8841</a>
<a id='n8842' href='#n8842'>8842</a>
<a id='n8843' href='#n8843'>8843</a>
<a id='n8844' href='#n8844'>8844</a>
<a id='n8845' href='#n8845'>8845</a>
<a id='n8846' href='#n8846'>8846</a>
<a id='n8847' href='#n8847'>8847</a>
<a id='n8848' href='#n8848'>8848</a>
<a id='n8849' href='#n8849'>8849</a>
<a id='n8850' href='#n8850'>8850</a>
<a id='n8851' href='#n8851'>8851</a>
<a id='n8852' href='#n8852'>8852</a>
<a id='n8853' href='#n8853'>8853</a>
<a id='n8854' href='#n8854'>8854</a>
<a id='n8855' href='#n8855'>8855</a>
<a id='n8856' href='#n8856'>8856</a>
<a id='n8857' href='#n8857'>8857</a>
<a id='n8858' href='#n8858'>8858</a>
<a id='n8859' href='#n8859'>8859</a>
<a id='n8860' href='#n8860'>8860</a>
<a id='n8861' href='#n8861'>8861</a>
<a id='n8862' href='#n8862'>8862</a>
<a id='n8863' href='#n8863'>8863</a>
<a id='n8864' href='#n8864'>8864</a>
<a id='n8865' href='#n8865'>8865</a>
<a id='n8866' href='#n8866'>8866</a>
<a id='n8867' href='#n8867'>8867</a>
<a id='n8868' href='#n8868'>8868</a>
<a id='n8869' href='#n8869'>8869</a>
<a id='n8870' href='#n8870'>8870</a>
<a id='n8871' href='#n8871'>8871</a>
<a id='n8872' href='#n8872'>8872</a>
<a id='n8873' href='#n8873'>8873</a>
<a id='n8874' href='#n8874'>8874</a>
<a id='n8875' href='#n8875'>8875</a>
<a id='n8876' href='#n8876'>8876</a>
<a id='n8877' href='#n8877'>8877</a>
<a id='n8878' href='#n8878'>8878</a>
<a id='n8879' href='#n8879'>8879</a>
<a id='n8880' href='#n8880'>8880</a>
<a id='n8881' href='#n8881'>8881</a>
<a id='n8882' href='#n8882'>8882</a>
<a id='n8883' href='#n8883'>8883</a>
<a id='n8884' href='#n8884'>8884</a>
<a id='n8885' href='#n8885'>8885</a>
<a id='n8886' href='#n8886'>8886</a>
<a id='n8887' href='#n8887'>8887</a>
<a id='n8888' href='#n8888'>8888</a>
<a id='n8889' href='#n8889'>8889</a>
<a id='n8890' href='#n8890'>8890</a>
<a id='n8891' href='#n8891'>8891</a>
<a id='n8892' href='#n8892'>8892</a>
<a id='n8893' href='#n8893'>8893</a>
<a id='n8894' href='#n8894'>8894</a>
<a id='n8895' href='#n8895'>8895</a>
<a id='n8896' href='#n8896'>8896</a>
<a id='n8897' href='#n8897'>8897</a>
<a id='n8898' href='#n8898'>8898</a>
<a id='n8899' href='#n8899'>8899</a>
<a id='n8900' href='#n8900'>8900</a>
<a id='n8901' href='#n8901'>8901</a>
<a id='n8902' href='#n8902'>8902</a>
<a id='n8903' href='#n8903'>8903</a>
<a id='n8904' href='#n8904'>8904</a>
<a id='n8905' href='#n8905'>8905</a>
<a id='n8906' href='#n8906'>8906</a>
<a id='n8907' href='#n8907'>8907</a>
<a id='n8908' href='#n8908'>8908</a>
<a id='n8909' href='#n8909'>8909</a>
<a id='n8910' href='#n8910'>8910</a>
<a id='n8911' href='#n8911'>8911</a>
<a id='n8912' href='#n8912'>8912</a>
<a id='n8913' href='#n8913'>8913</a>
<a id='n8914' href='#n8914'>8914</a>
<a id='n8915' href='#n8915'>8915</a>
<a id='n8916' href='#n8916'>8916</a>
<a id='n8917' href='#n8917'>8917</a>
<a id='n8918' href='#n8918'>8918</a>
<a id='n8919' href='#n8919'>8919</a>
<a id='n8920' href='#n8920'>8920</a>
<a id='n8921' href='#n8921'>8921</a>
<a id='n8922' href='#n8922'>8922</a>
<a id='n8923' href='#n8923'>8923</a>
<a id='n8924' href='#n8924'>8924</a>
<a id='n8925' href='#n8925'>8925</a>
<a id='n8926' href='#n8926'>8926</a>
<a id='n8927' href='#n8927'>8927</a>
<a id='n8928' href='#n8928'>8928</a>
<a id='n8929' href='#n8929'>8929</a>
<a id='n8930' href='#n8930'>8930</a>
<a id='n8931' href='#n8931'>8931</a>
<a id='n8932' href='#n8932'>8932</a>
<a id='n8933' href='#n8933'>8933</a>
<a id='n8934' href='#n8934'>8934</a>
<a id='n8935' href='#n8935'>8935</a>
<a id='n8936' href='#n8936'>8936</a>
<a id='n8937' href='#n8937'>8937</a>
<a id='n8938' href='#n8938'>8938</a>
<a id='n8939' href='#n8939'>8939</a>
<a id='n8940' href='#n8940'>8940</a>
<a id='n8941' href='#n8941'>8941</a>
<a id='n8942' href='#n8942'>8942</a>
<a id='n8943' href='#n8943'>8943</a>
<a id='n8944' href='#n8944'>8944</a>
<a id='n8945' href='#n8945'>8945</a>
<a id='n8946' href='#n8946'>8946</a>
<a id='n8947' href='#n8947'>8947</a>
<a id='n8948' href='#n8948'>8948</a>
<a id='n8949' href='#n8949'>8949</a>
<a id='n8950' href='#n8950'>8950</a>
<a id='n8951' href='#n8951'>8951</a>
<a id='n8952' href='#n8952'>8952</a>
<a id='n8953' href='#n8953'>8953</a>
<a id='n8954' href='#n8954'>8954</a>
<a id='n8955' href='#n8955'>8955</a>
<a id='n8956' href='#n8956'>8956</a>
<a id='n8957' href='#n8957'>8957</a>
<a id='n8958' href='#n8958'>8958</a>
<a id='n8959' href='#n8959'>8959</a>
<a id='n8960' href='#n8960'>8960</a>
<a id='n8961' href='#n8961'>8961</a>
<a id='n8962' href='#n8962'>8962</a>
<a id='n8963' href='#n8963'>8963</a>
<a id='n8964' href='#n8964'>8964</a>
<a id='n8965' href='#n8965'>8965</a>
<a id='n8966' href='#n8966'>8966</a>
<a id='n8967' href='#n8967'>8967</a>
<a id='n8968' href='#n8968'>8968</a>
<a id='n8969' href='#n8969'>8969</a>
<a id='n8970' href='#n8970'>8970</a>
<a id='n8971' href='#n8971'>8971</a>
<a id='n8972' href='#n8972'>8972</a>
<a id='n8973' href='#n8973'>8973</a>
<a id='n8974' href='#n8974'>8974</a>
<a id='n8975' href='#n8975'>8975</a>
<a id='n8976' href='#n8976'>8976</a>
<a id='n8977' href='#n8977'>8977</a>
<a id='n8978' href='#n8978'>8978</a>
<a id='n8979' href='#n8979'>8979</a>
<a id='n8980' href='#n8980'>8980</a>
<a id='n8981' href='#n8981'>8981</a>
<a id='n8982' href='#n8982'>8982</a>
<a id='n8983' href='#n8983'>8983</a>
<a id='n8984' href='#n8984'>8984</a>
<a id='n8985' href='#n8985'>8985</a>
<a id='n8986' href='#n8986'>8986</a>
<a id='n8987' href='#n8987'>8987</a>
<a id='n8988' href='#n8988'>8988</a>
<a id='n8989' href='#n8989'>8989</a>
<a id='n8990' href='#n8990'>8990</a>
<a id='n8991' href='#n8991'>8991</a>
<a id='n8992' href='#n8992'>8992</a>
<a id='n8993' href='#n8993'>8993</a>
<a id='n8994' href='#n8994'>8994</a>
<a id='n8995' href='#n8995'>8995</a>
<a id='n8996' href='#n8996'>8996</a>
<a id='n8997' href='#n8997'>8997</a>
<a id='n8998' href='#n8998'>8998</a>
<a id='n8999' href='#n8999'>8999</a>
<a id='n9000' href='#n9000'>9000</a>
<a id='n9001' href='#n9001'>9001</a>
<a id='n9002' href='#n9002'>9002</a>
<a id='n9003' href='#n9003'>9003</a>
<a id='n9004' href='#n9004'>9004</a>
<a id='n9005' href='#n9005'>9005</a>
<a id='n9006' href='#n9006'>9006</a>
<a id='n9007' href='#n9007'>9007</a>
<a id='n9008' href='#n9008'>9008</a>
<a id='n9009' href='#n9009'>9009</a>
<a id='n9010' href='#n9010'>9010</a>
<a id='n9011' href='#n9011'>9011</a>
<a id='n9012' href='#n9012'>9012</a>
<a id='n9013' href='#n9013'>9013</a>
<a id='n9014' href='#n9014'>9014</a>
<a id='n9015' href='#n9015'>9015</a>
<a id='n9016' href='#n9016'>9016</a>
<a id='n9017' href='#n9017'>9017</a>
<a id='n9018' href='#n9018'>9018</a>
<a id='n9019' href='#n9019'>9019</a>
<a id='n9020' href='#n9020'>9020</a>
<a id='n9021' href='#n9021'>9021</a>
<a id='n9022' href='#n9022'>9022</a>
<a id='n9023' href='#n9023'>9023</a>
<a id='n9024' href='#n9024'>9024</a>
<a id='n9025' href='#n9025'>9025</a>
<a id='n9026' href='#n9026'>9026</a>
<a id='n9027' href='#n9027'>9027</a>
<a id='n9028' href='#n9028'>9028</a>
<a id='n9029' href='#n9029'>9029</a>
<a id='n9030' href='#n9030'>9030</a>
<a id='n9031' href='#n9031'>9031</a>
<a id='n9032' href='#n9032'>9032</a>
<a id='n9033' href='#n9033'>9033</a>
<a id='n9034' href='#n9034'>9034</a>
<a id='n9035' href='#n9035'>9035</a>
<a id='n9036' href='#n9036'>9036</a>
<a id='n9037' href='#n9037'>9037</a>
<a id='n9038' href='#n9038'>9038</a>
<a id='n9039' href='#n9039'>9039</a>
<a id='n9040' href='#n9040'>9040</a>
<a id='n9041' href='#n9041'>9041</a>
<a id='n9042' href='#n9042'>9042</a>
<a id='n9043' href='#n9043'>9043</a>
<a id='n9044' href='#n9044'>9044</a>
<a id='n9045' href='#n9045'>9045</a>
<a id='n9046' href='#n9046'>9046</a>
<a id='n9047' href='#n9047'>9047</a>
<a id='n9048' href='#n9048'>9048</a>
<a id='n9049' href='#n9049'>9049</a>
<a id='n9050' href='#n9050'>9050</a>
<a id='n9051' href='#n9051'>9051</a>
<a id='n9052' href='#n9052'>9052</a>
<a id='n9053' href='#n9053'>9053</a>
<a id='n9054' href='#n9054'>9054</a>
<a id='n9055' href='#n9055'>9055</a>
<a id='n9056' href='#n9056'>9056</a>
<a id='n9057' href='#n9057'>9057</a>
<a id='n9058' href='#n9058'>9058</a>
<a id='n9059' href='#n9059'>9059</a>
<a id='n9060' href='#n9060'>9060</a>
<a id='n9061' href='#n9061'>9061</a>
<a id='n9062' href='#n9062'>9062</a>
<a id='n9063' href='#n9063'>9063</a>
<a id='n9064' href='#n9064'>9064</a>
<a id='n9065' href='#n9065'>9065</a>
<a id='n9066' href='#n9066'>9066</a>
<a id='n9067' href='#n9067'>9067</a>
<a id='n9068' href='#n9068'>9068</a>
<a id='n9069' href='#n9069'>9069</a>
<a id='n9070' href='#n9070'>9070</a>
<a id='n9071' href='#n9071'>9071</a>
<a id='n9072' href='#n9072'>9072</a>
<a id='n9073' href='#n9073'>9073</a>
<a id='n9074' href='#n9074'>9074</a>
<a id='n9075' href='#n9075'>9075</a>
<a id='n9076' href='#n9076'>9076</a>
<a id='n9077' href='#n9077'>9077</a>
<a id='n9078' href='#n9078'>9078</a>
<a id='n9079' href='#n9079'>9079</a>
<a id='n9080' href='#n9080'>9080</a>
<a id='n9081' href='#n9081'>9081</a>
<a id='n9082' href='#n9082'>9082</a>
<a id='n9083' href='#n9083'>9083</a>
<a id='n9084' href='#n9084'>9084</a>
<a id='n9085' href='#n9085'>9085</a>
<a id='n9086' href='#n9086'>9086</a>
<a id='n9087' href='#n9087'>9087</a>
<a id='n9088' href='#n9088'>9088</a>
<a id='n9089' href='#n9089'>9089</a>
<a id='n9090' href='#n9090'>9090</a>
<a id='n9091' href='#n9091'>9091</a>
<a id='n9092' href='#n9092'>9092</a>
<a id='n9093' href='#n9093'>9093</a>
<a id='n9094' href='#n9094'>9094</a>
<a id='n9095' href='#n9095'>9095</a>
<a id='n9096' href='#n9096'>9096</a>
<a id='n9097' href='#n9097'>9097</a>
<a id='n9098' href='#n9098'>9098</a>
<a id='n9099' href='#n9099'>9099</a>
<a id='n9100' href='#n9100'>9100</a>
<a id='n9101' href='#n9101'>9101</a>
<a id='n9102' href='#n9102'>9102</a>
<a id='n9103' href='#n9103'>9103</a>
<a id='n9104' href='#n9104'>9104</a>
<a id='n9105' href='#n9105'>9105</a>
<a id='n9106' href='#n9106'>9106</a>
<a id='n9107' href='#n9107'>9107</a>
<a id='n9108' href='#n9108'>9108</a>
<a id='n9109' href='#n9109'>9109</a>
<a id='n9110' href='#n9110'>9110</a>
<a id='n9111' href='#n9111'>9111</a>
<a id='n9112' href='#n9112'>9112</a>
<a id='n9113' href='#n9113'>9113</a>
<a id='n9114' href='#n9114'>9114</a>
<a id='n9115' href='#n9115'>9115</a>
<a id='n9116' href='#n9116'>9116</a>
<a id='n9117' href='#n9117'>9117</a>
<a id='n9118' href='#n9118'>9118</a>
<a id='n9119' href='#n9119'>9119</a>
<a id='n9120' href='#n9120'>9120</a>
<a id='n9121' href='#n9121'>9121</a>
<a id='n9122' href='#n9122'>9122</a>
<a id='n9123' href='#n9123'>9123</a>
<a id='n9124' href='#n9124'>9124</a>
<a id='n9125' href='#n9125'>9125</a>
<a id='n9126' href='#n9126'>9126</a>
<a id='n9127' href='#n9127'>9127</a>
<a id='n9128' href='#n9128'>9128</a>
<a id='n9129' href='#n9129'>9129</a>
<a id='n9130' href='#n9130'>9130</a>
<a id='n9131' href='#n9131'>9131</a>
<a id='n9132' href='#n9132'>9132</a>
<a id='n9133' href='#n9133'>9133</a>
<a id='n9134' href='#n9134'>9134</a>
<a id='n9135' href='#n9135'>9135</a>
<a id='n9136' href='#n9136'>9136</a>
<a id='n9137' href='#n9137'>9137</a>
<a id='n9138' href='#n9138'>9138</a>
<a id='n9139' href='#n9139'>9139</a>
<a id='n9140' href='#n9140'>9140</a>
<a id='n9141' href='#n9141'>9141</a>
<a id='n9142' href='#n9142'>9142</a>
<a id='n9143' href='#n9143'>9143</a>
<a id='n9144' href='#n9144'>9144</a>
<a id='n9145' href='#n9145'>9145</a>
<a id='n9146' href='#n9146'>9146</a>
<a id='n9147' href='#n9147'>9147</a>
<a id='n9148' href='#n9148'>9148</a>
<a id='n9149' href='#n9149'>9149</a>
<a id='n9150' href='#n9150'>9150</a>
<a id='n9151' href='#n9151'>9151</a>
<a id='n9152' href='#n9152'>9152</a>
<a id='n9153' href='#n9153'>9153</a>
<a id='n9154' href='#n9154'>9154</a>
<a id='n9155' href='#n9155'>9155</a>
<a id='n9156' href='#n9156'>9156</a>
<a id='n9157' href='#n9157'>9157</a>
<a id='n9158' href='#n9158'>9158</a>
<a id='n9159' href='#n9159'>9159</a>
<a id='n9160' href='#n9160'>9160</a>
<a id='n9161' href='#n9161'>9161</a>
<a id='n9162' href='#n9162'>9162</a>
<a id='n9163' href='#n9163'>9163</a>
<a id='n9164' href='#n9164'>9164</a>
<a id='n9165' href='#n9165'>9165</a>
<a id='n9166' href='#n9166'>9166</a>
<a id='n9167' href='#n9167'>9167</a>
<a id='n9168' href='#n9168'>9168</a>
<a id='n9169' href='#n9169'>9169</a>
<a id='n9170' href='#n9170'>9170</a>
<a id='n9171' href='#n9171'>9171</a>
<a id='n9172' href='#n9172'>9172</a>
<a id='n9173' href='#n9173'>9173</a>
<a id='n9174' href='#n9174'>9174</a>
<a id='n9175' href='#n9175'>9175</a>
<a id='n9176' href='#n9176'>9176</a>
<a id='n9177' href='#n9177'>9177</a>
<a id='n9178' href='#n9178'>9178</a>
<a id='n9179' href='#n9179'>9179</a>
<a id='n9180' href='#n9180'>9180</a>
<a id='n9181' href='#n9181'>9181</a>
<a id='n9182' href='#n9182'>9182</a>
<a id='n9183' href='#n9183'>9183</a>
<a id='n9184' href='#n9184'>9184</a>
<a id='n9185' href='#n9185'>9185</a>
<a id='n9186' href='#n9186'>9186</a>
<a id='n9187' href='#n9187'>9187</a>
<a id='n9188' href='#n9188'>9188</a>
<a id='n9189' href='#n9189'>9189</a>
<a id='n9190' href='#n9190'>9190</a>
<a id='n9191' href='#n9191'>9191</a>
<a id='n9192' href='#n9192'>9192</a>
<a id='n9193' href='#n9193'>9193</a>
<a id='n9194' href='#n9194'>9194</a>
<a id='n9195' href='#n9195'>9195</a>
<a id='n9196' href='#n9196'>9196</a>
<a id='n9197' href='#n9197'>9197</a>
<a id='n9198' href='#n9198'>9198</a>
<a id='n9199' href='#n9199'>9199</a>
<a id='n9200' href='#n9200'>9200</a>
<a id='n9201' href='#n9201'>9201</a>
<a id='n9202' href='#n9202'>9202</a>
<a id='n9203' href='#n9203'>9203</a>
<a id='n9204' href='#n9204'>9204</a>
<a id='n9205' href='#n9205'>9205</a>
<a id='n9206' href='#n9206'>9206</a>
<a id='n9207' href='#n9207'>9207</a>
<a id='n9208' href='#n9208'>9208</a>
<a id='n9209' href='#n9209'>9209</a>
<a id='n9210' href='#n9210'>9210</a>
<a id='n9211' href='#n9211'>9211</a>
<a id='n9212' href='#n9212'>9212</a>
<a id='n9213' href='#n9213'>9213</a>
<a id='n9214' href='#n9214'>9214</a>
<a id='n9215' href='#n9215'>9215</a>
<a id='n9216' href='#n9216'>9216</a>
<a id='n9217' href='#n9217'>9217</a>
<a id='n9218' href='#n9218'>9218</a>
<a id='n9219' href='#n9219'>9219</a>
<a id='n9220' href='#n9220'>9220</a>
<a id='n9221' href='#n9221'>9221</a>
<a id='n9222' href='#n9222'>9222</a>
<a id='n9223' href='#n9223'>9223</a>
<a id='n9224' href='#n9224'>9224</a>
<a id='n9225' href='#n9225'>9225</a>
<a id='n9226' href='#n9226'>9226</a>
<a id='n9227' href='#n9227'>9227</a>
<a id='n9228' href='#n9228'>9228</a>
<a id='n9229' href='#n9229'>9229</a>
<a id='n9230' href='#n9230'>9230</a>
<a id='n9231' href='#n9231'>9231</a>
<a id='n9232' href='#n9232'>9232</a>
<a id='n9233' href='#n9233'>9233</a>
<a id='n9234' href='#n9234'>9234</a>
<a id='n9235' href='#n9235'>9235</a>
<a id='n9236' href='#n9236'>9236</a>
<a id='n9237' href='#n9237'>9237</a>
<a id='n9238' href='#n9238'>9238</a>
<a id='n9239' href='#n9239'>9239</a>
<a id='n9240' href='#n9240'>9240</a>
<a id='n9241' href='#n9241'>9241</a>
<a id='n9242' href='#n9242'>9242</a>
<a id='n9243' href='#n9243'>9243</a>
<a id='n9244' href='#n9244'>9244</a>
<a id='n9245' href='#n9245'>9245</a>
<a id='n9246' href='#n9246'>9246</a>
<a id='n9247' href='#n9247'>9247</a>
<a id='n9248' href='#n9248'>9248</a>
<a id='n9249' href='#n9249'>9249</a>
<a id='n9250' href='#n9250'>9250</a>
<a id='n9251' href='#n9251'>9251</a>
<a id='n9252' href='#n9252'>9252</a>
<a id='n9253' href='#n9253'>9253</a>
<a id='n9254' href='#n9254'>9254</a>
<a id='n9255' href='#n9255'>9255</a>
<a id='n9256' href='#n9256'>9256</a>
<a id='n9257' href='#n9257'>9257</a>
<a id='n9258' href='#n9258'>9258</a>
<a id='n9259' href='#n9259'>9259</a>
<a id='n9260' href='#n9260'>9260</a>
<a id='n9261' href='#n9261'>9261</a>
<a id='n9262' href='#n9262'>9262</a>
<a id='n9263' href='#n9263'>9263</a>
<a id='n9264' href='#n9264'>9264</a>
<a id='n9265' href='#n9265'>9265</a>
<a id='n9266' href='#n9266'>9266</a>
<a id='n9267' href='#n9267'>9267</a>
<a id='n9268' href='#n9268'>9268</a>
<a id='n9269' href='#n9269'>9269</a>
<a id='n9270' href='#n9270'>9270</a>
<a id='n9271' href='#n9271'>9271</a>
<a id='n9272' href='#n9272'>9272</a>
<a id='n9273' href='#n9273'>9273</a>
<a id='n9274' href='#n9274'>9274</a>
<a id='n9275' href='#n9275'>9275</a>
<a id='n9276' href='#n9276'>9276</a>
<a id='n9277' href='#n9277'>9277</a>
<a id='n9278' href='#n9278'>9278</a>
<a id='n9279' href='#n9279'>9279</a>
<a id='n9280' href='#n9280'>9280</a>
<a id='n9281' href='#n9281'>9281</a>
<a id='n9282' href='#n9282'>9282</a>
<a id='n9283' href='#n9283'>9283</a>
<a id='n9284' href='#n9284'>9284</a>
<a id='n9285' href='#n9285'>9285</a>
<a id='n9286' href='#n9286'>9286</a>
<a id='n9287' href='#n9287'>9287</a>
<a id='n9288' href='#n9288'>9288</a>
<a id='n9289' href='#n9289'>9289</a>
<a id='n9290' href='#n9290'>9290</a>
<a id='n9291' href='#n9291'>9291</a>
<a id='n9292' href='#n9292'>9292</a>
<a id='n9293' href='#n9293'>9293</a>
<a id='n9294' href='#n9294'>9294</a>
<a id='n9295' href='#n9295'>9295</a>
<a id='n9296' href='#n9296'>9296</a>
<a id='n9297' href='#n9297'>9297</a>
<a id='n9298' href='#n9298'>9298</a>
<a id='n9299' href='#n9299'>9299</a>
<a id='n9300' href='#n9300'>9300</a>
<a id='n9301' href='#n9301'>9301</a>
<a id='n9302' href='#n9302'>9302</a>
<a id='n9303' href='#n9303'>9303</a>
<a id='n9304' href='#n9304'>9304</a>
<a id='n9305' href='#n9305'>9305</a>
<a id='n9306' href='#n9306'>9306</a>
<a id='n9307' href='#n9307'>9307</a>
<a id='n9308' href='#n9308'>9308</a>
<a id='n9309' href='#n9309'>9309</a>
<a id='n9310' href='#n9310'>9310</a>
<a id='n9311' href='#n9311'>9311</a>
<a id='n9312' href='#n9312'>9312</a>
<a id='n9313' href='#n9313'>9313</a>
<a id='n9314' href='#n9314'>9314</a>
<a id='n9315' href='#n9315'>9315</a>
<a id='n9316' href='#n9316'>9316</a>
<a id='n9317' href='#n9317'>9317</a>
<a id='n9318' href='#n9318'>9318</a>
<a id='n9319' href='#n9319'>9319</a>
<a id='n9320' href='#n9320'>9320</a>
<a id='n9321' href='#n9321'>9321</a>
<a id='n9322' href='#n9322'>9322</a>
<a id='n9323' href='#n9323'>9323</a>
<a id='n9324' href='#n9324'>9324</a>
<a id='n9325' href='#n9325'>9325</a>
<a id='n9326' href='#n9326'>9326</a>
<a id='n9327' href='#n9327'>9327</a>
<a id='n9328' href='#n9328'>9328</a>
<a id='n9329' href='#n9329'>9329</a>
<a id='n9330' href='#n9330'>9330</a>
<a id='n9331' href='#n9331'>9331</a>
<a id='n9332' href='#n9332'>9332</a>
<a id='n9333' href='#n9333'>9333</a>
<a id='n9334' href='#n9334'>9334</a>
<a id='n9335' href='#n9335'>9335</a>
<a id='n9336' href='#n9336'>9336</a>
<a id='n9337' href='#n9337'>9337</a>
<a id='n9338' href='#n9338'>9338</a>
<a id='n9339' href='#n9339'>9339</a>
<a id='n9340' href='#n9340'>9340</a>
<a id='n9341' href='#n9341'>9341</a>
<a id='n9342' href='#n9342'>9342</a>
<a id='n9343' href='#n9343'>9343</a>
<a id='n9344' href='#n9344'>9344</a>
<a id='n9345' href='#n9345'>9345</a>
<a id='n9346' href='#n9346'>9346</a>
<a id='n9347' href='#n9347'>9347</a>
<a id='n9348' href='#n9348'>9348</a>
<a id='n9349' href='#n9349'>9349</a>
<a id='n9350' href='#n9350'>9350</a>
<a id='n9351' href='#n9351'>9351</a>
<a id='n9352' href='#n9352'>9352</a>
<a id='n9353' href='#n9353'>9353</a>
<a id='n9354' href='#n9354'>9354</a>
<a id='n9355' href='#n9355'>9355</a>
<a id='n9356' href='#n9356'>9356</a>
<a id='n9357' href='#n9357'>9357</a>
<a id='n9358' href='#n9358'>9358</a>
<a id='n9359' href='#n9359'>9359</a>
<a id='n9360' href='#n9360'>9360</a>
<a id='n9361' href='#n9361'>9361</a>
<a id='n9362' href='#n9362'>9362</a>
<a id='n9363' href='#n9363'>9363</a>
<a id='n9364' href='#n9364'>9364</a>
<a id='n9365' href='#n9365'>9365</a>
<a id='n9366' href='#n9366'>9366</a>
<a id='n9367' href='#n9367'>9367</a>
<a id='n9368' href='#n9368'>9368</a>
<a id='n9369' href='#n9369'>9369</a>
<a id='n9370' href='#n9370'>9370</a>
<a id='n9371' href='#n9371'>9371</a>
<a id='n9372' href='#n9372'>9372</a>
<a id='n9373' href='#n9373'>9373</a>
<a id='n9374' href='#n9374'>9374</a>
<a id='n9375' href='#n9375'>9375</a>
<a id='n9376' href='#n9376'>9376</a>
<a id='n9377' href='#n9377'>9377</a>
<a id='n9378' href='#n9378'>9378</a>
<a id='n9379' href='#n9379'>9379</a>
<a id='n9380' href='#n9380'>9380</a>
<a id='n9381' href='#n9381'>9381</a>
<a id='n9382' href='#n9382'>9382</a>
<a id='n9383' href='#n9383'>9383</a>
<a id='n9384' href='#n9384'>9384</a>
<a id='n9385' href='#n9385'>9385</a>
<a id='n9386' href='#n9386'>9386</a>
<a id='n9387' href='#n9387'>9387</a>
<a id='n9388' href='#n9388'>9388</a>
<a id='n9389' href='#n9389'>9389</a>
<a id='n9390' href='#n9390'>9390</a>
<a id='n9391' href='#n9391'>9391</a>
<a id='n9392' href='#n9392'>9392</a>
<a id='n9393' href='#n9393'>9393</a>
<a id='n9394' href='#n9394'>9394</a>
<a id='n9395' href='#n9395'>9395</a>
<a id='n9396' href='#n9396'>9396</a>
<a id='n9397' href='#n9397'>9397</a>
<a id='n9398' href='#n9398'>9398</a>
<a id='n9399' href='#n9399'>9399</a>
<a id='n9400' href='#n9400'>9400</a>
<a id='n9401' href='#n9401'>9401</a>
<a id='n9402' href='#n9402'>9402</a>
<a id='n9403' href='#n9403'>9403</a>
<a id='n9404' href='#n9404'>9404</a>
<a id='n9405' href='#n9405'>9405</a>
<a id='n9406' href='#n9406'>9406</a>
<a id='n9407' href='#n9407'>9407</a>
<a id='n9408' href='#n9408'>9408</a>
<a id='n9409' href='#n9409'>9409</a>
<a id='n9410' href='#n9410'>9410</a>
<a id='n9411' href='#n9411'>9411</a>
<a id='n9412' href='#n9412'>9412</a>
<a id='n9413' href='#n9413'>9413</a>
<a id='n9414' href='#n9414'>9414</a>
<a id='n9415' href='#n9415'>9415</a>
<a id='n9416' href='#n9416'>9416</a>
<a id='n9417' href='#n9417'>9417</a>
<a id='n9418' href='#n9418'>9418</a>
<a id='n9419' href='#n9419'>9419</a>
<a id='n9420' href='#n9420'>9420</a>
<a id='n9421' href='#n9421'>9421</a>
<a id='n9422' href='#n9422'>9422</a>
<a id='n9423' href='#n9423'>9423</a>
<a id='n9424' href='#n9424'>9424</a>
<a id='n9425' href='#n9425'>9425</a>
<a id='n9426' href='#n9426'>9426</a>
<a id='n9427' href='#n9427'>9427</a>
<a id='n9428' href='#n9428'>9428</a>
<a id='n9429' href='#n9429'>9429</a>
<a id='n9430' href='#n9430'>9430</a>
<a id='n9431' href='#n9431'>9431</a>
<a id='n9432' href='#n9432'>9432</a>
<a id='n9433' href='#n9433'>9433</a>
<a id='n9434' href='#n9434'>9434</a>
<a id='n9435' href='#n9435'>9435</a>
<a id='n9436' href='#n9436'>9436</a>
<a id='n9437' href='#n9437'>9437</a>
<a id='n9438' href='#n9438'>9438</a>
<a id='n9439' href='#n9439'>9439</a>
<a id='n9440' href='#n9440'>9440</a>
<a id='n9441' href='#n9441'>9441</a>
<a id='n9442' href='#n9442'>9442</a>
<a id='n9443' href='#n9443'>9443</a>
<a id='n9444' href='#n9444'>9444</a>
<a id='n9445' href='#n9445'>9445</a>
<a id='n9446' href='#n9446'>9446</a>
<a id='n9447' href='#n9447'>9447</a>
<a id='n9448' href='#n9448'>9448</a>
<a id='n9449' href='#n9449'>9449</a>
<a id='n9450' href='#n9450'>9450</a>
<a id='n9451' href='#n9451'>9451</a>
<a id='n9452' href='#n9452'>9452</a>
<a id='n9453' href='#n9453'>9453</a>
<a id='n9454' href='#n9454'>9454</a>
<a id='n9455' href='#n9455'>9455</a>
<a id='n9456' href='#n9456'>9456</a>
<a id='n9457' href='#n9457'>9457</a>
<a id='n9458' href='#n9458'>9458</a>
<a id='n9459' href='#n9459'>9459</a>
<a id='n9460' href='#n9460'>9460</a>
<a id='n9461' href='#n9461'>9461</a>
<a id='n9462' href='#n9462'>9462</a>
<a id='n9463' href='#n9463'>9463</a>
<a id='n9464' href='#n9464'>9464</a>
<a id='n9465' href='#n9465'>9465</a>
<a id='n9466' href='#n9466'>9466</a>
<a id='n9467' href='#n9467'>9467</a>
<a id='n9468' href='#n9468'>9468</a>
<a id='n9469' href='#n9469'>9469</a>
<a id='n9470' href='#n9470'>9470</a>
<a id='n9471' href='#n9471'>9471</a>
<a id='n9472' href='#n9472'>9472</a>
<a id='n9473' href='#n9473'>9473</a>
<a id='n9474' href='#n9474'>9474</a>
<a id='n9475' href='#n9475'>9475</a>
<a id='n9476' href='#n9476'>9476</a>
<a id='n9477' href='#n9477'>9477</a>
<a id='n9478' href='#n9478'>9478</a>
<a id='n9479' href='#n9479'>9479</a>
<a id='n9480' href='#n9480'>9480</a>
<a id='n9481' href='#n9481'>9481</a>
<a id='n9482' href='#n9482'>9482</a>
<a id='n9483' href='#n9483'>9483</a>
<a id='n9484' href='#n9484'>9484</a>
<a id='n9485' href='#n9485'>9485</a>
<a id='n9486' href='#n9486'>9486</a>
<a id='n9487' href='#n9487'>9487</a>
<a id='n9488' href='#n9488'>9488</a>
<a id='n9489' href='#n9489'>9489</a>
<a id='n9490' href='#n9490'>9490</a>
<a id='n9491' href='#n9491'>9491</a>
<a id='n9492' href='#n9492'>9492</a>
<a id='n9493' href='#n9493'>9493</a>
<a id='n9494' href='#n9494'>9494</a>
<a id='n9495' href='#n9495'>9495</a>
<a id='n9496' href='#n9496'>9496</a>
<a id='n9497' href='#n9497'>9497</a>
<a id='n9498' href='#n9498'>9498</a>
<a id='n9499' href='#n9499'>9499</a>
<a id='n9500' href='#n9500'>9500</a>
<a id='n9501' href='#n9501'>9501</a>
<a id='n9502' href='#n9502'>9502</a>
<a id='n9503' href='#n9503'>9503</a>
<a id='n9504' href='#n9504'>9504</a>
<a id='n9505' href='#n9505'>9505</a>
<a id='n9506' href='#n9506'>9506</a>
<a id='n9507' href='#n9507'>9507</a>
<a id='n9508' href='#n9508'>9508</a>
<a id='n9509' href='#n9509'>9509</a>
<a id='n9510' href='#n9510'>9510</a>
<a id='n9511' href='#n9511'>9511</a>
<a id='n9512' href='#n9512'>9512</a>
<a id='n9513' href='#n9513'>9513</a>
<a id='n9514' href='#n9514'>9514</a>
<a id='n9515' href='#n9515'>9515</a>
<a id='n9516' href='#n9516'>9516</a>
<a id='n9517' href='#n9517'>9517</a>
<a id='n9518' href='#n9518'>9518</a>
<a id='n9519' href='#n9519'>9519</a>
<a id='n9520' href='#n9520'>9520</a>
<a id='n9521' href='#n9521'>9521</a>
<a id='n9522' href='#n9522'>9522</a>
<a id='n9523' href='#n9523'>9523</a>
<a id='n9524' href='#n9524'>9524</a>
<a id='n9525' href='#n9525'>9525</a>
<a id='n9526' href='#n9526'>9526</a>
<a id='n9527' href='#n9527'>9527</a>
<a id='n9528' href='#n9528'>9528</a>
<a id='n9529' href='#n9529'>9529</a>
<a id='n9530' href='#n9530'>9530</a>
<a id='n9531' href='#n9531'>9531</a>
<a id='n9532' href='#n9532'>9532</a>
<a id='n9533' href='#n9533'>9533</a>
<a id='n9534' href='#n9534'>9534</a>
<a id='n9535' href='#n9535'>9535</a>
<a id='n9536' href='#n9536'>9536</a>
<a id='n9537' href='#n9537'>9537</a>
<a id='n9538' href='#n9538'>9538</a>
<a id='n9539' href='#n9539'>9539</a>
<a id='n9540' href='#n9540'>9540</a>
<a id='n9541' href='#n9541'>9541</a>
<a id='n9542' href='#n9542'>9542</a>
<a id='n9543' href='#n9543'>9543</a>
<a id='n9544' href='#n9544'>9544</a>
<a id='n9545' href='#n9545'>9545</a>
<a id='n9546' href='#n9546'>9546</a>
<a id='n9547' href='#n9547'>9547</a>
<a id='n9548' href='#n9548'>9548</a>
<a id='n9549' href='#n9549'>9549</a>
<a id='n9550' href='#n9550'>9550</a>
<a id='n9551' href='#n9551'>9551</a>
<a id='n9552' href='#n9552'>9552</a>
<a id='n9553' href='#n9553'>9553</a>
<a id='n9554' href='#n9554'>9554</a>
<a id='n9555' href='#n9555'>9555</a>
<a id='n9556' href='#n9556'>9556</a>
<a id='n9557' href='#n9557'>9557</a>
<a id='n9558' href='#n9558'>9558</a>
<a id='n9559' href='#n9559'>9559</a>
<a id='n9560' href='#n9560'>9560</a>
<a id='n9561' href='#n9561'>9561</a>
<a id='n9562' href='#n9562'>9562</a>
<a id='n9563' href='#n9563'>9563</a>
<a id='n9564' href='#n9564'>9564</a>
<a id='n9565' href='#n9565'>9565</a>
<a id='n9566' href='#n9566'>9566</a>
<a id='n9567' href='#n9567'>9567</a>
<a id='n9568' href='#n9568'>9568</a>
<a id='n9569' href='#n9569'>9569</a>
<a id='n9570' href='#n9570'>9570</a>
<a id='n9571' href='#n9571'>9571</a>
<a id='n9572' href='#n9572'>9572</a>
<a id='n9573' href='#n9573'>9573</a>
<a id='n9574' href='#n9574'>9574</a>
<a id='n9575' href='#n9575'>9575</a>
<a id='n9576' href='#n9576'>9576</a>
<a id='n9577' href='#n9577'>9577</a>
<a id='n9578' href='#n9578'>9578</a>
<a id='n9579' href='#n9579'>9579</a>
<a id='n9580' href='#n9580'>9580</a>
<a id='n9581' href='#n9581'>9581</a>
<a id='n9582' href='#n9582'>9582</a>
<a id='n9583' href='#n9583'>9583</a>
<a id='n9584' href='#n9584'>9584</a>
<a id='n9585' href='#n9585'>9585</a>
<a id='n9586' href='#n9586'>9586</a>
<a id='n9587' href='#n9587'>9587</a>
<a id='n9588' href='#n9588'>9588</a>
<a id='n9589' href='#n9589'>9589</a>
<a id='n9590' href='#n9590'>9590</a>
<a id='n9591' href='#n9591'>9591</a>
<a id='n9592' href='#n9592'>9592</a>
<a id='n9593' href='#n9593'>9593</a>
<a id='n9594' href='#n9594'>9594</a>
<a id='n9595' href='#n9595'>9595</a>
<a id='n9596' href='#n9596'>9596</a>
<a id='n9597' href='#n9597'>9597</a>
<a id='n9598' href='#n9598'>9598</a>
<a id='n9599' href='#n9599'>9599</a>
<a id='n9600' href='#n9600'>9600</a>
<a id='n9601' href='#n9601'>9601</a>
<a id='n9602' href='#n9602'>9602</a>
<a id='n9603' href='#n9603'>9603</a>
<a id='n9604' href='#n9604'>9604</a>
<a id='n9605' href='#n9605'>9605</a>
<a id='n9606' href='#n9606'>9606</a>
<a id='n9607' href='#n9607'>9607</a>
<a id='n9608' href='#n9608'>9608</a>
<a id='n9609' href='#n9609'>9609</a>
<a id='n9610' href='#n9610'>9610</a>
<a id='n9611' href='#n9611'>9611</a>
<a id='n9612' href='#n9612'>9612</a>
<a id='n9613' href='#n9613'>9613</a>
<a id='n9614' href='#n9614'>9614</a>
<a id='n9615' href='#n9615'>9615</a>
<a id='n9616' href='#n9616'>9616</a>
<a id='n9617' href='#n9617'>9617</a>
<a id='n9618' href='#n9618'>9618</a>
<a id='n9619' href='#n9619'>9619</a>
<a id='n9620' href='#n9620'>9620</a>
<a id='n9621' href='#n9621'>9621</a>
<a id='n9622' href='#n9622'>9622</a>
<a id='n9623' href='#n9623'>9623</a>
<a id='n9624' href='#n9624'>9624</a>
<a id='n9625' href='#n9625'>9625</a>
<a id='n9626' href='#n9626'>9626</a>
<a id='n9627' href='#n9627'>9627</a>
<a id='n9628' href='#n9628'>9628</a>
<a id='n9629' href='#n9629'>9629</a>
<a id='n9630' href='#n9630'>9630</a>
<a id='n9631' href='#n9631'>9631</a>
<a id='n9632' href='#n9632'>9632</a>
<a id='n9633' href='#n9633'>9633</a>
<a id='n9634' href='#n9634'>9634</a>
<a id='n9635' href='#n9635'>9635</a>
<a id='n9636' href='#n9636'>9636</a>
<a id='n9637' href='#n9637'>9637</a>
<a id='n9638' href='#n9638'>9638</a>
<a id='n9639' href='#n9639'>9639</a>
<a id='n9640' href='#n9640'>9640</a>
<a id='n9641' href='#n9641'>9641</a>
<a id='n9642' href='#n9642'>9642</a>
<a id='n9643' href='#n9643'>9643</a>
<a id='n9644' href='#n9644'>9644</a>
<a id='n9645' href='#n9645'>9645</a>
<a id='n9646' href='#n9646'>9646</a>
<a id='n9647' href='#n9647'>9647</a>
<a id='n9648' href='#n9648'>9648</a>
<a id='n9649' href='#n9649'>9649</a>
<a id='n9650' href='#n9650'>9650</a>
<a id='n9651' href='#n9651'>9651</a>
<a id='n9652' href='#n9652'>9652</a>
<a id='n9653' href='#n9653'>9653</a>
<a id='n9654' href='#n9654'>9654</a>
<a id='n9655' href='#n9655'>9655</a>
<a id='n9656' href='#n9656'>9656</a>
<a id='n9657' href='#n9657'>9657</a>
<a id='n9658' href='#n9658'>9658</a>
<a id='n9659' href='#n9659'>9659</a>
<a id='n9660' href='#n9660'>9660</a>
<a id='n9661' href='#n9661'>9661</a>
<a id='n9662' href='#n9662'>9662</a>
<a id='n9663' href='#n9663'>9663</a>
<a id='n9664' href='#n9664'>9664</a>
<a id='n9665' href='#n9665'>9665</a>
<a id='n9666' href='#n9666'>9666</a>
<a id='n9667' href='#n9667'>9667</a>
<a id='n9668' href='#n9668'>9668</a>
<a id='n9669' href='#n9669'>9669</a>
<a id='n9670' href='#n9670'>9670</a>
<a id='n9671' href='#n9671'>9671</a>
<a id='n9672' href='#n9672'>9672</a>
<a id='n9673' href='#n9673'>9673</a>
<a id='n9674' href='#n9674'>9674</a>
<a id='n9675' href='#n9675'>9675</a>
<a id='n9676' href='#n9676'>9676</a>
<a id='n9677' href='#n9677'>9677</a>
<a id='n9678' href='#n9678'>9678</a>
<a id='n9679' href='#n9679'>9679</a>
<a id='n9680' href='#n9680'>9680</a>
<a id='n9681' href='#n9681'>9681</a>
<a id='n9682' href='#n9682'>9682</a>
<a id='n9683' href='#n9683'>9683</a>
<a id='n9684' href='#n9684'>9684</a>
<a id='n9685' href='#n9685'>9685</a>
<a id='n9686' href='#n9686'>9686</a>
<a id='n9687' href='#n9687'>9687</a>
<a id='n9688' href='#n9688'>9688</a>
<a id='n9689' href='#n9689'>9689</a>
<a id='n9690' href='#n9690'>9690</a>
<a id='n9691' href='#n9691'>9691</a>
<a id='n9692' href='#n9692'>9692</a>
<a id='n9693' href='#n9693'>9693</a>
<a id='n9694' href='#n9694'>9694</a>
<a id='n9695' href='#n9695'>9695</a>
<a id='n9696' href='#n9696'>9696</a>
<a id='n9697' href='#n9697'>9697</a>
<a id='n9698' href='#n9698'>9698</a>
<a id='n9699' href='#n9699'>9699</a>
<a id='n9700' href='#n9700'>9700</a>
<a id='n9701' href='#n9701'>9701</a>
<a id='n9702' href='#n9702'>9702</a>
<a id='n9703' href='#n9703'>9703</a>
<a id='n9704' href='#n9704'>9704</a>
<a id='n9705' href='#n9705'>9705</a>
<a id='n9706' href='#n9706'>9706</a>
<a id='n9707' href='#n9707'>9707</a>
<a id='n9708' href='#n9708'>9708</a>
<a id='n9709' href='#n9709'>9709</a>
<a id='n9710' href='#n9710'>9710</a>
<a id='n9711' href='#n9711'>9711</a>
<a id='n9712' href='#n9712'>9712</a>
<a id='n9713' href='#n9713'>9713</a>
<a id='n9714' href='#n9714'>9714</a>
<a id='n9715' href='#n9715'>9715</a>
<a id='n9716' href='#n9716'>9716</a>
<a id='n9717' href='#n9717'>9717</a>
<a id='n9718' href='#n9718'>9718</a>
<a id='n9719' href='#n9719'>9719</a>
<a id='n9720' href='#n9720'>9720</a>
<a id='n9721' href='#n9721'>9721</a>
<a id='n9722' href='#n9722'>9722</a>
<a id='n9723' href='#n9723'>9723</a>
<a id='n9724' href='#n9724'>9724</a>
<a id='n9725' href='#n9725'>9725</a>
<a id='n9726' href='#n9726'>9726</a>
<a id='n9727' href='#n9727'>9727</a>
<a id='n9728' href='#n9728'>9728</a>
<a id='n9729' href='#n9729'>9729</a>
<a id='n9730' href='#n9730'>9730</a>
<a id='n9731' href='#n9731'>9731</a>
<a id='n9732' href='#n9732'>9732</a>
<a id='n9733' href='#n9733'>9733</a>
<a id='n9734' href='#n9734'>9734</a>
<a id='n9735' href='#n9735'>9735</a>
<a id='n9736' href='#n9736'>9736</a>
<a id='n9737' href='#n9737'>9737</a>
<a id='n9738' href='#n9738'>9738</a>
<a id='n9739' href='#n9739'>9739</a>
<a id='n9740' href='#n9740'>9740</a>
<a id='n9741' href='#n9741'>9741</a>
<a id='n9742' href='#n9742'>9742</a>
<a id='n9743' href='#n9743'>9743</a>
<a id='n9744' href='#n9744'>9744</a>
<a id='n9745' href='#n9745'>9745</a>
<a id='n9746' href='#n9746'>9746</a>
<a id='n9747' href='#n9747'>9747</a>
<a id='n9748' href='#n9748'>9748</a>
<a id='n9749' href='#n9749'>9749</a>
<a id='n9750' href='#n9750'>9750</a>
<a id='n9751' href='#n9751'>9751</a>
<a id='n9752' href='#n9752'>9752</a>
<a id='n9753' href='#n9753'>9753</a>
<a id='n9754' href='#n9754'>9754</a>
<a id='n9755' href='#n9755'>9755</a>
<a id='n9756' href='#n9756'>9756</a>
<a id='n9757' href='#n9757'>9757</a>
<a id='n9758' href='#n9758'>9758</a>
<a id='n9759' href='#n9759'>9759</a>
<a id='n9760' href='#n9760'>9760</a>
<a id='n9761' href='#n9761'>9761</a>
<a id='n9762' href='#n9762'>9762</a>
<a id='n9763' href='#n9763'>9763</a>
<a id='n9764' href='#n9764'>9764</a>
<a id='n9765' href='#n9765'>9765</a>
<a id='n9766' href='#n9766'>9766</a>
<a id='n9767' href='#n9767'>9767</a>
<a id='n9768' href='#n9768'>9768</a>
<a id='n9769' href='#n9769'>9769</a>
<a id='n9770' href='#n9770'>9770</a>
<a id='n9771' href='#n9771'>9771</a>
<a id='n9772' href='#n9772'>9772</a>
<a id='n9773' href='#n9773'>9773</a>
<a id='n9774' href='#n9774'>9774</a>
<a id='n9775' href='#n9775'>9775</a>
<a id='n9776' href='#n9776'>9776</a>
<a id='n9777' href='#n9777'>9777</a>
<a id='n9778' href='#n9778'>9778</a>
<a id='n9779' href='#n9779'>9779</a>
<a id='n9780' href='#n9780'>9780</a>
<a id='n9781' href='#n9781'>9781</a>
<a id='n9782' href='#n9782'>9782</a>
<a id='n9783' href='#n9783'>9783</a>
<a id='n9784' href='#n9784'>9784</a>
<a id='n9785' href='#n9785'>9785</a>
<a id='n9786' href='#n9786'>9786</a>
<a id='n9787' href='#n9787'>9787</a>
<a id='n9788' href='#n9788'>9788</a>
<a id='n9789' href='#n9789'>9789</a>
<a id='n9790' href='#n9790'>9790</a>
<a id='n9791' href='#n9791'>9791</a>
<a id='n9792' href='#n9792'>9792</a>
<a id='n9793' href='#n9793'>9793</a>
<a id='n9794' href='#n9794'>9794</a>
<a id='n9795' href='#n9795'>9795</a>
<a id='n9796' href='#n9796'>9796</a>
<a id='n9797' href='#n9797'>9797</a>
<a id='n9798' href='#n9798'>9798</a>
<a id='n9799' href='#n9799'>9799</a>
<a id='n9800' href='#n9800'>9800</a>
<a id='n9801' href='#n9801'>9801</a>
<a id='n9802' href='#n9802'>9802</a>
<a id='n9803' href='#n9803'>9803</a>
<a id='n9804' href='#n9804'>9804</a>
<a id='n9805' href='#n9805'>9805</a>
<a id='n9806' href='#n9806'>9806</a>
<a id='n9807' href='#n9807'>9807</a>
<a id='n9808' href='#n9808'>9808</a>
<a id='n9809' href='#n9809'>9809</a>
<a id='n9810' href='#n9810'>9810</a>
<a id='n9811' href='#n9811'>9811</a>
<a id='n9812' href='#n9812'>9812</a>
<a id='n9813' href='#n9813'>9813</a>
<a id='n9814' href='#n9814'>9814</a>
<a id='n9815' href='#n9815'>9815</a>
<a id='n9816' href='#n9816'>9816</a>
<a id='n9817' href='#n9817'>9817</a>
<a id='n9818' href='#n9818'>9818</a>
<a id='n9819' href='#n9819'>9819</a>
<a id='n9820' href='#n9820'>9820</a>
<a id='n9821' href='#n9821'>9821</a>
<a id='n9822' href='#n9822'>9822</a>
<a id='n9823' href='#n9823'>9823</a>
<a id='n9824' href='#n9824'>9824</a>
<a id='n9825' href='#n9825'>9825</a>
<a id='n9826' href='#n9826'>9826</a>
<a id='n9827' href='#n9827'>9827</a>
<a id='n9828' href='#n9828'>9828</a>
<a id='n9829' href='#n9829'>9829</a>
<a id='n9830' href='#n9830'>9830</a>
<a id='n9831' href='#n9831'>9831</a>
<a id='n9832' href='#n9832'>9832</a>
<a id='n9833' href='#n9833'>9833</a>
<a id='n9834' href='#n9834'>9834</a>
<a id='n9835' href='#n9835'>9835</a>
<a id='n9836' href='#n9836'>9836</a>
<a id='n9837' href='#n9837'>9837</a>
<a id='n9838' href='#n9838'>9838</a>
<a id='n9839' href='#n9839'>9839</a>
<a id='n9840' href='#n9840'>9840</a>
<a id='n9841' href='#n9841'>9841</a>
<a id='n9842' href='#n9842'>9842</a>
<a id='n9843' href='#n9843'>9843</a>
<a id='n9844' href='#n9844'>9844</a>
<a id='n9845' href='#n9845'>9845</a>
<a id='n9846' href='#n9846'>9846</a>
<a id='n9847' href='#n9847'>9847</a>
<a id='n9848' href='#n9848'>9848</a>
<a id='n9849' href='#n9849'>9849</a>
<a id='n9850' href='#n9850'>9850</a>
<a id='n9851' href='#n9851'>9851</a>
<a id='n9852' href='#n9852'>9852</a>
<a id='n9853' href='#n9853'>9853</a>
<a id='n9854' href='#n9854'>9854</a>
<a id='n9855' href='#n9855'>9855</a>
<a id='n9856' href='#n9856'>9856</a>
<a id='n9857' href='#n9857'>9857</a>
<a id='n9858' href='#n9858'>9858</a>
<a id='n9859' href='#n9859'>9859</a>
<a id='n9860' href='#n9860'>9860</a>
<a id='n9861' href='#n9861'>9861</a>
<a id='n9862' href='#n9862'>9862</a>
<a id='n9863' href='#n9863'>9863</a>
<a id='n9864' href='#n9864'>9864</a>
<a id='n9865' href='#n9865'>9865</a>
<a id='n9866' href='#n9866'>9866</a>
<a id='n9867' href='#n9867'>9867</a>
<a id='n9868' href='#n9868'>9868</a>
<a id='n9869' href='#n9869'>9869</a>
<a id='n9870' href='#n9870'>9870</a>
<a id='n9871' href='#n9871'>9871</a>
<a id='n9872' href='#n9872'>9872</a>
<a id='n9873' href='#n9873'>9873</a>
<a id='n9874' href='#n9874'>9874</a>
<a id='n9875' href='#n9875'>9875</a>
<a id='n9876' href='#n9876'>9876</a>
<a id='n9877' href='#n9877'>9877</a>
<a id='n9878' href='#n9878'>9878</a>
<a id='n9879' href='#n9879'>9879</a>
<a id='n9880' href='#n9880'>9880</a>
<a id='n9881' href='#n9881'>9881</a>
<a id='n9882' href='#n9882'>9882</a>
<a id='n9883' href='#n9883'>9883</a>
<a id='n9884' href='#n9884'>9884</a>
<a id='n9885' href='#n9885'>9885</a>
<a id='n9886' href='#n9886'>9886</a>
<a id='n9887' href='#n9887'>9887</a>
<a id='n9888' href='#n9888'>9888</a>
<a id='n9889' href='#n9889'>9889</a>
<a id='n9890' href='#n9890'>9890</a>
<a id='n9891' href='#n9891'>9891</a>
<a id='n9892' href='#n9892'>9892</a>
<a id='n9893' href='#n9893'>9893</a>
<a id='n9894' href='#n9894'>9894</a>
<a id='n9895' href='#n9895'>9895</a>
<a id='n9896' href='#n9896'>9896</a>
<a id='n9897' href='#n9897'>9897</a>
<a id='n9898' href='#n9898'>9898</a>
<a id='n9899' href='#n9899'>9899</a>
<a id='n9900' href='#n9900'>9900</a>
<a id='n9901' href='#n9901'>9901</a>
<a id='n9902' href='#n9902'>9902</a>
<a id='n9903' href='#n9903'>9903</a>
<a id='n9904' href='#n9904'>9904</a>
<a id='n9905' href='#n9905'>9905</a>
<a id='n9906' href='#n9906'>9906</a>
<a id='n9907' href='#n9907'>9907</a>
<a id='n9908' href='#n9908'>9908</a>
<a id='n9909' href='#n9909'>9909</a>
<a id='n9910' href='#n9910'>9910</a>
<a id='n9911' href='#n9911'>9911</a>
<a id='n9912' href='#n9912'>9912</a>
<a id='n9913' href='#n9913'>9913</a>
<a id='n9914' href='#n9914'>9914</a>
<a id='n9915' href='#n9915'>9915</a>
<a id='n9916' href='#n9916'>9916</a>
<a id='n9917' href='#n9917'>9917</a>
<a id='n9918' href='#n9918'>9918</a>
<a id='n9919' href='#n9919'>9919</a>
<a id='n9920' href='#n9920'>9920</a>
<a id='n9921' href='#n9921'>9921</a>
<a id='n9922' href='#n9922'>9922</a>
<a id='n9923' href='#n9923'>9923</a>
<a id='n9924' href='#n9924'>9924</a>
<a id='n9925' href='#n9925'>9925</a>
<a id='n9926' href='#n9926'>9926</a>
<a id='n9927' href='#n9927'>9927</a>
<a id='n9928' href='#n9928'>9928</a>
<a id='n9929' href='#n9929'>9929</a>
<a id='n9930' href='#n9930'>9930</a>
<a id='n9931' href='#n9931'>9931</a>
<a id='n9932' href='#n9932'>9932</a>
<a id='n9933' href='#n9933'>9933</a>
<a id='n9934' href='#n9934'>9934</a>
<a id='n9935' href='#n9935'>9935</a>
<a id='n9936' href='#n9936'>9936</a>
<a id='n9937' href='#n9937'>9937</a>
<a id='n9938' href='#n9938'>9938</a>
<a id='n9939' href='#n9939'>9939</a>
<a id='n9940' href='#n9940'>9940</a>
<a id='n9941' href='#n9941'>9941</a>
<a id='n9942' href='#n9942'>9942</a>
<a id='n9943' href='#n9943'>9943</a>
<a id='n9944' href='#n9944'>9944</a>
<a id='n9945' href='#n9945'>9945</a>
<a id='n9946' href='#n9946'>9946</a>
<a id='n9947' href='#n9947'>9947</a>
<a id='n9948' href='#n9948'>9948</a>
<a id='n9949' href='#n9949'>9949</a>
<a id='n9950' href='#n9950'>9950</a>
<a id='n9951' href='#n9951'>9951</a>
<a id='n9952' href='#n9952'>9952</a>
<a id='n9953' href='#n9953'>9953</a>
<a id='n9954' href='#n9954'>9954</a>
<a id='n9955' href='#n9955'>9955</a>
<a id='n9956' href='#n9956'>9956</a>
<a id='n9957' href='#n9957'>9957</a>
<a id='n9958' href='#n9958'>9958</a>
<a id='n9959' href='#n9959'>9959</a>
<a id='n9960' href='#n9960'>9960</a>
<a id='n9961' href='#n9961'>9961</a>
<a id='n9962' href='#n9962'>9962</a>
<a id='n9963' href='#n9963'>9963</a>
<a id='n9964' href='#n9964'>9964</a>
<a id='n9965' href='#n9965'>9965</a>
<a id='n9966' href='#n9966'>9966</a>
<a id='n9967' href='#n9967'>9967</a>
<a id='n9968' href='#n9968'>9968</a>
<a id='n9969' href='#n9969'>9969</a>
<a id='n9970' href='#n9970'>9970</a>
<a id='n9971' href='#n9971'>9971</a>
<a id='n9972' href='#n9972'>9972</a>
<a id='n9973' href='#n9973'>9973</a>
<a id='n9974' href='#n9974'>9974</a>
<a id='n9975' href='#n9975'>9975</a>
<a id='n9976' href='#n9976'>9976</a>
<a id='n9977' href='#n9977'>9977</a>
<a id='n9978' href='#n9978'>9978</a>
<a id='n9979' href='#n9979'>9979</a>
<a id='n9980' href='#n9980'>9980</a>
<a id='n9981' href='#n9981'>9981</a>
<a id='n9982' href='#n9982'>9982</a>
<a id='n9983' href='#n9983'>9983</a>
<a id='n9984' href='#n9984'>9984</a>
<a id='n9985' href='#n9985'>9985</a>
<a id='n9986' href='#n9986'>9986</a>
<a id='n9987' href='#n9987'>9987</a>
<a id='n9988' href='#n9988'>9988</a>
<a id='n9989' href='#n9989'>9989</a>
<a id='n9990' href='#n9990'>9990</a>
<a id='n9991' href='#n9991'>9991</a>
<a id='n9992' href='#n9992'>9992</a>
<a id='n9993' href='#n9993'>9993</a>
<a id='n9994' href='#n9994'>9994</a>
<a id='n9995' href='#n9995'>9995</a>
<a id='n9996' href='#n9996'>9996</a>
<a id='n9997' href='#n9997'>9997</a>
<a id='n9998' href='#n9998'>9998</a>
<a id='n9999' href='#n9999'>9999</a>
<a id='n10000' href='#n10000'>10000</a>
<a id='n10001' href='#n10001'>10001</a>
<a id='n10002' href='#n10002'>10002</a>
<a id='n10003' href='#n10003'>10003</a>
<a id='n10004' href='#n10004'>10004</a>
<a id='n10005' href='#n10005'>10005</a>
<a id='n10006' href='#n10006'>10006</a>
<a id='n10007' href='#n10007'>10007</a>
<a id='n10008' href='#n10008'>10008</a>
<a id='n10009' href='#n10009'>10009</a>
<a id='n10010' href='#n10010'>10010</a>
<a id='n10011' href='#n10011'>10011</a>
<a id='n10012' href='#n10012'>10012</a>
<a id='n10013' href='#n10013'>10013</a>
<a id='n10014' href='#n10014'>10014</a>
<a id='n10015' href='#n10015'>10015</a>
<a id='n10016' href='#n10016'>10016</a>
<a id='n10017' href='#n10017'>10017</a>
<a id='n10018' href='#n10018'>10018</a>
<a id='n10019' href='#n10019'>10019</a>
<a id='n10020' href='#n10020'>10020</a>
<a id='n10021' href='#n10021'>10021</a>
<a id='n10022' href='#n10022'>10022</a>
<a id='n10023' href='#n10023'>10023</a>
<a id='n10024' href='#n10024'>10024</a>
<a id='n10025' href='#n10025'>10025</a>
<a id='n10026' href='#n10026'>10026</a>
<a id='n10027' href='#n10027'>10027</a>
<a id='n10028' href='#n10028'>10028</a>
<a id='n10029' href='#n10029'>10029</a>
<a id='n10030' href='#n10030'>10030</a>
<a id='n10031' href='#n10031'>10031</a>
<a id='n10032' href='#n10032'>10032</a>
<a id='n10033' href='#n10033'>10033</a>
<a id='n10034' href='#n10034'>10034</a>
<a id='n10035' href='#n10035'>10035</a>
<a id='n10036' href='#n10036'>10036</a>
<a id='n10037' href='#n10037'>10037</a>
<a id='n10038' href='#n10038'>10038</a>
<a id='n10039' href='#n10039'>10039</a>
<a id='n10040' href='#n10040'>10040</a>
<a id='n10041' href='#n10041'>10041</a>
<a id='n10042' href='#n10042'>10042</a>
<a id='n10043' href='#n10043'>10043</a>
<a id='n10044' href='#n10044'>10044</a>
<a id='n10045' href='#n10045'>10045</a>
<a id='n10046' href='#n10046'>10046</a>
<a id='n10047' href='#n10047'>10047</a>
<a id='n10048' href='#n10048'>10048</a>
<a id='n10049' href='#n10049'>10049</a>
<a id='n10050' href='#n10050'>10050</a>
<a id='n10051' href='#n10051'>10051</a>
<a id='n10052' href='#n10052'>10052</a>
<a id='n10053' href='#n10053'>10053</a>
<a id='n10054' href='#n10054'>10054</a>
<a id='n10055' href='#n10055'>10055</a>
<a id='n10056' href='#n10056'>10056</a>
<a id='n10057' href='#n10057'>10057</a>
<a id='n10058' href='#n10058'>10058</a>
<a id='n10059' href='#n10059'>10059</a>
<a id='n10060' href='#n10060'>10060</a>
<a id='n10061' href='#n10061'>10061</a>
<a id='n10062' href='#n10062'>10062</a>
<a id='n10063' href='#n10063'>10063</a>
<a id='n10064' href='#n10064'>10064</a>
<a id='n10065' href='#n10065'>10065</a>
<a id='n10066' href='#n10066'>10066</a>
<a id='n10067' href='#n10067'>10067</a>
<a id='n10068' href='#n10068'>10068</a>
<a id='n10069' href='#n10069'>10069</a>
<a id='n10070' href='#n10070'>10070</a>
<a id='n10071' href='#n10071'>10071</a>
<a id='n10072' href='#n10072'>10072</a>
<a id='n10073' href='#n10073'>10073</a>
<a id='n10074' href='#n10074'>10074</a>
<a id='n10075' href='#n10075'>10075</a>
<a id='n10076' href='#n10076'>10076</a>
<a id='n10077' href='#n10077'>10077</a>
<a id='n10078' href='#n10078'>10078</a>
<a id='n10079' href='#n10079'>10079</a>
<a id='n10080' href='#n10080'>10080</a>
<a id='n10081' href='#n10081'>10081</a>
<a id='n10082' href='#n10082'>10082</a>
<a id='n10083' href='#n10083'>10083</a>
<a id='n10084' href='#n10084'>10084</a>
<a id='n10085' href='#n10085'>10085</a>
<a id='n10086' href='#n10086'>10086</a>
<a id='n10087' href='#n10087'>10087</a>
<a id='n10088' href='#n10088'>10088</a>
<a id='n10089' href='#n10089'>10089</a>
<a id='n10090' href='#n10090'>10090</a>
<a id='n10091' href='#n10091'>10091</a>
<a id='n10092' href='#n10092'>10092</a>
<a id='n10093' href='#n10093'>10093</a>
<a id='n10094' href='#n10094'>10094</a>
<a id='n10095' href='#n10095'>10095</a>
<a id='n10096' href='#n10096'>10096</a>
<a id='n10097' href='#n10097'>10097</a>
<a id='n10098' href='#n10098'>10098</a>
<a id='n10099' href='#n10099'>10099</a>
<a id='n10100' href='#n10100'>10100</a>
<a id='n10101' href='#n10101'>10101</a>
<a id='n10102' href='#n10102'>10102</a>
<a id='n10103' href='#n10103'>10103</a>
<a id='n10104' href='#n10104'>10104</a>
<a id='n10105' href='#n10105'>10105</a>
<a id='n10106' href='#n10106'>10106</a>
<a id='n10107' href='#n10107'>10107</a>
<a id='n10108' href='#n10108'>10108</a>
<a id='n10109' href='#n10109'>10109</a>
<a id='n10110' href='#n10110'>10110</a>
<a id='n10111' href='#n10111'>10111</a>
<a id='n10112' href='#n10112'>10112</a>
<a id='n10113' href='#n10113'>10113</a>
<a id='n10114' href='#n10114'>10114</a>
<a id='n10115' href='#n10115'>10115</a>
<a id='n10116' href='#n10116'>10116</a>
<a id='n10117' href='#n10117'>10117</a>
<a id='n10118' href='#n10118'>10118</a>
<a id='n10119' href='#n10119'>10119</a>
<a id='n10120' href='#n10120'>10120</a>
<a id='n10121' href='#n10121'>10121</a>
<a id='n10122' href='#n10122'>10122</a>
<a id='n10123' href='#n10123'>10123</a>
<a id='n10124' href='#n10124'>10124</a>
<a id='n10125' href='#n10125'>10125</a>
<a id='n10126' href='#n10126'>10126</a>
<a id='n10127' href='#n10127'>10127</a>
<a id='n10128' href='#n10128'>10128</a>
<a id='n10129' href='#n10129'>10129</a>
<a id='n10130' href='#n10130'>10130</a>
<a id='n10131' href='#n10131'>10131</a>
<a id='n10132' href='#n10132'>10132</a>
<a id='n10133' href='#n10133'>10133</a>
<a id='n10134' href='#n10134'>10134</a>
<a id='n10135' href='#n10135'>10135</a>
<a id='n10136' href='#n10136'>10136</a>
<a id='n10137' href='#n10137'>10137</a>
<a id='n10138' href='#n10138'>10138</a>
<a id='n10139' href='#n10139'>10139</a>
<a id='n10140' href='#n10140'>10140</a>
<a id='n10141' href='#n10141'>10141</a>
<a id='n10142' href='#n10142'>10142</a>
<a id='n10143' href='#n10143'>10143</a>
<a id='n10144' href='#n10144'>10144</a>
<a id='n10145' href='#n10145'>10145</a>
<a id='n10146' href='#n10146'>10146</a>
<a id='n10147' href='#n10147'>10147</a>
<a id='n10148' href='#n10148'>10148</a>
<a id='n10149' href='#n10149'>10149</a>
<a id='n10150' href='#n10150'>10150</a>
<a id='n10151' href='#n10151'>10151</a>
<a id='n10152' href='#n10152'>10152</a>
<a id='n10153' href='#n10153'>10153</a>
<a id='n10154' href='#n10154'>10154</a>
<a id='n10155' href='#n10155'>10155</a>
<a id='n10156' href='#n10156'>10156</a>
<a id='n10157' href='#n10157'>10157</a>
<a id='n10158' href='#n10158'>10158</a>
<a id='n10159' href='#n10159'>10159</a>
<a id='n10160' href='#n10160'>10160</a>
<a id='n10161' href='#n10161'>10161</a>
<a id='n10162' href='#n10162'>10162</a>
<a id='n10163' href='#n10163'>10163</a>
<a id='n10164' href='#n10164'>10164</a>
<a id='n10165' href='#n10165'>10165</a>
<a id='n10166' href='#n10166'>10166</a>
<a id='n10167' href='#n10167'>10167</a>
<a id='n10168' href='#n10168'>10168</a>
<a id='n10169' href='#n10169'>10169</a>
<a id='n10170' href='#n10170'>10170</a>
<a id='n10171' href='#n10171'>10171</a>
<a id='n10172' href='#n10172'>10172</a>
<a id='n10173' href='#n10173'>10173</a>
<a id='n10174' href='#n10174'>10174</a>
<a id='n10175' href='#n10175'>10175</a>
<a id='n10176' href='#n10176'>10176</a>
<a id='n10177' href='#n10177'>10177</a>
<a id='n10178' href='#n10178'>10178</a>
<a id='n10179' href='#n10179'>10179</a>
<a id='n10180' href='#n10180'>10180</a>
<a id='n10181' href='#n10181'>10181</a>
<a id='n10182' href='#n10182'>10182</a>
<a id='n10183' href='#n10183'>10183</a>
<a id='n10184' href='#n10184'>10184</a>
<a id='n10185' href='#n10185'>10185</a>
<a id='n10186' href='#n10186'>10186</a>
<a id='n10187' href='#n10187'>10187</a>
<a id='n10188' href='#n10188'>10188</a>
<a id='n10189' href='#n10189'>10189</a>
<a id='n10190' href='#n10190'>10190</a>
<a id='n10191' href='#n10191'>10191</a>
<a id='n10192' href='#n10192'>10192</a>
<a id='n10193' href='#n10193'>10193</a>
<a id='n10194' href='#n10194'>10194</a>
<a id='n10195' href='#n10195'>10195</a>
<a id='n10196' href='#n10196'>10196</a>
<a id='n10197' href='#n10197'>10197</a>
<a id='n10198' href='#n10198'>10198</a>
<a id='n10199' href='#n10199'>10199</a>
<a id='n10200' href='#n10200'>10200</a>
<a id='n10201' href='#n10201'>10201</a>
<a id='n10202' href='#n10202'>10202</a>
<a id='n10203' href='#n10203'>10203</a>
<a id='n10204' href='#n10204'>10204</a>
<a id='n10205' href='#n10205'>10205</a>
<a id='n10206' href='#n10206'>10206</a>
<a id='n10207' href='#n10207'>10207</a>
<a id='n10208' href='#n10208'>10208</a>
<a id='n10209' href='#n10209'>10209</a>
<a id='n10210' href='#n10210'>10210</a>
<a id='n10211' href='#n10211'>10211</a>
<a id='n10212' href='#n10212'>10212</a>
<a id='n10213' href='#n10213'>10213</a>
<a id='n10214' href='#n10214'>10214</a>
<a id='n10215' href='#n10215'>10215</a>
<a id='n10216' href='#n10216'>10216</a>
<a id='n10217' href='#n10217'>10217</a>
<a id='n10218' href='#n10218'>10218</a>
<a id='n10219' href='#n10219'>10219</a>
<a id='n10220' href='#n10220'>10220</a>
<a id='n10221' href='#n10221'>10221</a>
<a id='n10222' href='#n10222'>10222</a>
<a id='n10223' href='#n10223'>10223</a>
<a id='n10224' href='#n10224'>10224</a>
<a id='n10225' href='#n10225'>10225</a>
<a id='n10226' href='#n10226'>10226</a>
<a id='n10227' href='#n10227'>10227</a>
<a id='n10228' href='#n10228'>10228</a>
<a id='n10229' href='#n10229'>10229</a>
<a id='n10230' href='#n10230'>10230</a>
<a id='n10231' href='#n10231'>10231</a>
<a id='n10232' href='#n10232'>10232</a>
<a id='n10233' href='#n10233'>10233</a>
<a id='n10234' href='#n10234'>10234</a>
<a id='n10235' href='#n10235'>10235</a>
<a id='n10236' href='#n10236'>10236</a>
<a id='n10237' href='#n10237'>10237</a>
<a id='n10238' href='#n10238'>10238</a>
<a id='n10239' href='#n10239'>10239</a>
<a id='n10240' href='#n10240'>10240</a>
<a id='n10241' href='#n10241'>10241</a>
<a id='n10242' href='#n10242'>10242</a>
<a id='n10243' href='#n10243'>10243</a>
<a id='n10244' href='#n10244'>10244</a>
<a id='n10245' href='#n10245'>10245</a>
<a id='n10246' href='#n10246'>10246</a>
<a id='n10247' href='#n10247'>10247</a>
<a id='n10248' href='#n10248'>10248</a>
<a id='n10249' href='#n10249'>10249</a>
<a id='n10250' href='#n10250'>10250</a>
<a id='n10251' href='#n10251'>10251</a>
<a id='n10252' href='#n10252'>10252</a>
<a id='n10253' href='#n10253'>10253</a>
<a id='n10254' href='#n10254'>10254</a>
<a id='n10255' href='#n10255'>10255</a>
<a id='n10256' href='#n10256'>10256</a>
<a id='n10257' href='#n10257'>10257</a>
<a id='n10258' href='#n10258'>10258</a>
<a id='n10259' href='#n10259'>10259</a>
<a id='n10260' href='#n10260'>10260</a>
<a id='n10261' href='#n10261'>10261</a>
<a id='n10262' href='#n10262'>10262</a>
<a id='n10263' href='#n10263'>10263</a>
<a id='n10264' href='#n10264'>10264</a>
<a id='n10265' href='#n10265'>10265</a>
<a id='n10266' href='#n10266'>10266</a>
<a id='n10267' href='#n10267'>10267</a>
<a id='n10268' href='#n10268'>10268</a>
<a id='n10269' href='#n10269'>10269</a>
<a id='n10270' href='#n10270'>10270</a>
<a id='n10271' href='#n10271'>10271</a>
<a id='n10272' href='#n10272'>10272</a>
<a id='n10273' href='#n10273'>10273</a>
<a id='n10274' href='#n10274'>10274</a>
<a id='n10275' href='#n10275'>10275</a>
<a id='n10276' href='#n10276'>10276</a>
<a id='n10277' href='#n10277'>10277</a>
<a id='n10278' href='#n10278'>10278</a>
<a id='n10279' href='#n10279'>10279</a>
<a id='n10280' href='#n10280'>10280</a>
<a id='n10281' href='#n10281'>10281</a>
<a id='n10282' href='#n10282'>10282</a>
<a id='n10283' href='#n10283'>10283</a>
<a id='n10284' href='#n10284'>10284</a>
<a id='n10285' href='#n10285'>10285</a>
<a id='n10286' href='#n10286'>10286</a>
<a id='n10287' href='#n10287'>10287</a>
<a id='n10288' href='#n10288'>10288</a>
<a id='n10289' href='#n10289'>10289</a>
<a id='n10290' href='#n10290'>10290</a>
<a id='n10291' href='#n10291'>10291</a>
<a id='n10292' href='#n10292'>10292</a>
<a id='n10293' href='#n10293'>10293</a>
<a id='n10294' href='#n10294'>10294</a>
<a id='n10295' href='#n10295'>10295</a>
<a id='n10296' href='#n10296'>10296</a>
<a id='n10297' href='#n10297'>10297</a>
<a id='n10298' href='#n10298'>10298</a>
<a id='n10299' href='#n10299'>10299</a>
<a id='n10300' href='#n10300'>10300</a>
<a id='n10301' href='#n10301'>10301</a>
<a id='n10302' href='#n10302'>10302</a>
<a id='n10303' href='#n10303'>10303</a>
<a id='n10304' href='#n10304'>10304</a>
<a id='n10305' href='#n10305'>10305</a>
<a id='n10306' href='#n10306'>10306</a>
<a id='n10307' href='#n10307'>10307</a>
<a id='n10308' href='#n10308'>10308</a>
<a id='n10309' href='#n10309'>10309</a>
<a id='n10310' href='#n10310'>10310</a>
<a id='n10311' href='#n10311'>10311</a>
<a id='n10312' href='#n10312'>10312</a>
<a id='n10313' href='#n10313'>10313</a>
<a id='n10314' href='#n10314'>10314</a>
<a id='n10315' href='#n10315'>10315</a>
<a id='n10316' href='#n10316'>10316</a>
<a id='n10317' href='#n10317'>10317</a>
<a id='n10318' href='#n10318'>10318</a>
<a id='n10319' href='#n10319'>10319</a>
<a id='n10320' href='#n10320'>10320</a>
<a id='n10321' href='#n10321'>10321</a>
<a id='n10322' href='#n10322'>10322</a>
<a id='n10323' href='#n10323'>10323</a>
<a id='n10324' href='#n10324'>10324</a>
<a id='n10325' href='#n10325'>10325</a>
<a id='n10326' href='#n10326'>10326</a>
<a id='n10327' href='#n10327'>10327</a>
<a id='n10328' href='#n10328'>10328</a>
<a id='n10329' href='#n10329'>10329</a>
<a id='n10330' href='#n10330'>10330</a>
<a id='n10331' href='#n10331'>10331</a>
<a id='n10332' href='#n10332'>10332</a>
<a id='n10333' href='#n10333'>10333</a>
<a id='n10334' href='#n10334'>10334</a>
<a id='n10335' href='#n10335'>10335</a>
<a id='n10336' href='#n10336'>10336</a>
<a id='n10337' href='#n10337'>10337</a>
<a id='n10338' href='#n10338'>10338</a>
<a id='n10339' href='#n10339'>10339</a>
<a id='n10340' href='#n10340'>10340</a>
<a id='n10341' href='#n10341'>10341</a>
<a id='n10342' href='#n10342'>10342</a>
<a id='n10343' href='#n10343'>10343</a>
<a id='n10344' href='#n10344'>10344</a>
<a id='n10345' href='#n10345'>10345</a>
<a id='n10346' href='#n10346'>10346</a>
<a id='n10347' href='#n10347'>10347</a>
<a id='n10348' href='#n10348'>10348</a>
<a id='n10349' href='#n10349'>10349</a>
<a id='n10350' href='#n10350'>10350</a>
<a id='n10351' href='#n10351'>10351</a>
<a id='n10352' href='#n10352'>10352</a>
<a id='n10353' href='#n10353'>10353</a>
<a id='n10354' href='#n10354'>10354</a>
<a id='n10355' href='#n10355'>10355</a>
<a id='n10356' href='#n10356'>10356</a>
<a id='n10357' href='#n10357'>10357</a>
<a id='n10358' href='#n10358'>10358</a>
<a id='n10359' href='#n10359'>10359</a>
<a id='n10360' href='#n10360'>10360</a>
<a id='n10361' href='#n10361'>10361</a>
<a id='n10362' href='#n10362'>10362</a>
<a id='n10363' href='#n10363'>10363</a>
<a id='n10364' href='#n10364'>10364</a>
<a id='n10365' href='#n10365'>10365</a>
<a id='n10366' href='#n10366'>10366</a>
<a id='n10367' href='#n10367'>10367</a>
<a id='n10368' href='#n10368'>10368</a>
<a id='n10369' href='#n10369'>10369</a>
<a id='n10370' href='#n10370'>10370</a>
<a id='n10371' href='#n10371'>10371</a>
<a id='n10372' href='#n10372'>10372</a>
<a id='n10373' href='#n10373'>10373</a>
<a id='n10374' href='#n10374'>10374</a>
<a id='n10375' href='#n10375'>10375</a>
<a id='n10376' href='#n10376'>10376</a>
<a id='n10377' href='#n10377'>10377</a>
<a id='n10378' href='#n10378'>10378</a>
<a id='n10379' href='#n10379'>10379</a>
<a id='n10380' href='#n10380'>10380</a>
<a id='n10381' href='#n10381'>10381</a>
<a id='n10382' href='#n10382'>10382</a>
<a id='n10383' href='#n10383'>10383</a>
<a id='n10384' href='#n10384'>10384</a>
<a id='n10385' href='#n10385'>10385</a>
<a id='n10386' href='#n10386'>10386</a>
<a id='n10387' href='#n10387'>10387</a>
<a id='n10388' href='#n10388'>10388</a>
<a id='n10389' href='#n10389'>10389</a>
<a id='n10390' href='#n10390'>10390</a>
<a id='n10391' href='#n10391'>10391</a>
<a id='n10392' href='#n10392'>10392</a>
<a id='n10393' href='#n10393'>10393</a>
<a id='n10394' href='#n10394'>10394</a>
<a id='n10395' href='#n10395'>10395</a>
<a id='n10396' href='#n10396'>10396</a>
<a id='n10397' href='#n10397'>10397</a>
<a id='n10398' href='#n10398'>10398</a>
<a id='n10399' href='#n10399'>10399</a>
<a id='n10400' href='#n10400'>10400</a>
<a id='n10401' href='#n10401'>10401</a>
<a id='n10402' href='#n10402'>10402</a>
<a id='n10403' href='#n10403'>10403</a>
<a id='n10404' href='#n10404'>10404</a>
<a id='n10405' href='#n10405'>10405</a>
<a id='n10406' href='#n10406'>10406</a>
<a id='n10407' href='#n10407'>10407</a>
<a id='n10408' href='#n10408'>10408</a>
<a id='n10409' href='#n10409'>10409</a>
<a id='n10410' href='#n10410'>10410</a>
<a id='n10411' href='#n10411'>10411</a>
<a id='n10412' href='#n10412'>10412</a>
<a id='n10413' href='#n10413'>10413</a>
<a id='n10414' href='#n10414'>10414</a>
<a id='n10415' href='#n10415'>10415</a>
<a id='n10416' href='#n10416'>10416</a>
<a id='n10417' href='#n10417'>10417</a>
<a id='n10418' href='#n10418'>10418</a>
<a id='n10419' href='#n10419'>10419</a>
<a id='n10420' href='#n10420'>10420</a>
<a id='n10421' href='#n10421'>10421</a>
<a id='n10422' href='#n10422'>10422</a>
<a id='n10423' href='#n10423'>10423</a>
<a id='n10424' href='#n10424'>10424</a>
<a id='n10425' href='#n10425'>10425</a>
<a id='n10426' href='#n10426'>10426</a>
<a id='n10427' href='#n10427'>10427</a>
<a id='n10428' href='#n10428'>10428</a>
<a id='n10429' href='#n10429'>10429</a>
<a id='n10430' href='#n10430'>10430</a>
<a id='n10431' href='#n10431'>10431</a>
<a id='n10432' href='#n10432'>10432</a>
<a id='n10433' href='#n10433'>10433</a>
<a id='n10434' href='#n10434'>10434</a>
<a id='n10435' href='#n10435'>10435</a>
<a id='n10436' href='#n10436'>10436</a>
<a id='n10437' href='#n10437'>10437</a>
<a id='n10438' href='#n10438'>10438</a>
<a id='n10439' href='#n10439'>10439</a>
<a id='n10440' href='#n10440'>10440</a>
<a id='n10441' href='#n10441'>10441</a>
<a id='n10442' href='#n10442'>10442</a>
<a id='n10443' href='#n10443'>10443</a>
<a id='n10444' href='#n10444'>10444</a>
<a id='n10445' href='#n10445'>10445</a>
<a id='n10446' href='#n10446'>10446</a>
<a id='n10447' href='#n10447'>10447</a>
<a id='n10448' href='#n10448'>10448</a>
<a id='n10449' href='#n10449'>10449</a>
<a id='n10450' href='#n10450'>10450</a>
<a id='n10451' href='#n10451'>10451</a>
<a id='n10452' href='#n10452'>10452</a>
<a id='n10453' href='#n10453'>10453</a>
<a id='n10454' href='#n10454'>10454</a>
<a id='n10455' href='#n10455'>10455</a>
<a id='n10456' href='#n10456'>10456</a>
<a id='n10457' href='#n10457'>10457</a>
<a id='n10458' href='#n10458'>10458</a>
<a id='n10459' href='#n10459'>10459</a>
<a id='n10460' href='#n10460'>10460</a>
<a id='n10461' href='#n10461'>10461</a>
<a id='n10462' href='#n10462'>10462</a>
<a id='n10463' href='#n10463'>10463</a>
<a id='n10464' href='#n10464'>10464</a>
<a id='n10465' href='#n10465'>10465</a>
<a id='n10466' href='#n10466'>10466</a>
<a id='n10467' href='#n10467'>10467</a>
<a id='n10468' href='#n10468'>10468</a>
<a id='n10469' href='#n10469'>10469</a>
<a id='n10470' href='#n10470'>10470</a>
<a id='n10471' href='#n10471'>10471</a>
<a id='n10472' href='#n10472'>10472</a>
<a id='n10473' href='#n10473'>10473</a>
<a id='n10474' href='#n10474'>10474</a>
<a id='n10475' href='#n10475'>10475</a>
<a id='n10476' href='#n10476'>10476</a>
<a id='n10477' href='#n10477'>10477</a>
<a id='n10478' href='#n10478'>10478</a>
<a id='n10479' href='#n10479'>10479</a>
<a id='n10480' href='#n10480'>10480</a>
<a id='n10481' href='#n10481'>10481</a>
<a id='n10482' href='#n10482'>10482</a>
<a id='n10483' href='#n10483'>10483</a>
<a id='n10484' href='#n10484'>10484</a>
<a id='n10485' href='#n10485'>10485</a>
<a id='n10486' href='#n10486'>10486</a>
<a id='n10487' href='#n10487'>10487</a>
<a id='n10488' href='#n10488'>10488</a>
<a id='n10489' href='#n10489'>10489</a>
<a id='n10490' href='#n10490'>10490</a>
<a id='n10491' href='#n10491'>10491</a>
<a id='n10492' href='#n10492'>10492</a>
<a id='n10493' href='#n10493'>10493</a>
<a id='n10494' href='#n10494'>10494</a>
<a id='n10495' href='#n10495'>10495</a>
<a id='n10496' href='#n10496'>10496</a>
<a id='n10497' href='#n10497'>10497</a>
<a id='n10498' href='#n10498'>10498</a>
<a id='n10499' href='#n10499'>10499</a>
<a id='n10500' href='#n10500'>10500</a>
<a id='n10501' href='#n10501'>10501</a>
<a id='n10502' href='#n10502'>10502</a>
<a id='n10503' href='#n10503'>10503</a>
<a id='n10504' href='#n10504'>10504</a>
<a id='n10505' href='#n10505'>10505</a>
<a id='n10506' href='#n10506'>10506</a>
<a id='n10507' href='#n10507'>10507</a>
<a id='n10508' href='#n10508'>10508</a>
<a id='n10509' href='#n10509'>10509</a>
<a id='n10510' href='#n10510'>10510</a>
<a id='n10511' href='#n10511'>10511</a>
<a id='n10512' href='#n10512'>10512</a>
<a id='n10513' href='#n10513'>10513</a>
<a id='n10514' href='#n10514'>10514</a>
<a id='n10515' href='#n10515'>10515</a>
<a id='n10516' href='#n10516'>10516</a>
<a id='n10517' href='#n10517'>10517</a>
<a id='n10518' href='#n10518'>10518</a>
<a id='n10519' href='#n10519'>10519</a>
<a id='n10520' href='#n10520'>10520</a>
<a id='n10521' href='#n10521'>10521</a>
<a id='n10522' href='#n10522'>10522</a>
<a id='n10523' href='#n10523'>10523</a>
<a id='n10524' href='#n10524'>10524</a>
<a id='n10525' href='#n10525'>10525</a>
<a id='n10526' href='#n10526'>10526</a>
<a id='n10527' href='#n10527'>10527</a>
<a id='n10528' href='#n10528'>10528</a>
<a id='n10529' href='#n10529'>10529</a>
<a id='n10530' href='#n10530'>10530</a>
<a id='n10531' href='#n10531'>10531</a>
<a id='n10532' href='#n10532'>10532</a>
<a id='n10533' href='#n10533'>10533</a>
<a id='n10534' href='#n10534'>10534</a>
<a id='n10535' href='#n10535'>10535</a>
<a id='n10536' href='#n10536'>10536</a>
<a id='n10537' href='#n10537'>10537</a>
<a id='n10538' href='#n10538'>10538</a>
<a id='n10539' href='#n10539'>10539</a>
<a id='n10540' href='#n10540'>10540</a>
<a id='n10541' href='#n10541'>10541</a>
<a id='n10542' href='#n10542'>10542</a>
<a id='n10543' href='#n10543'>10543</a>
<a id='n10544' href='#n10544'>10544</a>
<a id='n10545' href='#n10545'>10545</a>
<a id='n10546' href='#n10546'>10546</a>
<a id='n10547' href='#n10547'>10547</a>
<a id='n10548' href='#n10548'>10548</a>
<a id='n10549' href='#n10549'>10549</a>
<a id='n10550' href='#n10550'>10550</a>
<a id='n10551' href='#n10551'>10551</a>
<a id='n10552' href='#n10552'>10552</a>
<a id='n10553' href='#n10553'>10553</a>
<a id='n10554' href='#n10554'>10554</a>
<a id='n10555' href='#n10555'>10555</a>
<a id='n10556' href='#n10556'>10556</a>
<a id='n10557' href='#n10557'>10557</a>
<a id='n10558' href='#n10558'>10558</a>
<a id='n10559' href='#n10559'>10559</a>
<a id='n10560' href='#n10560'>10560</a>
<a id='n10561' href='#n10561'>10561</a>
<a id='n10562' href='#n10562'>10562</a>
<a id='n10563' href='#n10563'>10563</a>
<a id='n10564' href='#n10564'>10564</a>
<a id='n10565' href='#n10565'>10565</a>
<a id='n10566' href='#n10566'>10566</a>
<a id='n10567' href='#n10567'>10567</a>
<a id='n10568' href='#n10568'>10568</a>
<a id='n10569' href='#n10569'>10569</a>
<a id='n10570' href='#n10570'>10570</a>
<a id='n10571' href='#n10571'>10571</a>
<a id='n10572' href='#n10572'>10572</a>
<a id='n10573' href='#n10573'>10573</a>
<a id='n10574' href='#n10574'>10574</a>
<a id='n10575' href='#n10575'>10575</a>
<a id='n10576' href='#n10576'>10576</a>
<a id='n10577' href='#n10577'>10577</a>
<a id='n10578' href='#n10578'>10578</a>
<a id='n10579' href='#n10579'>10579</a>
<a id='n10580' href='#n10580'>10580</a>
<a id='n10581' href='#n10581'>10581</a>
<a id='n10582' href='#n10582'>10582</a>
<a id='n10583' href='#n10583'>10583</a>
<a id='n10584' href='#n10584'>10584</a>
<a id='n10585' href='#n10585'>10585</a>
<a id='n10586' href='#n10586'>10586</a>
<a id='n10587' href='#n10587'>10587</a>
<a id='n10588' href='#n10588'>10588</a>
<a id='n10589' href='#n10589'>10589</a>
<a id='n10590' href='#n10590'>10590</a>
<a id='n10591' href='#n10591'>10591</a>
<a id='n10592' href='#n10592'>10592</a>
<a id='n10593' href='#n10593'>10593</a>
<a id='n10594' href='#n10594'>10594</a>
<a id='n10595' href='#n10595'>10595</a>
<a id='n10596' href='#n10596'>10596</a>
<a id='n10597' href='#n10597'>10597</a>
<a id='n10598' href='#n10598'>10598</a>
<a id='n10599' href='#n10599'>10599</a>
<a id='n10600' href='#n10600'>10600</a>
<a id='n10601' href='#n10601'>10601</a>
<a id='n10602' href='#n10602'>10602</a>
<a id='n10603' href='#n10603'>10603</a>
<a id='n10604' href='#n10604'>10604</a>
<a id='n10605' href='#n10605'>10605</a>
<a id='n10606' href='#n10606'>10606</a>
<a id='n10607' href='#n10607'>10607</a>
<a id='n10608' href='#n10608'>10608</a>
<a id='n10609' href='#n10609'>10609</a>
<a id='n10610' href='#n10610'>10610</a>
<a id='n10611' href='#n10611'>10611</a>
<a id='n10612' href='#n10612'>10612</a>
<a id='n10613' href='#n10613'>10613</a>
<a id='n10614' href='#n10614'>10614</a>
<a id='n10615' href='#n10615'>10615</a>
<a id='n10616' href='#n10616'>10616</a>
<a id='n10617' href='#n10617'>10617</a>
<a id='n10618' href='#n10618'>10618</a>
<a id='n10619' href='#n10619'>10619</a>
<a id='n10620' href='#n10620'>10620</a>
<a id='n10621' href='#n10621'>10621</a>
<a id='n10622' href='#n10622'>10622</a>
<a id='n10623' href='#n10623'>10623</a>
<a id='n10624' href='#n10624'>10624</a>
<a id='n10625' href='#n10625'>10625</a>
<a id='n10626' href='#n10626'>10626</a>
<a id='n10627' href='#n10627'>10627</a>
<a id='n10628' href='#n10628'>10628</a>
<a id='n10629' href='#n10629'>10629</a>
<a id='n10630' href='#n10630'>10630</a>
<a id='n10631' href='#n10631'>10631</a>
<a id='n10632' href='#n10632'>10632</a>
<a id='n10633' href='#n10633'>10633</a>
<a id='n10634' href='#n10634'>10634</a>
<a id='n10635' href='#n10635'>10635</a>
<a id='n10636' href='#n10636'>10636</a>
<a id='n10637' href='#n10637'>10637</a>
<a id='n10638' href='#n10638'>10638</a>
<a id='n10639' href='#n10639'>10639</a>
<a id='n10640' href='#n10640'>10640</a>
<a id='n10641' href='#n10641'>10641</a>
<a id='n10642' href='#n10642'>10642</a>
<a id='n10643' href='#n10643'>10643</a>
<a id='n10644' href='#n10644'>10644</a>
<a id='n10645' href='#n10645'>10645</a>
<a id='n10646' href='#n10646'>10646</a>
<a id='n10647' href='#n10647'>10647</a>
<a id='n10648' href='#n10648'>10648</a>
<a id='n10649' href='#n10649'>10649</a>
<a id='n10650' href='#n10650'>10650</a>
<a id='n10651' href='#n10651'>10651</a>
<a id='n10652' href='#n10652'>10652</a>
<a id='n10653' href='#n10653'>10653</a>
<a id='n10654' href='#n10654'>10654</a>
<a id='n10655' href='#n10655'>10655</a>
<a id='n10656' href='#n10656'>10656</a>
<a id='n10657' href='#n10657'>10657</a>
<a id='n10658' href='#n10658'>10658</a>
<a id='n10659' href='#n10659'>10659</a>
<a id='n10660' href='#n10660'>10660</a>
<a id='n10661' href='#n10661'>10661</a>
<a id='n10662' href='#n10662'>10662</a>
<a id='n10663' href='#n10663'>10663</a>
<a id='n10664' href='#n10664'>10664</a>
<a id='n10665' href='#n10665'>10665</a>
<a id='n10666' href='#n10666'>10666</a>
<a id='n10667' href='#n10667'>10667</a>
<a id='n10668' href='#n10668'>10668</a>
<a id='n10669' href='#n10669'>10669</a>
<a id='n10670' href='#n10670'>10670</a>
<a id='n10671' href='#n10671'>10671</a>
<a id='n10672' href='#n10672'>10672</a>
<a id='n10673' href='#n10673'>10673</a>
<a id='n10674' href='#n10674'>10674</a>
<a id='n10675' href='#n10675'>10675</a>
<a id='n10676' href='#n10676'>10676</a>
<a id='n10677' href='#n10677'>10677</a>
<a id='n10678' href='#n10678'>10678</a>
<a id='n10679' href='#n10679'>10679</a>
<a id='n10680' href='#n10680'>10680</a>
<a id='n10681' href='#n10681'>10681</a>
<a id='n10682' href='#n10682'>10682</a>
<a id='n10683' href='#n10683'>10683</a>
<a id='n10684' href='#n10684'>10684</a>
<a id='n10685' href='#n10685'>10685</a>
<a id='n10686' href='#n10686'>10686</a>
<a id='n10687' href='#n10687'>10687</a>
<a id='n10688' href='#n10688'>10688</a>
<a id='n10689' href='#n10689'>10689</a>
<a id='n10690' href='#n10690'>10690</a>
<a id='n10691' href='#n10691'>10691</a>
<a id='n10692' href='#n10692'>10692</a>
<a id='n10693' href='#n10693'>10693</a>
<a id='n10694' href='#n10694'>10694</a>
<a id='n10695' href='#n10695'>10695</a>
<a id='n10696' href='#n10696'>10696</a>
<a id='n10697' href='#n10697'>10697</a>
<a id='n10698' href='#n10698'>10698</a>
<a id='n10699' href='#n10699'>10699</a>
<a id='n10700' href='#n10700'>10700</a>
<a id='n10701' href='#n10701'>10701</a>
<a id='n10702' href='#n10702'>10702</a>
<a id='n10703' href='#n10703'>10703</a>
<a id='n10704' href='#n10704'>10704</a>
<a id='n10705' href='#n10705'>10705</a>
<a id='n10706' href='#n10706'>10706</a>
<a id='n10707' href='#n10707'>10707</a>
<a id='n10708' href='#n10708'>10708</a>
<a id='n10709' href='#n10709'>10709</a>
<a id='n10710' href='#n10710'>10710</a>
<a id='n10711' href='#n10711'>10711</a>
<a id='n10712' href='#n10712'>10712</a>
<a id='n10713' href='#n10713'>10713</a>
<a id='n10714' href='#n10714'>10714</a>
<a id='n10715' href='#n10715'>10715</a>
<a id='n10716' href='#n10716'>10716</a>
<a id='n10717' href='#n10717'>10717</a>
<a id='n10718' href='#n10718'>10718</a>
<a id='n10719' href='#n10719'>10719</a>
<a id='n10720' href='#n10720'>10720</a>
<a id='n10721' href='#n10721'>10721</a>
<a id='n10722' href='#n10722'>10722</a>
<a id='n10723' href='#n10723'>10723</a>
<a id='n10724' href='#n10724'>10724</a>
<a id='n10725' href='#n10725'>10725</a>
<a id='n10726' href='#n10726'>10726</a>
<a id='n10727' href='#n10727'>10727</a>
<a id='n10728' href='#n10728'>10728</a>
<a id='n10729' href='#n10729'>10729</a>
<a id='n10730' href='#n10730'>10730</a>
<a id='n10731' href='#n10731'>10731</a>
<a id='n10732' href='#n10732'>10732</a>
<a id='n10733' href='#n10733'>10733</a>
<a id='n10734' href='#n10734'>10734</a>
<a id='n10735' href='#n10735'>10735</a>
<a id='n10736' href='#n10736'>10736</a>
<a id='n10737' href='#n10737'>10737</a>
<a id='n10738' href='#n10738'>10738</a>
<a id='n10739' href='#n10739'>10739</a>
<a id='n10740' href='#n10740'>10740</a>
<a id='n10741' href='#n10741'>10741</a>
<a id='n10742' href='#n10742'>10742</a>
<a id='n10743' href='#n10743'>10743</a>
<a id='n10744' href='#n10744'>10744</a>
<a id='n10745' href='#n10745'>10745</a>
<a id='n10746' href='#n10746'>10746</a>
<a id='n10747' href='#n10747'>10747</a>
<a id='n10748' href='#n10748'>10748</a>
<a id='n10749' href='#n10749'>10749</a>
<a id='n10750' href='#n10750'>10750</a>
<a id='n10751' href='#n10751'>10751</a>
<a id='n10752' href='#n10752'>10752</a>
<a id='n10753' href='#n10753'>10753</a>
<a id='n10754' href='#n10754'>10754</a>
<a id='n10755' href='#n10755'>10755</a>
<a id='n10756' href='#n10756'>10756</a>
<a id='n10757' href='#n10757'>10757</a>
<a id='n10758' href='#n10758'>10758</a>
<a id='n10759' href='#n10759'>10759</a>
<a id='n10760' href='#n10760'>10760</a>
<a id='n10761' href='#n10761'>10761</a>
<a id='n10762' href='#n10762'>10762</a>
<a id='n10763' href='#n10763'>10763</a>
<a id='n10764' href='#n10764'>10764</a>
<a id='n10765' href='#n10765'>10765</a>
<a id='n10766' href='#n10766'>10766</a>
<a id='n10767' href='#n10767'>10767</a>
<a id='n10768' href='#n10768'>10768</a>
<a id='n10769' href='#n10769'>10769</a>
<a id='n10770' href='#n10770'>10770</a>
<a id='n10771' href='#n10771'>10771</a>
<a id='n10772' href='#n10772'>10772</a>
<a id='n10773' href='#n10773'>10773</a>
<a id='n10774' href='#n10774'>10774</a>
<a id='n10775' href='#n10775'>10775</a>
<a id='n10776' href='#n10776'>10776</a>
<a id='n10777' href='#n10777'>10777</a>
<a id='n10778' href='#n10778'>10778</a>
<a id='n10779' href='#n10779'>10779</a>
<a id='n10780' href='#n10780'>10780</a>
<a id='n10781' href='#n10781'>10781</a>
<a id='n10782' href='#n10782'>10782</a>
<a id='n10783' href='#n10783'>10783</a>
<a id='n10784' href='#n10784'>10784</a>
<a id='n10785' href='#n10785'>10785</a>
<a id='n10786' href='#n10786'>10786</a>
<a id='n10787' href='#n10787'>10787</a>
<a id='n10788' href='#n10788'>10788</a>
<a id='n10789' href='#n10789'>10789</a>
<a id='n10790' href='#n10790'>10790</a>
<a id='n10791' href='#n10791'>10791</a>
<a id='n10792' href='#n10792'>10792</a>
<a id='n10793' href='#n10793'>10793</a>
<a id='n10794' href='#n10794'>10794</a>
<a id='n10795' href='#n10795'>10795</a>
<a id='n10796' href='#n10796'>10796</a>
<a id='n10797' href='#n10797'>10797</a>
<a id='n10798' href='#n10798'>10798</a>
<a id='n10799' href='#n10799'>10799</a>
<a id='n10800' href='#n10800'>10800</a>
<a id='n10801' href='#n10801'>10801</a>
<a id='n10802' href='#n10802'>10802</a>
<a id='n10803' href='#n10803'>10803</a>
<a id='n10804' href='#n10804'>10804</a>
<a id='n10805' href='#n10805'>10805</a>
<a id='n10806' href='#n10806'>10806</a>
<a id='n10807' href='#n10807'>10807</a>
<a id='n10808' href='#n10808'>10808</a>
<a id='n10809' href='#n10809'>10809</a>
<a id='n10810' href='#n10810'>10810</a>
<a id='n10811' href='#n10811'>10811</a>
<a id='n10812' href='#n10812'>10812</a>
<a id='n10813' href='#n10813'>10813</a>
<a id='n10814' href='#n10814'>10814</a>
<a id='n10815' href='#n10815'>10815</a>
<a id='n10816' href='#n10816'>10816</a>
<a id='n10817' href='#n10817'>10817</a>
<a id='n10818' href='#n10818'>10818</a>
<a id='n10819' href='#n10819'>10819</a>
<a id='n10820' href='#n10820'>10820</a>
<a id='n10821' href='#n10821'>10821</a>
<a id='n10822' href='#n10822'>10822</a>
<a id='n10823' href='#n10823'>10823</a>
<a id='n10824' href='#n10824'>10824</a>
<a id='n10825' href='#n10825'>10825</a>
<a id='n10826' href='#n10826'>10826</a>
<a id='n10827' href='#n10827'>10827</a>
<a id='n10828' href='#n10828'>10828</a>
<a id='n10829' href='#n10829'>10829</a>
<a id='n10830' href='#n10830'>10830</a>
<a id='n10831' href='#n10831'>10831</a>
<a id='n10832' href='#n10832'>10832</a>
<a id='n10833' href='#n10833'>10833</a>
<a id='n10834' href='#n10834'>10834</a>
<a id='n10835' href='#n10835'>10835</a>
<a id='n10836' href='#n10836'>10836</a>
<a id='n10837' href='#n10837'>10837</a>
<a id='n10838' href='#n10838'>10838</a>
<a id='n10839' href='#n10839'>10839</a>
<a id='n10840' href='#n10840'>10840</a>
<a id='n10841' href='#n10841'>10841</a>
<a id='n10842' href='#n10842'>10842</a>
<a id='n10843' href='#n10843'>10843</a>
<a id='n10844' href='#n10844'>10844</a>
<a id='n10845' href='#n10845'>10845</a>
<a id='n10846' href='#n10846'>10846</a>
<a id='n10847' href='#n10847'>10847</a>
<a id='n10848' href='#n10848'>10848</a>
<a id='n10849' href='#n10849'>10849</a>
<a id='n10850' href='#n10850'>10850</a>
<a id='n10851' href='#n10851'>10851</a>
<a id='n10852' href='#n10852'>10852</a>
<a id='n10853' href='#n10853'>10853</a>
<a id='n10854' href='#n10854'>10854</a>
<a id='n10855' href='#n10855'>10855</a>
<a id='n10856' href='#n10856'>10856</a>
<a id='n10857' href='#n10857'>10857</a>
<a id='n10858' href='#n10858'>10858</a>
<a id='n10859' href='#n10859'>10859</a>
<a id='n10860' href='#n10860'>10860</a>
<a id='n10861' href='#n10861'>10861</a>
<a id='n10862' href='#n10862'>10862</a>
<a id='n10863' href='#n10863'>10863</a>
<a id='n10864' href='#n10864'>10864</a>
<a id='n10865' href='#n10865'>10865</a>
<a id='n10866' href='#n10866'>10866</a>
<a id='n10867' href='#n10867'>10867</a>
<a id='n10868' href='#n10868'>10868</a>
<a id='n10869' href='#n10869'>10869</a>
<a id='n10870' href='#n10870'>10870</a>
<a id='n10871' href='#n10871'>10871</a>
<a id='n10872' href='#n10872'>10872</a>
<a id='n10873' href='#n10873'>10873</a>
<a id='n10874' href='#n10874'>10874</a>
<a id='n10875' href='#n10875'>10875</a>
<a id='n10876' href='#n10876'>10876</a>
<a id='n10877' href='#n10877'>10877</a>
<a id='n10878' href='#n10878'>10878</a>
<a id='n10879' href='#n10879'>10879</a>
<a id='n10880' href='#n10880'>10880</a>
<a id='n10881' href='#n10881'>10881</a>
<a id='n10882' href='#n10882'>10882</a>
<a id='n10883' href='#n10883'>10883</a>
<a id='n10884' href='#n10884'>10884</a>
<a id='n10885' href='#n10885'>10885</a>
<a id='n10886' href='#n10886'>10886</a>
<a id='n10887' href='#n10887'>10887</a>
<a id='n10888' href='#n10888'>10888</a>
<a id='n10889' href='#n10889'>10889</a>
<a id='n10890' href='#n10890'>10890</a>
<a id='n10891' href='#n10891'>10891</a>
<a id='n10892' href='#n10892'>10892</a>
<a id='n10893' href='#n10893'>10893</a>
<a id='n10894' href='#n10894'>10894</a>
<a id='n10895' href='#n10895'>10895</a>
<a id='n10896' href='#n10896'>10896</a>
<a id='n10897' href='#n10897'>10897</a>
<a id='n10898' href='#n10898'>10898</a>
<a id='n10899' href='#n10899'>10899</a>
<a id='n10900' href='#n10900'>10900</a>
<a id='n10901' href='#n10901'>10901</a>
<a id='n10902' href='#n10902'>10902</a>
<a id='n10903' href='#n10903'>10903</a>
<a id='n10904' href='#n10904'>10904</a>
<a id='n10905' href='#n10905'>10905</a>
<a id='n10906' href='#n10906'>10906</a>
<a id='n10907' href='#n10907'>10907</a>
<a id='n10908' href='#n10908'>10908</a>
<a id='n10909' href='#n10909'>10909</a>
<a id='n10910' href='#n10910'>10910</a>
<a id='n10911' href='#n10911'>10911</a>
<a id='n10912' href='#n10912'>10912</a>
<a id='n10913' href='#n10913'>10913</a>
<a id='n10914' href='#n10914'>10914</a>
<a id='n10915' href='#n10915'>10915</a>
<a id='n10916' href='#n10916'>10916</a>
<a id='n10917' href='#n10917'>10917</a>
<a id='n10918' href='#n10918'>10918</a>
<a id='n10919' href='#n10919'>10919</a>
<a id='n10920' href='#n10920'>10920</a>
<a id='n10921' href='#n10921'>10921</a>
<a id='n10922' href='#n10922'>10922</a>
<a id='n10923' href='#n10923'>10923</a>
<a id='n10924' href='#n10924'>10924</a>
<a id='n10925' href='#n10925'>10925</a>
<a id='n10926' href='#n10926'>10926</a>
<a id='n10927' href='#n10927'>10927</a>
<a id='n10928' href='#n10928'>10928</a>
<a id='n10929' href='#n10929'>10929</a>
<a id='n10930' href='#n10930'>10930</a>
<a id='n10931' href='#n10931'>10931</a>
<a id='n10932' href='#n10932'>10932</a>
<a id='n10933' href='#n10933'>10933</a>
<a id='n10934' href='#n10934'>10934</a>
<a id='n10935' href='#n10935'>10935</a>
<a id='n10936' href='#n10936'>10936</a>
<a id='n10937' href='#n10937'>10937</a>
<a id='n10938' href='#n10938'>10938</a>
<a id='n10939' href='#n10939'>10939</a>
<a id='n10940' href='#n10940'>10940</a>
<a id='n10941' href='#n10941'>10941</a>
<a id='n10942' href='#n10942'>10942</a>
<a id='n10943' href='#n10943'>10943</a>
<a id='n10944' href='#n10944'>10944</a>
<a id='n10945' href='#n10945'>10945</a>
<a id='n10946' href='#n10946'>10946</a>
<a id='n10947' href='#n10947'>10947</a>
<a id='n10948' href='#n10948'>10948</a>
<a id='n10949' href='#n10949'>10949</a>
<a id='n10950' href='#n10950'>10950</a>
<a id='n10951' href='#n10951'>10951</a>
<a id='n10952' href='#n10952'>10952</a>
<a id='n10953' href='#n10953'>10953</a>
<a id='n10954' href='#n10954'>10954</a>
<a id='n10955' href='#n10955'>10955</a>
<a id='n10956' href='#n10956'>10956</a>
<a id='n10957' href='#n10957'>10957</a>
<a id='n10958' href='#n10958'>10958</a>
<a id='n10959' href='#n10959'>10959</a>
<a id='n10960' href='#n10960'>10960</a>
<a id='n10961' href='#n10961'>10961</a>
<a id='n10962' href='#n10962'>10962</a>
<a id='n10963' href='#n10963'>10963</a>
<a id='n10964' href='#n10964'>10964</a>
<a id='n10965' href='#n10965'>10965</a>
<a id='n10966' href='#n10966'>10966</a>
<a id='n10967' href='#n10967'>10967</a>
<a id='n10968' href='#n10968'>10968</a>
<a id='n10969' href='#n10969'>10969</a>
<a id='n10970' href='#n10970'>10970</a>
<a id='n10971' href='#n10971'>10971</a>
<a id='n10972' href='#n10972'>10972</a>
<a id='n10973' href='#n10973'>10973</a>
<a id='n10974' href='#n10974'>10974</a>
<a id='n10975' href='#n10975'>10975</a>
<a id='n10976' href='#n10976'>10976</a>
<a id='n10977' href='#n10977'>10977</a>
<a id='n10978' href='#n10978'>10978</a>
<a id='n10979' href='#n10979'>10979</a>
<a id='n10980' href='#n10980'>10980</a>
<a id='n10981' href='#n10981'>10981</a>
<a id='n10982' href='#n10982'>10982</a>
<a id='n10983' href='#n10983'>10983</a>
<a id='n10984' href='#n10984'>10984</a>
<a id='n10985' href='#n10985'>10985</a>
<a id='n10986' href='#n10986'>10986</a>
<a id='n10987' href='#n10987'>10987</a>
<a id='n10988' href='#n10988'>10988</a>
<a id='n10989' href='#n10989'>10989</a>
<a id='n10990' href='#n10990'>10990</a>
<a id='n10991' href='#n10991'>10991</a>
<a id='n10992' href='#n10992'>10992</a>
<a id='n10993' href='#n10993'>10993</a>
<a id='n10994' href='#n10994'>10994</a>
<a id='n10995' href='#n10995'>10995</a>
<a id='n10996' href='#n10996'>10996</a>
<a id='n10997' href='#n10997'>10997</a>
<a id='n10998' href='#n10998'>10998</a>
<a id='n10999' href='#n10999'>10999</a>
<a id='n11000' href='#n11000'>11000</a>
<a id='n11001' href='#n11001'>11001</a>
<a id='n11002' href='#n11002'>11002</a>
<a id='n11003' href='#n11003'>11003</a>
<a id='n11004' href='#n11004'>11004</a>
<a id='n11005' href='#n11005'>11005</a>
<a id='n11006' href='#n11006'>11006</a>
<a id='n11007' href='#n11007'>11007</a>
<a id='n11008' href='#n11008'>11008</a>
<a id='n11009' href='#n11009'>11009</a>
<a id='n11010' href='#n11010'>11010</a>
<a id='n11011' href='#n11011'>11011</a>
<a id='n11012' href='#n11012'>11012</a>
<a id='n11013' href='#n11013'>11013</a>
<a id='n11014' href='#n11014'>11014</a>
<a id='n11015' href='#n11015'>11015</a>
<a id='n11016' href='#n11016'>11016</a>
<a id='n11017' href='#n11017'>11017</a>
<a id='n11018' href='#n11018'>11018</a>
<a id='n11019' href='#n11019'>11019</a>
<a id='n11020' href='#n11020'>11020</a>
<a id='n11021' href='#n11021'>11021</a>
<a id='n11022' href='#n11022'>11022</a>
<a id='n11023' href='#n11023'>11023</a>
<a id='n11024' href='#n11024'>11024</a>
<a id='n11025' href='#n11025'>11025</a>
<a id='n11026' href='#n11026'>11026</a>
<a id='n11027' href='#n11027'>11027</a>
<a id='n11028' href='#n11028'>11028</a>
<a id='n11029' href='#n11029'>11029</a>
<a id='n11030' href='#n11030'>11030</a>
<a id='n11031' href='#n11031'>11031</a>
<a id='n11032' href='#n11032'>11032</a>
<a id='n11033' href='#n11033'>11033</a>
<a id='n11034' href='#n11034'>11034</a>
<a id='n11035' href='#n11035'>11035</a>
<a id='n11036' href='#n11036'>11036</a>
<a id='n11037' href='#n11037'>11037</a>
<a id='n11038' href='#n11038'>11038</a>
<a id='n11039' href='#n11039'>11039</a>
<a id='n11040' href='#n11040'>11040</a>
<a id='n11041' href='#n11041'>11041</a>
<a id='n11042' href='#n11042'>11042</a>
<a id='n11043' href='#n11043'>11043</a>
<a id='n11044' href='#n11044'>11044</a>
<a id='n11045' href='#n11045'>11045</a>
<a id='n11046' href='#n11046'>11046</a>
<a id='n11047' href='#n11047'>11047</a>
<a id='n11048' href='#n11048'>11048</a>
<a id='n11049' href='#n11049'>11049</a>
<a id='n11050' href='#n11050'>11050</a>
<a id='n11051' href='#n11051'>11051</a>
<a id='n11052' href='#n11052'>11052</a>
<a id='n11053' href='#n11053'>11053</a>
<a id='n11054' href='#n11054'>11054</a>
<a id='n11055' href='#n11055'>11055</a>
<a id='n11056' href='#n11056'>11056</a>
<a id='n11057' href='#n11057'>11057</a>
<a id='n11058' href='#n11058'>11058</a>
<a id='n11059' href='#n11059'>11059</a>
<a id='n11060' href='#n11060'>11060</a>
<a id='n11061' href='#n11061'>11061</a>
<a id='n11062' href='#n11062'>11062</a>
<a id='n11063' href='#n11063'>11063</a>
<a id='n11064' href='#n11064'>11064</a>
<a id='n11065' href='#n11065'>11065</a>
<a id='n11066' href='#n11066'>11066</a>
<a id='n11067' href='#n11067'>11067</a>
<a id='n11068' href='#n11068'>11068</a>
<a id='n11069' href='#n11069'>11069</a>
<a id='n11070' href='#n11070'>11070</a>
<a id='n11071' href='#n11071'>11071</a>
<a id='n11072' href='#n11072'>11072</a>
<a id='n11073' href='#n11073'>11073</a>
<a id='n11074' href='#n11074'>11074</a>
<a id='n11075' href='#n11075'>11075</a>
<a id='n11076' href='#n11076'>11076</a>
<a id='n11077' href='#n11077'>11077</a>
<a id='n11078' href='#n11078'>11078</a>
<a id='n11079' href='#n11079'>11079</a>
<a id='n11080' href='#n11080'>11080</a>
<a id='n11081' href='#n11081'>11081</a>
<a id='n11082' href='#n11082'>11082</a>
<a id='n11083' href='#n11083'>11083</a>
<a id='n11084' href='#n11084'>11084</a>
<a id='n11085' href='#n11085'>11085</a>
<a id='n11086' href='#n11086'>11086</a>
<a id='n11087' href='#n11087'>11087</a>
<a id='n11088' href='#n11088'>11088</a>
<a id='n11089' href='#n11089'>11089</a>
<a id='n11090' href='#n11090'>11090</a>
<a id='n11091' href='#n11091'>11091</a>
<a id='n11092' href='#n11092'>11092</a>
<a id='n11093' href='#n11093'>11093</a>
<a id='n11094' href='#n11094'>11094</a>
<a id='n11095' href='#n11095'>11095</a>
<a id='n11096' href='#n11096'>11096</a>
<a id='n11097' href='#n11097'>11097</a>
<a id='n11098' href='#n11098'>11098</a>
<a id='n11099' href='#n11099'>11099</a>
<a id='n11100' href='#n11100'>11100</a>
<a id='n11101' href='#n11101'>11101</a>
<a id='n11102' href='#n11102'>11102</a>
<a id='n11103' href='#n11103'>11103</a>
<a id='n11104' href='#n11104'>11104</a>
<a id='n11105' href='#n11105'>11105</a>
<a id='n11106' href='#n11106'>11106</a>
<a id='n11107' href='#n11107'>11107</a>
<a id='n11108' href='#n11108'>11108</a>
<a id='n11109' href='#n11109'>11109</a>
<a id='n11110' href='#n11110'>11110</a>
<a id='n11111' href='#n11111'>11111</a>
<a id='n11112' href='#n11112'>11112</a>
<a id='n11113' href='#n11113'>11113</a>
<a id='n11114' href='#n11114'>11114</a>
<a id='n11115' href='#n11115'>11115</a>
<a id='n11116' href='#n11116'>11116</a>
<a id='n11117' href='#n11117'>11117</a>
<a id='n11118' href='#n11118'>11118</a>
<a id='n11119' href='#n11119'>11119</a>
<a id='n11120' href='#n11120'>11120</a>
<a id='n11121' href='#n11121'>11121</a>
<a id='n11122' href='#n11122'>11122</a>
<a id='n11123' href='#n11123'>11123</a>
<a id='n11124' href='#n11124'>11124</a>
<a id='n11125' href='#n11125'>11125</a>
<a id='n11126' href='#n11126'>11126</a>
<a id='n11127' href='#n11127'>11127</a>
<a id='n11128' href='#n11128'>11128</a>
<a id='n11129' href='#n11129'>11129</a>
<a id='n11130' href='#n11130'>11130</a>
<a id='n11131' href='#n11131'>11131</a>
<a id='n11132' href='#n11132'>11132</a>
<a id='n11133' href='#n11133'>11133</a>
<a id='n11134' href='#n11134'>11134</a>
<a id='n11135' href='#n11135'>11135</a>
<a id='n11136' href='#n11136'>11136</a>
<a id='n11137' href='#n11137'>11137</a>
<a id='n11138' href='#n11138'>11138</a>
<a id='n11139' href='#n11139'>11139</a>
<a id='n11140' href='#n11140'>11140</a>
<a id='n11141' href='#n11141'>11141</a>
<a id='n11142' href='#n11142'>11142</a>
<a id='n11143' href='#n11143'>11143</a>
<a id='n11144' href='#n11144'>11144</a>
<a id='n11145' href='#n11145'>11145</a>
<a id='n11146' href='#n11146'>11146</a>
<a id='n11147' href='#n11147'>11147</a>
<a id='n11148' href='#n11148'>11148</a>
<a id='n11149' href='#n11149'>11149</a>
<a id='n11150' href='#n11150'>11150</a>
<a id='n11151' href='#n11151'>11151</a>
<a id='n11152' href='#n11152'>11152</a>
<a id='n11153' href='#n11153'>11153</a>
<a id='n11154' href='#n11154'>11154</a>
<a id='n11155' href='#n11155'>11155</a>
<a id='n11156' href='#n11156'>11156</a>
<a id='n11157' href='#n11157'>11157</a>
<a id='n11158' href='#n11158'>11158</a>
<a id='n11159' href='#n11159'>11159</a>
<a id='n11160' href='#n11160'>11160</a>
<a id='n11161' href='#n11161'>11161</a>
<a id='n11162' href='#n11162'>11162</a>
<a id='n11163' href='#n11163'>11163</a>
<a id='n11164' href='#n11164'>11164</a>
<a id='n11165' href='#n11165'>11165</a>
<a id='n11166' href='#n11166'>11166</a>
<a id='n11167' href='#n11167'>11167</a>
<a id='n11168' href='#n11168'>11168</a>
<a id='n11169' href='#n11169'>11169</a>
<a id='n11170' href='#n11170'>11170</a>
<a id='n11171' href='#n11171'>11171</a>
<a id='n11172' href='#n11172'>11172</a>
<a id='n11173' href='#n11173'>11173</a>
<a id='n11174' href='#n11174'>11174</a>
<a id='n11175' href='#n11175'>11175</a>
<a id='n11176' href='#n11176'>11176</a>
<a id='n11177' href='#n11177'>11177</a>
<a id='n11178' href='#n11178'>11178</a>
<a id='n11179' href='#n11179'>11179</a>
<a id='n11180' href='#n11180'>11180</a>
<a id='n11181' href='#n11181'>11181</a>
<a id='n11182' href='#n11182'>11182</a>
<a id='n11183' href='#n11183'>11183</a>
<a id='n11184' href='#n11184'>11184</a>
<a id='n11185' href='#n11185'>11185</a>
<a id='n11186' href='#n11186'>11186</a>
<a id='n11187' href='#n11187'>11187</a>
<a id='n11188' href='#n11188'>11188</a>
<a id='n11189' href='#n11189'>11189</a>
<a id='n11190' href='#n11190'>11190</a>
<a id='n11191' href='#n11191'>11191</a>
<a id='n11192' href='#n11192'>11192</a>
<a id='n11193' href='#n11193'>11193</a>
<a id='n11194' href='#n11194'>11194</a>
<a id='n11195' href='#n11195'>11195</a>
<a id='n11196' href='#n11196'>11196</a>
<a id='n11197' href='#n11197'>11197</a>
<a id='n11198' href='#n11198'>11198</a>
<a id='n11199' href='#n11199'>11199</a>
<a id='n11200' href='#n11200'>11200</a>
<a id='n11201' href='#n11201'>11201</a>
<a id='n11202' href='#n11202'>11202</a>
<a id='n11203' href='#n11203'>11203</a>
<a id='n11204' href='#n11204'>11204</a>
<a id='n11205' href='#n11205'>11205</a>
<a id='n11206' href='#n11206'>11206</a>
<a id='n11207' href='#n11207'>11207</a>
<a id='n11208' href='#n11208'>11208</a>
<a id='n11209' href='#n11209'>11209</a>
<a id='n11210' href='#n11210'>11210</a>
<a id='n11211' href='#n11211'>11211</a>
<a id='n11212' href='#n11212'>11212</a>
<a id='n11213' href='#n11213'>11213</a>
<a id='n11214' href='#n11214'>11214</a>
<a id='n11215' href='#n11215'>11215</a>
<a id='n11216' href='#n11216'>11216</a>
<a id='n11217' href='#n11217'>11217</a>
<a id='n11218' href='#n11218'>11218</a>
<a id='n11219' href='#n11219'>11219</a>
<a id='n11220' href='#n11220'>11220</a>
<a id='n11221' href='#n11221'>11221</a>
<a id='n11222' href='#n11222'>11222</a>
<a id='n11223' href='#n11223'>11223</a>
<a id='n11224' href='#n11224'>11224</a>
<a id='n11225' href='#n11225'>11225</a>
<a id='n11226' href='#n11226'>11226</a>
<a id='n11227' href='#n11227'>11227</a>
<a id='n11228' href='#n11228'>11228</a>
<a id='n11229' href='#n11229'>11229</a>
<a id='n11230' href='#n11230'>11230</a>
<a id='n11231' href='#n11231'>11231</a>
<a id='n11232' href='#n11232'>11232</a>
<a id='n11233' href='#n11233'>11233</a>
<a id='n11234' href='#n11234'>11234</a>
<a id='n11235' href='#n11235'>11235</a>
<a id='n11236' href='#n11236'>11236</a>
<a id='n11237' href='#n11237'>11237</a>
<a id='n11238' href='#n11238'>11238</a>
<a id='n11239' href='#n11239'>11239</a>
<a id='n11240' href='#n11240'>11240</a>
<a id='n11241' href='#n11241'>11241</a>
<a id='n11242' href='#n11242'>11242</a>
<a id='n11243' href='#n11243'>11243</a>
<a id='n11244' href='#n11244'>11244</a>
<a id='n11245' href='#n11245'>11245</a>
<a id='n11246' href='#n11246'>11246</a>
<a id='n11247' href='#n11247'>11247</a>
<a id='n11248' href='#n11248'>11248</a>
<a id='n11249' href='#n11249'>11249</a>
<a id='n11250' href='#n11250'>11250</a>
<a id='n11251' href='#n11251'>11251</a>
<a id='n11252' href='#n11252'>11252</a>
<a id='n11253' href='#n11253'>11253</a>
<a id='n11254' href='#n11254'>11254</a>
<a id='n11255' href='#n11255'>11255</a>
<a id='n11256' href='#n11256'>11256</a>
<a id='n11257' href='#n11257'>11257</a>
<a id='n11258' href='#n11258'>11258</a>
<a id='n11259' href='#n11259'>11259</a>
<a id='n11260' href='#n11260'>11260</a>
<a id='n11261' href='#n11261'>11261</a>
<a id='n11262' href='#n11262'>11262</a>
<a id='n11263' href='#n11263'>11263</a>
<a id='n11264' href='#n11264'>11264</a>
<a id='n11265' href='#n11265'>11265</a>
<a id='n11266' href='#n11266'>11266</a>
<a id='n11267' href='#n11267'>11267</a>
<a id='n11268' href='#n11268'>11268</a>
<a id='n11269' href='#n11269'>11269</a>
<a id='n11270' href='#n11270'>11270</a>
<a id='n11271' href='#n11271'>11271</a>
<a id='n11272' href='#n11272'>11272</a>
<a id='n11273' href='#n11273'>11273</a>
<a id='n11274' href='#n11274'>11274</a>
<a id='n11275' href='#n11275'>11275</a>
<a id='n11276' href='#n11276'>11276</a>
<a id='n11277' href='#n11277'>11277</a>
<a id='n11278' href='#n11278'>11278</a>
<a id='n11279' href='#n11279'>11279</a>
<a id='n11280' href='#n11280'>11280</a>
<a id='n11281' href='#n11281'>11281</a>
<a id='n11282' href='#n11282'>11282</a>
<a id='n11283' href='#n11283'>11283</a>
<a id='n11284' href='#n11284'>11284</a>
<a id='n11285' href='#n11285'>11285</a>
<a id='n11286' href='#n11286'>11286</a>
<a id='n11287' href='#n11287'>11287</a>
<a id='n11288' href='#n11288'>11288</a>
<a id='n11289' href='#n11289'>11289</a>
<a id='n11290' href='#n11290'>11290</a>
<a id='n11291' href='#n11291'>11291</a>
<a id='n11292' href='#n11292'>11292</a>
<a id='n11293' href='#n11293'>11293</a>
<a id='n11294' href='#n11294'>11294</a>
<a id='n11295' href='#n11295'>11295</a>
<a id='n11296' href='#n11296'>11296</a>
<a id='n11297' href='#n11297'>11297</a>
<a id='n11298' href='#n11298'>11298</a>
<a id='n11299' href='#n11299'>11299</a>
<a id='n11300' href='#n11300'>11300</a>
<a id='n11301' href='#n11301'>11301</a>
<a id='n11302' href='#n11302'>11302</a>
<a id='n11303' href='#n11303'>11303</a>
<a id='n11304' href='#n11304'>11304</a>
<a id='n11305' href='#n11305'>11305</a>
<a id='n11306' href='#n11306'>11306</a>
<a id='n11307' href='#n11307'>11307</a>
<a id='n11308' href='#n11308'>11308</a>
<a id='n11309' href='#n11309'>11309</a>
<a id='n11310' href='#n11310'>11310</a>
<a id='n11311' href='#n11311'>11311</a>
<a id='n11312' href='#n11312'>11312</a>
<a id='n11313' href='#n11313'>11313</a>
<a id='n11314' href='#n11314'>11314</a>
<a id='n11315' href='#n11315'>11315</a>
<a id='n11316' href='#n11316'>11316</a>
<a id='n11317' href='#n11317'>11317</a>
<a id='n11318' href='#n11318'>11318</a>
<a id='n11319' href='#n11319'>11319</a>
<a id='n11320' href='#n11320'>11320</a>
<a id='n11321' href='#n11321'>11321</a>
<a id='n11322' href='#n11322'>11322</a>
<a id='n11323' href='#n11323'>11323</a>
<a id='n11324' href='#n11324'>11324</a>
<a id='n11325' href='#n11325'>11325</a>
<a id='n11326' href='#n11326'>11326</a>
<a id='n11327' href='#n11327'>11327</a>
<a id='n11328' href='#n11328'>11328</a>
<a id='n11329' href='#n11329'>11329</a>
<a id='n11330' href='#n11330'>11330</a>
<a id='n11331' href='#n11331'>11331</a>
<a id='n11332' href='#n11332'>11332</a>
<a id='n11333' href='#n11333'>11333</a>
<a id='n11334' href='#n11334'>11334</a>
<a id='n11335' href='#n11335'>11335</a>
<a id='n11336' href='#n11336'>11336</a>
<a id='n11337' href='#n11337'>11337</a>
<a id='n11338' href='#n11338'>11338</a>
<a id='n11339' href='#n11339'>11339</a>
<a id='n11340' href='#n11340'>11340</a>
<a id='n11341' href='#n11341'>11341</a>
<a id='n11342' href='#n11342'>11342</a>
<a id='n11343' href='#n11343'>11343</a>
<a id='n11344' href='#n11344'>11344</a>
<a id='n11345' href='#n11345'>11345</a>
<a id='n11346' href='#n11346'>11346</a>
<a id='n11347' href='#n11347'>11347</a>
<a id='n11348' href='#n11348'>11348</a>
<a id='n11349' href='#n11349'>11349</a>
<a id='n11350' href='#n11350'>11350</a>
<a id='n11351' href='#n11351'>11351</a>
<a id='n11352' href='#n11352'>11352</a>
<a id='n11353' href='#n11353'>11353</a>
<a id='n11354' href='#n11354'>11354</a>
<a id='n11355' href='#n11355'>11355</a>
<a id='n11356' href='#n11356'>11356</a>
<a id='n11357' href='#n11357'>11357</a>
<a id='n11358' href='#n11358'>11358</a>
<a id='n11359' href='#n11359'>11359</a>
<a id='n11360' href='#n11360'>11360</a>
<a id='n11361' href='#n11361'>11361</a>
<a id='n11362' href='#n11362'>11362</a>
<a id='n11363' href='#n11363'>11363</a>
<a id='n11364' href='#n11364'>11364</a>
<a id='n11365' href='#n11365'>11365</a>
<a id='n11366' href='#n11366'>11366</a>
<a id='n11367' href='#n11367'>11367</a>
<a id='n11368' href='#n11368'>11368</a>
<a id='n11369' href='#n11369'>11369</a>
<a id='n11370' href='#n11370'>11370</a>
<a id='n11371' href='#n11371'>11371</a>
<a id='n11372' href='#n11372'>11372</a>
<a id='n11373' href='#n11373'>11373</a>
<a id='n11374' href='#n11374'>11374</a>
<a id='n11375' href='#n11375'>11375</a>
<a id='n11376' href='#n11376'>11376</a>
<a id='n11377' href='#n11377'>11377</a>
<a id='n11378' href='#n11378'>11378</a>
<a id='n11379' href='#n11379'>11379</a>
<a id='n11380' href='#n11380'>11380</a>
<a id='n11381' href='#n11381'>11381</a>
<a id='n11382' href='#n11382'>11382</a>
<a id='n11383' href='#n11383'>11383</a>
<a id='n11384' href='#n11384'>11384</a>
<a id='n11385' href='#n11385'>11385</a>
<a id='n11386' href='#n11386'>11386</a>
<a id='n11387' href='#n11387'>11387</a>
<a id='n11388' href='#n11388'>11388</a>
<a id='n11389' href='#n11389'>11389</a>
<a id='n11390' href='#n11390'>11390</a>
<a id='n11391' href='#n11391'>11391</a>
<a id='n11392' href='#n11392'>11392</a>
<a id='n11393' href='#n11393'>11393</a>
<a id='n11394' href='#n11394'>11394</a>
<a id='n11395' href='#n11395'>11395</a>
<a id='n11396' href='#n11396'>11396</a>
<a id='n11397' href='#n11397'>11397</a>
<a id='n11398' href='#n11398'>11398</a>
<a id='n11399' href='#n11399'>11399</a>
<a id='n11400' href='#n11400'>11400</a>
<a id='n11401' href='#n11401'>11401</a>
<a id='n11402' href='#n11402'>11402</a>
<a id='n11403' href='#n11403'>11403</a>
<a id='n11404' href='#n11404'>11404</a>
<a id='n11405' href='#n11405'>11405</a>
<a id='n11406' href='#n11406'>11406</a>
<a id='n11407' href='#n11407'>11407</a>
<a id='n11408' href='#n11408'>11408</a>
<a id='n11409' href='#n11409'>11409</a>
<a id='n11410' href='#n11410'>11410</a>
<a id='n11411' href='#n11411'>11411</a>
<a id='n11412' href='#n11412'>11412</a>
<a id='n11413' href='#n11413'>11413</a>
<a id='n11414' href='#n11414'>11414</a>
<a id='n11415' href='#n11415'>11415</a>
<a id='n11416' href='#n11416'>11416</a>
<a id='n11417' href='#n11417'>11417</a>
<a id='n11418' href='#n11418'>11418</a>
<a id='n11419' href='#n11419'>11419</a>
<a id='n11420' href='#n11420'>11420</a>
<a id='n11421' href='#n11421'>11421</a>
<a id='n11422' href='#n11422'>11422</a>
<a id='n11423' href='#n11423'>11423</a>
<a id='n11424' href='#n11424'>11424</a>
<a id='n11425' href='#n11425'>11425</a>
<a id='n11426' href='#n11426'>11426</a>
<a id='n11427' href='#n11427'>11427</a>
<a id='n11428' href='#n11428'>11428</a>
<a id='n11429' href='#n11429'>11429</a>
<a id='n11430' href='#n11430'>11430</a>
<a id='n11431' href='#n11431'>11431</a>
<a id='n11432' href='#n11432'>11432</a>
<a id='n11433' href='#n11433'>11433</a>
<a id='n11434' href='#n11434'>11434</a>
<a id='n11435' href='#n11435'>11435</a>
<a id='n11436' href='#n11436'>11436</a>
<a id='n11437' href='#n11437'>11437</a>
<a id='n11438' href='#n11438'>11438</a>
<a id='n11439' href='#n11439'>11439</a>
<a id='n11440' href='#n11440'>11440</a>
<a id='n11441' href='#n11441'>11441</a>
<a id='n11442' href='#n11442'>11442</a>
<a id='n11443' href='#n11443'>11443</a>
<a id='n11444' href='#n11444'>11444</a>
<a id='n11445' href='#n11445'>11445</a>
<a id='n11446' href='#n11446'>11446</a>
<a id='n11447' href='#n11447'>11447</a>
<a id='n11448' href='#n11448'>11448</a>
<a id='n11449' href='#n11449'>11449</a>
<a id='n11450' href='#n11450'>11450</a>
<a id='n11451' href='#n11451'>11451</a>
<a id='n11452' href='#n11452'>11452</a>
<a id='n11453' href='#n11453'>11453</a>
<a id='n11454' href='#n11454'>11454</a>
<a id='n11455' href='#n11455'>11455</a>
<a id='n11456' href='#n11456'>11456</a>
<a id='n11457' href='#n11457'>11457</a>
<a id='n11458' href='#n11458'>11458</a>
<a id='n11459' href='#n11459'>11459</a>
<a id='n11460' href='#n11460'>11460</a>
<a id='n11461' href='#n11461'>11461</a>
<a id='n11462' href='#n11462'>11462</a>
<a id='n11463' href='#n11463'>11463</a>
<a id='n11464' href='#n11464'>11464</a>
<a id='n11465' href='#n11465'>11465</a>
<a id='n11466' href='#n11466'>11466</a>
<a id='n11467' href='#n11467'>11467</a>
<a id='n11468' href='#n11468'>11468</a>
<a id='n11469' href='#n11469'>11469</a>
<a id='n11470' href='#n11470'>11470</a>
<a id='n11471' href='#n11471'>11471</a>
<a id='n11472' href='#n11472'>11472</a>
<a id='n11473' href='#n11473'>11473</a>
<a id='n11474' href='#n11474'>11474</a>
<a id='n11475' href='#n11475'>11475</a>
<a id='n11476' href='#n11476'>11476</a>
<a id='n11477' href='#n11477'>11477</a>
<a id='n11478' href='#n11478'>11478</a>
<a id='n11479' href='#n11479'>11479</a>
<a id='n11480' href='#n11480'>11480</a>
<a id='n11481' href='#n11481'>11481</a>
<a id='n11482' href='#n11482'>11482</a>
<a id='n11483' href='#n11483'>11483</a>
<a id='n11484' href='#n11484'>11484</a>
<a id='n11485' href='#n11485'>11485</a>
<a id='n11486' href='#n11486'>11486</a>
<a id='n11487' href='#n11487'>11487</a>
<a id='n11488' href='#n11488'>11488</a>
<a id='n11489' href='#n11489'>11489</a>
<a id='n11490' href='#n11490'>11490</a>
<a id='n11491' href='#n11491'>11491</a>
<a id='n11492' href='#n11492'>11492</a>
<a id='n11493' href='#n11493'>11493</a>
<a id='n11494' href='#n11494'>11494</a>
<a id='n11495' href='#n11495'>11495</a>
<a id='n11496' href='#n11496'>11496</a>
<a id='n11497' href='#n11497'>11497</a>
<a id='n11498' href='#n11498'>11498</a>
<a id='n11499' href='#n11499'>11499</a>
<a id='n11500' href='#n11500'>11500</a>
<a id='n11501' href='#n11501'>11501</a>
<a id='n11502' href='#n11502'>11502</a>
<a id='n11503' href='#n11503'>11503</a>
<a id='n11504' href='#n11504'>11504</a>
<a id='n11505' href='#n11505'>11505</a>
<a id='n11506' href='#n11506'>11506</a>
<a id='n11507' href='#n11507'>11507</a>
<a id='n11508' href='#n11508'>11508</a>
<a id='n11509' href='#n11509'>11509</a>
<a id='n11510' href='#n11510'>11510</a>
<a id='n11511' href='#n11511'>11511</a>
<a id='n11512' href='#n11512'>11512</a>
<a id='n11513' href='#n11513'>11513</a>
<a id='n11514' href='#n11514'>11514</a>
<a id='n11515' href='#n11515'>11515</a>
<a id='n11516' href='#n11516'>11516</a>
<a id='n11517' href='#n11517'>11517</a>
<a id='n11518' href='#n11518'>11518</a>
<a id='n11519' href='#n11519'>11519</a>
<a id='n11520' href='#n11520'>11520</a>
<a id='n11521' href='#n11521'>11521</a>
<a id='n11522' href='#n11522'>11522</a>
<a id='n11523' href='#n11523'>11523</a>
<a id='n11524' href='#n11524'>11524</a>
<a id='n11525' href='#n11525'>11525</a>
<a id='n11526' href='#n11526'>11526</a>
<a id='n11527' href='#n11527'>11527</a>
<a id='n11528' href='#n11528'>11528</a>
<a id='n11529' href='#n11529'>11529</a>
<a id='n11530' href='#n11530'>11530</a>
<a id='n11531' href='#n11531'>11531</a>
<a id='n11532' href='#n11532'>11532</a>
<a id='n11533' href='#n11533'>11533</a>
<a id='n11534' href='#n11534'>11534</a>
<a id='n11535' href='#n11535'>11535</a>
<a id='n11536' href='#n11536'>11536</a>
<a id='n11537' href='#n11537'>11537</a>
<a id='n11538' href='#n11538'>11538</a>
<a id='n11539' href='#n11539'>11539</a>
<a id='n11540' href='#n11540'>11540</a>
<a id='n11541' href='#n11541'>11541</a>
<a id='n11542' href='#n11542'>11542</a>
<a id='n11543' href='#n11543'>11543</a>
<a id='n11544' href='#n11544'>11544</a>
<a id='n11545' href='#n11545'>11545</a>
<a id='n11546' href='#n11546'>11546</a>
<a id='n11547' href='#n11547'>11547</a>
<a id='n11548' href='#n11548'>11548</a>
<a id='n11549' href='#n11549'>11549</a>
<a id='n11550' href='#n11550'>11550</a>
<a id='n11551' href='#n11551'>11551</a>
<a id='n11552' href='#n11552'>11552</a>
<a id='n11553' href='#n11553'>11553</a>
<a id='n11554' href='#n11554'>11554</a>
<a id='n11555' href='#n11555'>11555</a>
<a id='n11556' href='#n11556'>11556</a>
<a id='n11557' href='#n11557'>11557</a>
<a id='n11558' href='#n11558'>11558</a>
<a id='n11559' href='#n11559'>11559</a>
<a id='n11560' href='#n11560'>11560</a>
<a id='n11561' href='#n11561'>11561</a>
<a id='n11562' href='#n11562'>11562</a>
<a id='n11563' href='#n11563'>11563</a>
<a id='n11564' href='#n11564'>11564</a>
<a id='n11565' href='#n11565'>11565</a>
<a id='n11566' href='#n11566'>11566</a>
<a id='n11567' href='#n11567'>11567</a>
<a id='n11568' href='#n11568'>11568</a>
<a id='n11569' href='#n11569'>11569</a>
<a id='n11570' href='#n11570'>11570</a>
<a id='n11571' href='#n11571'>11571</a>
<a id='n11572' href='#n11572'>11572</a>
<a id='n11573' href='#n11573'>11573</a>
<a id='n11574' href='#n11574'>11574</a>
<a id='n11575' href='#n11575'>11575</a>
<a id='n11576' href='#n11576'>11576</a>
<a id='n11577' href='#n11577'>11577</a>
<a id='n11578' href='#n11578'>11578</a>
<a id='n11579' href='#n11579'>11579</a>
<a id='n11580' href='#n11580'>11580</a>
<a id='n11581' href='#n11581'>11581</a>
<a id='n11582' href='#n11582'>11582</a>
<a id='n11583' href='#n11583'>11583</a>
<a id='n11584' href='#n11584'>11584</a>
<a id='n11585' href='#n11585'>11585</a>
<a id='n11586' href='#n11586'>11586</a>
<a id='n11587' href='#n11587'>11587</a>
<a id='n11588' href='#n11588'>11588</a>
<a id='n11589' href='#n11589'>11589</a>
<a id='n11590' href='#n11590'>11590</a>
<a id='n11591' href='#n11591'>11591</a>
<a id='n11592' href='#n11592'>11592</a>
<a id='n11593' href='#n11593'>11593</a>
<a id='n11594' href='#n11594'>11594</a>
<a id='n11595' href='#n11595'>11595</a>
<a id='n11596' href='#n11596'>11596</a>
<a id='n11597' href='#n11597'>11597</a>
<a id='n11598' href='#n11598'>11598</a>
<a id='n11599' href='#n11599'>11599</a>
<a id='n11600' href='#n11600'>11600</a>
<a id='n11601' href='#n11601'>11601</a>
<a id='n11602' href='#n11602'>11602</a>
<a id='n11603' href='#n11603'>11603</a>
<a id='n11604' href='#n11604'>11604</a>
<a id='n11605' href='#n11605'>11605</a>
<a id='n11606' href='#n11606'>11606</a>
<a id='n11607' href='#n11607'>11607</a>
<a id='n11608' href='#n11608'>11608</a>
<a id='n11609' href='#n11609'>11609</a>
<a id='n11610' href='#n11610'>11610</a>
<a id='n11611' href='#n11611'>11611</a>
<a id='n11612' href='#n11612'>11612</a>
<a id='n11613' href='#n11613'>11613</a>
<a id='n11614' href='#n11614'>11614</a>
<a id='n11615' href='#n11615'>11615</a>
<a id='n11616' href='#n11616'>11616</a>
<a id='n11617' href='#n11617'>11617</a>
<a id='n11618' href='#n11618'>11618</a>
<a id='n11619' href='#n11619'>11619</a>
<a id='n11620' href='#n11620'>11620</a>
<a id='n11621' href='#n11621'>11621</a>
<a id='n11622' href='#n11622'>11622</a>
<a id='n11623' href='#n11623'>11623</a>
<a id='n11624' href='#n11624'>11624</a>
<a id='n11625' href='#n11625'>11625</a>
<a id='n11626' href='#n11626'>11626</a>
<a id='n11627' href='#n11627'>11627</a>
<a id='n11628' href='#n11628'>11628</a>
<a id='n11629' href='#n11629'>11629</a>
<a id='n11630' href='#n11630'>11630</a>
<a id='n11631' href='#n11631'>11631</a>
<a id='n11632' href='#n11632'>11632</a>
<a id='n11633' href='#n11633'>11633</a>
<a id='n11634' href='#n11634'>11634</a>
<a id='n11635' href='#n11635'>11635</a>
<a id='n11636' href='#n11636'>11636</a>
<a id='n11637' href='#n11637'>11637</a>
<a id='n11638' href='#n11638'>11638</a>
<a id='n11639' href='#n11639'>11639</a>
<a id='n11640' href='#n11640'>11640</a>
<a id='n11641' href='#n11641'>11641</a>
<a id='n11642' href='#n11642'>11642</a>
<a id='n11643' href='#n11643'>11643</a>
<a id='n11644' href='#n11644'>11644</a>
<a id='n11645' href='#n11645'>11645</a>
<a id='n11646' href='#n11646'>11646</a>
<a id='n11647' href='#n11647'>11647</a>
<a id='n11648' href='#n11648'>11648</a>
<a id='n11649' href='#n11649'>11649</a>
<a id='n11650' href='#n11650'>11650</a>
<a id='n11651' href='#n11651'>11651</a>
<a id='n11652' href='#n11652'>11652</a>
<a id='n11653' href='#n11653'>11653</a>
<a id='n11654' href='#n11654'>11654</a>
<a id='n11655' href='#n11655'>11655</a>
<a id='n11656' href='#n11656'>11656</a>
<a id='n11657' href='#n11657'>11657</a>
<a id='n11658' href='#n11658'>11658</a>
<a id='n11659' href='#n11659'>11659</a>
<a id='n11660' href='#n11660'>11660</a>
<a id='n11661' href='#n11661'>11661</a>
<a id='n11662' href='#n11662'>11662</a>
<a id='n11663' href='#n11663'>11663</a>
<a id='n11664' href='#n11664'>11664</a>
<a id='n11665' href='#n11665'>11665</a>
<a id='n11666' href='#n11666'>11666</a>
<a id='n11667' href='#n11667'>11667</a>
<a id='n11668' href='#n11668'>11668</a>
<a id='n11669' href='#n11669'>11669</a>
<a id='n11670' href='#n11670'>11670</a>
<a id='n11671' href='#n11671'>11671</a>
<a id='n11672' href='#n11672'>11672</a>
<a id='n11673' href='#n11673'>11673</a>
<a id='n11674' href='#n11674'>11674</a>
<a id='n11675' href='#n11675'>11675</a>
<a id='n11676' href='#n11676'>11676</a>
<a id='n11677' href='#n11677'>11677</a>
<a id='n11678' href='#n11678'>11678</a>
<a id='n11679' href='#n11679'>11679</a>
<a id='n11680' href='#n11680'>11680</a>
<a id='n11681' href='#n11681'>11681</a>
<a id='n11682' href='#n11682'>11682</a>
<a id='n11683' href='#n11683'>11683</a>
<a id='n11684' href='#n11684'>11684</a>
<a id='n11685' href='#n11685'>11685</a>
<a id='n11686' href='#n11686'>11686</a>
<a id='n11687' href='#n11687'>11687</a>
<a id='n11688' href='#n11688'>11688</a>
<a id='n11689' href='#n11689'>11689</a>
<a id='n11690' href='#n11690'>11690</a>
<a id='n11691' href='#n11691'>11691</a>
<a id='n11692' href='#n11692'>11692</a>
<a id='n11693' href='#n11693'>11693</a>
<a id='n11694' href='#n11694'>11694</a>
<a id='n11695' href='#n11695'>11695</a>
<a id='n11696' href='#n11696'>11696</a>
<a id='n11697' href='#n11697'>11697</a>
<a id='n11698' href='#n11698'>11698</a>
<a id='n11699' href='#n11699'>11699</a>
<a id='n11700' href='#n11700'>11700</a>
<a id='n11701' href='#n11701'>11701</a>
<a id='n11702' href='#n11702'>11702</a>
<a id='n11703' href='#n11703'>11703</a>
<a id='n11704' href='#n11704'>11704</a>
<a id='n11705' href='#n11705'>11705</a>
<a id='n11706' href='#n11706'>11706</a>
<a id='n11707' href='#n11707'>11707</a>
<a id='n11708' href='#n11708'>11708</a>
<a id='n11709' href='#n11709'>11709</a>
<a id='n11710' href='#n11710'>11710</a>
<a id='n11711' href='#n11711'>11711</a>
<a id='n11712' href='#n11712'>11712</a>
<a id='n11713' href='#n11713'>11713</a>
<a id='n11714' href='#n11714'>11714</a>
<a id='n11715' href='#n11715'>11715</a>
<a id='n11716' href='#n11716'>11716</a>
<a id='n11717' href='#n11717'>11717</a>
<a id='n11718' href='#n11718'>11718</a>
<a id='n11719' href='#n11719'>11719</a>
<a id='n11720' href='#n11720'>11720</a>
<a id='n11721' href='#n11721'>11721</a>
<a id='n11722' href='#n11722'>11722</a>
<a id='n11723' href='#n11723'>11723</a>
<a id='n11724' href='#n11724'>11724</a>
<a id='n11725' href='#n11725'>11725</a>
<a id='n11726' href='#n11726'>11726</a>
<a id='n11727' href='#n11727'>11727</a>
<a id='n11728' href='#n11728'>11728</a>
<a id='n11729' href='#n11729'>11729</a>
<a id='n11730' href='#n11730'>11730</a>
<a id='n11731' href='#n11731'>11731</a>
<a id='n11732' href='#n11732'>11732</a>
<a id='n11733' href='#n11733'>11733</a>
<a id='n11734' href='#n11734'>11734</a>
<a id='n11735' href='#n11735'>11735</a>
<a id='n11736' href='#n11736'>11736</a>
<a id='n11737' href='#n11737'>11737</a>
<a id='n11738' href='#n11738'>11738</a>
<a id='n11739' href='#n11739'>11739</a>
<a id='n11740' href='#n11740'>11740</a>
<a id='n11741' href='#n11741'>11741</a>
<a id='n11742' href='#n11742'>11742</a>
<a id='n11743' href='#n11743'>11743</a>
<a id='n11744' href='#n11744'>11744</a>
<a id='n11745' href='#n11745'>11745</a>
<a id='n11746' href='#n11746'>11746</a>
<a id='n11747' href='#n11747'>11747</a>
<a id='n11748' href='#n11748'>11748</a>
<a id='n11749' href='#n11749'>11749</a>
<a id='n11750' href='#n11750'>11750</a>
<a id='n11751' href='#n11751'>11751</a>
<a id='n11752' href='#n11752'>11752</a>
<a id='n11753' href='#n11753'>11753</a>
<a id='n11754' href='#n11754'>11754</a>
<a id='n11755' href='#n11755'>11755</a>
<a id='n11756' href='#n11756'>11756</a>
<a id='n11757' href='#n11757'>11757</a>
<a id='n11758' href='#n11758'>11758</a>
<a id='n11759' href='#n11759'>11759</a>
<a id='n11760' href='#n11760'>11760</a>
<a id='n11761' href='#n11761'>11761</a>
<a id='n11762' href='#n11762'>11762</a>
<a id='n11763' href='#n11763'>11763</a>
<a id='n11764' href='#n11764'>11764</a>
<a id='n11765' href='#n11765'>11765</a>
<a id='n11766' href='#n11766'>11766</a>
<a id='n11767' href='#n11767'>11767</a>
<a id='n11768' href='#n11768'>11768</a>
<a id='n11769' href='#n11769'>11769</a>
<a id='n11770' href='#n11770'>11770</a>
<a id='n11771' href='#n11771'>11771</a>
<a id='n11772' href='#n11772'>11772</a>
<a id='n11773' href='#n11773'>11773</a>
<a id='n11774' href='#n11774'>11774</a>
<a id='n11775' href='#n11775'>11775</a>
<a id='n11776' href='#n11776'>11776</a>
<a id='n11777' href='#n11777'>11777</a>
<a id='n11778' href='#n11778'>11778</a>
<a id='n11779' href='#n11779'>11779</a>
<a id='n11780' href='#n11780'>11780</a>
<a id='n11781' href='#n11781'>11781</a>
<a id='n11782' href='#n11782'>11782</a>
<a id='n11783' href='#n11783'>11783</a>
<a id='n11784' href='#n11784'>11784</a>
<a id='n11785' href='#n11785'>11785</a>
<a id='n11786' href='#n11786'>11786</a>
<a id='n11787' href='#n11787'>11787</a>
<a id='n11788' href='#n11788'>11788</a>
<a id='n11789' href='#n11789'>11789</a>
<a id='n11790' href='#n11790'>11790</a>
<a id='n11791' href='#n11791'>11791</a>
<a id='n11792' href='#n11792'>11792</a>
<a id='n11793' href='#n11793'>11793</a>
<a id='n11794' href='#n11794'>11794</a>
<a id='n11795' href='#n11795'>11795</a>
<a id='n11796' href='#n11796'>11796</a>
<a id='n11797' href='#n11797'>11797</a>
<a id='n11798' href='#n11798'>11798</a>
<a id='n11799' href='#n11799'>11799</a>
<a id='n11800' href='#n11800'>11800</a>
<a id='n11801' href='#n11801'>11801</a>
<a id='n11802' href='#n11802'>11802</a>
<a id='n11803' href='#n11803'>11803</a>
<a id='n11804' href='#n11804'>11804</a>
<a id='n11805' href='#n11805'>11805</a>
<a id='n11806' href='#n11806'>11806</a>
<a id='n11807' href='#n11807'>11807</a>
<a id='n11808' href='#n11808'>11808</a>
<a id='n11809' href='#n11809'>11809</a>
<a id='n11810' href='#n11810'>11810</a>
<a id='n11811' href='#n11811'>11811</a>
<a id='n11812' href='#n11812'>11812</a>
<a id='n11813' href='#n11813'>11813</a>
<a id='n11814' href='#n11814'>11814</a>
<a id='n11815' href='#n11815'>11815</a>
<a id='n11816' href='#n11816'>11816</a>
<a id='n11817' href='#n11817'>11817</a>
<a id='n11818' href='#n11818'>11818</a>
<a id='n11819' href='#n11819'>11819</a>
<a id='n11820' href='#n11820'>11820</a>
<a id='n11821' href='#n11821'>11821</a>
<a id='n11822' href='#n11822'>11822</a>
<a id='n11823' href='#n11823'>11823</a>
<a id='n11824' href='#n11824'>11824</a>
<a id='n11825' href='#n11825'>11825</a>
<a id='n11826' href='#n11826'>11826</a>
<a id='n11827' href='#n11827'>11827</a>
<a id='n11828' href='#n11828'>11828</a>
<a id='n11829' href='#n11829'>11829</a>
<a id='n11830' href='#n11830'>11830</a>
<a id='n11831' href='#n11831'>11831</a>
<a id='n11832' href='#n11832'>11832</a>
<a id='n11833' href='#n11833'>11833</a>
<a id='n11834' href='#n11834'>11834</a>
<a id='n11835' href='#n11835'>11835</a>
<a id='n11836' href='#n11836'>11836</a>
<a id='n11837' href='#n11837'>11837</a>
<a id='n11838' href='#n11838'>11838</a>
<a id='n11839' href='#n11839'>11839</a>
<a id='n11840' href='#n11840'>11840</a>
<a id='n11841' href='#n11841'>11841</a>
<a id='n11842' href='#n11842'>11842</a>
<a id='n11843' href='#n11843'>11843</a>
<a id='n11844' href='#n11844'>11844</a>
<a id='n11845' href='#n11845'>11845</a>
<a id='n11846' href='#n11846'>11846</a>
<a id='n11847' href='#n11847'>11847</a>
<a id='n11848' href='#n11848'>11848</a>
<a id='n11849' href='#n11849'>11849</a>
<a id='n11850' href='#n11850'>11850</a>
<a id='n11851' href='#n11851'>11851</a>
<a id='n11852' href='#n11852'>11852</a>
<a id='n11853' href='#n11853'>11853</a>
<a id='n11854' href='#n11854'>11854</a>
<a id='n11855' href='#n11855'>11855</a>
<a id='n11856' href='#n11856'>11856</a>
<a id='n11857' href='#n11857'>11857</a>
<a id='n11858' href='#n11858'>11858</a>
<a id='n11859' href='#n11859'>11859</a>
<a id='n11860' href='#n11860'>11860</a>
<a id='n11861' href='#n11861'>11861</a>
<a id='n11862' href='#n11862'>11862</a>
<a id='n11863' href='#n11863'>11863</a>
<a id='n11864' href='#n11864'>11864</a>
<a id='n11865' href='#n11865'>11865</a>
<a id='n11866' href='#n11866'>11866</a>
<a id='n11867' href='#n11867'>11867</a>
<a id='n11868' href='#n11868'>11868</a>
<a id='n11869' href='#n11869'>11869</a>
<a id='n11870' href='#n11870'>11870</a>
<a id='n11871' href='#n11871'>11871</a>
<a id='n11872' href='#n11872'>11872</a>
<a id='n11873' href='#n11873'>11873</a>
<a id='n11874' href='#n11874'>11874</a>
<a id='n11875' href='#n11875'>11875</a>
<a id='n11876' href='#n11876'>11876</a>
<a id='n11877' href='#n11877'>11877</a>
<a id='n11878' href='#n11878'>11878</a>
<a id='n11879' href='#n11879'>11879</a>
<a id='n11880' href='#n11880'>11880</a>
<a id='n11881' href='#n11881'>11881</a>
<a id='n11882' href='#n11882'>11882</a>
<a id='n11883' href='#n11883'>11883</a>
<a id='n11884' href='#n11884'>11884</a>
<a id='n11885' href='#n11885'>11885</a>
<a id='n11886' href='#n11886'>11886</a>
<a id='n11887' href='#n11887'>11887</a>
<a id='n11888' href='#n11888'>11888</a>
<a id='n11889' href='#n11889'>11889</a>
<a id='n11890' href='#n11890'>11890</a>
<a id='n11891' href='#n11891'>11891</a>
<a id='n11892' href='#n11892'>11892</a>
<a id='n11893' href='#n11893'>11893</a>
<a id='n11894' href='#n11894'>11894</a>
<a id='n11895' href='#n11895'>11895</a>
<a id='n11896' href='#n11896'>11896</a>
<a id='n11897' href='#n11897'>11897</a>
<a id='n11898' href='#n11898'>11898</a>
<a id='n11899' href='#n11899'>11899</a>
<a id='n11900' href='#n11900'>11900</a>
<a id='n11901' href='#n11901'>11901</a>
<a id='n11902' href='#n11902'>11902</a>
<a id='n11903' href='#n11903'>11903</a>
<a id='n11904' href='#n11904'>11904</a>
<a id='n11905' href='#n11905'>11905</a>
<a id='n11906' href='#n11906'>11906</a>
<a id='n11907' href='#n11907'>11907</a>
<a id='n11908' href='#n11908'>11908</a>
<a id='n11909' href='#n11909'>11909</a>
<a id='n11910' href='#n11910'>11910</a>
<a id='n11911' href='#n11911'>11911</a>
<a id='n11912' href='#n11912'>11912</a>
<a id='n11913' href='#n11913'>11913</a>
<a id='n11914' href='#n11914'>11914</a>
<a id='n11915' href='#n11915'>11915</a>
<a id='n11916' href='#n11916'>11916</a>
<a id='n11917' href='#n11917'>11917</a>
<a id='n11918' href='#n11918'>11918</a>
<a id='n11919' href='#n11919'>11919</a>
<a id='n11920' href='#n11920'>11920</a>
<a id='n11921' href='#n11921'>11921</a>
<a id='n11922' href='#n11922'>11922</a>
<a id='n11923' href='#n11923'>11923</a>
<a id='n11924' href='#n11924'>11924</a>
<a id='n11925' href='#n11925'>11925</a>
<a id='n11926' href='#n11926'>11926</a>
<a id='n11927' href='#n11927'>11927</a>
<a id='n11928' href='#n11928'>11928</a>
<a id='n11929' href='#n11929'>11929</a>
<a id='n11930' href='#n11930'>11930</a>
<a id='n11931' href='#n11931'>11931</a>
<a id='n11932' href='#n11932'>11932</a>
<a id='n11933' href='#n11933'>11933</a>
<a id='n11934' href='#n11934'>11934</a>
<a id='n11935' href='#n11935'>11935</a>
<a id='n11936' href='#n11936'>11936</a>
<a id='n11937' href='#n11937'>11937</a>
<a id='n11938' href='#n11938'>11938</a>
<a id='n11939' href='#n11939'>11939</a>
<a id='n11940' href='#n11940'>11940</a>
<a id='n11941' href='#n11941'>11941</a>
<a id='n11942' href='#n11942'>11942</a>
<a id='n11943' href='#n11943'>11943</a>
<a id='n11944' href='#n11944'>11944</a>
<a id='n11945' href='#n11945'>11945</a>
<a id='n11946' href='#n11946'>11946</a>
<a id='n11947' href='#n11947'>11947</a>
<a id='n11948' href='#n11948'>11948</a>
<a id='n11949' href='#n11949'>11949</a>
<a id='n11950' href='#n11950'>11950</a>
<a id='n11951' href='#n11951'>11951</a>
<a id='n11952' href='#n11952'>11952</a>
<a id='n11953' href='#n11953'>11953</a>
<a id='n11954' href='#n11954'>11954</a>
<a id='n11955' href='#n11955'>11955</a>
<a id='n11956' href='#n11956'>11956</a>
<a id='n11957' href='#n11957'>11957</a>
<a id='n11958' href='#n11958'>11958</a>
<a id='n11959' href='#n11959'>11959</a>
<a id='n11960' href='#n11960'>11960</a>
<a id='n11961' href='#n11961'>11961</a>
<a id='n11962' href='#n11962'>11962</a>
<a id='n11963' href='#n11963'>11963</a>
<a id='n11964' href='#n11964'>11964</a>
<a id='n11965' href='#n11965'>11965</a>
<a id='n11966' href='#n11966'>11966</a>
<a id='n11967' href='#n11967'>11967</a>
<a id='n11968' href='#n11968'>11968</a>
<a id='n11969' href='#n11969'>11969</a>
<a id='n11970' href='#n11970'>11970</a>
<a id='n11971' href='#n11971'>11971</a>
<a id='n11972' href='#n11972'>11972</a>
<a id='n11973' href='#n11973'>11973</a>
<a id='n11974' href='#n11974'>11974</a>
<a id='n11975' href='#n11975'>11975</a>
<a id='n11976' href='#n11976'>11976</a>
<a id='n11977' href='#n11977'>11977</a>
<a id='n11978' href='#n11978'>11978</a>
<a id='n11979' href='#n11979'>11979</a>
<a id='n11980' href='#n11980'>11980</a>
<a id='n11981' href='#n11981'>11981</a>
<a id='n11982' href='#n11982'>11982</a>
<a id='n11983' href='#n11983'>11983</a>
<a id='n11984' href='#n11984'>11984</a>
<a id='n11985' href='#n11985'>11985</a>
<a id='n11986' href='#n11986'>11986</a>
<a id='n11987' href='#n11987'>11987</a>
<a id='n11988' href='#n11988'>11988</a>
<a id='n11989' href='#n11989'>11989</a>
<a id='n11990' href='#n11990'>11990</a>
<a id='n11991' href='#n11991'>11991</a>
<a id='n11992' href='#n11992'>11992</a>
<a id='n11993' href='#n11993'>11993</a>
<a id='n11994' href='#n11994'>11994</a>
<a id='n11995' href='#n11995'>11995</a>
<a id='n11996' href='#n11996'>11996</a>
<a id='n11997' href='#n11997'>11997</a>
<a id='n11998' href='#n11998'>11998</a>
<a id='n11999' href='#n11999'>11999</a>
<a id='n12000' href='#n12000'>12000</a>
<a id='n12001' href='#n12001'>12001</a>
<a id='n12002' href='#n12002'>12002</a>
<a id='n12003' href='#n12003'>12003</a>
<a id='n12004' href='#n12004'>12004</a>
<a id='n12005' href='#n12005'>12005</a>
<a id='n12006' href='#n12006'>12006</a>
<a id='n12007' href='#n12007'>12007</a>
<a id='n12008' href='#n12008'>12008</a>
<a id='n12009' href='#n12009'>12009</a>
<a id='n12010' href='#n12010'>12010</a>
<a id='n12011' href='#n12011'>12011</a>
<a id='n12012' href='#n12012'>12012</a>
<a id='n12013' href='#n12013'>12013</a>
<a id='n12014' href='#n12014'>12014</a>
<a id='n12015' href='#n12015'>12015</a>
<a id='n12016' href='#n12016'>12016</a>
<a id='n12017' href='#n12017'>12017</a>
<a id='n12018' href='#n12018'>12018</a>
<a id='n12019' href='#n12019'>12019</a>
<a id='n12020' href='#n12020'>12020</a>
<a id='n12021' href='#n12021'>12021</a>
<a id='n12022' href='#n12022'>12022</a>
<a id='n12023' href='#n12023'>12023</a>
<a id='n12024' href='#n12024'>12024</a>
<a id='n12025' href='#n12025'>12025</a>
<a id='n12026' href='#n12026'>12026</a>
<a id='n12027' href='#n12027'>12027</a>
<a id='n12028' href='#n12028'>12028</a>
<a id='n12029' href='#n12029'>12029</a>
<a id='n12030' href='#n12030'>12030</a>
<a id='n12031' href='#n12031'>12031</a>
<a id='n12032' href='#n12032'>12032</a>
<a id='n12033' href='#n12033'>12033</a>
<a id='n12034' href='#n12034'>12034</a>
<a id='n12035' href='#n12035'>12035</a>
<a id='n12036' href='#n12036'>12036</a>
<a id='n12037' href='#n12037'>12037</a>
<a id='n12038' href='#n12038'>12038</a>
<a id='n12039' href='#n12039'>12039</a>
<a id='n12040' href='#n12040'>12040</a>
<a id='n12041' href='#n12041'>12041</a>
<a id='n12042' href='#n12042'>12042</a>
<a id='n12043' href='#n12043'>12043</a>
<a id='n12044' href='#n12044'>12044</a>
<a id='n12045' href='#n12045'>12045</a>
<a id='n12046' href='#n12046'>12046</a>
<a id='n12047' href='#n12047'>12047</a>
<a id='n12048' href='#n12048'>12048</a>
<a id='n12049' href='#n12049'>12049</a>
<a id='n12050' href='#n12050'>12050</a>
<a id='n12051' href='#n12051'>12051</a>
<a id='n12052' href='#n12052'>12052</a>
<a id='n12053' href='#n12053'>12053</a>
<a id='n12054' href='#n12054'>12054</a>
<a id='n12055' href='#n12055'>12055</a>
<a id='n12056' href='#n12056'>12056</a>
<a id='n12057' href='#n12057'>12057</a>
<a id='n12058' href='#n12058'>12058</a>
<a id='n12059' href='#n12059'>12059</a>
<a id='n12060' href='#n12060'>12060</a>
<a id='n12061' href='#n12061'>12061</a>
<a id='n12062' href='#n12062'>12062</a>
<a id='n12063' href='#n12063'>12063</a>
<a id='n12064' href='#n12064'>12064</a>
<a id='n12065' href='#n12065'>12065</a>
<a id='n12066' href='#n12066'>12066</a>
<a id='n12067' href='#n12067'>12067</a>
<a id='n12068' href='#n12068'>12068</a>
<a id='n12069' href='#n12069'>12069</a>
<a id='n12070' href='#n12070'>12070</a>
<a id='n12071' href='#n12071'>12071</a>
<a id='n12072' href='#n12072'>12072</a>
<a id='n12073' href='#n12073'>12073</a>
<a id='n12074' href='#n12074'>12074</a>
<a id='n12075' href='#n12075'>12075</a>
<a id='n12076' href='#n12076'>12076</a>
<a id='n12077' href='#n12077'>12077</a>
<a id='n12078' href='#n12078'>12078</a>
<a id='n12079' href='#n12079'>12079</a>
<a id='n12080' href='#n12080'>12080</a>
<a id='n12081' href='#n12081'>12081</a>
<a id='n12082' href='#n12082'>12082</a>
<a id='n12083' href='#n12083'>12083</a>
<a id='n12084' href='#n12084'>12084</a>
<a id='n12085' href='#n12085'>12085</a>
<a id='n12086' href='#n12086'>12086</a>
<a id='n12087' href='#n12087'>12087</a>
<a id='n12088' href='#n12088'>12088</a>
<a id='n12089' href='#n12089'>12089</a>
<a id='n12090' href='#n12090'>12090</a>
<a id='n12091' href='#n12091'>12091</a>
<a id='n12092' href='#n12092'>12092</a>
<a id='n12093' href='#n12093'>12093</a>
<a id='n12094' href='#n12094'>12094</a>
<a id='n12095' href='#n12095'>12095</a>
<a id='n12096' href='#n12096'>12096</a>
<a id='n12097' href='#n12097'>12097</a>
<a id='n12098' href='#n12098'>12098</a>
<a id='n12099' href='#n12099'>12099</a>
<a id='n12100' href='#n12100'>12100</a>
<a id='n12101' href='#n12101'>12101</a>
<a id='n12102' href='#n12102'>12102</a>
<a id='n12103' href='#n12103'>12103</a>
<a id='n12104' href='#n12104'>12104</a>
<a id='n12105' href='#n12105'>12105</a>
<a id='n12106' href='#n12106'>12106</a>
<a id='n12107' href='#n12107'>12107</a>
<a id='n12108' href='#n12108'>12108</a>
<a id='n12109' href='#n12109'>12109</a>
<a id='n12110' href='#n12110'>12110</a>
<a id='n12111' href='#n12111'>12111</a>
<a id='n12112' href='#n12112'>12112</a>
<a id='n12113' href='#n12113'>12113</a>
<a id='n12114' href='#n12114'>12114</a>
<a id='n12115' href='#n12115'>12115</a>
<a id='n12116' href='#n12116'>12116</a>
<a id='n12117' href='#n12117'>12117</a>
<a id='n12118' href='#n12118'>12118</a>
<a id='n12119' href='#n12119'>12119</a>
<a id='n12120' href='#n12120'>12120</a>
<a id='n12121' href='#n12121'>12121</a>
<a id='n12122' href='#n12122'>12122</a>
<a id='n12123' href='#n12123'>12123</a>
<a id='n12124' href='#n12124'>12124</a>
<a id='n12125' href='#n12125'>12125</a>
<a id='n12126' href='#n12126'>12126</a>
<a id='n12127' href='#n12127'>12127</a>
<a id='n12128' href='#n12128'>12128</a>
<a id='n12129' href='#n12129'>12129</a>
<a id='n12130' href='#n12130'>12130</a>
<a id='n12131' href='#n12131'>12131</a>
<a id='n12132' href='#n12132'>12132</a>
<a id='n12133' href='#n12133'>12133</a>
<a id='n12134' href='#n12134'>12134</a>
<a id='n12135' href='#n12135'>12135</a>
<a id='n12136' href='#n12136'>12136</a>
<a id='n12137' href='#n12137'>12137</a>
<a id='n12138' href='#n12138'>12138</a>
<a id='n12139' href='#n12139'>12139</a>
<a id='n12140' href='#n12140'>12140</a>
<a id='n12141' href='#n12141'>12141</a>
<a id='n12142' href='#n12142'>12142</a>
<a id='n12143' href='#n12143'>12143</a>
<a id='n12144' href='#n12144'>12144</a>
<a id='n12145' href='#n12145'>12145</a>
<a id='n12146' href='#n12146'>12146</a>
<a id='n12147' href='#n12147'>12147</a>
<a id='n12148' href='#n12148'>12148</a>
<a id='n12149' href='#n12149'>12149</a>
<a id='n12150' href='#n12150'>12150</a>
<a id='n12151' href='#n12151'>12151</a>
<a id='n12152' href='#n12152'>12152</a>
<a id='n12153' href='#n12153'>12153</a>
<a id='n12154' href='#n12154'>12154</a>
<a id='n12155' href='#n12155'>12155</a>
<a id='n12156' href='#n12156'>12156</a>
<a id='n12157' href='#n12157'>12157</a>
<a id='n12158' href='#n12158'>12158</a>
<a id='n12159' href='#n12159'>12159</a>
<a id='n12160' href='#n12160'>12160</a>
<a id='n12161' href='#n12161'>12161</a>
<a id='n12162' href='#n12162'>12162</a>
<a id='n12163' href='#n12163'>12163</a>
<a id='n12164' href='#n12164'>12164</a>
<a id='n12165' href='#n12165'>12165</a>
<a id='n12166' href='#n12166'>12166</a>
<a id='n12167' href='#n12167'>12167</a>
<a id='n12168' href='#n12168'>12168</a>
<a id='n12169' href='#n12169'>12169</a>
<a id='n12170' href='#n12170'>12170</a>
<a id='n12171' href='#n12171'>12171</a>
<a id='n12172' href='#n12172'>12172</a>
<a id='n12173' href='#n12173'>12173</a>
<a id='n12174' href='#n12174'>12174</a>
<a id='n12175' href='#n12175'>12175</a>
<a id='n12176' href='#n12176'>12176</a>
<a id='n12177' href='#n12177'>12177</a>
<a id='n12178' href='#n12178'>12178</a>
<a id='n12179' href='#n12179'>12179</a>
<a id='n12180' href='#n12180'>12180</a>
<a id='n12181' href='#n12181'>12181</a>
<a id='n12182' href='#n12182'>12182</a>
<a id='n12183' href='#n12183'>12183</a>
<a id='n12184' href='#n12184'>12184</a>
<a id='n12185' href='#n12185'>12185</a>
<a id='n12186' href='#n12186'>12186</a>
<a id='n12187' href='#n12187'>12187</a>
<a id='n12188' href='#n12188'>12188</a>
<a id='n12189' href='#n12189'>12189</a>
<a id='n12190' href='#n12190'>12190</a>
<a id='n12191' href='#n12191'>12191</a>
<a id='n12192' href='#n12192'>12192</a>
<a id='n12193' href='#n12193'>12193</a>
<a id='n12194' href='#n12194'>12194</a>
<a id='n12195' href='#n12195'>12195</a>
<a id='n12196' href='#n12196'>12196</a>
<a id='n12197' href='#n12197'>12197</a>
<a id='n12198' href='#n12198'>12198</a>
<a id='n12199' href='#n12199'>12199</a>
<a id='n12200' href='#n12200'>12200</a>
<a id='n12201' href='#n12201'>12201</a>
<a id='n12202' href='#n12202'>12202</a>
<a id='n12203' href='#n12203'>12203</a>
<a id='n12204' href='#n12204'>12204</a>
<a id='n12205' href='#n12205'>12205</a>
<a id='n12206' href='#n12206'>12206</a>
<a id='n12207' href='#n12207'>12207</a>
<a id='n12208' href='#n12208'>12208</a>
<a id='n12209' href='#n12209'>12209</a>
<a id='n12210' href='#n12210'>12210</a>
<a id='n12211' href='#n12211'>12211</a>
<a id='n12212' href='#n12212'>12212</a>
<a id='n12213' href='#n12213'>12213</a>
<a id='n12214' href='#n12214'>12214</a>
<a id='n12215' href='#n12215'>12215</a>
<a id='n12216' href='#n12216'>12216</a>
<a id='n12217' href='#n12217'>12217</a>
<a id='n12218' href='#n12218'>12218</a>
<a id='n12219' href='#n12219'>12219</a>
<a id='n12220' href='#n12220'>12220</a>
<a id='n12221' href='#n12221'>12221</a>
<a id='n12222' href='#n12222'>12222</a>
<a id='n12223' href='#n12223'>12223</a>
<a id='n12224' href='#n12224'>12224</a>
<a id='n12225' href='#n12225'>12225</a>
<a id='n12226' href='#n12226'>12226</a>
<a id='n12227' href='#n12227'>12227</a>
<a id='n12228' href='#n12228'>12228</a>
<a id='n12229' href='#n12229'>12229</a>
<a id='n12230' href='#n12230'>12230</a>
<a id='n12231' href='#n12231'>12231</a>
<a id='n12232' href='#n12232'>12232</a>
<a id='n12233' href='#n12233'>12233</a>
<a id='n12234' href='#n12234'>12234</a>
<a id='n12235' href='#n12235'>12235</a>
<a id='n12236' href='#n12236'>12236</a>
<a id='n12237' href='#n12237'>12237</a>
<a id='n12238' href='#n12238'>12238</a>
<a id='n12239' href='#n12239'>12239</a>
<a id='n12240' href='#n12240'>12240</a>
<a id='n12241' href='#n12241'>12241</a>
<a id='n12242' href='#n12242'>12242</a>
<a id='n12243' href='#n12243'>12243</a>
<a id='n12244' href='#n12244'>12244</a>
<a id='n12245' href='#n12245'>12245</a>
<a id='n12246' href='#n12246'>12246</a>
<a id='n12247' href='#n12247'>12247</a>
<a id='n12248' href='#n12248'>12248</a>
<a id='n12249' href='#n12249'>12249</a>
<a id='n12250' href='#n12250'>12250</a>
<a id='n12251' href='#n12251'>12251</a>
<a id='n12252' href='#n12252'>12252</a>
<a id='n12253' href='#n12253'>12253</a>
<a id='n12254' href='#n12254'>12254</a>
<a id='n12255' href='#n12255'>12255</a>
<a id='n12256' href='#n12256'>12256</a>
<a id='n12257' href='#n12257'>12257</a>
<a id='n12258' href='#n12258'>12258</a>
<a id='n12259' href='#n12259'>12259</a>
<a id='n12260' href='#n12260'>12260</a>
<a id='n12261' href='#n12261'>12261</a>
<a id='n12262' href='#n12262'>12262</a>
<a id='n12263' href='#n12263'>12263</a>
<a id='n12264' href='#n12264'>12264</a>
<a id='n12265' href='#n12265'>12265</a>
<a id='n12266' href='#n12266'>12266</a>
<a id='n12267' href='#n12267'>12267</a>
<a id='n12268' href='#n12268'>12268</a>
<a id='n12269' href='#n12269'>12269</a>
<a id='n12270' href='#n12270'>12270</a>
<a id='n12271' href='#n12271'>12271</a>
<a id='n12272' href='#n12272'>12272</a>
<a id='n12273' href='#n12273'>12273</a>
<a id='n12274' href='#n12274'>12274</a>
<a id='n12275' href='#n12275'>12275</a>
<a id='n12276' href='#n12276'>12276</a>
<a id='n12277' href='#n12277'>12277</a>
<a id='n12278' href='#n12278'>12278</a>
<a id='n12279' href='#n12279'>12279</a>
<a id='n12280' href='#n12280'>12280</a>
<a id='n12281' href='#n12281'>12281</a>
<a id='n12282' href='#n12282'>12282</a>
<a id='n12283' href='#n12283'>12283</a>
<a id='n12284' href='#n12284'>12284</a>
<a id='n12285' href='#n12285'>12285</a>
<a id='n12286' href='#n12286'>12286</a>
<a id='n12287' href='#n12287'>12287</a>
<a id='n12288' href='#n12288'>12288</a>
<a id='n12289' href='#n12289'>12289</a>
<a id='n12290' href='#n12290'>12290</a>
<a id='n12291' href='#n12291'>12291</a>
<a id='n12292' href='#n12292'>12292</a>
<a id='n12293' href='#n12293'>12293</a>
<a id='n12294' href='#n12294'>12294</a>
<a id='n12295' href='#n12295'>12295</a>
<a id='n12296' href='#n12296'>12296</a>
<a id='n12297' href='#n12297'>12297</a>
<a id='n12298' href='#n12298'>12298</a>
<a id='n12299' href='#n12299'>12299</a>
<a id='n12300' href='#n12300'>12300</a>
<a id='n12301' href='#n12301'>12301</a>
<a id='n12302' href='#n12302'>12302</a>
<a id='n12303' href='#n12303'>12303</a>
<a id='n12304' href='#n12304'>12304</a>
<a id='n12305' href='#n12305'>12305</a>
<a id='n12306' href='#n12306'>12306</a>
<a id='n12307' href='#n12307'>12307</a>
<a id='n12308' href='#n12308'>12308</a>
<a id='n12309' href='#n12309'>12309</a>
<a id='n12310' href='#n12310'>12310</a>
<a id='n12311' href='#n12311'>12311</a>
<a id='n12312' href='#n12312'>12312</a>
<a id='n12313' href='#n12313'>12313</a>
<a id='n12314' href='#n12314'>12314</a>
<a id='n12315' href='#n12315'>12315</a>
<a id='n12316' href='#n12316'>12316</a>
<a id='n12317' href='#n12317'>12317</a>
<a id='n12318' href='#n12318'>12318</a>
<a id='n12319' href='#n12319'>12319</a>
<a id='n12320' href='#n12320'>12320</a>
<a id='n12321' href='#n12321'>12321</a>
<a id='n12322' href='#n12322'>12322</a>
<a id='n12323' href='#n12323'>12323</a>
<a id='n12324' href='#n12324'>12324</a>
<a id='n12325' href='#n12325'>12325</a>
<a id='n12326' href='#n12326'>12326</a>
<a id='n12327' href='#n12327'>12327</a>
<a id='n12328' href='#n12328'>12328</a>
<a id='n12329' href='#n12329'>12329</a>
<a id='n12330' href='#n12330'>12330</a>
<a id='n12331' href='#n12331'>12331</a>
<a id='n12332' href='#n12332'>12332</a>
<a id='n12333' href='#n12333'>12333</a>
<a id='n12334' href='#n12334'>12334</a>
<a id='n12335' href='#n12335'>12335</a>
<a id='n12336' href='#n12336'>12336</a>
<a id='n12337' href='#n12337'>12337</a>
<a id='n12338' href='#n12338'>12338</a>
<a id='n12339' href='#n12339'>12339</a>
<a id='n12340' href='#n12340'>12340</a>
<a id='n12341' href='#n12341'>12341</a>
<a id='n12342' href='#n12342'>12342</a>
<a id='n12343' href='#n12343'>12343</a>
<a id='n12344' href='#n12344'>12344</a>
<a id='n12345' href='#n12345'>12345</a>
<a id='n12346' href='#n12346'>12346</a>
<a id='n12347' href='#n12347'>12347</a>
<a id='n12348' href='#n12348'>12348</a>
<a id='n12349' href='#n12349'>12349</a>
<a id='n12350' href='#n12350'>12350</a>
<a id='n12351' href='#n12351'>12351</a>
<a id='n12352' href='#n12352'>12352</a>
<a id='n12353' href='#n12353'>12353</a>
<a id='n12354' href='#n12354'>12354</a>
<a id='n12355' href='#n12355'>12355</a>
<a id='n12356' href='#n12356'>12356</a>
<a id='n12357' href='#n12357'>12357</a>
<a id='n12358' href='#n12358'>12358</a>
<a id='n12359' href='#n12359'>12359</a>
<a id='n12360' href='#n12360'>12360</a>
<a id='n12361' href='#n12361'>12361</a>
<a id='n12362' href='#n12362'>12362</a>
<a id='n12363' href='#n12363'>12363</a>
<a id='n12364' href='#n12364'>12364</a>
<a id='n12365' href='#n12365'>12365</a>
<a id='n12366' href='#n12366'>12366</a>
<a id='n12367' href='#n12367'>12367</a>
<a id='n12368' href='#n12368'>12368</a>
<a id='n12369' href='#n12369'>12369</a>
<a id='n12370' href='#n12370'>12370</a>
<a id='n12371' href='#n12371'>12371</a>
<a id='n12372' href='#n12372'>12372</a>
<a id='n12373' href='#n12373'>12373</a>
<a id='n12374' href='#n12374'>12374</a>
<a id='n12375' href='#n12375'>12375</a>
<a id='n12376' href='#n12376'>12376</a>
<a id='n12377' href='#n12377'>12377</a>
<a id='n12378' href='#n12378'>12378</a>
<a id='n12379' href='#n12379'>12379</a>
<a id='n12380' href='#n12380'>12380</a>
<a id='n12381' href='#n12381'>12381</a>
<a id='n12382' href='#n12382'>12382</a>
<a id='n12383' href='#n12383'>12383</a>
<a id='n12384' href='#n12384'>12384</a>
<a id='n12385' href='#n12385'>12385</a>
<a id='n12386' href='#n12386'>12386</a>
<a id='n12387' href='#n12387'>12387</a>
<a id='n12388' href='#n12388'>12388</a>
<a id='n12389' href='#n12389'>12389</a>
<a id='n12390' href='#n12390'>12390</a>
<a id='n12391' href='#n12391'>12391</a>
<a id='n12392' href='#n12392'>12392</a>
<a id='n12393' href='#n12393'>12393</a>
<a id='n12394' href='#n12394'>12394</a>
<a id='n12395' href='#n12395'>12395</a>
<a id='n12396' href='#n12396'>12396</a>
<a id='n12397' href='#n12397'>12397</a>
<a id='n12398' href='#n12398'>12398</a>
<a id='n12399' href='#n12399'>12399</a>
<a id='n12400' href='#n12400'>12400</a>
<a id='n12401' href='#n12401'>12401</a>
<a id='n12402' href='#n12402'>12402</a>
<a id='n12403' href='#n12403'>12403</a>
<a id='n12404' href='#n12404'>12404</a>
<a id='n12405' href='#n12405'>12405</a>
<a id='n12406' href='#n12406'>12406</a>
<a id='n12407' href='#n12407'>12407</a>
<a id='n12408' href='#n12408'>12408</a>
<a id='n12409' href='#n12409'>12409</a>
<a id='n12410' href='#n12410'>12410</a>
<a id='n12411' href='#n12411'>12411</a>
<a id='n12412' href='#n12412'>12412</a>
<a id='n12413' href='#n12413'>12413</a>
<a id='n12414' href='#n12414'>12414</a>
<a id='n12415' href='#n12415'>12415</a>
<a id='n12416' href='#n12416'>12416</a>
<a id='n12417' href='#n12417'>12417</a>
<a id='n12418' href='#n12418'>12418</a>
<a id='n12419' href='#n12419'>12419</a>
<a id='n12420' href='#n12420'>12420</a>
<a id='n12421' href='#n12421'>12421</a>
<a id='n12422' href='#n12422'>12422</a>
<a id='n12423' href='#n12423'>12423</a>
<a id='n12424' href='#n12424'>12424</a>
<a id='n12425' href='#n12425'>12425</a>
<a id='n12426' href='#n12426'>12426</a>
<a id='n12427' href='#n12427'>12427</a>
<a id='n12428' href='#n12428'>12428</a>
<a id='n12429' href='#n12429'>12429</a>
<a id='n12430' href='#n12430'>12430</a>
<a id='n12431' href='#n12431'>12431</a>
<a id='n12432' href='#n12432'>12432</a>
<a id='n12433' href='#n12433'>12433</a>
<a id='n12434' href='#n12434'>12434</a>
<a id='n12435' href='#n12435'>12435</a>
<a id='n12436' href='#n12436'>12436</a>
<a id='n12437' href='#n12437'>12437</a>
<a id='n12438' href='#n12438'>12438</a>
<a id='n12439' href='#n12439'>12439</a>
<a id='n12440' href='#n12440'>12440</a>
<a id='n12441' href='#n12441'>12441</a>
<a id='n12442' href='#n12442'>12442</a>
<a id='n12443' href='#n12443'>12443</a>
<a id='n12444' href='#n12444'>12444</a>
<a id='n12445' href='#n12445'>12445</a>
<a id='n12446' href='#n12446'>12446</a>
<a id='n12447' href='#n12447'>12447</a>
<a id='n12448' href='#n12448'>12448</a>
<a id='n12449' href='#n12449'>12449</a>
<a id='n12450' href='#n12450'>12450</a>
<a id='n12451' href='#n12451'>12451</a>
<a id='n12452' href='#n12452'>12452</a>
<a id='n12453' href='#n12453'>12453</a>
<a id='n12454' href='#n12454'>12454</a>
<a id='n12455' href='#n12455'>12455</a>
<a id='n12456' href='#n12456'>12456</a>
<a id='n12457' href='#n12457'>12457</a>
<a id='n12458' href='#n12458'>12458</a>
<a id='n12459' href='#n12459'>12459</a>
<a id='n12460' href='#n12460'>12460</a>
<a id='n12461' href='#n12461'>12461</a>
<a id='n12462' href='#n12462'>12462</a>
<a id='n12463' href='#n12463'>12463</a>
<a id='n12464' href='#n12464'>12464</a>
<a id='n12465' href='#n12465'>12465</a>
<a id='n12466' href='#n12466'>12466</a>
<a id='n12467' href='#n12467'>12467</a>
<a id='n12468' href='#n12468'>12468</a>
<a id='n12469' href='#n12469'>12469</a>
<a id='n12470' href='#n12470'>12470</a>
<a id='n12471' href='#n12471'>12471</a>
<a id='n12472' href='#n12472'>12472</a>
<a id='n12473' href='#n12473'>12473</a>
<a id='n12474' href='#n12474'>12474</a>
<a id='n12475' href='#n12475'>12475</a>
<a id='n12476' href='#n12476'>12476</a>
<a id='n12477' href='#n12477'>12477</a>
<a id='n12478' href='#n12478'>12478</a>
<a id='n12479' href='#n12479'>12479</a>
<a id='n12480' href='#n12480'>12480</a>
<a id='n12481' href='#n12481'>12481</a>
<a id='n12482' href='#n12482'>12482</a>
<a id='n12483' href='#n12483'>12483</a>
<a id='n12484' href='#n12484'>12484</a>
<a id='n12485' href='#n12485'>12485</a>
<a id='n12486' href='#n12486'>12486</a>
<a id='n12487' href='#n12487'>12487</a>
<a id='n12488' href='#n12488'>12488</a>
<a id='n12489' href='#n12489'>12489</a>
<a id='n12490' href='#n12490'>12490</a>
<a id='n12491' href='#n12491'>12491</a>
<a id='n12492' href='#n12492'>12492</a>
<a id='n12493' href='#n12493'>12493</a>
<a id='n12494' href='#n12494'>12494</a>
<a id='n12495' href='#n12495'>12495</a>
<a id='n12496' href='#n12496'>12496</a>
<a id='n12497' href='#n12497'>12497</a>
<a id='n12498' href='#n12498'>12498</a>
<a id='n12499' href='#n12499'>12499</a>
<a id='n12500' href='#n12500'>12500</a>
<a id='n12501' href='#n12501'>12501</a>
<a id='n12502' href='#n12502'>12502</a>
<a id='n12503' href='#n12503'>12503</a>
<a id='n12504' href='#n12504'>12504</a>
<a id='n12505' href='#n12505'>12505</a>
<a id='n12506' href='#n12506'>12506</a>
<a id='n12507' href='#n12507'>12507</a>
<a id='n12508' href='#n12508'>12508</a>
<a id='n12509' href='#n12509'>12509</a>
<a id='n12510' href='#n12510'>12510</a>
<a id='n12511' href='#n12511'>12511</a>
<a id='n12512' href='#n12512'>12512</a>
<a id='n12513' href='#n12513'>12513</a>
<a id='n12514' href='#n12514'>12514</a>
<a id='n12515' href='#n12515'>12515</a>
<a id='n12516' href='#n12516'>12516</a>
<a id='n12517' href='#n12517'>12517</a>
<a id='n12518' href='#n12518'>12518</a>
<a id='n12519' href='#n12519'>12519</a>
<a id='n12520' href='#n12520'>12520</a>
<a id='n12521' href='#n12521'>12521</a>
<a id='n12522' href='#n12522'>12522</a>
<a id='n12523' href='#n12523'>12523</a>
<a id='n12524' href='#n12524'>12524</a>
<a id='n12525' href='#n12525'>12525</a>
<a id='n12526' href='#n12526'>12526</a>
<a id='n12527' href='#n12527'>12527</a>
<a id='n12528' href='#n12528'>12528</a>
<a id='n12529' href='#n12529'>12529</a>
<a id='n12530' href='#n12530'>12530</a>
<a id='n12531' href='#n12531'>12531</a>
<a id='n12532' href='#n12532'>12532</a>
<a id='n12533' href='#n12533'>12533</a>
<a id='n12534' href='#n12534'>12534</a>
<a id='n12535' href='#n12535'>12535</a>
<a id='n12536' href='#n12536'>12536</a>
<a id='n12537' href='#n12537'>12537</a>
<a id='n12538' href='#n12538'>12538</a>
<a id='n12539' href='#n12539'>12539</a>
<a id='n12540' href='#n12540'>12540</a>
<a id='n12541' href='#n12541'>12541</a>
<a id='n12542' href='#n12542'>12542</a>
<a id='n12543' href='#n12543'>12543</a>
<a id='n12544' href='#n12544'>12544</a>
<a id='n12545' href='#n12545'>12545</a>
<a id='n12546' href='#n12546'>12546</a>
<a id='n12547' href='#n12547'>12547</a>
<a id='n12548' href='#n12548'>12548</a>
<a id='n12549' href='#n12549'>12549</a>
<a id='n12550' href='#n12550'>12550</a>
<a id='n12551' href='#n12551'>12551</a>
<a id='n12552' href='#n12552'>12552</a>
<a id='n12553' href='#n12553'>12553</a>
<a id='n12554' href='#n12554'>12554</a>
<a id='n12555' href='#n12555'>12555</a>
<a id='n12556' href='#n12556'>12556</a>
<a id='n12557' href='#n12557'>12557</a>
<a id='n12558' href='#n12558'>12558</a>
<a id='n12559' href='#n12559'>12559</a>
<a id='n12560' href='#n12560'>12560</a>
<a id='n12561' href='#n12561'>12561</a>
<a id='n12562' href='#n12562'>12562</a>
<a id='n12563' href='#n12563'>12563</a>
<a id='n12564' href='#n12564'>12564</a>
<a id='n12565' href='#n12565'>12565</a>
<a id='n12566' href='#n12566'>12566</a>
<a id='n12567' href='#n12567'>12567</a>
<a id='n12568' href='#n12568'>12568</a>
<a id='n12569' href='#n12569'>12569</a>
<a id='n12570' href='#n12570'>12570</a>
<a id='n12571' href='#n12571'>12571</a>
<a id='n12572' href='#n12572'>12572</a>
<a id='n12573' href='#n12573'>12573</a>
<a id='n12574' href='#n12574'>12574</a>
<a id='n12575' href='#n12575'>12575</a>
<a id='n12576' href='#n12576'>12576</a>
<a id='n12577' href='#n12577'>12577</a>
<a id='n12578' href='#n12578'>12578</a>
<a id='n12579' href='#n12579'>12579</a>
<a id='n12580' href='#n12580'>12580</a>
<a id='n12581' href='#n12581'>12581</a>
<a id='n12582' href='#n12582'>12582</a>
<a id='n12583' href='#n12583'>12583</a>
<a id='n12584' href='#n12584'>12584</a>
<a id='n12585' href='#n12585'>12585</a>
<a id='n12586' href='#n12586'>12586</a>
<a id='n12587' href='#n12587'>12587</a>
<a id='n12588' href='#n12588'>12588</a>
<a id='n12589' href='#n12589'>12589</a>
<a id='n12590' href='#n12590'>12590</a>
<a id='n12591' href='#n12591'>12591</a>
<a id='n12592' href='#n12592'>12592</a>
<a id='n12593' href='#n12593'>12593</a>
<a id='n12594' href='#n12594'>12594</a>
<a id='n12595' href='#n12595'>12595</a>
<a id='n12596' href='#n12596'>12596</a>
<a id='n12597' href='#n12597'>12597</a>
<a id='n12598' href='#n12598'>12598</a>
<a id='n12599' href='#n12599'>12599</a>
<a id='n12600' href='#n12600'>12600</a>
<a id='n12601' href='#n12601'>12601</a>
<a id='n12602' href='#n12602'>12602</a>
<a id='n12603' href='#n12603'>12603</a>
<a id='n12604' href='#n12604'>12604</a>
<a id='n12605' href='#n12605'>12605</a>
<a id='n12606' href='#n12606'>12606</a>
<a id='n12607' href='#n12607'>12607</a>
<a id='n12608' href='#n12608'>12608</a>
<a id='n12609' href='#n12609'>12609</a>
<a id='n12610' href='#n12610'>12610</a>
<a id='n12611' href='#n12611'>12611</a>
<a id='n12612' href='#n12612'>12612</a>
<a id='n12613' href='#n12613'>12613</a>
<a id='n12614' href='#n12614'>12614</a>
<a id='n12615' href='#n12615'>12615</a>
<a id='n12616' href='#n12616'>12616</a>
<a id='n12617' href='#n12617'>12617</a>
<a id='n12618' href='#n12618'>12618</a>
<a id='n12619' href='#n12619'>12619</a>
<a id='n12620' href='#n12620'>12620</a>
<a id='n12621' href='#n12621'>12621</a>
<a id='n12622' href='#n12622'>12622</a>
<a id='n12623' href='#n12623'>12623</a>
<a id='n12624' href='#n12624'>12624</a>
<a id='n12625' href='#n12625'>12625</a>
<a id='n12626' href='#n12626'>12626</a>
<a id='n12627' href='#n12627'>12627</a>
<a id='n12628' href='#n12628'>12628</a>
<a id='n12629' href='#n12629'>12629</a>
<a id='n12630' href='#n12630'>12630</a>
<a id='n12631' href='#n12631'>12631</a>
<a id='n12632' href='#n12632'>12632</a>
<a id='n12633' href='#n12633'>12633</a>
<a id='n12634' href='#n12634'>12634</a>
<a id='n12635' href='#n12635'>12635</a>
<a id='n12636' href='#n12636'>12636</a>
<a id='n12637' href='#n12637'>12637</a>
<a id='n12638' href='#n12638'>12638</a>
<a id='n12639' href='#n12639'>12639</a>
<a id='n12640' href='#n12640'>12640</a>
<a id='n12641' href='#n12641'>12641</a>
<a id='n12642' href='#n12642'>12642</a>
<a id='n12643' href='#n12643'>12643</a>
<a id='n12644' href='#n12644'>12644</a>
<a id='n12645' href='#n12645'>12645</a>
<a id='n12646' href='#n12646'>12646</a>
<a id='n12647' href='#n12647'>12647</a>
<a id='n12648' href='#n12648'>12648</a>
<a id='n12649' href='#n12649'>12649</a>
<a id='n12650' href='#n12650'>12650</a>
<a id='n12651' href='#n12651'>12651</a>
<a id='n12652' href='#n12652'>12652</a>
<a id='n12653' href='#n12653'>12653</a>
<a id='n12654' href='#n12654'>12654</a>
<a id='n12655' href='#n12655'>12655</a>
<a id='n12656' href='#n12656'>12656</a>
<a id='n12657' href='#n12657'>12657</a>
<a id='n12658' href='#n12658'>12658</a>
<a id='n12659' href='#n12659'>12659</a>
<a id='n12660' href='#n12660'>12660</a>
<a id='n12661' href='#n12661'>12661</a>
<a id='n12662' href='#n12662'>12662</a>
<a id='n12663' href='#n12663'>12663</a>
<a id='n12664' href='#n12664'>12664</a>
<a id='n12665' href='#n12665'>12665</a>
<a id='n12666' href='#n12666'>12666</a>
<a id='n12667' href='#n12667'>12667</a>
<a id='n12668' href='#n12668'>12668</a>
<a id='n12669' href='#n12669'>12669</a>
<a id='n12670' href='#n12670'>12670</a>
<a id='n12671' href='#n12671'>12671</a>
<a id='n12672' href='#n12672'>12672</a>
<a id='n12673' href='#n12673'>12673</a>
<a id='n12674' href='#n12674'>12674</a>
<a id='n12675' href='#n12675'>12675</a>
<a id='n12676' href='#n12676'>12676</a>
<a id='n12677' href='#n12677'>12677</a>
<a id='n12678' href='#n12678'>12678</a>
<a id='n12679' href='#n12679'>12679</a>
<a id='n12680' href='#n12680'>12680</a>
<a id='n12681' href='#n12681'>12681</a>
<a id='n12682' href='#n12682'>12682</a>
<a id='n12683' href='#n12683'>12683</a>
<a id='n12684' href='#n12684'>12684</a>
<a id='n12685' href='#n12685'>12685</a>
<a id='n12686' href='#n12686'>12686</a>
<a id='n12687' href='#n12687'>12687</a>
<a id='n12688' href='#n12688'>12688</a>
<a id='n12689' href='#n12689'>12689</a>
<a id='n12690' href='#n12690'>12690</a>
<a id='n12691' href='#n12691'>12691</a>
<a id='n12692' href='#n12692'>12692</a>
<a id='n12693' href='#n12693'>12693</a>
<a id='n12694' href='#n12694'>12694</a>
<a id='n12695' href='#n12695'>12695</a>
<a id='n12696' href='#n12696'>12696</a>
<a id='n12697' href='#n12697'>12697</a>
<a id='n12698' href='#n12698'>12698</a>
<a id='n12699' href='#n12699'>12699</a>
<a id='n12700' href='#n12700'>12700</a>
<a id='n12701' href='#n12701'>12701</a>
<a id='n12702' href='#n12702'>12702</a>
<a id='n12703' href='#n12703'>12703</a>
<a id='n12704' href='#n12704'>12704</a>
<a id='n12705' href='#n12705'>12705</a>
<a id='n12706' href='#n12706'>12706</a>
<a id='n12707' href='#n12707'>12707</a>
<a id='n12708' href='#n12708'>12708</a>
<a id='n12709' href='#n12709'>12709</a>
<a id='n12710' href='#n12710'>12710</a>
<a id='n12711' href='#n12711'>12711</a>
<a id='n12712' href='#n12712'>12712</a>
<a id='n12713' href='#n12713'>12713</a>
<a id='n12714' href='#n12714'>12714</a>
<a id='n12715' href='#n12715'>12715</a>
<a id='n12716' href='#n12716'>12716</a>
<a id='n12717' href='#n12717'>12717</a>
<a id='n12718' href='#n12718'>12718</a>
<a id='n12719' href='#n12719'>12719</a>
<a id='n12720' href='#n12720'>12720</a>
<a id='n12721' href='#n12721'>12721</a>
<a id='n12722' href='#n12722'>12722</a>
<a id='n12723' href='#n12723'>12723</a>
<a id='n12724' href='#n12724'>12724</a>
<a id='n12725' href='#n12725'>12725</a>
<a id='n12726' href='#n12726'>12726</a>
<a id='n12727' href='#n12727'>12727</a>
<a id='n12728' href='#n12728'>12728</a>
<a id='n12729' href='#n12729'>12729</a>
<a id='n12730' href='#n12730'>12730</a>
<a id='n12731' href='#n12731'>12731</a>
<a id='n12732' href='#n12732'>12732</a>
<a id='n12733' href='#n12733'>12733</a>
<a id='n12734' href='#n12734'>12734</a>
<a id='n12735' href='#n12735'>12735</a>
<a id='n12736' href='#n12736'>12736</a>
<a id='n12737' href='#n12737'>12737</a>
<a id='n12738' href='#n12738'>12738</a>
<a id='n12739' href='#n12739'>12739</a>
<a id='n12740' href='#n12740'>12740</a>
<a id='n12741' href='#n12741'>12741</a>
<a id='n12742' href='#n12742'>12742</a>
<a id='n12743' href='#n12743'>12743</a>
<a id='n12744' href='#n12744'>12744</a>
<a id='n12745' href='#n12745'>12745</a>
<a id='n12746' href='#n12746'>12746</a>
<a id='n12747' href='#n12747'>12747</a>
<a id='n12748' href='#n12748'>12748</a>
<a id='n12749' href='#n12749'>12749</a>
<a id='n12750' href='#n12750'>12750</a>
<a id='n12751' href='#n12751'>12751</a>
<a id='n12752' href='#n12752'>12752</a>
<a id='n12753' href='#n12753'>12753</a>
<a id='n12754' href='#n12754'>12754</a>
<a id='n12755' href='#n12755'>12755</a>
<a id='n12756' href='#n12756'>12756</a>
<a id='n12757' href='#n12757'>12757</a>
<a id='n12758' href='#n12758'>12758</a>
<a id='n12759' href='#n12759'>12759</a>
<a id='n12760' href='#n12760'>12760</a>
<a id='n12761' href='#n12761'>12761</a>
<a id='n12762' href='#n12762'>12762</a>
<a id='n12763' href='#n12763'>12763</a>
<a id='n12764' href='#n12764'>12764</a>
<a id='n12765' href='#n12765'>12765</a>
<a id='n12766' href='#n12766'>12766</a>
<a id='n12767' href='#n12767'>12767</a>
<a id='n12768' href='#n12768'>12768</a>
<a id='n12769' href='#n12769'>12769</a>
<a id='n12770' href='#n12770'>12770</a>
<a id='n12771' href='#n12771'>12771</a>
<a id='n12772' href='#n12772'>12772</a>
<a id='n12773' href='#n12773'>12773</a>
<a id='n12774' href='#n12774'>12774</a>
<a id='n12775' href='#n12775'>12775</a>
<a id='n12776' href='#n12776'>12776</a>
<a id='n12777' href='#n12777'>12777</a>
<a id='n12778' href='#n12778'>12778</a>
<a id='n12779' href='#n12779'>12779</a>
<a id='n12780' href='#n12780'>12780</a>
<a id='n12781' href='#n12781'>12781</a>
<a id='n12782' href='#n12782'>12782</a>
<a id='n12783' href='#n12783'>12783</a>
<a id='n12784' href='#n12784'>12784</a>
<a id='n12785' href='#n12785'>12785</a>
<a id='n12786' href='#n12786'>12786</a>
<a id='n12787' href='#n12787'>12787</a>
<a id='n12788' href='#n12788'>12788</a>
<a id='n12789' href='#n12789'>12789</a>
<a id='n12790' href='#n12790'>12790</a>
<a id='n12791' href='#n12791'>12791</a>
<a id='n12792' href='#n12792'>12792</a>
<a id='n12793' href='#n12793'>12793</a>
<a id='n12794' href='#n12794'>12794</a>
<a id='n12795' href='#n12795'>12795</a>
<a id='n12796' href='#n12796'>12796</a>
<a id='n12797' href='#n12797'>12797</a>
<a id='n12798' href='#n12798'>12798</a>
<a id='n12799' href='#n12799'>12799</a>
<a id='n12800' href='#n12800'>12800</a>
<a id='n12801' href='#n12801'>12801</a>
<a id='n12802' href='#n12802'>12802</a>
<a id='n12803' href='#n12803'>12803</a>
<a id='n12804' href='#n12804'>12804</a>
<a id='n12805' href='#n12805'>12805</a>
<a id='n12806' href='#n12806'>12806</a>
<a id='n12807' href='#n12807'>12807</a>
<a id='n12808' href='#n12808'>12808</a>
<a id='n12809' href='#n12809'>12809</a>
<a id='n12810' href='#n12810'>12810</a>
<a id='n12811' href='#n12811'>12811</a>
<a id='n12812' href='#n12812'>12812</a>
<a id='n12813' href='#n12813'>12813</a>
<a id='n12814' href='#n12814'>12814</a>
<a id='n12815' href='#n12815'>12815</a>
<a id='n12816' href='#n12816'>12816</a>
<a id='n12817' href='#n12817'>12817</a>
<a id='n12818' href='#n12818'>12818</a>
<a id='n12819' href='#n12819'>12819</a>
<a id='n12820' href='#n12820'>12820</a>
<a id='n12821' href='#n12821'>12821</a>
<a id='n12822' href='#n12822'>12822</a>
<a id='n12823' href='#n12823'>12823</a>
<a id='n12824' href='#n12824'>12824</a>
<a id='n12825' href='#n12825'>12825</a>
<a id='n12826' href='#n12826'>12826</a>
<a id='n12827' href='#n12827'>12827</a>
<a id='n12828' href='#n12828'>12828</a>
<a id='n12829' href='#n12829'>12829</a>
<a id='n12830' href='#n12830'>12830</a>
<a id='n12831' href='#n12831'>12831</a>
<a id='n12832' href='#n12832'>12832</a>
<a id='n12833' href='#n12833'>12833</a>
<a id='n12834' href='#n12834'>12834</a>
<a id='n12835' href='#n12835'>12835</a>
<a id='n12836' href='#n12836'>12836</a>
<a id='n12837' href='#n12837'>12837</a>
<a id='n12838' href='#n12838'>12838</a>
<a id='n12839' href='#n12839'>12839</a>
<a id='n12840' href='#n12840'>12840</a>
<a id='n12841' href='#n12841'>12841</a>
<a id='n12842' href='#n12842'>12842</a>
<a id='n12843' href='#n12843'>12843</a>
<a id='n12844' href='#n12844'>12844</a>
<a id='n12845' href='#n12845'>12845</a>
<a id='n12846' href='#n12846'>12846</a>
<a id='n12847' href='#n12847'>12847</a>
<a id='n12848' href='#n12848'>12848</a>
<a id='n12849' href='#n12849'>12849</a>
<a id='n12850' href='#n12850'>12850</a>
<a id='n12851' href='#n12851'>12851</a>
<a id='n12852' href='#n12852'>12852</a>
<a id='n12853' href='#n12853'>12853</a>
<a id='n12854' href='#n12854'>12854</a>
<a id='n12855' href='#n12855'>12855</a>
<a id='n12856' href='#n12856'>12856</a>
<a id='n12857' href='#n12857'>12857</a>
<a id='n12858' href='#n12858'>12858</a>
<a id='n12859' href='#n12859'>12859</a>
<a id='n12860' href='#n12860'>12860</a>
<a id='n12861' href='#n12861'>12861</a>
<a id='n12862' href='#n12862'>12862</a>
<a id='n12863' href='#n12863'>12863</a>
<a id='n12864' href='#n12864'>12864</a>
<a id='n12865' href='#n12865'>12865</a>
<a id='n12866' href='#n12866'>12866</a>
<a id='n12867' href='#n12867'>12867</a>
<a id='n12868' href='#n12868'>12868</a>
<a id='n12869' href='#n12869'>12869</a>
<a id='n12870' href='#n12870'>12870</a>
<a id='n12871' href='#n12871'>12871</a>
<a id='n12872' href='#n12872'>12872</a>
<a id='n12873' href='#n12873'>12873</a>
<a id='n12874' href='#n12874'>12874</a>
<a id='n12875' href='#n12875'>12875</a>
<a id='n12876' href='#n12876'>12876</a>
<a id='n12877' href='#n12877'>12877</a>
<a id='n12878' href='#n12878'>12878</a>
<a id='n12879' href='#n12879'>12879</a>
<a id='n12880' href='#n12880'>12880</a>
<a id='n12881' href='#n12881'>12881</a>
<a id='n12882' href='#n12882'>12882</a>
<a id='n12883' href='#n12883'>12883</a>
<a id='n12884' href='#n12884'>12884</a>
<a id='n12885' href='#n12885'>12885</a>
<a id='n12886' href='#n12886'>12886</a>
<a id='n12887' href='#n12887'>12887</a>
<a id='n12888' href='#n12888'>12888</a>
<a id='n12889' href='#n12889'>12889</a>
<a id='n12890' href='#n12890'>12890</a>
<a id='n12891' href='#n12891'>12891</a>
<a id='n12892' href='#n12892'>12892</a>
<a id='n12893' href='#n12893'>12893</a>
<a id='n12894' href='#n12894'>12894</a>
<a id='n12895' href='#n12895'>12895</a>
<a id='n12896' href='#n12896'>12896</a>
<a id='n12897' href='#n12897'>12897</a>
<a id='n12898' href='#n12898'>12898</a>
<a id='n12899' href='#n12899'>12899</a>
<a id='n12900' href='#n12900'>12900</a>
<a id='n12901' href='#n12901'>12901</a>
<a id='n12902' href='#n12902'>12902</a>
<a id='n12903' href='#n12903'>12903</a>
<a id='n12904' href='#n12904'>12904</a>
<a id='n12905' href='#n12905'>12905</a>
<a id='n12906' href='#n12906'>12906</a>
<a id='n12907' href='#n12907'>12907</a>
<a id='n12908' href='#n12908'>12908</a>
<a id='n12909' href='#n12909'>12909</a>
<a id='n12910' href='#n12910'>12910</a>
<a id='n12911' href='#n12911'>12911</a>
<a id='n12912' href='#n12912'>12912</a>
<a id='n12913' href='#n12913'>12913</a>
<a id='n12914' href='#n12914'>12914</a>
<a id='n12915' href='#n12915'>12915</a>
<a id='n12916' href='#n12916'>12916</a>
<a id='n12917' href='#n12917'>12917</a>
<a id='n12918' href='#n12918'>12918</a>
<a id='n12919' href='#n12919'>12919</a>
<a id='n12920' href='#n12920'>12920</a>
<a id='n12921' href='#n12921'>12921</a>
<a id='n12922' href='#n12922'>12922</a>
<a id='n12923' href='#n12923'>12923</a>
<a id='n12924' href='#n12924'>12924</a>
<a id='n12925' href='#n12925'>12925</a>
<a id='n12926' href='#n12926'>12926</a>
<a id='n12927' href='#n12927'>12927</a>
<a id='n12928' href='#n12928'>12928</a>
<a id='n12929' href='#n12929'>12929</a>
<a id='n12930' href='#n12930'>12930</a>
<a id='n12931' href='#n12931'>12931</a>
<a id='n12932' href='#n12932'>12932</a>
<a id='n12933' href='#n12933'>12933</a>
<a id='n12934' href='#n12934'>12934</a>
<a id='n12935' href='#n12935'>12935</a>
<a id='n12936' href='#n12936'>12936</a>
<a id='n12937' href='#n12937'>12937</a>
<a id='n12938' href='#n12938'>12938</a>
<a id='n12939' href='#n12939'>12939</a>
<a id='n12940' href='#n12940'>12940</a>
<a id='n12941' href='#n12941'>12941</a>
<a id='n12942' href='#n12942'>12942</a>
<a id='n12943' href='#n12943'>12943</a>
<a id='n12944' href='#n12944'>12944</a>
<a id='n12945' href='#n12945'>12945</a>
<a id='n12946' href='#n12946'>12946</a>
<a id='n12947' href='#n12947'>12947</a>
<a id='n12948' href='#n12948'>12948</a>
<a id='n12949' href='#n12949'>12949</a>
<a id='n12950' href='#n12950'>12950</a>
<a id='n12951' href='#n12951'>12951</a>
<a id='n12952' href='#n12952'>12952</a>
<a id='n12953' href='#n12953'>12953</a>
<a id='n12954' href='#n12954'>12954</a>
<a id='n12955' href='#n12955'>12955</a>
<a id='n12956' href='#n12956'>12956</a>
<a id='n12957' href='#n12957'>12957</a>
<a id='n12958' href='#n12958'>12958</a>
<a id='n12959' href='#n12959'>12959</a>
<a id='n12960' href='#n12960'>12960</a>
<a id='n12961' href='#n12961'>12961</a>
<a id='n12962' href='#n12962'>12962</a>
<a id='n12963' href='#n12963'>12963</a>
<a id='n12964' href='#n12964'>12964</a>
<a id='n12965' href='#n12965'>12965</a>
<a id='n12966' href='#n12966'>12966</a>
<a id='n12967' href='#n12967'>12967</a>
<a id='n12968' href='#n12968'>12968</a>
<a id='n12969' href='#n12969'>12969</a>
<a id='n12970' href='#n12970'>12970</a>
<a id='n12971' href='#n12971'>12971</a>
<a id='n12972' href='#n12972'>12972</a>
<a id='n12973' href='#n12973'>12973</a>
<a id='n12974' href='#n12974'>12974</a>
<a id='n12975' href='#n12975'>12975</a>
<a id='n12976' href='#n12976'>12976</a>
<a id='n12977' href='#n12977'>12977</a>
<a id='n12978' href='#n12978'>12978</a>
<a id='n12979' href='#n12979'>12979</a>
<a id='n12980' href='#n12980'>12980</a>
<a id='n12981' href='#n12981'>12981</a>
<a id='n12982' href='#n12982'>12982</a>
<a id='n12983' href='#n12983'>12983</a>
<a id='n12984' href='#n12984'>12984</a>
<a id='n12985' href='#n12985'>12985</a>
<a id='n12986' href='#n12986'>12986</a>
<a id='n12987' href='#n12987'>12987</a>
<a id='n12988' href='#n12988'>12988</a>
<a id='n12989' href='#n12989'>12989</a>
<a id='n12990' href='#n12990'>12990</a>
<a id='n12991' href='#n12991'>12991</a>
<a id='n12992' href='#n12992'>12992</a>
<a id='n12993' href='#n12993'>12993</a>
<a id='n12994' href='#n12994'>12994</a>
<a id='n12995' href='#n12995'>12995</a>
<a id='n12996' href='#n12996'>12996</a>
<a id='n12997' href='#n12997'>12997</a>
<a id='n12998' href='#n12998'>12998</a>
<a id='n12999' href='#n12999'>12999</a>
<a id='n13000' href='#n13000'>13000</a>
<a id='n13001' href='#n13001'>13001</a>
<a id='n13002' href='#n13002'>13002</a>
<a id='n13003' href='#n13003'>13003</a>
<a id='n13004' href='#n13004'>13004</a>
<a id='n13005' href='#n13005'>13005</a>
<a id='n13006' href='#n13006'>13006</a>
<a id='n13007' href='#n13007'>13007</a>
<a id='n13008' href='#n13008'>13008</a>
<a id='n13009' href='#n13009'>13009</a>
<a id='n13010' href='#n13010'>13010</a>
<a id='n13011' href='#n13011'>13011</a>
<a id='n13012' href='#n13012'>13012</a>
<a id='n13013' href='#n13013'>13013</a>
<a id='n13014' href='#n13014'>13014</a>
<a id='n13015' href='#n13015'>13015</a>
<a id='n13016' href='#n13016'>13016</a>
<a id='n13017' href='#n13017'>13017</a>
<a id='n13018' href='#n13018'>13018</a>
<a id='n13019' href='#n13019'>13019</a>
<a id='n13020' href='#n13020'>13020</a>
<a id='n13021' href='#n13021'>13021</a>
<a id='n13022' href='#n13022'>13022</a>
<a id='n13023' href='#n13023'>13023</a>
<a id='n13024' href='#n13024'>13024</a>
<a id='n13025' href='#n13025'>13025</a>
<a id='n13026' href='#n13026'>13026</a>
<a id='n13027' href='#n13027'>13027</a>
<a id='n13028' href='#n13028'>13028</a>
<a id='n13029' href='#n13029'>13029</a>
<a id='n13030' href='#n13030'>13030</a>
<a id='n13031' href='#n13031'>13031</a>
<a id='n13032' href='#n13032'>13032</a>
<a id='n13033' href='#n13033'>13033</a>
<a id='n13034' href='#n13034'>13034</a>
<a id='n13035' href='#n13035'>13035</a>
<a id='n13036' href='#n13036'>13036</a>
<a id='n13037' href='#n13037'>13037</a>
<a id='n13038' href='#n13038'>13038</a>
<a id='n13039' href='#n13039'>13039</a>
<a id='n13040' href='#n13040'>13040</a>
<a id='n13041' href='#n13041'>13041</a>
<a id='n13042' href='#n13042'>13042</a>
<a id='n13043' href='#n13043'>13043</a>
<a id='n13044' href='#n13044'>13044</a>
<a id='n13045' href='#n13045'>13045</a>
<a id='n13046' href='#n13046'>13046</a>
<a id='n13047' href='#n13047'>13047</a>
<a id='n13048' href='#n13048'>13048</a>
<a id='n13049' href='#n13049'>13049</a>
<a id='n13050' href='#n13050'>13050</a>
<a id='n13051' href='#n13051'>13051</a>
<a id='n13052' href='#n13052'>13052</a>
<a id='n13053' href='#n13053'>13053</a>
<a id='n13054' href='#n13054'>13054</a>
<a id='n13055' href='#n13055'>13055</a>
<a id='n13056' href='#n13056'>13056</a>
<a id='n13057' href='#n13057'>13057</a>
<a id='n13058' href='#n13058'>13058</a>
<a id='n13059' href='#n13059'>13059</a>
<a id='n13060' href='#n13060'>13060</a>
<a id='n13061' href='#n13061'>13061</a>
<a id='n13062' href='#n13062'>13062</a>
<a id='n13063' href='#n13063'>13063</a>
<a id='n13064' href='#n13064'>13064</a>
<a id='n13065' href='#n13065'>13065</a>
<a id='n13066' href='#n13066'>13066</a>
<a id='n13067' href='#n13067'>13067</a>
<a id='n13068' href='#n13068'>13068</a>
<a id='n13069' href='#n13069'>13069</a>
<a id='n13070' href='#n13070'>13070</a>
<a id='n13071' href='#n13071'>13071</a>
<a id='n13072' href='#n13072'>13072</a>
<a id='n13073' href='#n13073'>13073</a>
<a id='n13074' href='#n13074'>13074</a>
<a id='n13075' href='#n13075'>13075</a>
<a id='n13076' href='#n13076'>13076</a>
<a id='n13077' href='#n13077'>13077</a>
<a id='n13078' href='#n13078'>13078</a>
<a id='n13079' href='#n13079'>13079</a>
<a id='n13080' href='#n13080'>13080</a>
<a id='n13081' href='#n13081'>13081</a>
<a id='n13082' href='#n13082'>13082</a>
<a id='n13083' href='#n13083'>13083</a>
<a id='n13084' href='#n13084'>13084</a>
<a id='n13085' href='#n13085'>13085</a>
<a id='n13086' href='#n13086'>13086</a>
<a id='n13087' href='#n13087'>13087</a>
<a id='n13088' href='#n13088'>13088</a>
<a id='n13089' href='#n13089'>13089</a>
<a id='n13090' href='#n13090'>13090</a>
<a id='n13091' href='#n13091'>13091</a>
<a id='n13092' href='#n13092'>13092</a>
<a id='n13093' href='#n13093'>13093</a>
<a id='n13094' href='#n13094'>13094</a>
<a id='n13095' href='#n13095'>13095</a>
<a id='n13096' href='#n13096'>13096</a>
<a id='n13097' href='#n13097'>13097</a>
<a id='n13098' href='#n13098'>13098</a>
<a id='n13099' href='#n13099'>13099</a>
<a id='n13100' href='#n13100'>13100</a>
<a id='n13101' href='#n13101'>13101</a>
<a id='n13102' href='#n13102'>13102</a>
<a id='n13103' href='#n13103'>13103</a>
<a id='n13104' href='#n13104'>13104</a>
<a id='n13105' href='#n13105'>13105</a>
<a id='n13106' href='#n13106'>13106</a>
<a id='n13107' href='#n13107'>13107</a>
<a id='n13108' href='#n13108'>13108</a>
<a id='n13109' href='#n13109'>13109</a>
<a id='n13110' href='#n13110'>13110</a>
<a id='n13111' href='#n13111'>13111</a>
<a id='n13112' href='#n13112'>13112</a>
<a id='n13113' href='#n13113'>13113</a>
<a id='n13114' href='#n13114'>13114</a>
<a id='n13115' href='#n13115'>13115</a>
<a id='n13116' href='#n13116'>13116</a>
<a id='n13117' href='#n13117'>13117</a>
<a id='n13118' href='#n13118'>13118</a>
<a id='n13119' href='#n13119'>13119</a>
<a id='n13120' href='#n13120'>13120</a>
<a id='n13121' href='#n13121'>13121</a>
<a id='n13122' href='#n13122'>13122</a>
<a id='n13123' href='#n13123'>13123</a>
<a id='n13124' href='#n13124'>13124</a>
<a id='n13125' href='#n13125'>13125</a>
<a id='n13126' href='#n13126'>13126</a>
<a id='n13127' href='#n13127'>13127</a>
<a id='n13128' href='#n13128'>13128</a>
<a id='n13129' href='#n13129'>13129</a>
<a id='n13130' href='#n13130'>13130</a>
<a id='n13131' href='#n13131'>13131</a>
<a id='n13132' href='#n13132'>13132</a>
<a id='n13133' href='#n13133'>13133</a>
<a id='n13134' href='#n13134'>13134</a>
<a id='n13135' href='#n13135'>13135</a>
<a id='n13136' href='#n13136'>13136</a>
<a id='n13137' href='#n13137'>13137</a>
<a id='n13138' href='#n13138'>13138</a>
<a id='n13139' href='#n13139'>13139</a>
<a id='n13140' href='#n13140'>13140</a>
<a id='n13141' href='#n13141'>13141</a>
<a id='n13142' href='#n13142'>13142</a>
<a id='n13143' href='#n13143'>13143</a>
<a id='n13144' href='#n13144'>13144</a>
<a id='n13145' href='#n13145'>13145</a>
<a id='n13146' href='#n13146'>13146</a>
<a id='n13147' href='#n13147'>13147</a>
<a id='n13148' href='#n13148'>13148</a>
<a id='n13149' href='#n13149'>13149</a>
<a id='n13150' href='#n13150'>13150</a>
<a id='n13151' href='#n13151'>13151</a>
<a id='n13152' href='#n13152'>13152</a>
<a id='n13153' href='#n13153'>13153</a>
<a id='n13154' href='#n13154'>13154</a>
<a id='n13155' href='#n13155'>13155</a>
<a id='n13156' href='#n13156'>13156</a>
<a id='n13157' href='#n13157'>13157</a>
<a id='n13158' href='#n13158'>13158</a>
<a id='n13159' href='#n13159'>13159</a>
<a id='n13160' href='#n13160'>13160</a>
<a id='n13161' href='#n13161'>13161</a>
<a id='n13162' href='#n13162'>13162</a>
<a id='n13163' href='#n13163'>13163</a>
<a id='n13164' href='#n13164'>13164</a>
<a id='n13165' href='#n13165'>13165</a>
<a id='n13166' href='#n13166'>13166</a>
<a id='n13167' href='#n13167'>13167</a>
<a id='n13168' href='#n13168'>13168</a>
<a id='n13169' href='#n13169'>13169</a>
<a id='n13170' href='#n13170'>13170</a>
<a id='n13171' href='#n13171'>13171</a>
<a id='n13172' href='#n13172'>13172</a>
<a id='n13173' href='#n13173'>13173</a>
<a id='n13174' href='#n13174'>13174</a>
<a id='n13175' href='#n13175'>13175</a>
<a id='n13176' href='#n13176'>13176</a>
<a id='n13177' href='#n13177'>13177</a>
<a id='n13178' href='#n13178'>13178</a>
<a id='n13179' href='#n13179'>13179</a>
<a id='n13180' href='#n13180'>13180</a>
<a id='n13181' href='#n13181'>13181</a>
<a id='n13182' href='#n13182'>13182</a>
<a id='n13183' href='#n13183'>13183</a>
<a id='n13184' href='#n13184'>13184</a>
<a id='n13185' href='#n13185'>13185</a>
<a id='n13186' href='#n13186'>13186</a>
<a id='n13187' href='#n13187'>13187</a>
<a id='n13188' href='#n13188'>13188</a>
<a id='n13189' href='#n13189'>13189</a>
<a id='n13190' href='#n13190'>13190</a>
<a id='n13191' href='#n13191'>13191</a>
<a id='n13192' href='#n13192'>13192</a>
<a id='n13193' href='#n13193'>13193</a>
<a id='n13194' href='#n13194'>13194</a>
<a id='n13195' href='#n13195'>13195</a>
<a id='n13196' href='#n13196'>13196</a>
<a id='n13197' href='#n13197'>13197</a>
<a id='n13198' href='#n13198'>13198</a>
<a id='n13199' href='#n13199'>13199</a>
<a id='n13200' href='#n13200'>13200</a>
<a id='n13201' href='#n13201'>13201</a>
<a id='n13202' href='#n13202'>13202</a>
<a id='n13203' href='#n13203'>13203</a>
<a id='n13204' href='#n13204'>13204</a>
<a id='n13205' href='#n13205'>13205</a>
<a id='n13206' href='#n13206'>13206</a>
<a id='n13207' href='#n13207'>13207</a>
<a id='n13208' href='#n13208'>13208</a>
<a id='n13209' href='#n13209'>13209</a>
<a id='n13210' href='#n13210'>13210</a>
<a id='n13211' href='#n13211'>13211</a>
<a id='n13212' href='#n13212'>13212</a>
<a id='n13213' href='#n13213'>13213</a>
<a id='n13214' href='#n13214'>13214</a>
<a id='n13215' href='#n13215'>13215</a>
<a id='n13216' href='#n13216'>13216</a>
<a id='n13217' href='#n13217'>13217</a>
<a id='n13218' href='#n13218'>13218</a>
<a id='n13219' href='#n13219'>13219</a>
<a id='n13220' href='#n13220'>13220</a>
<a id='n13221' href='#n13221'>13221</a>
<a id='n13222' href='#n13222'>13222</a>
<a id='n13223' href='#n13223'>13223</a>
<a id='n13224' href='#n13224'>13224</a>
<a id='n13225' href='#n13225'>13225</a>
<a id='n13226' href='#n13226'>13226</a>
<a id='n13227' href='#n13227'>13227</a>
<a id='n13228' href='#n13228'>13228</a>
<a id='n13229' href='#n13229'>13229</a>
<a id='n13230' href='#n13230'>13230</a>
<a id='n13231' href='#n13231'>13231</a>
<a id='n13232' href='#n13232'>13232</a>
<a id='n13233' href='#n13233'>13233</a>
<a id='n13234' href='#n13234'>13234</a>
<a id='n13235' href='#n13235'>13235</a>
<a id='n13236' href='#n13236'>13236</a>
<a id='n13237' href='#n13237'>13237</a>
<a id='n13238' href='#n13238'>13238</a>
<a id='n13239' href='#n13239'>13239</a>
<a id='n13240' href='#n13240'>13240</a>
<a id='n13241' href='#n13241'>13241</a>
<a id='n13242' href='#n13242'>13242</a>
<a id='n13243' href='#n13243'>13243</a>
<a id='n13244' href='#n13244'>13244</a>
<a id='n13245' href='#n13245'>13245</a>
<a id='n13246' href='#n13246'>13246</a>
<a id='n13247' href='#n13247'>13247</a>
<a id='n13248' href='#n13248'>13248</a>
<a id='n13249' href='#n13249'>13249</a>
<a id='n13250' href='#n13250'>13250</a>
<a id='n13251' href='#n13251'>13251</a>
<a id='n13252' href='#n13252'>13252</a>
<a id='n13253' href='#n13253'>13253</a>
<a id='n13254' href='#n13254'>13254</a>
<a id='n13255' href='#n13255'>13255</a>
<a id='n13256' href='#n13256'>13256</a>
<a id='n13257' href='#n13257'>13257</a>
<a id='n13258' href='#n13258'>13258</a>
<a id='n13259' href='#n13259'>13259</a>
<a id='n13260' href='#n13260'>13260</a>
<a id='n13261' href='#n13261'>13261</a>
<a id='n13262' href='#n13262'>13262</a>
<a id='n13263' href='#n13263'>13263</a>
<a id='n13264' href='#n13264'>13264</a>
<a id='n13265' href='#n13265'>13265</a>
<a id='n13266' href='#n13266'>13266</a>
<a id='n13267' href='#n13267'>13267</a>
<a id='n13268' href='#n13268'>13268</a>
<a id='n13269' href='#n13269'>13269</a>
<a id='n13270' href='#n13270'>13270</a>
<a id='n13271' href='#n13271'>13271</a>
<a id='n13272' href='#n13272'>13272</a>
<a id='n13273' href='#n13273'>13273</a>
<a id='n13274' href='#n13274'>13274</a>
<a id='n13275' href='#n13275'>13275</a>
<a id='n13276' href='#n13276'>13276</a>
<a id='n13277' href='#n13277'>13277</a>
<a id='n13278' href='#n13278'>13278</a>
<a id='n13279' href='#n13279'>13279</a>
<a id='n13280' href='#n13280'>13280</a>
<a id='n13281' href='#n13281'>13281</a>
<a id='n13282' href='#n13282'>13282</a>
<a id='n13283' href='#n13283'>13283</a>
<a id='n13284' href='#n13284'>13284</a>
<a id='n13285' href='#n13285'>13285</a>
<a id='n13286' href='#n13286'>13286</a>
<a id='n13287' href='#n13287'>13287</a>
<a id='n13288' href='#n13288'>13288</a>
<a id='n13289' href='#n13289'>13289</a>
<a id='n13290' href='#n13290'>13290</a>
<a id='n13291' href='#n13291'>13291</a>
<a id='n13292' href='#n13292'>13292</a>
<a id='n13293' href='#n13293'>13293</a>
<a id='n13294' href='#n13294'>13294</a>
<a id='n13295' href='#n13295'>13295</a>
<a id='n13296' href='#n13296'>13296</a>
<a id='n13297' href='#n13297'>13297</a>
<a id='n13298' href='#n13298'>13298</a>
<a id='n13299' href='#n13299'>13299</a>
<a id='n13300' href='#n13300'>13300</a>
<a id='n13301' href='#n13301'>13301</a>
<a id='n13302' href='#n13302'>13302</a>
<a id='n13303' href='#n13303'>13303</a>
<a id='n13304' href='#n13304'>13304</a>
<a id='n13305' href='#n13305'>13305</a>
<a id='n13306' href='#n13306'>13306</a>
<a id='n13307' href='#n13307'>13307</a>
<a id='n13308' href='#n13308'>13308</a>
<a id='n13309' href='#n13309'>13309</a>
<a id='n13310' href='#n13310'>13310</a>
<a id='n13311' href='#n13311'>13311</a>
<a id='n13312' href='#n13312'>13312</a>
<a id='n13313' href='#n13313'>13313</a>
<a id='n13314' href='#n13314'>13314</a>
<a id='n13315' href='#n13315'>13315</a>
<a id='n13316' href='#n13316'>13316</a>
<a id='n13317' href='#n13317'>13317</a>
<a id='n13318' href='#n13318'>13318</a>
<a id='n13319' href='#n13319'>13319</a>
<a id='n13320' href='#n13320'>13320</a>
<a id='n13321' href='#n13321'>13321</a>
<a id='n13322' href='#n13322'>13322</a>
<a id='n13323' href='#n13323'>13323</a>
<a id='n13324' href='#n13324'>13324</a>
<a id='n13325' href='#n13325'>13325</a>
<a id='n13326' href='#n13326'>13326</a>
<a id='n13327' href='#n13327'>13327</a>
<a id='n13328' href='#n13328'>13328</a>
<a id='n13329' href='#n13329'>13329</a>
<a id='n13330' href='#n13330'>13330</a>
<a id='n13331' href='#n13331'>13331</a>
<a id='n13332' href='#n13332'>13332</a>
<a id='n13333' href='#n13333'>13333</a>
<a id='n13334' href='#n13334'>13334</a>
<a id='n13335' href='#n13335'>13335</a>
<a id='n13336' href='#n13336'>13336</a>
<a id='n13337' href='#n13337'>13337</a>
<a id='n13338' href='#n13338'>13338</a>
<a id='n13339' href='#n13339'>13339</a>
<a id='n13340' href='#n13340'>13340</a>
<a id='n13341' href='#n13341'>13341</a>
<a id='n13342' href='#n13342'>13342</a>
<a id='n13343' href='#n13343'>13343</a>
<a id='n13344' href='#n13344'>13344</a>
<a id='n13345' href='#n13345'>13345</a>
<a id='n13346' href='#n13346'>13346</a>
<a id='n13347' href='#n13347'>13347</a>
<a id='n13348' href='#n13348'>13348</a>
<a id='n13349' href='#n13349'>13349</a>
<a id='n13350' href='#n13350'>13350</a>
<a id='n13351' href='#n13351'>13351</a>
<a id='n13352' href='#n13352'>13352</a>
<a id='n13353' href='#n13353'>13353</a>
<a id='n13354' href='#n13354'>13354</a>
<a id='n13355' href='#n13355'>13355</a>
<a id='n13356' href='#n13356'>13356</a>
<a id='n13357' href='#n13357'>13357</a>
<a id='n13358' href='#n13358'>13358</a>
<a id='n13359' href='#n13359'>13359</a>
<a id='n13360' href='#n13360'>13360</a>
<a id='n13361' href='#n13361'>13361</a>
<a id='n13362' href='#n13362'>13362</a>
<a id='n13363' href='#n13363'>13363</a>
<a id='n13364' href='#n13364'>13364</a>
<a id='n13365' href='#n13365'>13365</a>
<a id='n13366' href='#n13366'>13366</a>
<a id='n13367' href='#n13367'>13367</a>
<a id='n13368' href='#n13368'>13368</a>
<a id='n13369' href='#n13369'>13369</a>
<a id='n13370' href='#n13370'>13370</a>
<a id='n13371' href='#n13371'>13371</a>
<a id='n13372' href='#n13372'>13372</a>
<a id='n13373' href='#n13373'>13373</a>
<a id='n13374' href='#n13374'>13374</a>
<a id='n13375' href='#n13375'>13375</a>
<a id='n13376' href='#n13376'>13376</a>
<a id='n13377' href='#n13377'>13377</a>
<a id='n13378' href='#n13378'>13378</a>
<a id='n13379' href='#n13379'>13379</a>
<a id='n13380' href='#n13380'>13380</a>
<a id='n13381' href='#n13381'>13381</a>
<a id='n13382' href='#n13382'>13382</a>
<a id='n13383' href='#n13383'>13383</a>
<a id='n13384' href='#n13384'>13384</a>
<a id='n13385' href='#n13385'>13385</a>
<a id='n13386' href='#n13386'>13386</a>
<a id='n13387' href='#n13387'>13387</a>
<a id='n13388' href='#n13388'>13388</a>
<a id='n13389' href='#n13389'>13389</a>
<a id='n13390' href='#n13390'>13390</a>
<a id='n13391' href='#n13391'>13391</a>
<a id='n13392' href='#n13392'>13392</a>
<a id='n13393' href='#n13393'>13393</a>
<a id='n13394' href='#n13394'>13394</a>
<a id='n13395' href='#n13395'>13395</a>
<a id='n13396' href='#n13396'>13396</a>
<a id='n13397' href='#n13397'>13397</a>
<a id='n13398' href='#n13398'>13398</a>
<a id='n13399' href='#n13399'>13399</a>
<a id='n13400' href='#n13400'>13400</a>
<a id='n13401' href='#n13401'>13401</a>
<a id='n13402' href='#n13402'>13402</a>
<a id='n13403' href='#n13403'>13403</a>
<a id='n13404' href='#n13404'>13404</a>
<a id='n13405' href='#n13405'>13405</a>
<a id='n13406' href='#n13406'>13406</a>
<a id='n13407' href='#n13407'>13407</a>
<a id='n13408' href='#n13408'>13408</a>
<a id='n13409' href='#n13409'>13409</a>
<a id='n13410' href='#n13410'>13410</a>
<a id='n13411' href='#n13411'>13411</a>
<a id='n13412' href='#n13412'>13412</a>
<a id='n13413' href='#n13413'>13413</a>
<a id='n13414' href='#n13414'>13414</a>
<a id='n13415' href='#n13415'>13415</a>
<a id='n13416' href='#n13416'>13416</a>
<a id='n13417' href='#n13417'>13417</a>
<a id='n13418' href='#n13418'>13418</a>
<a id='n13419' href='#n13419'>13419</a>
<a id='n13420' href='#n13420'>13420</a>
<a id='n13421' href='#n13421'>13421</a>
<a id='n13422' href='#n13422'>13422</a>
<a id='n13423' href='#n13423'>13423</a>
<a id='n13424' href='#n13424'>13424</a>
<a id='n13425' href='#n13425'>13425</a>
<a id='n13426' href='#n13426'>13426</a>
<a id='n13427' href='#n13427'>13427</a>
<a id='n13428' href='#n13428'>13428</a>
<a id='n13429' href='#n13429'>13429</a>
<a id='n13430' href='#n13430'>13430</a>
<a id='n13431' href='#n13431'>13431</a>
<a id='n13432' href='#n13432'>13432</a>
<a id='n13433' href='#n13433'>13433</a>
<a id='n13434' href='#n13434'>13434</a>
<a id='n13435' href='#n13435'>13435</a>
<a id='n13436' href='#n13436'>13436</a>
<a id='n13437' href='#n13437'>13437</a>
<a id='n13438' href='#n13438'>13438</a>
<a id='n13439' href='#n13439'>13439</a>
<a id='n13440' href='#n13440'>13440</a>
<a id='n13441' href='#n13441'>13441</a>
<a id='n13442' href='#n13442'>13442</a>
<a id='n13443' href='#n13443'>13443</a>
<a id='n13444' href='#n13444'>13444</a>
<a id='n13445' href='#n13445'>13445</a>
<a id='n13446' href='#n13446'>13446</a>
<a id='n13447' href='#n13447'>13447</a>
<a id='n13448' href='#n13448'>13448</a>
<a id='n13449' href='#n13449'>13449</a>
<a id='n13450' href='#n13450'>13450</a>
<a id='n13451' href='#n13451'>13451</a>
<a id='n13452' href='#n13452'>13452</a>
<a id='n13453' href='#n13453'>13453</a>
<a id='n13454' href='#n13454'>13454</a>
<a id='n13455' href='#n13455'>13455</a>
<a id='n13456' href='#n13456'>13456</a>
<a id='n13457' href='#n13457'>13457</a>
<a id='n13458' href='#n13458'>13458</a>
<a id='n13459' href='#n13459'>13459</a>
<a id='n13460' href='#n13460'>13460</a>
<a id='n13461' href='#n13461'>13461</a>
<a id='n13462' href='#n13462'>13462</a>
<a id='n13463' href='#n13463'>13463</a>
<a id='n13464' href='#n13464'>13464</a>
<a id='n13465' href='#n13465'>13465</a>
<a id='n13466' href='#n13466'>13466</a>
<a id='n13467' href='#n13467'>13467</a>
<a id='n13468' href='#n13468'>13468</a>
<a id='n13469' href='#n13469'>13469</a>
<a id='n13470' href='#n13470'>13470</a>
<a id='n13471' href='#n13471'>13471</a>
<a id='n13472' href='#n13472'>13472</a>
<a id='n13473' href='#n13473'>13473</a>
<a id='n13474' href='#n13474'>13474</a>
<a id='n13475' href='#n13475'>13475</a>
<a id='n13476' href='#n13476'>13476</a>
<a id='n13477' href='#n13477'>13477</a>
<a id='n13478' href='#n13478'>13478</a>
<a id='n13479' href='#n13479'>13479</a>
<a id='n13480' href='#n13480'>13480</a>
<a id='n13481' href='#n13481'>13481</a>
<a id='n13482' href='#n13482'>13482</a>
<a id='n13483' href='#n13483'>13483</a>
<a id='n13484' href='#n13484'>13484</a>
<a id='n13485' href='#n13485'>13485</a>
<a id='n13486' href='#n13486'>13486</a>
<a id='n13487' href='#n13487'>13487</a>
<a id='n13488' href='#n13488'>13488</a>
<a id='n13489' href='#n13489'>13489</a>
<a id='n13490' href='#n13490'>13490</a>
<a id='n13491' href='#n13491'>13491</a>
<a id='n13492' href='#n13492'>13492</a>
<a id='n13493' href='#n13493'>13493</a>
<a id='n13494' href='#n13494'>13494</a>
<a id='n13495' href='#n13495'>13495</a>
<a id='n13496' href='#n13496'>13496</a>
<a id='n13497' href='#n13497'>13497</a>
<a id='n13498' href='#n13498'>13498</a>
<a id='n13499' href='#n13499'>13499</a>
<a id='n13500' href='#n13500'>13500</a>
<a id='n13501' href='#n13501'>13501</a>
<a id='n13502' href='#n13502'>13502</a>
<a id='n13503' href='#n13503'>13503</a>
<a id='n13504' href='#n13504'>13504</a>
<a id='n13505' href='#n13505'>13505</a>
<a id='n13506' href='#n13506'>13506</a>
<a id='n13507' href='#n13507'>13507</a>
<a id='n13508' href='#n13508'>13508</a>
<a id='n13509' href='#n13509'>13509</a>
<a id='n13510' href='#n13510'>13510</a>
<a id='n13511' href='#n13511'>13511</a>
<a id='n13512' href='#n13512'>13512</a>
<a id='n13513' href='#n13513'>13513</a>
<a id='n13514' href='#n13514'>13514</a>
<a id='n13515' href='#n13515'>13515</a>
<a id='n13516' href='#n13516'>13516</a>
<a id='n13517' href='#n13517'>13517</a>
<a id='n13518' href='#n13518'>13518</a>
<a id='n13519' href='#n13519'>13519</a>
<a id='n13520' href='#n13520'>13520</a>
<a id='n13521' href='#n13521'>13521</a>
<a id='n13522' href='#n13522'>13522</a>
<a id='n13523' href='#n13523'>13523</a>
<a id='n13524' href='#n13524'>13524</a>
<a id='n13525' href='#n13525'>13525</a>
<a id='n13526' href='#n13526'>13526</a>
<a id='n13527' href='#n13527'>13527</a>
<a id='n13528' href='#n13528'>13528</a>
<a id='n13529' href='#n13529'>13529</a>
<a id='n13530' href='#n13530'>13530</a>
<a id='n13531' href='#n13531'>13531</a>
<a id='n13532' href='#n13532'>13532</a>
<a id='n13533' href='#n13533'>13533</a>
<a id='n13534' href='#n13534'>13534</a>
<a id='n13535' href='#n13535'>13535</a>
<a id='n13536' href='#n13536'>13536</a>
<a id='n13537' href='#n13537'>13537</a>
<a id='n13538' href='#n13538'>13538</a>
<a id='n13539' href='#n13539'>13539</a>
<a id='n13540' href='#n13540'>13540</a>
<a id='n13541' href='#n13541'>13541</a>
<a id='n13542' href='#n13542'>13542</a>
<a id='n13543' href='#n13543'>13543</a>
<a id='n13544' href='#n13544'>13544</a>
<a id='n13545' href='#n13545'>13545</a>
<a id='n13546' href='#n13546'>13546</a>
<a id='n13547' href='#n13547'>13547</a>
<a id='n13548' href='#n13548'>13548</a>
<a id='n13549' href='#n13549'>13549</a>
<a id='n13550' href='#n13550'>13550</a>
<a id='n13551' href='#n13551'>13551</a>
<a id='n13552' href='#n13552'>13552</a>
<a id='n13553' href='#n13553'>13553</a>
<a id='n13554' href='#n13554'>13554</a>
<a id='n13555' href='#n13555'>13555</a>
<a id='n13556' href='#n13556'>13556</a>
<a id='n13557' href='#n13557'>13557</a>
<a id='n13558' href='#n13558'>13558</a>
<a id='n13559' href='#n13559'>13559</a>
<a id='n13560' href='#n13560'>13560</a>
<a id='n13561' href='#n13561'>13561</a>
<a id='n13562' href='#n13562'>13562</a>
<a id='n13563' href='#n13563'>13563</a>
<a id='n13564' href='#n13564'>13564</a>
<a id='n13565' href='#n13565'>13565</a>
<a id='n13566' href='#n13566'>13566</a>
<a id='n13567' href='#n13567'>13567</a>
<a id='n13568' href='#n13568'>13568</a>
<a id='n13569' href='#n13569'>13569</a>
<a id='n13570' href='#n13570'>13570</a>
<a id='n13571' href='#n13571'>13571</a>
<a id='n13572' href='#n13572'>13572</a>
<a id='n13573' href='#n13573'>13573</a>
<a id='n13574' href='#n13574'>13574</a>
<a id='n13575' href='#n13575'>13575</a>
<a id='n13576' href='#n13576'>13576</a>
<a id='n13577' href='#n13577'>13577</a>
<a id='n13578' href='#n13578'>13578</a>
<a id='n13579' href='#n13579'>13579</a>
<a id='n13580' href='#n13580'>13580</a>
<a id='n13581' href='#n13581'>13581</a>
<a id='n13582' href='#n13582'>13582</a>
<a id='n13583' href='#n13583'>13583</a>
<a id='n13584' href='#n13584'>13584</a>
<a id='n13585' href='#n13585'>13585</a>
<a id='n13586' href='#n13586'>13586</a>
<a id='n13587' href='#n13587'>13587</a>
<a id='n13588' href='#n13588'>13588</a>
<a id='n13589' href='#n13589'>13589</a>
<a id='n13590' href='#n13590'>13590</a>
<a id='n13591' href='#n13591'>13591</a>
<a id='n13592' href='#n13592'>13592</a>
<a id='n13593' href='#n13593'>13593</a>
<a id='n13594' href='#n13594'>13594</a>
<a id='n13595' href='#n13595'>13595</a>
<a id='n13596' href='#n13596'>13596</a>
<a id='n13597' href='#n13597'>13597</a>
<a id='n13598' href='#n13598'>13598</a>
<a id='n13599' href='#n13599'>13599</a>
<a id='n13600' href='#n13600'>13600</a>
<a id='n13601' href='#n13601'>13601</a>
<a id='n13602' href='#n13602'>13602</a>
<a id='n13603' href='#n13603'>13603</a>
<a id='n13604' href='#n13604'>13604</a>
<a id='n13605' href='#n13605'>13605</a>
<a id='n13606' href='#n13606'>13606</a>
<a id='n13607' href='#n13607'>13607</a>
<a id='n13608' href='#n13608'>13608</a>
<a id='n13609' href='#n13609'>13609</a>
<a id='n13610' href='#n13610'>13610</a>
<a id='n13611' href='#n13611'>13611</a>
<a id='n13612' href='#n13612'>13612</a>
<a id='n13613' href='#n13613'>13613</a>
<a id='n13614' href='#n13614'>13614</a>
<a id='n13615' href='#n13615'>13615</a>
<a id='n13616' href='#n13616'>13616</a>
<a id='n13617' href='#n13617'>13617</a>
<a id='n13618' href='#n13618'>13618</a>
<a id='n13619' href='#n13619'>13619</a>
<a id='n13620' href='#n13620'>13620</a>
<a id='n13621' href='#n13621'>13621</a>
<a id='n13622' href='#n13622'>13622</a>
<a id='n13623' href='#n13623'>13623</a>
<a id='n13624' href='#n13624'>13624</a>
<a id='n13625' href='#n13625'>13625</a>
<a id='n13626' href='#n13626'>13626</a>
<a id='n13627' href='#n13627'>13627</a>
<a id='n13628' href='#n13628'>13628</a>
<a id='n13629' href='#n13629'>13629</a>
<a id='n13630' href='#n13630'>13630</a>
<a id='n13631' href='#n13631'>13631</a>
<a id='n13632' href='#n13632'>13632</a>
<a id='n13633' href='#n13633'>13633</a>
<a id='n13634' href='#n13634'>13634</a>
<a id='n13635' href='#n13635'>13635</a>
<a id='n13636' href='#n13636'>13636</a>
<a id='n13637' href='#n13637'>13637</a>
<a id='n13638' href='#n13638'>13638</a>
<a id='n13639' href='#n13639'>13639</a>
<a id='n13640' href='#n13640'>13640</a>
<a id='n13641' href='#n13641'>13641</a>
<a id='n13642' href='#n13642'>13642</a>
<a id='n13643' href='#n13643'>13643</a>
<a id='n13644' href='#n13644'>13644</a>
<a id='n13645' href='#n13645'>13645</a>
<a id='n13646' href='#n13646'>13646</a>
<a id='n13647' href='#n13647'>13647</a>
<a id='n13648' href='#n13648'>13648</a>
<a id='n13649' href='#n13649'>13649</a>
<a id='n13650' href='#n13650'>13650</a>
<a id='n13651' href='#n13651'>13651</a>
<a id='n13652' href='#n13652'>13652</a>
<a id='n13653' href='#n13653'>13653</a>
<a id='n13654' href='#n13654'>13654</a>
<a id='n13655' href='#n13655'>13655</a>
<a id='n13656' href='#n13656'>13656</a>
<a id='n13657' href='#n13657'>13657</a>
<a id='n13658' href='#n13658'>13658</a>
<a id='n13659' href='#n13659'>13659</a>
<a id='n13660' href='#n13660'>13660</a>
<a id='n13661' href='#n13661'>13661</a>
<a id='n13662' href='#n13662'>13662</a>
<a id='n13663' href='#n13663'>13663</a>
<a id='n13664' href='#n13664'>13664</a>
<a id='n13665' href='#n13665'>13665</a>
<a id='n13666' href='#n13666'>13666</a>
<a id='n13667' href='#n13667'>13667</a>
<a id='n13668' href='#n13668'>13668</a>
<a id='n13669' href='#n13669'>13669</a>
<a id='n13670' href='#n13670'>13670</a>
<a id='n13671' href='#n13671'>13671</a>
<a id='n13672' href='#n13672'>13672</a>
<a id='n13673' href='#n13673'>13673</a>
<a id='n13674' href='#n13674'>13674</a>
<a id='n13675' href='#n13675'>13675</a>
<a id='n13676' href='#n13676'>13676</a>
<a id='n13677' href='#n13677'>13677</a>
<a id='n13678' href='#n13678'>13678</a>
<a id='n13679' href='#n13679'>13679</a>
<a id='n13680' href='#n13680'>13680</a>
<a id='n13681' href='#n13681'>13681</a>
<a id='n13682' href='#n13682'>13682</a>
<a id='n13683' href='#n13683'>13683</a>
<a id='n13684' href='#n13684'>13684</a>
<a id='n13685' href='#n13685'>13685</a>
<a id='n13686' href='#n13686'>13686</a>
<a id='n13687' href='#n13687'>13687</a>
<a id='n13688' href='#n13688'>13688</a>
<a id='n13689' href='#n13689'>13689</a>
<a id='n13690' href='#n13690'>13690</a>
<a id='n13691' href='#n13691'>13691</a>
<a id='n13692' href='#n13692'>13692</a>
<a id='n13693' href='#n13693'>13693</a>
<a id='n13694' href='#n13694'>13694</a>
<a id='n13695' href='#n13695'>13695</a>
<a id='n13696' href='#n13696'>13696</a>
<a id='n13697' href='#n13697'>13697</a>
<a id='n13698' href='#n13698'>13698</a>
<a id='n13699' href='#n13699'>13699</a>
<a id='n13700' href='#n13700'>13700</a>
<a id='n13701' href='#n13701'>13701</a>
<a id='n13702' href='#n13702'>13702</a>
<a id='n13703' href='#n13703'>13703</a>
<a id='n13704' href='#n13704'>13704</a>
<a id='n13705' href='#n13705'>13705</a>
<a id='n13706' href='#n13706'>13706</a>
<a id='n13707' href='#n13707'>13707</a>
<a id='n13708' href='#n13708'>13708</a>
<a id='n13709' href='#n13709'>13709</a>
<a id='n13710' href='#n13710'>13710</a>
<a id='n13711' href='#n13711'>13711</a>
<a id='n13712' href='#n13712'>13712</a>
<a id='n13713' href='#n13713'>13713</a>
<a id='n13714' href='#n13714'>13714</a>
<a id='n13715' href='#n13715'>13715</a>
<a id='n13716' href='#n13716'>13716</a>
<a id='n13717' href='#n13717'>13717</a>
<a id='n13718' href='#n13718'>13718</a>
<a id='n13719' href='#n13719'>13719</a>
<a id='n13720' href='#n13720'>13720</a>
<a id='n13721' href='#n13721'>13721</a>
<a id='n13722' href='#n13722'>13722</a>
<a id='n13723' href='#n13723'>13723</a>
<a id='n13724' href='#n13724'>13724</a>
<a id='n13725' href='#n13725'>13725</a>
<a id='n13726' href='#n13726'>13726</a>
<a id='n13727' href='#n13727'>13727</a>
<a id='n13728' href='#n13728'>13728</a>
<a id='n13729' href='#n13729'>13729</a>
<a id='n13730' href='#n13730'>13730</a>
<a id='n13731' href='#n13731'>13731</a>
<a id='n13732' href='#n13732'>13732</a>
<a id='n13733' href='#n13733'>13733</a>
<a id='n13734' href='#n13734'>13734</a>
<a id='n13735' href='#n13735'>13735</a>
<a id='n13736' href='#n13736'>13736</a>
<a id='n13737' href='#n13737'>13737</a>
<a id='n13738' href='#n13738'>13738</a>
<a id='n13739' href='#n13739'>13739</a>
<a id='n13740' href='#n13740'>13740</a>
<a id='n13741' href='#n13741'>13741</a>
<a id='n13742' href='#n13742'>13742</a>
<a id='n13743' href='#n13743'>13743</a>
<a id='n13744' href='#n13744'>13744</a>
<a id='n13745' href='#n13745'>13745</a>
<a id='n13746' href='#n13746'>13746</a>
<a id='n13747' href='#n13747'>13747</a>
<a id='n13748' href='#n13748'>13748</a>
<a id='n13749' href='#n13749'>13749</a>
<a id='n13750' href='#n13750'>13750</a>
<a id='n13751' href='#n13751'>13751</a>
<a id='n13752' href='#n13752'>13752</a>
<a id='n13753' href='#n13753'>13753</a>
<a id='n13754' href='#n13754'>13754</a>
<a id='n13755' href='#n13755'>13755</a>
<a id='n13756' href='#n13756'>13756</a>
<a id='n13757' href='#n13757'>13757</a>
<a id='n13758' href='#n13758'>13758</a>
<a id='n13759' href='#n13759'>13759</a>
<a id='n13760' href='#n13760'>13760</a>
<a id='n13761' href='#n13761'>13761</a>
<a id='n13762' href='#n13762'>13762</a>
<a id='n13763' href='#n13763'>13763</a>
<a id='n13764' href='#n13764'>13764</a>
<a id='n13765' href='#n13765'>13765</a>
<a id='n13766' href='#n13766'>13766</a>
<a id='n13767' href='#n13767'>13767</a>
<a id='n13768' href='#n13768'>13768</a>
<a id='n13769' href='#n13769'>13769</a>
<a id='n13770' href='#n13770'>13770</a>
<a id='n13771' href='#n13771'>13771</a>
<a id='n13772' href='#n13772'>13772</a>
<a id='n13773' href='#n13773'>13773</a>
<a id='n13774' href='#n13774'>13774</a>
<a id='n13775' href='#n13775'>13775</a>
<a id='n13776' href='#n13776'>13776</a>
<a id='n13777' href='#n13777'>13777</a>
<a id='n13778' href='#n13778'>13778</a>
<a id='n13779' href='#n13779'>13779</a>
<a id='n13780' href='#n13780'>13780</a>
<a id='n13781' href='#n13781'>13781</a>
<a id='n13782' href='#n13782'>13782</a>
<a id='n13783' href='#n13783'>13783</a>
<a id='n13784' href='#n13784'>13784</a>
<a id='n13785' href='#n13785'>13785</a>
<a id='n13786' href='#n13786'>13786</a>
<a id='n13787' href='#n13787'>13787</a>
<a id='n13788' href='#n13788'>13788</a>
<a id='n13789' href='#n13789'>13789</a>
<a id='n13790' href='#n13790'>13790</a>
<a id='n13791' href='#n13791'>13791</a>
<a id='n13792' href='#n13792'>13792</a>
<a id='n13793' href='#n13793'>13793</a>
<a id='n13794' href='#n13794'>13794</a>
<a id='n13795' href='#n13795'>13795</a>
<a id='n13796' href='#n13796'>13796</a>
<a id='n13797' href='#n13797'>13797</a>
<a id='n13798' href='#n13798'>13798</a>
<a id='n13799' href='#n13799'>13799</a>
<a id='n13800' href='#n13800'>13800</a>
<a id='n13801' href='#n13801'>13801</a>
<a id='n13802' href='#n13802'>13802</a>
<a id='n13803' href='#n13803'>13803</a>
<a id='n13804' href='#n13804'>13804</a>
<a id='n13805' href='#n13805'>13805</a>
<a id='n13806' href='#n13806'>13806</a>
<a id='n13807' href='#n13807'>13807</a>
<a id='n13808' href='#n13808'>13808</a>
<a id='n13809' href='#n13809'>13809</a>
<a id='n13810' href='#n13810'>13810</a>
<a id='n13811' href='#n13811'>13811</a>
<a id='n13812' href='#n13812'>13812</a>
<a id='n13813' href='#n13813'>13813</a>
<a id='n13814' href='#n13814'>13814</a>
<a id='n13815' href='#n13815'>13815</a>
<a id='n13816' href='#n13816'>13816</a>
<a id='n13817' href='#n13817'>13817</a>
<a id='n13818' href='#n13818'>13818</a>
<a id='n13819' href='#n13819'>13819</a>
<a id='n13820' href='#n13820'>13820</a>
<a id='n13821' href='#n13821'>13821</a>
<a id='n13822' href='#n13822'>13822</a>
<a id='n13823' href='#n13823'>13823</a>
<a id='n13824' href='#n13824'>13824</a>
<a id='n13825' href='#n13825'>13825</a>
<a id='n13826' href='#n13826'>13826</a>
<a id='n13827' href='#n13827'>13827</a>
<a id='n13828' href='#n13828'>13828</a>
<a id='n13829' href='#n13829'>13829</a>
<a id='n13830' href='#n13830'>13830</a>
<a id='n13831' href='#n13831'>13831</a>
<a id='n13832' href='#n13832'>13832</a>
<a id='n13833' href='#n13833'>13833</a>
<a id='n13834' href='#n13834'>13834</a>
<a id='n13835' href='#n13835'>13835</a>
<a id='n13836' href='#n13836'>13836</a>
<a id='n13837' href='#n13837'>13837</a>
<a id='n13838' href='#n13838'>13838</a>
<a id='n13839' href='#n13839'>13839</a>
<a id='n13840' href='#n13840'>13840</a>
<a id='n13841' href='#n13841'>13841</a>
<a id='n13842' href='#n13842'>13842</a>
<a id='n13843' href='#n13843'>13843</a>
<a id='n13844' href='#n13844'>13844</a>
<a id='n13845' href='#n13845'>13845</a>
<a id='n13846' href='#n13846'>13846</a>
<a id='n13847' href='#n13847'>13847</a>
<a id='n13848' href='#n13848'>13848</a>
<a id='n13849' href='#n13849'>13849</a>
<a id='n13850' href='#n13850'>13850</a>
<a id='n13851' href='#n13851'>13851</a>
<a id='n13852' href='#n13852'>13852</a>
<a id='n13853' href='#n13853'>13853</a>
<a id='n13854' href='#n13854'>13854</a>
<a id='n13855' href='#n13855'>13855</a>
<a id='n13856' href='#n13856'>13856</a>
<a id='n13857' href='#n13857'>13857</a>
<a id='n13858' href='#n13858'>13858</a>
<a id='n13859' href='#n13859'>13859</a>
<a id='n13860' href='#n13860'>13860</a>
<a id='n13861' href='#n13861'>13861</a>
<a id='n13862' href='#n13862'>13862</a>
<a id='n13863' href='#n13863'>13863</a>
<a id='n13864' href='#n13864'>13864</a>
<a id='n13865' href='#n13865'>13865</a>
<a id='n13866' href='#n13866'>13866</a>
<a id='n13867' href='#n13867'>13867</a>
<a id='n13868' href='#n13868'>13868</a>
<a id='n13869' href='#n13869'>13869</a>
<a id='n13870' href='#n13870'>13870</a>
<a id='n13871' href='#n13871'>13871</a>
<a id='n13872' href='#n13872'>13872</a>
<a id='n13873' href='#n13873'>13873</a>
<a id='n13874' href='#n13874'>13874</a>
<a id='n13875' href='#n13875'>13875</a>
<a id='n13876' href='#n13876'>13876</a>
<a id='n13877' href='#n13877'>13877</a>
<a id='n13878' href='#n13878'>13878</a>
<a id='n13879' href='#n13879'>13879</a>
<a id='n13880' href='#n13880'>13880</a>
<a id='n13881' href='#n13881'>13881</a>
<a id='n13882' href='#n13882'>13882</a>
<a id='n13883' href='#n13883'>13883</a>
<a id='n13884' href='#n13884'>13884</a>
<a id='n13885' href='#n13885'>13885</a>
<a id='n13886' href='#n13886'>13886</a>
<a id='n13887' href='#n13887'>13887</a>
<a id='n13888' href='#n13888'>13888</a>
<a id='n13889' href='#n13889'>13889</a>
<a id='n13890' href='#n13890'>13890</a>
<a id='n13891' href='#n13891'>13891</a>
<a id='n13892' href='#n13892'>13892</a>
<a id='n13893' href='#n13893'>13893</a>
<a id='n13894' href='#n13894'>13894</a>
<a id='n13895' href='#n13895'>13895</a>
<a id='n13896' href='#n13896'>13896</a>
<a id='n13897' href='#n13897'>13897</a>
<a id='n13898' href='#n13898'>13898</a>
<a id='n13899' href='#n13899'>13899</a>
<a id='n13900' href='#n13900'>13900</a>
<a id='n13901' href='#n13901'>13901</a>
<a id='n13902' href='#n13902'>13902</a>
<a id='n13903' href='#n13903'>13903</a>
<a id='n13904' href='#n13904'>13904</a>
<a id='n13905' href='#n13905'>13905</a>
<a id='n13906' href='#n13906'>13906</a>
<a id='n13907' href='#n13907'>13907</a>
<a id='n13908' href='#n13908'>13908</a>
<a id='n13909' href='#n13909'>13909</a>
<a id='n13910' href='#n13910'>13910</a>
<a id='n13911' href='#n13911'>13911</a>
<a id='n13912' href='#n13912'>13912</a>
<a id='n13913' href='#n13913'>13913</a>
<a id='n13914' href='#n13914'>13914</a>
<a id='n13915' href='#n13915'>13915</a>
<a id='n13916' href='#n13916'>13916</a>
<a id='n13917' href='#n13917'>13917</a>
<a id='n13918' href='#n13918'>13918</a>
<a id='n13919' href='#n13919'>13919</a>
<a id='n13920' href='#n13920'>13920</a>
<a id='n13921' href='#n13921'>13921</a>
<a id='n13922' href='#n13922'>13922</a>
<a id='n13923' href='#n13923'>13923</a>
<a id='n13924' href='#n13924'>13924</a>
<a id='n13925' href='#n13925'>13925</a>
<a id='n13926' href='#n13926'>13926</a>
<a id='n13927' href='#n13927'>13927</a>
<a id='n13928' href='#n13928'>13928</a>
<a id='n13929' href='#n13929'>13929</a>
<a id='n13930' href='#n13930'>13930</a>
<a id='n13931' href='#n13931'>13931</a>
<a id='n13932' href='#n13932'>13932</a>
<a id='n13933' href='#n13933'>13933</a>
<a id='n13934' href='#n13934'>13934</a>
<a id='n13935' href='#n13935'>13935</a>
<a id='n13936' href='#n13936'>13936</a>
<a id='n13937' href='#n13937'>13937</a>
<a id='n13938' href='#n13938'>13938</a>
<a id='n13939' href='#n13939'>13939</a>
<a id='n13940' href='#n13940'>13940</a>
<a id='n13941' href='#n13941'>13941</a>
<a id='n13942' href='#n13942'>13942</a>
<a id='n13943' href='#n13943'>13943</a>
<a id='n13944' href='#n13944'>13944</a>
<a id='n13945' href='#n13945'>13945</a>
<a id='n13946' href='#n13946'>13946</a>
<a id='n13947' href='#n13947'>13947</a>
<a id='n13948' href='#n13948'>13948</a>
<a id='n13949' href='#n13949'>13949</a>
<a id='n13950' href='#n13950'>13950</a>
<a id='n13951' href='#n13951'>13951</a>
<a id='n13952' href='#n13952'>13952</a>
<a id='n13953' href='#n13953'>13953</a>
<a id='n13954' href='#n13954'>13954</a>
<a id='n13955' href='#n13955'>13955</a>
<a id='n13956' href='#n13956'>13956</a>
<a id='n13957' href='#n13957'>13957</a>
<a id='n13958' href='#n13958'>13958</a>
<a id='n13959' href='#n13959'>13959</a>
<a id='n13960' href='#n13960'>13960</a>
<a id='n13961' href='#n13961'>13961</a>
<a id='n13962' href='#n13962'>13962</a>
<a id='n13963' href='#n13963'>13963</a>
<a id='n13964' href='#n13964'>13964</a>
<a id='n13965' href='#n13965'>13965</a>
<a id='n13966' href='#n13966'>13966</a>
<a id='n13967' href='#n13967'>13967</a>
<a id='n13968' href='#n13968'>13968</a>
<a id='n13969' href='#n13969'>13969</a>
<a id='n13970' href='#n13970'>13970</a>
<a id='n13971' href='#n13971'>13971</a>
<a id='n13972' href='#n13972'>13972</a>
<a id='n13973' href='#n13973'>13973</a>
<a id='n13974' href='#n13974'>13974</a>
<a id='n13975' href='#n13975'>13975</a>
<a id='n13976' href='#n13976'>13976</a>
<a id='n13977' href='#n13977'>13977</a>
<a id='n13978' href='#n13978'>13978</a>
<a id='n13979' href='#n13979'>13979</a>
<a id='n13980' href='#n13980'>13980</a>
<a id='n13981' href='#n13981'>13981</a>
<a id='n13982' href='#n13982'>13982</a>
<a id='n13983' href='#n13983'>13983</a>
<a id='n13984' href='#n13984'>13984</a>
<a id='n13985' href='#n13985'>13985</a>
<a id='n13986' href='#n13986'>13986</a>
<a id='n13987' href='#n13987'>13987</a>
<a id='n13988' href='#n13988'>13988</a>
<a id='n13989' href='#n13989'>13989</a>
<a id='n13990' href='#n13990'>13990</a>
<a id='n13991' href='#n13991'>13991</a>
<a id='n13992' href='#n13992'>13992</a>
<a id='n13993' href='#n13993'>13993</a>
<a id='n13994' href='#n13994'>13994</a>
<a id='n13995' href='#n13995'>13995</a>
<a id='n13996' href='#n13996'>13996</a>
<a id='n13997' href='#n13997'>13997</a>
<a id='n13998' href='#n13998'>13998</a>
<a id='n13999' href='#n13999'>13999</a>
<a id='n14000' href='#n14000'>14000</a>
<a id='n14001' href='#n14001'>14001</a>
<a id='n14002' href='#n14002'>14002</a>
<a id='n14003' href='#n14003'>14003</a>
<a id='n14004' href='#n14004'>14004</a>
<a id='n14005' href='#n14005'>14005</a>
<a id='n14006' href='#n14006'>14006</a>
<a id='n14007' href='#n14007'>14007</a>
<a id='n14008' href='#n14008'>14008</a>
<a id='n14009' href='#n14009'>14009</a>
<a id='n14010' href='#n14010'>14010</a>
<a id='n14011' href='#n14011'>14011</a>
<a id='n14012' href='#n14012'>14012</a>
<a id='n14013' href='#n14013'>14013</a>
<a id='n14014' href='#n14014'>14014</a>
<a id='n14015' href='#n14015'>14015</a>
<a id='n14016' href='#n14016'>14016</a>
<a id='n14017' href='#n14017'>14017</a>
<a id='n14018' href='#n14018'>14018</a>
<a id='n14019' href='#n14019'>14019</a>
<a id='n14020' href='#n14020'>14020</a>
<a id='n14021' href='#n14021'>14021</a>
<a id='n14022' href='#n14022'>14022</a>
<a id='n14023' href='#n14023'>14023</a>
<a id='n14024' href='#n14024'>14024</a>
<a id='n14025' href='#n14025'>14025</a>
<a id='n14026' href='#n14026'>14026</a>
<a id='n14027' href='#n14027'>14027</a>
<a id='n14028' href='#n14028'>14028</a>
<a id='n14029' href='#n14029'>14029</a>
<a id='n14030' href='#n14030'>14030</a>
<a id='n14031' href='#n14031'>14031</a>
<a id='n14032' href='#n14032'>14032</a>
<a id='n14033' href='#n14033'>14033</a>
<a id='n14034' href='#n14034'>14034</a>
<a id='n14035' href='#n14035'>14035</a>
<a id='n14036' href='#n14036'>14036</a>
<a id='n14037' href='#n14037'>14037</a>
<a id='n14038' href='#n14038'>14038</a>
<a id='n14039' href='#n14039'>14039</a>
<a id='n14040' href='#n14040'>14040</a>
<a id='n14041' href='#n14041'>14041</a>
<a id='n14042' href='#n14042'>14042</a>
<a id='n14043' href='#n14043'>14043</a>
<a id='n14044' href='#n14044'>14044</a>
<a id='n14045' href='#n14045'>14045</a>
<a id='n14046' href='#n14046'>14046</a>
<a id='n14047' href='#n14047'>14047</a>
<a id='n14048' href='#n14048'>14048</a>
<a id='n14049' href='#n14049'>14049</a>
<a id='n14050' href='#n14050'>14050</a>
<a id='n14051' href='#n14051'>14051</a>
<a id='n14052' href='#n14052'>14052</a>
<a id='n14053' href='#n14053'>14053</a>
<a id='n14054' href='#n14054'>14054</a>
<a id='n14055' href='#n14055'>14055</a>
<a id='n14056' href='#n14056'>14056</a>
<a id='n14057' href='#n14057'>14057</a>
<a id='n14058' href='#n14058'>14058</a>
<a id='n14059' href='#n14059'>14059</a>
<a id='n14060' href='#n14060'>14060</a>
<a id='n14061' href='#n14061'>14061</a>
<a id='n14062' href='#n14062'>14062</a>
<a id='n14063' href='#n14063'>14063</a>
<a id='n14064' href='#n14064'>14064</a>
<a id='n14065' href='#n14065'>14065</a>
<a id='n14066' href='#n14066'>14066</a>
<a id='n14067' href='#n14067'>14067</a>
<a id='n14068' href='#n14068'>14068</a>
<a id='n14069' href='#n14069'>14069</a>
<a id='n14070' href='#n14070'>14070</a>
<a id='n14071' href='#n14071'>14071</a>
<a id='n14072' href='#n14072'>14072</a>
<a id='n14073' href='#n14073'>14073</a>
<a id='n14074' href='#n14074'>14074</a>
<a id='n14075' href='#n14075'>14075</a>
<a id='n14076' href='#n14076'>14076</a>
<a id='n14077' href='#n14077'>14077</a>
<a id='n14078' href='#n14078'>14078</a>
<a id='n14079' href='#n14079'>14079</a>
<a id='n14080' href='#n14080'>14080</a>
<a id='n14081' href='#n14081'>14081</a>
<a id='n14082' href='#n14082'>14082</a>
<a id='n14083' href='#n14083'>14083</a>
<a id='n14084' href='#n14084'>14084</a>
<a id='n14085' href='#n14085'>14085</a>
<a id='n14086' href='#n14086'>14086</a>
<a id='n14087' href='#n14087'>14087</a>
<a id='n14088' href='#n14088'>14088</a>
<a id='n14089' href='#n14089'>14089</a>
<a id='n14090' href='#n14090'>14090</a>
<a id='n14091' href='#n14091'>14091</a>
<a id='n14092' href='#n14092'>14092</a>
<a id='n14093' href='#n14093'>14093</a>
<a id='n14094' href='#n14094'>14094</a>
<a id='n14095' href='#n14095'>14095</a>
<a id='n14096' href='#n14096'>14096</a>
<a id='n14097' href='#n14097'>14097</a>
<a id='n14098' href='#n14098'>14098</a>
<a id='n14099' href='#n14099'>14099</a>
<a id='n14100' href='#n14100'>14100</a>
<a id='n14101' href='#n14101'>14101</a>
<a id='n14102' href='#n14102'>14102</a>
<a id='n14103' href='#n14103'>14103</a>
<a id='n14104' href='#n14104'>14104</a>
<a id='n14105' href='#n14105'>14105</a>
<a id='n14106' href='#n14106'>14106</a>
<a id='n14107' href='#n14107'>14107</a>
<a id='n14108' href='#n14108'>14108</a>
<a id='n14109' href='#n14109'>14109</a>
<a id='n14110' href='#n14110'>14110</a>
<a id='n14111' href='#n14111'>14111</a>
<a id='n14112' href='#n14112'>14112</a>
<a id='n14113' href='#n14113'>14113</a>
<a id='n14114' href='#n14114'>14114</a>
<a id='n14115' href='#n14115'>14115</a>
<a id='n14116' href='#n14116'>14116</a>
<a id='n14117' href='#n14117'>14117</a>
<a id='n14118' href='#n14118'>14118</a>
<a id='n14119' href='#n14119'>14119</a>
<a id='n14120' href='#n14120'>14120</a>
<a id='n14121' href='#n14121'>14121</a>
<a id='n14122' href='#n14122'>14122</a>
<a id='n14123' href='#n14123'>14123</a>
<a id='n14124' href='#n14124'>14124</a>
<a id='n14125' href='#n14125'>14125</a>
<a id='n14126' href='#n14126'>14126</a>
<a id='n14127' href='#n14127'>14127</a>
<a id='n14128' href='#n14128'>14128</a>
<a id='n14129' href='#n14129'>14129</a>
<a id='n14130' href='#n14130'>14130</a>
<a id='n14131' href='#n14131'>14131</a>
<a id='n14132' href='#n14132'>14132</a>
<a id='n14133' href='#n14133'>14133</a>
<a id='n14134' href='#n14134'>14134</a>
<a id='n14135' href='#n14135'>14135</a>
<a id='n14136' href='#n14136'>14136</a>
<a id='n14137' href='#n14137'>14137</a>
<a id='n14138' href='#n14138'>14138</a>
<a id='n14139' href='#n14139'>14139</a>
<a id='n14140' href='#n14140'>14140</a>
<a id='n14141' href='#n14141'>14141</a>
<a id='n14142' href='#n14142'>14142</a>
<a id='n14143' href='#n14143'>14143</a>
<a id='n14144' href='#n14144'>14144</a>
<a id='n14145' href='#n14145'>14145</a>
<a id='n14146' href='#n14146'>14146</a>
<a id='n14147' href='#n14147'>14147</a>
<a id='n14148' href='#n14148'>14148</a>
<a id='n14149' href='#n14149'>14149</a>
<a id='n14150' href='#n14150'>14150</a>
<a id='n14151' href='#n14151'>14151</a>
<a id='n14152' href='#n14152'>14152</a>
<a id='n14153' href='#n14153'>14153</a>
<a id='n14154' href='#n14154'>14154</a>
<a id='n14155' href='#n14155'>14155</a>
<a id='n14156' href='#n14156'>14156</a>
<a id='n14157' href='#n14157'>14157</a>
<a id='n14158' href='#n14158'>14158</a>
<a id='n14159' href='#n14159'>14159</a>
<a id='n14160' href='#n14160'>14160</a>
<a id='n14161' href='#n14161'>14161</a>
<a id='n14162' href='#n14162'>14162</a>
<a id='n14163' href='#n14163'>14163</a>
<a id='n14164' href='#n14164'>14164</a>
<a id='n14165' href='#n14165'>14165</a>
<a id='n14166' href='#n14166'>14166</a>
<a id='n14167' href='#n14167'>14167</a>
<a id='n14168' href='#n14168'>14168</a>
<a id='n14169' href='#n14169'>14169</a>
<a id='n14170' href='#n14170'>14170</a>
<a id='n14171' href='#n14171'>14171</a>
<a id='n14172' href='#n14172'>14172</a>
<a id='n14173' href='#n14173'>14173</a>
<a id='n14174' href='#n14174'>14174</a>
<a id='n14175' href='#n14175'>14175</a>
<a id='n14176' href='#n14176'>14176</a>
<a id='n14177' href='#n14177'>14177</a>
<a id='n14178' href='#n14178'>14178</a>
<a id='n14179' href='#n14179'>14179</a>
<a id='n14180' href='#n14180'>14180</a>
<a id='n14181' href='#n14181'>14181</a>
<a id='n14182' href='#n14182'>14182</a>
<a id='n14183' href='#n14183'>14183</a>
<a id='n14184' href='#n14184'>14184</a>
<a id='n14185' href='#n14185'>14185</a>
<a id='n14186' href='#n14186'>14186</a>
<a id='n14187' href='#n14187'>14187</a>
<a id='n14188' href='#n14188'>14188</a>
<a id='n14189' href='#n14189'>14189</a>
<a id='n14190' href='#n14190'>14190</a>
<a id='n14191' href='#n14191'>14191</a>
<a id='n14192' href='#n14192'>14192</a>
<a id='n14193' href='#n14193'>14193</a>
<a id='n14194' href='#n14194'>14194</a>
<a id='n14195' href='#n14195'>14195</a>
<a id='n14196' href='#n14196'>14196</a>
<a id='n14197' href='#n14197'>14197</a>
<a id='n14198' href='#n14198'>14198</a>
<a id='n14199' href='#n14199'>14199</a>
<a id='n14200' href='#n14200'>14200</a>
<a id='n14201' href='#n14201'>14201</a>
<a id='n14202' href='#n14202'>14202</a>
<a id='n14203' href='#n14203'>14203</a>
<a id='n14204' href='#n14204'>14204</a>
<a id='n14205' href='#n14205'>14205</a>
<a id='n14206' href='#n14206'>14206</a>
<a id='n14207' href='#n14207'>14207</a>
<a id='n14208' href='#n14208'>14208</a>
<a id='n14209' href='#n14209'>14209</a>
<a id='n14210' href='#n14210'>14210</a>
<a id='n14211' href='#n14211'>14211</a>
<a id='n14212' href='#n14212'>14212</a>
<a id='n14213' href='#n14213'>14213</a>
<a id='n14214' href='#n14214'>14214</a>
<a id='n14215' href='#n14215'>14215</a>
<a id='n14216' href='#n14216'>14216</a>
<a id='n14217' href='#n14217'>14217</a>
<a id='n14218' href='#n14218'>14218</a>
<a id='n14219' href='#n14219'>14219</a>
<a id='n14220' href='#n14220'>14220</a>
<a id='n14221' href='#n14221'>14221</a>
<a id='n14222' href='#n14222'>14222</a>
<a id='n14223' href='#n14223'>14223</a>
<a id='n14224' href='#n14224'>14224</a>
<a id='n14225' href='#n14225'>14225</a>
<a id='n14226' href='#n14226'>14226</a>
<a id='n14227' href='#n14227'>14227</a>
<a id='n14228' href='#n14228'>14228</a>
<a id='n14229' href='#n14229'>14229</a>
<a id='n14230' href='#n14230'>14230</a>
<a id='n14231' href='#n14231'>14231</a>
<a id='n14232' href='#n14232'>14232</a>
<a id='n14233' href='#n14233'>14233</a>
<a id='n14234' href='#n14234'>14234</a>
<a id='n14235' href='#n14235'>14235</a>
<a id='n14236' href='#n14236'>14236</a>
<a id='n14237' href='#n14237'>14237</a>
<a id='n14238' href='#n14238'>14238</a>
<a id='n14239' href='#n14239'>14239</a>
<a id='n14240' href='#n14240'>14240</a>
<a id='n14241' href='#n14241'>14241</a>
<a id='n14242' href='#n14242'>14242</a>
<a id='n14243' href='#n14243'>14243</a>
<a id='n14244' href='#n14244'>14244</a>
<a id='n14245' href='#n14245'>14245</a>
<a id='n14246' href='#n14246'>14246</a>
<a id='n14247' href='#n14247'>14247</a>
<a id='n14248' href='#n14248'>14248</a>
<a id='n14249' href='#n14249'>14249</a>
<a id='n14250' href='#n14250'>14250</a>
<a id='n14251' href='#n14251'>14251</a>
<a id='n14252' href='#n14252'>14252</a>
<a id='n14253' href='#n14253'>14253</a>
<a id='n14254' href='#n14254'>14254</a>
<a id='n14255' href='#n14255'>14255</a>
<a id='n14256' href='#n14256'>14256</a>
<a id='n14257' href='#n14257'>14257</a>
<a id='n14258' href='#n14258'>14258</a>
<a id='n14259' href='#n14259'>14259</a>
<a id='n14260' href='#n14260'>14260</a>
<a id='n14261' href='#n14261'>14261</a>
<a id='n14262' href='#n14262'>14262</a>
<a id='n14263' href='#n14263'>14263</a>
<a id='n14264' href='#n14264'>14264</a>
<a id='n14265' href='#n14265'>14265</a>
<a id='n14266' href='#n14266'>14266</a>
<a id='n14267' href='#n14267'>14267</a>
<a id='n14268' href='#n14268'>14268</a>
<a id='n14269' href='#n14269'>14269</a>
<a id='n14270' href='#n14270'>14270</a>
<a id='n14271' href='#n14271'>14271</a>
<a id='n14272' href='#n14272'>14272</a>
<a id='n14273' href='#n14273'>14273</a>
<a id='n14274' href='#n14274'>14274</a>
<a id='n14275' href='#n14275'>14275</a>
<a id='n14276' href='#n14276'>14276</a>
<a id='n14277' href='#n14277'>14277</a>
<a id='n14278' href='#n14278'>14278</a>
<a id='n14279' href='#n14279'>14279</a>
<a id='n14280' href='#n14280'>14280</a>
<a id='n14281' href='#n14281'>14281</a>
<a id='n14282' href='#n14282'>14282</a>
<a id='n14283' href='#n14283'>14283</a>
<a id='n14284' href='#n14284'>14284</a>
<a id='n14285' href='#n14285'>14285</a>
<a id='n14286' href='#n14286'>14286</a>
<a id='n14287' href='#n14287'>14287</a>
<a id='n14288' href='#n14288'>14288</a>
<a id='n14289' href='#n14289'>14289</a>
<a id='n14290' href='#n14290'>14290</a>
<a id='n14291' href='#n14291'>14291</a>
<a id='n14292' href='#n14292'>14292</a>
<a id='n14293' href='#n14293'>14293</a>
<a id='n14294' href='#n14294'>14294</a>
<a id='n14295' href='#n14295'>14295</a>
<a id='n14296' href='#n14296'>14296</a>
<a id='n14297' href='#n14297'>14297</a>
<a id='n14298' href='#n14298'>14298</a>
<a id='n14299' href='#n14299'>14299</a>
<a id='n14300' href='#n14300'>14300</a>
<a id='n14301' href='#n14301'>14301</a>
<a id='n14302' href='#n14302'>14302</a>
<a id='n14303' href='#n14303'>14303</a>
<a id='n14304' href='#n14304'>14304</a>
<a id='n14305' href='#n14305'>14305</a>
<a id='n14306' href='#n14306'>14306</a>
<a id='n14307' href='#n14307'>14307</a>
<a id='n14308' href='#n14308'>14308</a>
<a id='n14309' href='#n14309'>14309</a>
<a id='n14310' href='#n14310'>14310</a>
<a id='n14311' href='#n14311'>14311</a>
<a id='n14312' href='#n14312'>14312</a>
<a id='n14313' href='#n14313'>14313</a>
<a id='n14314' href='#n14314'>14314</a>
<a id='n14315' href='#n14315'>14315</a>
<a id='n14316' href='#n14316'>14316</a>
<a id='n14317' href='#n14317'>14317</a>
<a id='n14318' href='#n14318'>14318</a>
<a id='n14319' href='#n14319'>14319</a>
<a id='n14320' href='#n14320'>14320</a>
<a id='n14321' href='#n14321'>14321</a>
<a id='n14322' href='#n14322'>14322</a>
<a id='n14323' href='#n14323'>14323</a>
<a id='n14324' href='#n14324'>14324</a>
<a id='n14325' href='#n14325'>14325</a>
<a id='n14326' href='#n14326'>14326</a>
<a id='n14327' href='#n14327'>14327</a>
<a id='n14328' href='#n14328'>14328</a>
<a id='n14329' href='#n14329'>14329</a>
<a id='n14330' href='#n14330'>14330</a>
<a id='n14331' href='#n14331'>14331</a>
<a id='n14332' href='#n14332'>14332</a>
<a id='n14333' href='#n14333'>14333</a>
<a id='n14334' href='#n14334'>14334</a>
<a id='n14335' href='#n14335'>14335</a>
<a id='n14336' href='#n14336'>14336</a>
<a id='n14337' href='#n14337'>14337</a>
<a id='n14338' href='#n14338'>14338</a>
<a id='n14339' href='#n14339'>14339</a>
<a id='n14340' href='#n14340'>14340</a>
<a id='n14341' href='#n14341'>14341</a>
<a id='n14342' href='#n14342'>14342</a>
<a id='n14343' href='#n14343'>14343</a>
<a id='n14344' href='#n14344'>14344</a>
<a id='n14345' href='#n14345'>14345</a>
<a id='n14346' href='#n14346'>14346</a>
<a id='n14347' href='#n14347'>14347</a>
<a id='n14348' href='#n14348'>14348</a>
<a id='n14349' href='#n14349'>14349</a>
<a id='n14350' href='#n14350'>14350</a>
<a id='n14351' href='#n14351'>14351</a>
<a id='n14352' href='#n14352'>14352</a>
<a id='n14353' href='#n14353'>14353</a>
<a id='n14354' href='#n14354'>14354</a>
<a id='n14355' href='#n14355'>14355</a>
<a id='n14356' href='#n14356'>14356</a>
<a id='n14357' href='#n14357'>14357</a>
<a id='n14358' href='#n14358'>14358</a>
<a id='n14359' href='#n14359'>14359</a>
<a id='n14360' href='#n14360'>14360</a>
<a id='n14361' href='#n14361'>14361</a>
<a id='n14362' href='#n14362'>14362</a>
<a id='n14363' href='#n14363'>14363</a>
<a id='n14364' href='#n14364'>14364</a>
<a id='n14365' href='#n14365'>14365</a>
<a id='n14366' href='#n14366'>14366</a>
<a id='n14367' href='#n14367'>14367</a>
<a id='n14368' href='#n14368'>14368</a>
<a id='n14369' href='#n14369'>14369</a>
<a id='n14370' href='#n14370'>14370</a>
<a id='n14371' href='#n14371'>14371</a>
<a id='n14372' href='#n14372'>14372</a>
<a id='n14373' href='#n14373'>14373</a>
<a id='n14374' href='#n14374'>14374</a>
<a id='n14375' href='#n14375'>14375</a>
<a id='n14376' href='#n14376'>14376</a>
<a id='n14377' href='#n14377'>14377</a>
<a id='n14378' href='#n14378'>14378</a>
<a id='n14379' href='#n14379'>14379</a>
<a id='n14380' href='#n14380'>14380</a>
<a id='n14381' href='#n14381'>14381</a>
<a id='n14382' href='#n14382'>14382</a>
<a id='n14383' href='#n14383'>14383</a>
<a id='n14384' href='#n14384'>14384</a>
<a id='n14385' href='#n14385'>14385</a>
<a id='n14386' href='#n14386'>14386</a>
<a id='n14387' href='#n14387'>14387</a>
<a id='n14388' href='#n14388'>14388</a>
<a id='n14389' href='#n14389'>14389</a>
<a id='n14390' href='#n14390'>14390</a>
<a id='n14391' href='#n14391'>14391</a>
<a id='n14392' href='#n14392'>14392</a>
<a id='n14393' href='#n14393'>14393</a>
<a id='n14394' href='#n14394'>14394</a>
<a id='n14395' href='#n14395'>14395</a>
<a id='n14396' href='#n14396'>14396</a>
<a id='n14397' href='#n14397'>14397</a>
<a id='n14398' href='#n14398'>14398</a>
<a id='n14399' href='#n14399'>14399</a>
<a id='n14400' href='#n14400'>14400</a>
<a id='n14401' href='#n14401'>14401</a>
<a id='n14402' href='#n14402'>14402</a>
<a id='n14403' href='#n14403'>14403</a>
<a id='n14404' href='#n14404'>14404</a>
<a id='n14405' href='#n14405'>14405</a>
<a id='n14406' href='#n14406'>14406</a>
<a id='n14407' href='#n14407'>14407</a>
<a id='n14408' href='#n14408'>14408</a>
<a id='n14409' href='#n14409'>14409</a>
<a id='n14410' href='#n14410'>14410</a>
<a id='n14411' href='#n14411'>14411</a>
<a id='n14412' href='#n14412'>14412</a>
<a id='n14413' href='#n14413'>14413</a>
<a id='n14414' href='#n14414'>14414</a>
<a id='n14415' href='#n14415'>14415</a>
<a id='n14416' href='#n14416'>14416</a>
<a id='n14417' href='#n14417'>14417</a>
<a id='n14418' href='#n14418'>14418</a>
<a id='n14419' href='#n14419'>14419</a>
<a id='n14420' href='#n14420'>14420</a>
<a id='n14421' href='#n14421'>14421</a>
<a id='n14422' href='#n14422'>14422</a>
<a id='n14423' href='#n14423'>14423</a>
<a id='n14424' href='#n14424'>14424</a>
<a id='n14425' href='#n14425'>14425</a>
<a id='n14426' href='#n14426'>14426</a>
<a id='n14427' href='#n14427'>14427</a>
<a id='n14428' href='#n14428'>14428</a>
<a id='n14429' href='#n14429'>14429</a>
<a id='n14430' href='#n14430'>14430</a>
<a id='n14431' href='#n14431'>14431</a>
<a id='n14432' href='#n14432'>14432</a>
<a id='n14433' href='#n14433'>14433</a>
<a id='n14434' href='#n14434'>14434</a>
<a id='n14435' href='#n14435'>14435</a>
<a id='n14436' href='#n14436'>14436</a>
<a id='n14437' href='#n14437'>14437</a>
<a id='n14438' href='#n14438'>14438</a>
<a id='n14439' href='#n14439'>14439</a>
<a id='n14440' href='#n14440'>14440</a>
<a id='n14441' href='#n14441'>14441</a>
<a id='n14442' href='#n14442'>14442</a>
<a id='n14443' href='#n14443'>14443</a>
<a id='n14444' href='#n14444'>14444</a>
<a id='n14445' href='#n14445'>14445</a>
<a id='n14446' href='#n14446'>14446</a>
<a id='n14447' href='#n14447'>14447</a>
<a id='n14448' href='#n14448'>14448</a>
<a id='n14449' href='#n14449'>14449</a>
<a id='n14450' href='#n14450'>14450</a>
<a id='n14451' href='#n14451'>14451</a>
<a id='n14452' href='#n14452'>14452</a>
<a id='n14453' href='#n14453'>14453</a>
<a id='n14454' href='#n14454'>14454</a>
<a id='n14455' href='#n14455'>14455</a>
<a id='n14456' href='#n14456'>14456</a>
<a id='n14457' href='#n14457'>14457</a>
<a id='n14458' href='#n14458'>14458</a>
<a id='n14459' href='#n14459'>14459</a>
<a id='n14460' href='#n14460'>14460</a>
<a id='n14461' href='#n14461'>14461</a>
<a id='n14462' href='#n14462'>14462</a>
<a id='n14463' href='#n14463'>14463</a>
<a id='n14464' href='#n14464'>14464</a>
<a id='n14465' href='#n14465'>14465</a>
<a id='n14466' href='#n14466'>14466</a>
<a id='n14467' href='#n14467'>14467</a>
<a id='n14468' href='#n14468'>14468</a>
<a id='n14469' href='#n14469'>14469</a>
<a id='n14470' href='#n14470'>14470</a>
<a id='n14471' href='#n14471'>14471</a>
<a id='n14472' href='#n14472'>14472</a>
<a id='n14473' href='#n14473'>14473</a>
<a id='n14474' href='#n14474'>14474</a>
<a id='n14475' href='#n14475'>14475</a>
<a id='n14476' href='#n14476'>14476</a>
<a id='n14477' href='#n14477'>14477</a>
<a id='n14478' href='#n14478'>14478</a>
<a id='n14479' href='#n14479'>14479</a>
<a id='n14480' href='#n14480'>14480</a>
<a id='n14481' href='#n14481'>14481</a>
<a id='n14482' href='#n14482'>14482</a>
<a id='n14483' href='#n14483'>14483</a>
<a id='n14484' href='#n14484'>14484</a>
<a id='n14485' href='#n14485'>14485</a>
<a id='n14486' href='#n14486'>14486</a>
<a id='n14487' href='#n14487'>14487</a>
<a id='n14488' href='#n14488'>14488</a>
<a id='n14489' href='#n14489'>14489</a>
<a id='n14490' href='#n14490'>14490</a>
<a id='n14491' href='#n14491'>14491</a>
<a id='n14492' href='#n14492'>14492</a>
<a id='n14493' href='#n14493'>14493</a>
<a id='n14494' href='#n14494'>14494</a>
<a id='n14495' href='#n14495'>14495</a>
<a id='n14496' href='#n14496'>14496</a>
<a id='n14497' href='#n14497'>14497</a>
<a id='n14498' href='#n14498'>14498</a>
<a id='n14499' href='#n14499'>14499</a>
<a id='n14500' href='#n14500'>14500</a>
<a id='n14501' href='#n14501'>14501</a>
<a id='n14502' href='#n14502'>14502</a>
<a id='n14503' href='#n14503'>14503</a>
<a id='n14504' href='#n14504'>14504</a>
<a id='n14505' href='#n14505'>14505</a>
<a id='n14506' href='#n14506'>14506</a>
<a id='n14507' href='#n14507'>14507</a>
<a id='n14508' href='#n14508'>14508</a>
<a id='n14509' href='#n14509'>14509</a>
<a id='n14510' href='#n14510'>14510</a>
<a id='n14511' href='#n14511'>14511</a>
<a id='n14512' href='#n14512'>14512</a>
<a id='n14513' href='#n14513'>14513</a>
<a id='n14514' href='#n14514'>14514</a>
<a id='n14515' href='#n14515'>14515</a>
<a id='n14516' href='#n14516'>14516</a>
<a id='n14517' href='#n14517'>14517</a>
<a id='n14518' href='#n14518'>14518</a>
<a id='n14519' href='#n14519'>14519</a>
<a id='n14520' href='#n14520'>14520</a>
<a id='n14521' href='#n14521'>14521</a>
<a id='n14522' href='#n14522'>14522</a>
<a id='n14523' href='#n14523'>14523</a>
<a id='n14524' href='#n14524'>14524</a>
<a id='n14525' href='#n14525'>14525</a>
<a id='n14526' href='#n14526'>14526</a>
<a id='n14527' href='#n14527'>14527</a>
<a id='n14528' href='#n14528'>14528</a>
<a id='n14529' href='#n14529'>14529</a>
<a id='n14530' href='#n14530'>14530</a>
<a id='n14531' href='#n14531'>14531</a>
<a id='n14532' href='#n14532'>14532</a>
<a id='n14533' href='#n14533'>14533</a>
<a id='n14534' href='#n14534'>14534</a>
<a id='n14535' href='#n14535'>14535</a>
<a id='n14536' href='#n14536'>14536</a>
<a id='n14537' href='#n14537'>14537</a>
<a id='n14538' href='#n14538'>14538</a>
<a id='n14539' href='#n14539'>14539</a>
<a id='n14540' href='#n14540'>14540</a>
<a id='n14541' href='#n14541'>14541</a>
<a id='n14542' href='#n14542'>14542</a>
<a id='n14543' href='#n14543'>14543</a>
<a id='n14544' href='#n14544'>14544</a>
<a id='n14545' href='#n14545'>14545</a>
<a id='n14546' href='#n14546'>14546</a>
<a id='n14547' href='#n14547'>14547</a>
<a id='n14548' href='#n14548'>14548</a>
<a id='n14549' href='#n14549'>14549</a>
<a id='n14550' href='#n14550'>14550</a>
<a id='n14551' href='#n14551'>14551</a>
<a id='n14552' href='#n14552'>14552</a>
<a id='n14553' href='#n14553'>14553</a>
<a id='n14554' href='#n14554'>14554</a>
<a id='n14555' href='#n14555'>14555</a>
<a id='n14556' href='#n14556'>14556</a>
<a id='n14557' href='#n14557'>14557</a>
<a id='n14558' href='#n14558'>14558</a>
<a id='n14559' href='#n14559'>14559</a>
<a id='n14560' href='#n14560'>14560</a>
<a id='n14561' href='#n14561'>14561</a>
<a id='n14562' href='#n14562'>14562</a>
<a id='n14563' href='#n14563'>14563</a>
<a id='n14564' href='#n14564'>14564</a>
<a id='n14565' href='#n14565'>14565</a>
<a id='n14566' href='#n14566'>14566</a>
<a id='n14567' href='#n14567'>14567</a>
<a id='n14568' href='#n14568'>14568</a>
<a id='n14569' href='#n14569'>14569</a>
<a id='n14570' href='#n14570'>14570</a>
<a id='n14571' href='#n14571'>14571</a>
<a id='n14572' href='#n14572'>14572</a>
<a id='n14573' href='#n14573'>14573</a>
<a id='n14574' href='#n14574'>14574</a>
<a id='n14575' href='#n14575'>14575</a>
<a id='n14576' href='#n14576'>14576</a>
<a id='n14577' href='#n14577'>14577</a>
<a id='n14578' href='#n14578'>14578</a>
<a id='n14579' href='#n14579'>14579</a>
<a id='n14580' href='#n14580'>14580</a>
<a id='n14581' href='#n14581'>14581</a>
<a id='n14582' href='#n14582'>14582</a>
<a id='n14583' href='#n14583'>14583</a>
<a id='n14584' href='#n14584'>14584</a>
<a id='n14585' href='#n14585'>14585</a>
<a id='n14586' href='#n14586'>14586</a>
<a id='n14587' href='#n14587'>14587</a>
<a id='n14588' href='#n14588'>14588</a>
<a id='n14589' href='#n14589'>14589</a>
<a id='n14590' href='#n14590'>14590</a>
<a id='n14591' href='#n14591'>14591</a>
<a id='n14592' href='#n14592'>14592</a>
<a id='n14593' href='#n14593'>14593</a>
<a id='n14594' href='#n14594'>14594</a>
<a id='n14595' href='#n14595'>14595</a>
<a id='n14596' href='#n14596'>14596</a>
<a id='n14597' href='#n14597'>14597</a>
<a id='n14598' href='#n14598'>14598</a>
<a id='n14599' href='#n14599'>14599</a>
<a id='n14600' href='#n14600'>14600</a>
<a id='n14601' href='#n14601'>14601</a>
<a id='n14602' href='#n14602'>14602</a>
<a id='n14603' href='#n14603'>14603</a>
<a id='n14604' href='#n14604'>14604</a>
<a id='n14605' href='#n14605'>14605</a>
<a id='n14606' href='#n14606'>14606</a>
<a id='n14607' href='#n14607'>14607</a>
<a id='n14608' href='#n14608'>14608</a>
<a id='n14609' href='#n14609'>14609</a>
<a id='n14610' href='#n14610'>14610</a>
<a id='n14611' href='#n14611'>14611</a>
<a id='n14612' href='#n14612'>14612</a>
<a id='n14613' href='#n14613'>14613</a>
<a id='n14614' href='#n14614'>14614</a>
<a id='n14615' href='#n14615'>14615</a>
<a id='n14616' href='#n14616'>14616</a>
<a id='n14617' href='#n14617'>14617</a>
<a id='n14618' href='#n14618'>14618</a>
<a id='n14619' href='#n14619'>14619</a>
<a id='n14620' href='#n14620'>14620</a>
<a id='n14621' href='#n14621'>14621</a>
<a id='n14622' href='#n14622'>14622</a>
<a id='n14623' href='#n14623'>14623</a>
<a id='n14624' href='#n14624'>14624</a>
<a id='n14625' href='#n14625'>14625</a>
<a id='n14626' href='#n14626'>14626</a>
<a id='n14627' href='#n14627'>14627</a>
<a id='n14628' href='#n14628'>14628</a>
<a id='n14629' href='#n14629'>14629</a>
<a id='n14630' href='#n14630'>14630</a>
<a id='n14631' href='#n14631'>14631</a>
<a id='n14632' href='#n14632'>14632</a>
<a id='n14633' href='#n14633'>14633</a>
<a id='n14634' href='#n14634'>14634</a>
<a id='n14635' href='#n14635'>14635</a>
<a id='n14636' href='#n14636'>14636</a>
<a id='n14637' href='#n14637'>14637</a>
<a id='n14638' href='#n14638'>14638</a>
<a id='n14639' href='#n14639'>14639</a>
<a id='n14640' href='#n14640'>14640</a>
<a id='n14641' href='#n14641'>14641</a>
<a id='n14642' href='#n14642'>14642</a>
<a id='n14643' href='#n14643'>14643</a>
<a id='n14644' href='#n14644'>14644</a>
<a id='n14645' href='#n14645'>14645</a>
<a id='n14646' href='#n14646'>14646</a>
<a id='n14647' href='#n14647'>14647</a>
<a id='n14648' href='#n14648'>14648</a>
<a id='n14649' href='#n14649'>14649</a>
<a id='n14650' href='#n14650'>14650</a>
<a id='n14651' href='#n14651'>14651</a>
<a id='n14652' href='#n14652'>14652</a>
<a id='n14653' href='#n14653'>14653</a>
<a id='n14654' href='#n14654'>14654</a>
<a id='n14655' href='#n14655'>14655</a>
<a id='n14656' href='#n14656'>14656</a>
<a id='n14657' href='#n14657'>14657</a>
<a id='n14658' href='#n14658'>14658</a>
<a id='n14659' href='#n14659'>14659</a>
<a id='n14660' href='#n14660'>14660</a>
<a id='n14661' href='#n14661'>14661</a>
<a id='n14662' href='#n14662'>14662</a>
<a id='n14663' href='#n14663'>14663</a>
<a id='n14664' href='#n14664'>14664</a>
<a id='n14665' href='#n14665'>14665</a>
<a id='n14666' href='#n14666'>14666</a>
<a id='n14667' href='#n14667'>14667</a>
<a id='n14668' href='#n14668'>14668</a>
<a id='n14669' href='#n14669'>14669</a>
<a id='n14670' href='#n14670'>14670</a>
<a id='n14671' href='#n14671'>14671</a>
<a id='n14672' href='#n14672'>14672</a>
<a id='n14673' href='#n14673'>14673</a>
<a id='n14674' href='#n14674'>14674</a>
<a id='n14675' href='#n14675'>14675</a>
<a id='n14676' href='#n14676'>14676</a>
<a id='n14677' href='#n14677'>14677</a>
<a id='n14678' href='#n14678'>14678</a>
<a id='n14679' href='#n14679'>14679</a>
<a id='n14680' href='#n14680'>14680</a>
<a id='n14681' href='#n14681'>14681</a>
<a id='n14682' href='#n14682'>14682</a>
<a id='n14683' href='#n14683'>14683</a>
<a id='n14684' href='#n14684'>14684</a>
<a id='n14685' href='#n14685'>14685</a>
<a id='n14686' href='#n14686'>14686</a>
<a id='n14687' href='#n14687'>14687</a>
<a id='n14688' href='#n14688'>14688</a>
<a id='n14689' href='#n14689'>14689</a>
<a id='n14690' href='#n14690'>14690</a>
<a id='n14691' href='#n14691'>14691</a>
<a id='n14692' href='#n14692'>14692</a>
<a id='n14693' href='#n14693'>14693</a>
<a id='n14694' href='#n14694'>14694</a>
<a id='n14695' href='#n14695'>14695</a>
<a id='n14696' href='#n14696'>14696</a>
<a id='n14697' href='#n14697'>14697</a>
<a id='n14698' href='#n14698'>14698</a>
<a id='n14699' href='#n14699'>14699</a>
<a id='n14700' href='#n14700'>14700</a>
<a id='n14701' href='#n14701'>14701</a>
<a id='n14702' href='#n14702'>14702</a>
<a id='n14703' href='#n14703'>14703</a>
<a id='n14704' href='#n14704'>14704</a>
<a id='n14705' href='#n14705'>14705</a>
<a id='n14706' href='#n14706'>14706</a>
<a id='n14707' href='#n14707'>14707</a>
<a id='n14708' href='#n14708'>14708</a>
<a id='n14709' href='#n14709'>14709</a>
<a id='n14710' href='#n14710'>14710</a>
<a id='n14711' href='#n14711'>14711</a>
<a id='n14712' href='#n14712'>14712</a>
<a id='n14713' href='#n14713'>14713</a>
<a id='n14714' href='#n14714'>14714</a>
<a id='n14715' href='#n14715'>14715</a>
<a id='n14716' href='#n14716'>14716</a>
<a id='n14717' href='#n14717'>14717</a>
<a id='n14718' href='#n14718'>14718</a>
<a id='n14719' href='#n14719'>14719</a>
<a id='n14720' href='#n14720'>14720</a>
<a id='n14721' href='#n14721'>14721</a>
<a id='n14722' href='#n14722'>14722</a>
<a id='n14723' href='#n14723'>14723</a>
<a id='n14724' href='#n14724'>14724</a>
<a id='n14725' href='#n14725'>14725</a>
<a id='n14726' href='#n14726'>14726</a>
<a id='n14727' href='#n14727'>14727</a>
<a id='n14728' href='#n14728'>14728</a>
<a id='n14729' href='#n14729'>14729</a>
<a id='n14730' href='#n14730'>14730</a>
<a id='n14731' href='#n14731'>14731</a>
<a id='n14732' href='#n14732'>14732</a>
<a id='n14733' href='#n14733'>14733</a>
<a id='n14734' href='#n14734'>14734</a>
<a id='n14735' href='#n14735'>14735</a>
<a id='n14736' href='#n14736'>14736</a>
<a id='n14737' href='#n14737'>14737</a>
<a id='n14738' href='#n14738'>14738</a>
<a id='n14739' href='#n14739'>14739</a>
<a id='n14740' href='#n14740'>14740</a>
<a id='n14741' href='#n14741'>14741</a>
<a id='n14742' href='#n14742'>14742</a>
<a id='n14743' href='#n14743'>14743</a>
<a id='n14744' href='#n14744'>14744</a>
<a id='n14745' href='#n14745'>14745</a>
<a id='n14746' href='#n14746'>14746</a>
<a id='n14747' href='#n14747'>14747</a>
<a id='n14748' href='#n14748'>14748</a>
<a id='n14749' href='#n14749'>14749</a>
<a id='n14750' href='#n14750'>14750</a>
<a id='n14751' href='#n14751'>14751</a>
<a id='n14752' href='#n14752'>14752</a>
<a id='n14753' href='#n14753'>14753</a>
<a id='n14754' href='#n14754'>14754</a>
<a id='n14755' href='#n14755'>14755</a>
<a id='n14756' href='#n14756'>14756</a>
<a id='n14757' href='#n14757'>14757</a>
<a id='n14758' href='#n14758'>14758</a>
<a id='n14759' href='#n14759'>14759</a>
<a id='n14760' href='#n14760'>14760</a>
<a id='n14761' href='#n14761'>14761</a>
<a id='n14762' href='#n14762'>14762</a>
<a id='n14763' href='#n14763'>14763</a>
<a id='n14764' href='#n14764'>14764</a>
<a id='n14765' href='#n14765'>14765</a>
<a id='n14766' href='#n14766'>14766</a>
<a id='n14767' href='#n14767'>14767</a>
<a id='n14768' href='#n14768'>14768</a>
<a id='n14769' href='#n14769'>14769</a>
<a id='n14770' href='#n14770'>14770</a>
<a id='n14771' href='#n14771'>14771</a>
<a id='n14772' href='#n14772'>14772</a>
<a id='n14773' href='#n14773'>14773</a>
<a id='n14774' href='#n14774'>14774</a>
<a id='n14775' href='#n14775'>14775</a>
<a id='n14776' href='#n14776'>14776</a>
<a id='n14777' href='#n14777'>14777</a>
<a id='n14778' href='#n14778'>14778</a>
<a id='n14779' href='#n14779'>14779</a>
<a id='n14780' href='#n14780'>14780</a>
<a id='n14781' href='#n14781'>14781</a>
<a id='n14782' href='#n14782'>14782</a>
<a id='n14783' href='#n14783'>14783</a>
<a id='n14784' href='#n14784'>14784</a>
<a id='n14785' href='#n14785'>14785</a>
<a id='n14786' href='#n14786'>14786</a>
<a id='n14787' href='#n14787'>14787</a>
<a id='n14788' href='#n14788'>14788</a>
<a id='n14789' href='#n14789'>14789</a>
<a id='n14790' href='#n14790'>14790</a>
<a id='n14791' href='#n14791'>14791</a>
<a id='n14792' href='#n14792'>14792</a>
<a id='n14793' href='#n14793'>14793</a>
<a id='n14794' href='#n14794'>14794</a>
<a id='n14795' href='#n14795'>14795</a>
<a id='n14796' href='#n14796'>14796</a>
<a id='n14797' href='#n14797'>14797</a>
<a id='n14798' href='#n14798'>14798</a>
<a id='n14799' href='#n14799'>14799</a>
<a id='n14800' href='#n14800'>14800</a>
<a id='n14801' href='#n14801'>14801</a>
<a id='n14802' href='#n14802'>14802</a>
<a id='n14803' href='#n14803'>14803</a>
<a id='n14804' href='#n14804'>14804</a>
<a id='n14805' href='#n14805'>14805</a>
<a id='n14806' href='#n14806'>14806</a>
<a id='n14807' href='#n14807'>14807</a>
<a id='n14808' href='#n14808'>14808</a>
<a id='n14809' href='#n14809'>14809</a>
<a id='n14810' href='#n14810'>14810</a>
<a id='n14811' href='#n14811'>14811</a>
<a id='n14812' href='#n14812'>14812</a>
<a id='n14813' href='#n14813'>14813</a>
<a id='n14814' href='#n14814'>14814</a>
<a id='n14815' href='#n14815'>14815</a>
<a id='n14816' href='#n14816'>14816</a>
<a id='n14817' href='#n14817'>14817</a>
<a id='n14818' href='#n14818'>14818</a>
<a id='n14819' href='#n14819'>14819</a>
<a id='n14820' href='#n14820'>14820</a>
<a id='n14821' href='#n14821'>14821</a>
<a id='n14822' href='#n14822'>14822</a>
<a id='n14823' href='#n14823'>14823</a>
<a id='n14824' href='#n14824'>14824</a>
<a id='n14825' href='#n14825'>14825</a>
<a id='n14826' href='#n14826'>14826</a>
<a id='n14827' href='#n14827'>14827</a>
<a id='n14828' href='#n14828'>14828</a>
<a id='n14829' href='#n14829'>14829</a>
<a id='n14830' href='#n14830'>14830</a>
<a id='n14831' href='#n14831'>14831</a>
<a id='n14832' href='#n14832'>14832</a>
<a id='n14833' href='#n14833'>14833</a>
<a id='n14834' href='#n14834'>14834</a>
<a id='n14835' href='#n14835'>14835</a>
<a id='n14836' href='#n14836'>14836</a>
<a id='n14837' href='#n14837'>14837</a>
<a id='n14838' href='#n14838'>14838</a>
<a id='n14839' href='#n14839'>14839</a>
<a id='n14840' href='#n14840'>14840</a>
<a id='n14841' href='#n14841'>14841</a>
<a id='n14842' href='#n14842'>14842</a>
<a id='n14843' href='#n14843'>14843</a>
<a id='n14844' href='#n14844'>14844</a>
<a id='n14845' href='#n14845'>14845</a>
<a id='n14846' href='#n14846'>14846</a>
<a id='n14847' href='#n14847'>14847</a>
<a id='n14848' href='#n14848'>14848</a>
<a id='n14849' href='#n14849'>14849</a>
<a id='n14850' href='#n14850'>14850</a>
<a id='n14851' href='#n14851'>14851</a>
<a id='n14852' href='#n14852'>14852</a>
<a id='n14853' href='#n14853'>14853</a>
<a id='n14854' href='#n14854'>14854</a>
<a id='n14855' href='#n14855'>14855</a>
<a id='n14856' href='#n14856'>14856</a>
<a id='n14857' href='#n14857'>14857</a>
<a id='n14858' href='#n14858'>14858</a>
<a id='n14859' href='#n14859'>14859</a>
<a id='n14860' href='#n14860'>14860</a>
<a id='n14861' href='#n14861'>14861</a>
<a id='n14862' href='#n14862'>14862</a>
<a id='n14863' href='#n14863'>14863</a>
<a id='n14864' href='#n14864'>14864</a>
<a id='n14865' href='#n14865'>14865</a>
<a id='n14866' href='#n14866'>14866</a>
<a id='n14867' href='#n14867'>14867</a>
<a id='n14868' href='#n14868'>14868</a>
<a id='n14869' href='#n14869'>14869</a>
<a id='n14870' href='#n14870'>14870</a>
<a id='n14871' href='#n14871'>14871</a>
<a id='n14872' href='#n14872'>14872</a>
<a id='n14873' href='#n14873'>14873</a>
<a id='n14874' href='#n14874'>14874</a>
<a id='n14875' href='#n14875'>14875</a>
<a id='n14876' href='#n14876'>14876</a>
<a id='n14877' href='#n14877'>14877</a>
<a id='n14878' href='#n14878'>14878</a>
<a id='n14879' href='#n14879'>14879</a>
<a id='n14880' href='#n14880'>14880</a>
<a id='n14881' href='#n14881'>14881</a>
<a id='n14882' href='#n14882'>14882</a>
<a id='n14883' href='#n14883'>14883</a>
<a id='n14884' href='#n14884'>14884</a>
<a id='n14885' href='#n14885'>14885</a>
<a id='n14886' href='#n14886'>14886</a>
<a id='n14887' href='#n14887'>14887</a>
<a id='n14888' href='#n14888'>14888</a>
<a id='n14889' href='#n14889'>14889</a>
<a id='n14890' href='#n14890'>14890</a>
<a id='n14891' href='#n14891'>14891</a>
<a id='n14892' href='#n14892'>14892</a>
<a id='n14893' href='#n14893'>14893</a>
<a id='n14894' href='#n14894'>14894</a>
<a id='n14895' href='#n14895'>14895</a>
<a id='n14896' href='#n14896'>14896</a>
<a id='n14897' href='#n14897'>14897</a>
<a id='n14898' href='#n14898'>14898</a>
<a id='n14899' href='#n14899'>14899</a>
<a id='n14900' href='#n14900'>14900</a>
<a id='n14901' href='#n14901'>14901</a>
<a id='n14902' href='#n14902'>14902</a>
<a id='n14903' href='#n14903'>14903</a>
<a id='n14904' href='#n14904'>14904</a>
<a id='n14905' href='#n14905'>14905</a>
<a id='n14906' href='#n14906'>14906</a>
<a id='n14907' href='#n14907'>14907</a>
<a id='n14908' href='#n14908'>14908</a>
<a id='n14909' href='#n14909'>14909</a>
<a id='n14910' href='#n14910'>14910</a>
<a id='n14911' href='#n14911'>14911</a>
<a id='n14912' href='#n14912'>14912</a>
<a id='n14913' href='#n14913'>14913</a>
<a id='n14914' href='#n14914'>14914</a>
<a id='n14915' href='#n14915'>14915</a>
<a id='n14916' href='#n14916'>14916</a>
<a id='n14917' href='#n14917'>14917</a>
<a id='n14918' href='#n14918'>14918</a>
<a id='n14919' href='#n14919'>14919</a>
<a id='n14920' href='#n14920'>14920</a>
<a id='n14921' href='#n14921'>14921</a>
<a id='n14922' href='#n14922'>14922</a>
<a id='n14923' href='#n14923'>14923</a>
<a id='n14924' href='#n14924'>14924</a>
<a id='n14925' href='#n14925'>14925</a>
<a id='n14926' href='#n14926'>14926</a>
<a id='n14927' href='#n14927'>14927</a>
<a id='n14928' href='#n14928'>14928</a>
<a id='n14929' href='#n14929'>14929</a>
<a id='n14930' href='#n14930'>14930</a>
<a id='n14931' href='#n14931'>14931</a>
<a id='n14932' href='#n14932'>14932</a>
<a id='n14933' href='#n14933'>14933</a>
<a id='n14934' href='#n14934'>14934</a>
<a id='n14935' href='#n14935'>14935</a>
<a id='n14936' href='#n14936'>14936</a>
<a id='n14937' href='#n14937'>14937</a>
<a id='n14938' href='#n14938'>14938</a>
<a id='n14939' href='#n14939'>14939</a>
<a id='n14940' href='#n14940'>14940</a>
<a id='n14941' href='#n14941'>14941</a>
<a id='n14942' href='#n14942'>14942</a>
<a id='n14943' href='#n14943'>14943</a>
<a id='n14944' href='#n14944'>14944</a>
<a id='n14945' href='#n14945'>14945</a>
<a id='n14946' href='#n14946'>14946</a>
<a id='n14947' href='#n14947'>14947</a>
<a id='n14948' href='#n14948'>14948</a>
<a id='n14949' href='#n14949'>14949</a>
<a id='n14950' href='#n14950'>14950</a>
<a id='n14951' href='#n14951'>14951</a>
<a id='n14952' href='#n14952'>14952</a>
<a id='n14953' href='#n14953'>14953</a>
<a id='n14954' href='#n14954'>14954</a>
<a id='n14955' href='#n14955'>14955</a>
<a id='n14956' href='#n14956'>14956</a>
<a id='n14957' href='#n14957'>14957</a>
<a id='n14958' href='#n14958'>14958</a>
<a id='n14959' href='#n14959'>14959</a>
<a id='n14960' href='#n14960'>14960</a>
<a id='n14961' href='#n14961'>14961</a>
<a id='n14962' href='#n14962'>14962</a>
<a id='n14963' href='#n14963'>14963</a>
<a id='n14964' href='#n14964'>14964</a>
<a id='n14965' href='#n14965'>14965</a>
<a id='n14966' href='#n14966'>14966</a>
<a id='n14967' href='#n14967'>14967</a>
<a id='n14968' href='#n14968'>14968</a>
<a id='n14969' href='#n14969'>14969</a>
<a id='n14970' href='#n14970'>14970</a>
<a id='n14971' href='#n14971'>14971</a>
<a id='n14972' href='#n14972'>14972</a>
<a id='n14973' href='#n14973'>14973</a>
<a id='n14974' href='#n14974'>14974</a>
<a id='n14975' href='#n14975'>14975</a>
<a id='n14976' href='#n14976'>14976</a>
<a id='n14977' href='#n14977'>14977</a>
<a id='n14978' href='#n14978'>14978</a>
<a id='n14979' href='#n14979'>14979</a>
<a id='n14980' href='#n14980'>14980</a>
<a id='n14981' href='#n14981'>14981</a>
<a id='n14982' href='#n14982'>14982</a>
<a id='n14983' href='#n14983'>14983</a>
<a id='n14984' href='#n14984'>14984</a>
<a id='n14985' href='#n14985'>14985</a>
<a id='n14986' href='#n14986'>14986</a>
<a id='n14987' href='#n14987'>14987</a>
<a id='n14988' href='#n14988'>14988</a>
<a id='n14989' href='#n14989'>14989</a>
<a id='n14990' href='#n14990'>14990</a>
<a id='n14991' href='#n14991'>14991</a>
<a id='n14992' href='#n14992'>14992</a>
<a id='n14993' href='#n14993'>14993</a>
<a id='n14994' href='#n14994'>14994</a>
<a id='n14995' href='#n14995'>14995</a>
<a id='n14996' href='#n14996'>14996</a>
<a id='n14997' href='#n14997'>14997</a>
<a id='n14998' href='#n14998'>14998</a>
<a id='n14999' href='#n14999'>14999</a>
<a id='n15000' href='#n15000'>15000</a>
<a id='n15001' href='#n15001'>15001</a>
<a id='n15002' href='#n15002'>15002</a>
<a id='n15003' href='#n15003'>15003</a>
<a id='n15004' href='#n15004'>15004</a>
<a id='n15005' href='#n15005'>15005</a>
<a id='n15006' href='#n15006'>15006</a>
<a id='n15007' href='#n15007'>15007</a>
<a id='n15008' href='#n15008'>15008</a>
<a id='n15009' href='#n15009'>15009</a>
<a id='n15010' href='#n15010'>15010</a>
<a id='n15011' href='#n15011'>15011</a>
<a id='n15012' href='#n15012'>15012</a>
<a id='n15013' href='#n15013'>15013</a>
<a id='n15014' href='#n15014'>15014</a>
<a id='n15015' href='#n15015'>15015</a>
<a id='n15016' href='#n15016'>15016</a>
<a id='n15017' href='#n15017'>15017</a>
<a id='n15018' href='#n15018'>15018</a>
<a id='n15019' href='#n15019'>15019</a>
<a id='n15020' href='#n15020'>15020</a>
<a id='n15021' href='#n15021'>15021</a>
<a id='n15022' href='#n15022'>15022</a>
<a id='n15023' href='#n15023'>15023</a>
<a id='n15024' href='#n15024'>15024</a>
<a id='n15025' href='#n15025'>15025</a>
<a id='n15026' href='#n15026'>15026</a>
<a id='n15027' href='#n15027'>15027</a>
<a id='n15028' href='#n15028'>15028</a>
<a id='n15029' href='#n15029'>15029</a>
<a id='n15030' href='#n15030'>15030</a>
<a id='n15031' href='#n15031'>15031</a>
<a id='n15032' href='#n15032'>15032</a>
<a id='n15033' href='#n15033'>15033</a>
<a id='n15034' href='#n15034'>15034</a>
<a id='n15035' href='#n15035'>15035</a>
<a id='n15036' href='#n15036'>15036</a>
<a id='n15037' href='#n15037'>15037</a>
<a id='n15038' href='#n15038'>15038</a>
<a id='n15039' href='#n15039'>15039</a>
<a id='n15040' href='#n15040'>15040</a>
<a id='n15041' href='#n15041'>15041</a>
<a id='n15042' href='#n15042'>15042</a>
<a id='n15043' href='#n15043'>15043</a>
<a id='n15044' href='#n15044'>15044</a>
<a id='n15045' href='#n15045'>15045</a>
<a id='n15046' href='#n15046'>15046</a>
<a id='n15047' href='#n15047'>15047</a>
<a id='n15048' href='#n15048'>15048</a>
<a id='n15049' href='#n15049'>15049</a>
<a id='n15050' href='#n15050'>15050</a>
<a id='n15051' href='#n15051'>15051</a>
<a id='n15052' href='#n15052'>15052</a>
<a id='n15053' href='#n15053'>15053</a>
<a id='n15054' href='#n15054'>15054</a>
<a id='n15055' href='#n15055'>15055</a>
<a id='n15056' href='#n15056'>15056</a>
<a id='n15057' href='#n15057'>15057</a>
<a id='n15058' href='#n15058'>15058</a>
<a id='n15059' href='#n15059'>15059</a>
<a id='n15060' href='#n15060'>15060</a>
<a id='n15061' href='#n15061'>15061</a>
<a id='n15062' href='#n15062'>15062</a>
<a id='n15063' href='#n15063'>15063</a>
<a id='n15064' href='#n15064'>15064</a>
<a id='n15065' href='#n15065'>15065</a>
<a id='n15066' href='#n15066'>15066</a>
<a id='n15067' href='#n15067'>15067</a>
<a id='n15068' href='#n15068'>15068</a>
<a id='n15069' href='#n15069'>15069</a>
<a id='n15070' href='#n15070'>15070</a>
<a id='n15071' href='#n15071'>15071</a>
<a id='n15072' href='#n15072'>15072</a>
<a id='n15073' href='#n15073'>15073</a>
<a id='n15074' href='#n15074'>15074</a>
<a id='n15075' href='#n15075'>15075</a>
<a id='n15076' href='#n15076'>15076</a>
<a id='n15077' href='#n15077'>15077</a>
<a id='n15078' href='#n15078'>15078</a>
<a id='n15079' href='#n15079'>15079</a>
<a id='n15080' href='#n15080'>15080</a>
<a id='n15081' href='#n15081'>15081</a>
<a id='n15082' href='#n15082'>15082</a>
<a id='n15083' href='#n15083'>15083</a>
<a id='n15084' href='#n15084'>15084</a>
<a id='n15085' href='#n15085'>15085</a>
<a id='n15086' href='#n15086'>15086</a>
<a id='n15087' href='#n15087'>15087</a>
<a id='n15088' href='#n15088'>15088</a>
<a id='n15089' href='#n15089'>15089</a>
<a id='n15090' href='#n15090'>15090</a>
<a id='n15091' href='#n15091'>15091</a>
<a id='n15092' href='#n15092'>15092</a>
<a id='n15093' href='#n15093'>15093</a>
<a id='n15094' href='#n15094'>15094</a>
<a id='n15095' href='#n15095'>15095</a>
<a id='n15096' href='#n15096'>15096</a>
<a id='n15097' href='#n15097'>15097</a>
<a id='n15098' href='#n15098'>15098</a>
<a id='n15099' href='#n15099'>15099</a>
<a id='n15100' href='#n15100'>15100</a>
<a id='n15101' href='#n15101'>15101</a>
<a id='n15102' href='#n15102'>15102</a>
<a id='n15103' href='#n15103'>15103</a>
<a id='n15104' href='#n15104'>15104</a>
<a id='n15105' href='#n15105'>15105</a>
<a id='n15106' href='#n15106'>15106</a>
<a id='n15107' href='#n15107'>15107</a>
<a id='n15108' href='#n15108'>15108</a>
<a id='n15109' href='#n15109'>15109</a>
<a id='n15110' href='#n15110'>15110</a>
<a id='n15111' href='#n15111'>15111</a>
<a id='n15112' href='#n15112'>15112</a>
<a id='n15113' href='#n15113'>15113</a>
<a id='n15114' href='#n15114'>15114</a>
<a id='n15115' href='#n15115'>15115</a>
<a id='n15116' href='#n15116'>15116</a>
<a id='n15117' href='#n15117'>15117</a>
<a id='n15118' href='#n15118'>15118</a>
<a id='n15119' href='#n15119'>15119</a>
<a id='n15120' href='#n15120'>15120</a>
<a id='n15121' href='#n15121'>15121</a>
<a id='n15122' href='#n15122'>15122</a>
<a id='n15123' href='#n15123'>15123</a>
<a id='n15124' href='#n15124'>15124</a>
<a id='n15125' href='#n15125'>15125</a>
<a id='n15126' href='#n15126'>15126</a>
<a id='n15127' href='#n15127'>15127</a>
<a id='n15128' href='#n15128'>15128</a>
<a id='n15129' href='#n15129'>15129</a>
<a id='n15130' href='#n15130'>15130</a>
<a id='n15131' href='#n15131'>15131</a>
<a id='n15132' href='#n15132'>15132</a>
<a id='n15133' href='#n15133'>15133</a>
<a id='n15134' href='#n15134'>15134</a>
<a id='n15135' href='#n15135'>15135</a>
<a id='n15136' href='#n15136'>15136</a>
<a id='n15137' href='#n15137'>15137</a>
<a id='n15138' href='#n15138'>15138</a>
<a id='n15139' href='#n15139'>15139</a>
<a id='n15140' href='#n15140'>15140</a>
<a id='n15141' href='#n15141'>15141</a>
<a id='n15142' href='#n15142'>15142</a>
<a id='n15143' href='#n15143'>15143</a>
<a id='n15144' href='#n15144'>15144</a>
<a id='n15145' href='#n15145'>15145</a>
<a id='n15146' href='#n15146'>15146</a>
<a id='n15147' href='#n15147'>15147</a>
<a id='n15148' href='#n15148'>15148</a>
<a id='n15149' href='#n15149'>15149</a>
<a id='n15150' href='#n15150'>15150</a>
<a id='n15151' href='#n15151'>15151</a>
<a id='n15152' href='#n15152'>15152</a>
<a id='n15153' href='#n15153'>15153</a>
<a id='n15154' href='#n15154'>15154</a>
<a id='n15155' href='#n15155'>15155</a>
<a id='n15156' href='#n15156'>15156</a>
<a id='n15157' href='#n15157'>15157</a>
<a id='n15158' href='#n15158'>15158</a>
<a id='n15159' href='#n15159'>15159</a>
<a id='n15160' href='#n15160'>15160</a>
<a id='n15161' href='#n15161'>15161</a>
<a id='n15162' href='#n15162'>15162</a>
<a id='n15163' href='#n15163'>15163</a>
<a id='n15164' href='#n15164'>15164</a>
<a id='n15165' href='#n15165'>15165</a>
<a id='n15166' href='#n15166'>15166</a>
<a id='n15167' href='#n15167'>15167</a>
<a id='n15168' href='#n15168'>15168</a>
<a id='n15169' href='#n15169'>15169</a>
<a id='n15170' href='#n15170'>15170</a>
<a id='n15171' href='#n15171'>15171</a>
<a id='n15172' href='#n15172'>15172</a>
<a id='n15173' href='#n15173'>15173</a>
<a id='n15174' href='#n15174'>15174</a>
<a id='n15175' href='#n15175'>15175</a>
<a id='n15176' href='#n15176'>15176</a>
<a id='n15177' href='#n15177'>15177</a>
<a id='n15178' href='#n15178'>15178</a>
<a id='n15179' href='#n15179'>15179</a>
<a id='n15180' href='#n15180'>15180</a>
<a id='n15181' href='#n15181'>15181</a>
<a id='n15182' href='#n15182'>15182</a>
<a id='n15183' href='#n15183'>15183</a>
<a id='n15184' href='#n15184'>15184</a>
<a id='n15185' href='#n15185'>15185</a>
<a id='n15186' href='#n15186'>15186</a>
<a id='n15187' href='#n15187'>15187</a>
<a id='n15188' href='#n15188'>15188</a>
<a id='n15189' href='#n15189'>15189</a>
<a id='n15190' href='#n15190'>15190</a>
<a id='n15191' href='#n15191'>15191</a>
<a id='n15192' href='#n15192'>15192</a>
<a id='n15193' href='#n15193'>15193</a>
<a id='n15194' href='#n15194'>15194</a>
<a id='n15195' href='#n15195'>15195</a>
<a id='n15196' href='#n15196'>15196</a>
<a id='n15197' href='#n15197'>15197</a>
<a id='n15198' href='#n15198'>15198</a>
<a id='n15199' href='#n15199'>15199</a>
<a id='n15200' href='#n15200'>15200</a>
<a id='n15201' href='#n15201'>15201</a>
<a id='n15202' href='#n15202'>15202</a>
<a id='n15203' href='#n15203'>15203</a>
<a id='n15204' href='#n15204'>15204</a>
<a id='n15205' href='#n15205'>15205</a>
<a id='n15206' href='#n15206'>15206</a>
<a id='n15207' href='#n15207'>15207</a>
<a id='n15208' href='#n15208'>15208</a>
<a id='n15209' href='#n15209'>15209</a>
<a id='n15210' href='#n15210'>15210</a>
<a id='n15211' href='#n15211'>15211</a>
<a id='n15212' href='#n15212'>15212</a>
<a id='n15213' href='#n15213'>15213</a>
<a id='n15214' href='#n15214'>15214</a>
<a id='n15215' href='#n15215'>15215</a>
<a id='n15216' href='#n15216'>15216</a>
<a id='n15217' href='#n15217'>15217</a>
<a id='n15218' href='#n15218'>15218</a>
<a id='n15219' href='#n15219'>15219</a>
<a id='n15220' href='#n15220'>15220</a>
<a id='n15221' href='#n15221'>15221</a>
<a id='n15222' href='#n15222'>15222</a>
<a id='n15223' href='#n15223'>15223</a>
<a id='n15224' href='#n15224'>15224</a>
<a id='n15225' href='#n15225'>15225</a>
<a id='n15226' href='#n15226'>15226</a>
<a id='n15227' href='#n15227'>15227</a>
<a id='n15228' href='#n15228'>15228</a>
<a id='n15229' href='#n15229'>15229</a>
<a id='n15230' href='#n15230'>15230</a>
<a id='n15231' href='#n15231'>15231</a>
<a id='n15232' href='#n15232'>15232</a>
<a id='n15233' href='#n15233'>15233</a>
<a id='n15234' href='#n15234'>15234</a>
<a id='n15235' href='#n15235'>15235</a>
<a id='n15236' href='#n15236'>15236</a>
<a id='n15237' href='#n15237'>15237</a>
<a id='n15238' href='#n15238'>15238</a>
<a id='n15239' href='#n15239'>15239</a>
<a id='n15240' href='#n15240'>15240</a>
<a id='n15241' href='#n15241'>15241</a>
<a id='n15242' href='#n15242'>15242</a>
<a id='n15243' href='#n15243'>15243</a>
<a id='n15244' href='#n15244'>15244</a>
<a id='n15245' href='#n15245'>15245</a>
<a id='n15246' href='#n15246'>15246</a>
<a id='n15247' href='#n15247'>15247</a>
<a id='n15248' href='#n15248'>15248</a>
<a id='n15249' href='#n15249'>15249</a>
<a id='n15250' href='#n15250'>15250</a>
<a id='n15251' href='#n15251'>15251</a>
<a id='n15252' href='#n15252'>15252</a>
<a id='n15253' href='#n15253'>15253</a>
<a id='n15254' href='#n15254'>15254</a>
<a id='n15255' href='#n15255'>15255</a>
<a id='n15256' href='#n15256'>15256</a>
<a id='n15257' href='#n15257'>15257</a>
<a id='n15258' href='#n15258'>15258</a>
<a id='n15259' href='#n15259'>15259</a>
<a id='n15260' href='#n15260'>15260</a>
<a id='n15261' href='#n15261'>15261</a>
<a id='n15262' href='#n15262'>15262</a>
<a id='n15263' href='#n15263'>15263</a>
<a id='n15264' href='#n15264'>15264</a>
<a id='n15265' href='#n15265'>15265</a>
<a id='n15266' href='#n15266'>15266</a>
<a id='n15267' href='#n15267'>15267</a>
<a id='n15268' href='#n15268'>15268</a>
<a id='n15269' href='#n15269'>15269</a>
<a id='n15270' href='#n15270'>15270</a>
<a id='n15271' href='#n15271'>15271</a>
<a id='n15272' href='#n15272'>15272</a>
<a id='n15273' href='#n15273'>15273</a>
<a id='n15274' href='#n15274'>15274</a>
<a id='n15275' href='#n15275'>15275</a>
<a id='n15276' href='#n15276'>15276</a>
<a id='n15277' href='#n15277'>15277</a>
<a id='n15278' href='#n15278'>15278</a>
<a id='n15279' href='#n15279'>15279</a>
<a id='n15280' href='#n15280'>15280</a>
<a id='n15281' href='#n15281'>15281</a>
<a id='n15282' href='#n15282'>15282</a>
<a id='n15283' href='#n15283'>15283</a>
<a id='n15284' href='#n15284'>15284</a>
<a id='n15285' href='#n15285'>15285</a>
<a id='n15286' href='#n15286'>15286</a>
<a id='n15287' href='#n15287'>15287</a>
<a id='n15288' href='#n15288'>15288</a>
<a id='n15289' href='#n15289'>15289</a>
<a id='n15290' href='#n15290'>15290</a>
<a id='n15291' href='#n15291'>15291</a>
<a id='n15292' href='#n15292'>15292</a>
<a id='n15293' href='#n15293'>15293</a>
<a id='n15294' href='#n15294'>15294</a>
<a id='n15295' href='#n15295'>15295</a>
<a id='n15296' href='#n15296'>15296</a>
<a id='n15297' href='#n15297'>15297</a>
<a id='n15298' href='#n15298'>15298</a>
<a id='n15299' href='#n15299'>15299</a>
<a id='n15300' href='#n15300'>15300</a>
<a id='n15301' href='#n15301'>15301</a>
<a id='n15302' href='#n15302'>15302</a>
<a id='n15303' href='#n15303'>15303</a>
<a id='n15304' href='#n15304'>15304</a>
<a id='n15305' href='#n15305'>15305</a>
<a id='n15306' href='#n15306'>15306</a>
<a id='n15307' href='#n15307'>15307</a>
<a id='n15308' href='#n15308'>15308</a>
<a id='n15309' href='#n15309'>15309</a>
<a id='n15310' href='#n15310'>15310</a>
<a id='n15311' href='#n15311'>15311</a>
<a id='n15312' href='#n15312'>15312</a>
<a id='n15313' href='#n15313'>15313</a>
<a id='n15314' href='#n15314'>15314</a>
<a id='n15315' href='#n15315'>15315</a>
<a id='n15316' href='#n15316'>15316</a>
<a id='n15317' href='#n15317'>15317</a>
<a id='n15318' href='#n15318'>15318</a>
<a id='n15319' href='#n15319'>15319</a>
<a id='n15320' href='#n15320'>15320</a>
<a id='n15321' href='#n15321'>15321</a>
<a id='n15322' href='#n15322'>15322</a>
<a id='n15323' href='#n15323'>15323</a>
<a id='n15324' href='#n15324'>15324</a>
<a id='n15325' href='#n15325'>15325</a>
<a id='n15326' href='#n15326'>15326</a>
<a id='n15327' href='#n15327'>15327</a>
<a id='n15328' href='#n15328'>15328</a>
<a id='n15329' href='#n15329'>15329</a>
<a id='n15330' href='#n15330'>15330</a>
<a id='n15331' href='#n15331'>15331</a>
<a id='n15332' href='#n15332'>15332</a>
<a id='n15333' href='#n15333'>15333</a>
<a id='n15334' href='#n15334'>15334</a>
<a id='n15335' href='#n15335'>15335</a>
<a id='n15336' href='#n15336'>15336</a>
<a id='n15337' href='#n15337'>15337</a>
<a id='n15338' href='#n15338'>15338</a>
<a id='n15339' href='#n15339'>15339</a>
<a id='n15340' href='#n15340'>15340</a>
<a id='n15341' href='#n15341'>15341</a>
<a id='n15342' href='#n15342'>15342</a>
<a id='n15343' href='#n15343'>15343</a>
<a id='n15344' href='#n15344'>15344</a>
<a id='n15345' href='#n15345'>15345</a>
<a id='n15346' href='#n15346'>15346</a>
<a id='n15347' href='#n15347'>15347</a>
<a id='n15348' href='#n15348'>15348</a>
<a id='n15349' href='#n15349'>15349</a>
<a id='n15350' href='#n15350'>15350</a>
<a id='n15351' href='#n15351'>15351</a>
<a id='n15352' href='#n15352'>15352</a>
<a id='n15353' href='#n15353'>15353</a>
<a id='n15354' href='#n15354'>15354</a>
<a id='n15355' href='#n15355'>15355</a>
<a id='n15356' href='#n15356'>15356</a>
<a id='n15357' href='#n15357'>15357</a>
<a id='n15358' href='#n15358'>15358</a>
<a id='n15359' href='#n15359'>15359</a>
<a id='n15360' href='#n15360'>15360</a>
<a id='n15361' href='#n15361'>15361</a>
<a id='n15362' href='#n15362'>15362</a>
<a id='n15363' href='#n15363'>15363</a>
<a id='n15364' href='#n15364'>15364</a>
<a id='n15365' href='#n15365'>15365</a>
<a id='n15366' href='#n15366'>15366</a>
<a id='n15367' href='#n15367'>15367</a>
<a id='n15368' href='#n15368'>15368</a>
<a id='n15369' href='#n15369'>15369</a>
<a id='n15370' href='#n15370'>15370</a>
<a id='n15371' href='#n15371'>15371</a>
<a id='n15372' href='#n15372'>15372</a>
<a id='n15373' href='#n15373'>15373</a>
<a id='n15374' href='#n15374'>15374</a>
<a id='n15375' href='#n15375'>15375</a>
<a id='n15376' href='#n15376'>15376</a>
<a id='n15377' href='#n15377'>15377</a>
<a id='n15378' href='#n15378'>15378</a>
<a id='n15379' href='#n15379'>15379</a>
<a id='n15380' href='#n15380'>15380</a>
<a id='n15381' href='#n15381'>15381</a>
<a id='n15382' href='#n15382'>15382</a>
<a id='n15383' href='#n15383'>15383</a>
<a id='n15384' href='#n15384'>15384</a>
<a id='n15385' href='#n15385'>15385</a>
<a id='n15386' href='#n15386'>15386</a>
<a id='n15387' href='#n15387'>15387</a>
<a id='n15388' href='#n15388'>15388</a>
<a id='n15389' href='#n15389'>15389</a>
<a id='n15390' href='#n15390'>15390</a>
<a id='n15391' href='#n15391'>15391</a>
<a id='n15392' href='#n15392'>15392</a>
<a id='n15393' href='#n15393'>15393</a>
<a id='n15394' href='#n15394'>15394</a>
<a id='n15395' href='#n15395'>15395</a>
<a id='n15396' href='#n15396'>15396</a>
<a id='n15397' href='#n15397'>15397</a>
<a id='n15398' href='#n15398'>15398</a>
<a id='n15399' href='#n15399'>15399</a>
<a id='n15400' href='#n15400'>15400</a>
<a id='n15401' href='#n15401'>15401</a>
<a id='n15402' href='#n15402'>15402</a>
<a id='n15403' href='#n15403'>15403</a>
<a id='n15404' href='#n15404'>15404</a>
<a id='n15405' href='#n15405'>15405</a>
<a id='n15406' href='#n15406'>15406</a>
<a id='n15407' href='#n15407'>15407</a>
<a id='n15408' href='#n15408'>15408</a>
<a id='n15409' href='#n15409'>15409</a>
<a id='n15410' href='#n15410'>15410</a>
<a id='n15411' href='#n15411'>15411</a>
<a id='n15412' href='#n15412'>15412</a>
<a id='n15413' href='#n15413'>15413</a>
<a id='n15414' href='#n15414'>15414</a>
<a id='n15415' href='#n15415'>15415</a>
<a id='n15416' href='#n15416'>15416</a>
<a id='n15417' href='#n15417'>15417</a>
<a id='n15418' href='#n15418'>15418</a>
<a id='n15419' href='#n15419'>15419</a>
<a id='n15420' href='#n15420'>15420</a>
<a id='n15421' href='#n15421'>15421</a>
<a id='n15422' href='#n15422'>15422</a>
<a id='n15423' href='#n15423'>15423</a>
<a id='n15424' href='#n15424'>15424</a>
<a id='n15425' href='#n15425'>15425</a>
<a id='n15426' href='#n15426'>15426</a>
<a id='n15427' href='#n15427'>15427</a>
<a id='n15428' href='#n15428'>15428</a>
<a id='n15429' href='#n15429'>15429</a>
<a id='n15430' href='#n15430'>15430</a>
<a id='n15431' href='#n15431'>15431</a>
<a id='n15432' href='#n15432'>15432</a>
<a id='n15433' href='#n15433'>15433</a>
<a id='n15434' href='#n15434'>15434</a>
<a id='n15435' href='#n15435'>15435</a>
<a id='n15436' href='#n15436'>15436</a>
<a id='n15437' href='#n15437'>15437</a>
<a id='n15438' href='#n15438'>15438</a>
<a id='n15439' href='#n15439'>15439</a>
<a id='n15440' href='#n15440'>15440</a>
<a id='n15441' href='#n15441'>15441</a>
<a id='n15442' href='#n15442'>15442</a>
<a id='n15443' href='#n15443'>15443</a>
<a id='n15444' href='#n15444'>15444</a>
<a id='n15445' href='#n15445'>15445</a>
<a id='n15446' href='#n15446'>15446</a>
<a id='n15447' href='#n15447'>15447</a>
<a id='n15448' href='#n15448'>15448</a>
<a id='n15449' href='#n15449'>15449</a>
<a id='n15450' href='#n15450'>15450</a>
<a id='n15451' href='#n15451'>15451</a>
<a id='n15452' href='#n15452'>15452</a>
<a id='n15453' href='#n15453'>15453</a>
<a id='n15454' href='#n15454'>15454</a>
<a id='n15455' href='#n15455'>15455</a>
<a id='n15456' href='#n15456'>15456</a>
<a id='n15457' href='#n15457'>15457</a>
<a id='n15458' href='#n15458'>15458</a>
<a id='n15459' href='#n15459'>15459</a>
<a id='n15460' href='#n15460'>15460</a>
<a id='n15461' href='#n15461'>15461</a>
<a id='n15462' href='#n15462'>15462</a>
<a id='n15463' href='#n15463'>15463</a>
<a id='n15464' href='#n15464'>15464</a>
<a id='n15465' href='#n15465'>15465</a>
<a id='n15466' href='#n15466'>15466</a>
<a id='n15467' href='#n15467'>15467</a>
<a id='n15468' href='#n15468'>15468</a>
<a id='n15469' href='#n15469'>15469</a>
<a id='n15470' href='#n15470'>15470</a>
<a id='n15471' href='#n15471'>15471</a>
<a id='n15472' href='#n15472'>15472</a>
<a id='n15473' href='#n15473'>15473</a>
<a id='n15474' href='#n15474'>15474</a>
<a id='n15475' href='#n15475'>15475</a>
<a id='n15476' href='#n15476'>15476</a>
<a id='n15477' href='#n15477'>15477</a>
<a id='n15478' href='#n15478'>15478</a>
<a id='n15479' href='#n15479'>15479</a>
<a id='n15480' href='#n15480'>15480</a>
<a id='n15481' href='#n15481'>15481</a>
<a id='n15482' href='#n15482'>15482</a>
<a id='n15483' href='#n15483'>15483</a>
<a id='n15484' href='#n15484'>15484</a>
<a id='n15485' href='#n15485'>15485</a>
<a id='n15486' href='#n15486'>15486</a>
<a id='n15487' href='#n15487'>15487</a>
<a id='n15488' href='#n15488'>15488</a>
<a id='n15489' href='#n15489'>15489</a>
<a id='n15490' href='#n15490'>15490</a>
<a id='n15491' href='#n15491'>15491</a>
<a id='n15492' href='#n15492'>15492</a>
<a id='n15493' href='#n15493'>15493</a>
<a id='n15494' href='#n15494'>15494</a>
<a id='n15495' href='#n15495'>15495</a>
<a id='n15496' href='#n15496'>15496</a>
<a id='n15497' href='#n15497'>15497</a>
<a id='n15498' href='#n15498'>15498</a>
<a id='n15499' href='#n15499'>15499</a>
<a id='n15500' href='#n15500'>15500</a>
<a id='n15501' href='#n15501'>15501</a>
<a id='n15502' href='#n15502'>15502</a>
<a id='n15503' href='#n15503'>15503</a>
<a id='n15504' href='#n15504'>15504</a>
<a id='n15505' href='#n15505'>15505</a>
<a id='n15506' href='#n15506'>15506</a>
<a id='n15507' href='#n15507'>15507</a>
<a id='n15508' href='#n15508'>15508</a>
<a id='n15509' href='#n15509'>15509</a>
<a id='n15510' href='#n15510'>15510</a>
<a id='n15511' href='#n15511'>15511</a>
<a id='n15512' href='#n15512'>15512</a>
<a id='n15513' href='#n15513'>15513</a>
<a id='n15514' href='#n15514'>15514</a>
<a id='n15515' href='#n15515'>15515</a>
<a id='n15516' href='#n15516'>15516</a>
<a id='n15517' href='#n15517'>15517</a>
<a id='n15518' href='#n15518'>15518</a>
<a id='n15519' href='#n15519'>15519</a>
<a id='n15520' href='#n15520'>15520</a>
<a id='n15521' href='#n15521'>15521</a>
<a id='n15522' href='#n15522'>15522</a>
<a id='n15523' href='#n15523'>15523</a>
<a id='n15524' href='#n15524'>15524</a>
<a id='n15525' href='#n15525'>15525</a>
<a id='n15526' href='#n15526'>15526</a>
<a id='n15527' href='#n15527'>15527</a>
<a id='n15528' href='#n15528'>15528</a>
<a id='n15529' href='#n15529'>15529</a>
<a id='n15530' href='#n15530'>15530</a>
<a id='n15531' href='#n15531'>15531</a>
<a id='n15532' href='#n15532'>15532</a>
<a id='n15533' href='#n15533'>15533</a>
<a id='n15534' href='#n15534'>15534</a>
<a id='n15535' href='#n15535'>15535</a>
<a id='n15536' href='#n15536'>15536</a>
<a id='n15537' href='#n15537'>15537</a>
<a id='n15538' href='#n15538'>15538</a>
<a id='n15539' href='#n15539'>15539</a>
<a id='n15540' href='#n15540'>15540</a>
<a id='n15541' href='#n15541'>15541</a>
<a id='n15542' href='#n15542'>15542</a>
<a id='n15543' href='#n15543'>15543</a>
<a id='n15544' href='#n15544'>15544</a>
<a id='n15545' href='#n15545'>15545</a>
<a id='n15546' href='#n15546'>15546</a>
<a id='n15547' href='#n15547'>15547</a>
<a id='n15548' href='#n15548'>15548</a>
<a id='n15549' href='#n15549'>15549</a>
<a id='n15550' href='#n15550'>15550</a>
<a id='n15551' href='#n15551'>15551</a>
<a id='n15552' href='#n15552'>15552</a>
<a id='n15553' href='#n15553'>15553</a>
<a id='n15554' href='#n15554'>15554</a>
<a id='n15555' href='#n15555'>15555</a>
<a id='n15556' href='#n15556'>15556</a>
<a id='n15557' href='#n15557'>15557</a>
<a id='n15558' href='#n15558'>15558</a>
<a id='n15559' href='#n15559'>15559</a>
<a id='n15560' href='#n15560'>15560</a>
<a id='n15561' href='#n15561'>15561</a>
<a id='n15562' href='#n15562'>15562</a>
<a id='n15563' href='#n15563'>15563</a>
<a id='n15564' href='#n15564'>15564</a>
<a id='n15565' href='#n15565'>15565</a>
<a id='n15566' href='#n15566'>15566</a>
<a id='n15567' href='#n15567'>15567</a>
<a id='n15568' href='#n15568'>15568</a>
<a id='n15569' href='#n15569'>15569</a>
<a id='n15570' href='#n15570'>15570</a>
<a id='n15571' href='#n15571'>15571</a>
<a id='n15572' href='#n15572'>15572</a>
<a id='n15573' href='#n15573'>15573</a>
<a id='n15574' href='#n15574'>15574</a>
<a id='n15575' href='#n15575'>15575</a>
<a id='n15576' href='#n15576'>15576</a>
<a id='n15577' href='#n15577'>15577</a>
<a id='n15578' href='#n15578'>15578</a>
<a id='n15579' href='#n15579'>15579</a>
<a id='n15580' href='#n15580'>15580</a>
<a id='n15581' href='#n15581'>15581</a>
<a id='n15582' href='#n15582'>15582</a>
<a id='n15583' href='#n15583'>15583</a>
<a id='n15584' href='#n15584'>15584</a>
<a id='n15585' href='#n15585'>15585</a>
<a id='n15586' href='#n15586'>15586</a>
<a id='n15587' href='#n15587'>15587</a>
<a id='n15588' href='#n15588'>15588</a>
<a id='n15589' href='#n15589'>15589</a>
<a id='n15590' href='#n15590'>15590</a>
<a id='n15591' href='#n15591'>15591</a>
<a id='n15592' href='#n15592'>15592</a>
<a id='n15593' href='#n15593'>15593</a>
<a id='n15594' href='#n15594'>15594</a>
<a id='n15595' href='#n15595'>15595</a>
<a id='n15596' href='#n15596'>15596</a>
<a id='n15597' href='#n15597'>15597</a>
<a id='n15598' href='#n15598'>15598</a>
<a id='n15599' href='#n15599'>15599</a>
<a id='n15600' href='#n15600'>15600</a>
<a id='n15601' href='#n15601'>15601</a>
<a id='n15602' href='#n15602'>15602</a>
<a id='n15603' href='#n15603'>15603</a>
<a id='n15604' href='#n15604'>15604</a>
<a id='n15605' href='#n15605'>15605</a>
<a id='n15606' href='#n15606'>15606</a>
<a id='n15607' href='#n15607'>15607</a>
<a id='n15608' href='#n15608'>15608</a>
<a id='n15609' href='#n15609'>15609</a>
<a id='n15610' href='#n15610'>15610</a>
<a id='n15611' href='#n15611'>15611</a>
<a id='n15612' href='#n15612'>15612</a>
<a id='n15613' href='#n15613'>15613</a>
<a id='n15614' href='#n15614'>15614</a>
<a id='n15615' href='#n15615'>15615</a>
<a id='n15616' href='#n15616'>15616</a>
<a id='n15617' href='#n15617'>15617</a>
<a id='n15618' href='#n15618'>15618</a>
<a id='n15619' href='#n15619'>15619</a>
<a id='n15620' href='#n15620'>15620</a>
<a id='n15621' href='#n15621'>15621</a>
<a id='n15622' href='#n15622'>15622</a>
<a id='n15623' href='#n15623'>15623</a>
<a id='n15624' href='#n15624'>15624</a>
<a id='n15625' href='#n15625'>15625</a>
<a id='n15626' href='#n15626'>15626</a>
<a id='n15627' href='#n15627'>15627</a>
<a id='n15628' href='#n15628'>15628</a>
<a id='n15629' href='#n15629'>15629</a>
<a id='n15630' href='#n15630'>15630</a>
<a id='n15631' href='#n15631'>15631</a>
<a id='n15632' href='#n15632'>15632</a>
<a id='n15633' href='#n15633'>15633</a>
<a id='n15634' href='#n15634'>15634</a>
<a id='n15635' href='#n15635'>15635</a>
<a id='n15636' href='#n15636'>15636</a>
<a id='n15637' href='#n15637'>15637</a>
<a id='n15638' href='#n15638'>15638</a>
<a id='n15639' href='#n15639'>15639</a>
<a id='n15640' href='#n15640'>15640</a>
<a id='n15641' href='#n15641'>15641</a>
<a id='n15642' href='#n15642'>15642</a>
<a id='n15643' href='#n15643'>15643</a>
<a id='n15644' href='#n15644'>15644</a>
<a id='n15645' href='#n15645'>15645</a>
<a id='n15646' href='#n15646'>15646</a>
<a id='n15647' href='#n15647'>15647</a>
<a id='n15648' href='#n15648'>15648</a>
<a id='n15649' href='#n15649'>15649</a>
<a id='n15650' href='#n15650'>15650</a>
<a id='n15651' href='#n15651'>15651</a>
<a id='n15652' href='#n15652'>15652</a>
<a id='n15653' href='#n15653'>15653</a>
<a id='n15654' href='#n15654'>15654</a>
<a id='n15655' href='#n15655'>15655</a>
<a id='n15656' href='#n15656'>15656</a>
<a id='n15657' href='#n15657'>15657</a>
<a id='n15658' href='#n15658'>15658</a>
<a id='n15659' href='#n15659'>15659</a>
<a id='n15660' href='#n15660'>15660</a>
<a id='n15661' href='#n15661'>15661</a>
<a id='n15662' href='#n15662'>15662</a>
<a id='n15663' href='#n15663'>15663</a>
<a id='n15664' href='#n15664'>15664</a>
<a id='n15665' href='#n15665'>15665</a>
<a id='n15666' href='#n15666'>15666</a>
<a id='n15667' href='#n15667'>15667</a>
<a id='n15668' href='#n15668'>15668</a>
<a id='n15669' href='#n15669'>15669</a>
<a id='n15670' href='#n15670'>15670</a>
<a id='n15671' href='#n15671'>15671</a>
<a id='n15672' href='#n15672'>15672</a>
<a id='n15673' href='#n15673'>15673</a>
<a id='n15674' href='#n15674'>15674</a>
<a id='n15675' href='#n15675'>15675</a>
<a id='n15676' href='#n15676'>15676</a>
<a id='n15677' href='#n15677'>15677</a>
<a id='n15678' href='#n15678'>15678</a>
<a id='n15679' href='#n15679'>15679</a>
<a id='n15680' href='#n15680'>15680</a>
<a id='n15681' href='#n15681'>15681</a>
<a id='n15682' href='#n15682'>15682</a>
<a id='n15683' href='#n15683'>15683</a>
<a id='n15684' href='#n15684'>15684</a>
<a id='n15685' href='#n15685'>15685</a>
<a id='n15686' href='#n15686'>15686</a>
<a id='n15687' href='#n15687'>15687</a>
<a id='n15688' href='#n15688'>15688</a>
<a id='n15689' href='#n15689'>15689</a>
<a id='n15690' href='#n15690'>15690</a>
<a id='n15691' href='#n15691'>15691</a>
<a id='n15692' href='#n15692'>15692</a>
<a id='n15693' href='#n15693'>15693</a>
<a id='n15694' href='#n15694'>15694</a>
<a id='n15695' href='#n15695'>15695</a>
<a id='n15696' href='#n15696'>15696</a>
<a id='n15697' href='#n15697'>15697</a>
<a id='n15698' href='#n15698'>15698</a>
<a id='n15699' href='#n15699'>15699</a>
<a id='n15700' href='#n15700'>15700</a>
<a id='n15701' href='#n15701'>15701</a>
<a id='n15702' href='#n15702'>15702</a>
<a id='n15703' href='#n15703'>15703</a>
<a id='n15704' href='#n15704'>15704</a>
<a id='n15705' href='#n15705'>15705</a>
<a id='n15706' href='#n15706'>15706</a>
<a id='n15707' href='#n15707'>15707</a>
<a id='n15708' href='#n15708'>15708</a>
<a id='n15709' href='#n15709'>15709</a>
<a id='n15710' href='#n15710'>15710</a>
<a id='n15711' href='#n15711'>15711</a>
<a id='n15712' href='#n15712'>15712</a>
<a id='n15713' href='#n15713'>15713</a>
<a id='n15714' href='#n15714'>15714</a>
<a id='n15715' href='#n15715'>15715</a>
<a id='n15716' href='#n15716'>15716</a>
<a id='n15717' href='#n15717'>15717</a>
<a id='n15718' href='#n15718'>15718</a>
<a id='n15719' href='#n15719'>15719</a>
<a id='n15720' href='#n15720'>15720</a>
<a id='n15721' href='#n15721'>15721</a>
<a id='n15722' href='#n15722'>15722</a>
<a id='n15723' href='#n15723'>15723</a>
<a id='n15724' href='#n15724'>15724</a>
<a id='n15725' href='#n15725'>15725</a>
<a id='n15726' href='#n15726'>15726</a>
<a id='n15727' href='#n15727'>15727</a>
<a id='n15728' href='#n15728'>15728</a>
<a id='n15729' href='#n15729'>15729</a>
<a id='n15730' href='#n15730'>15730</a>
<a id='n15731' href='#n15731'>15731</a>
<a id='n15732' href='#n15732'>15732</a>
<a id='n15733' href='#n15733'>15733</a>
<a id='n15734' href='#n15734'>15734</a>
<a id='n15735' href='#n15735'>15735</a>
<a id='n15736' href='#n15736'>15736</a>
<a id='n15737' href='#n15737'>15737</a>
<a id='n15738' href='#n15738'>15738</a>
<a id='n15739' href='#n15739'>15739</a>
<a id='n15740' href='#n15740'>15740</a>
<a id='n15741' href='#n15741'>15741</a>
<a id='n15742' href='#n15742'>15742</a>
<a id='n15743' href='#n15743'>15743</a>
<a id='n15744' href='#n15744'>15744</a>
<a id='n15745' href='#n15745'>15745</a>
<a id='n15746' href='#n15746'>15746</a>
<a id='n15747' href='#n15747'>15747</a>
<a id='n15748' href='#n15748'>15748</a>
<a id='n15749' href='#n15749'>15749</a>
<a id='n15750' href='#n15750'>15750</a>
<a id='n15751' href='#n15751'>15751</a>
<a id='n15752' href='#n15752'>15752</a>
<a id='n15753' href='#n15753'>15753</a>
<a id='n15754' href='#n15754'>15754</a>
<a id='n15755' href='#n15755'>15755</a>
<a id='n15756' href='#n15756'>15756</a>
<a id='n15757' href='#n15757'>15757</a>
<a id='n15758' href='#n15758'>15758</a>
<a id='n15759' href='#n15759'>15759</a>
<a id='n15760' href='#n15760'>15760</a>
<a id='n15761' href='#n15761'>15761</a>
<a id='n15762' href='#n15762'>15762</a>
<a id='n15763' href='#n15763'>15763</a>
<a id='n15764' href='#n15764'>15764</a>
<a id='n15765' href='#n15765'>15765</a>
<a id='n15766' href='#n15766'>15766</a>
<a id='n15767' href='#n15767'>15767</a>
<a id='n15768' href='#n15768'>15768</a>
<a id='n15769' href='#n15769'>15769</a>
<a id='n15770' href='#n15770'>15770</a>
<a id='n15771' href='#n15771'>15771</a>
<a id='n15772' href='#n15772'>15772</a>
<a id='n15773' href='#n15773'>15773</a>
<a id='n15774' href='#n15774'>15774</a>
<a id='n15775' href='#n15775'>15775</a>
<a id='n15776' href='#n15776'>15776</a>
<a id='n15777' href='#n15777'>15777</a>
<a id='n15778' href='#n15778'>15778</a>
<a id='n15779' href='#n15779'>15779</a>
<a id='n15780' href='#n15780'>15780</a>
<a id='n15781' href='#n15781'>15781</a>
<a id='n15782' href='#n15782'>15782</a>
<a id='n15783' href='#n15783'>15783</a>
<a id='n15784' href='#n15784'>15784</a>
<a id='n15785' href='#n15785'>15785</a>
<a id='n15786' href='#n15786'>15786</a>
<a id='n15787' href='#n15787'>15787</a>
<a id='n15788' href='#n15788'>15788</a>
<a id='n15789' href='#n15789'>15789</a>
<a id='n15790' href='#n15790'>15790</a>
<a id='n15791' href='#n15791'>15791</a>
<a id='n15792' href='#n15792'>15792</a>
<a id='n15793' href='#n15793'>15793</a>
<a id='n15794' href='#n15794'>15794</a>
<a id='n15795' href='#n15795'>15795</a>
<a id='n15796' href='#n15796'>15796</a>
<a id='n15797' href='#n15797'>15797</a>
<a id='n15798' href='#n15798'>15798</a>
<a id='n15799' href='#n15799'>15799</a>
<a id='n15800' href='#n15800'>15800</a>
<a id='n15801' href='#n15801'>15801</a>
<a id='n15802' href='#n15802'>15802</a>
<a id='n15803' href='#n15803'>15803</a>
<a id='n15804' href='#n15804'>15804</a>
<a id='n15805' href='#n15805'>15805</a>
<a id='n15806' href='#n15806'>15806</a>
<a id='n15807' href='#n15807'>15807</a>
<a id='n15808' href='#n15808'>15808</a>
<a id='n15809' href='#n15809'>15809</a>
<a id='n15810' href='#n15810'>15810</a>
<a id='n15811' href='#n15811'>15811</a>
<a id='n15812' href='#n15812'>15812</a>
<a id='n15813' href='#n15813'>15813</a>
<a id='n15814' href='#n15814'>15814</a>
<a id='n15815' href='#n15815'>15815</a>
<a id='n15816' href='#n15816'>15816</a>
<a id='n15817' href='#n15817'>15817</a>
<a id='n15818' href='#n15818'>15818</a>
<a id='n15819' href='#n15819'>15819</a>
<a id='n15820' href='#n15820'>15820</a>
<a id='n15821' href='#n15821'>15821</a>
<a id='n15822' href='#n15822'>15822</a>
<a id='n15823' href='#n15823'>15823</a>
<a id='n15824' href='#n15824'>15824</a>
<a id='n15825' href='#n15825'>15825</a>
<a id='n15826' href='#n15826'>15826</a>
<a id='n15827' href='#n15827'>15827</a>
<a id='n15828' href='#n15828'>15828</a>
<a id='n15829' href='#n15829'>15829</a>
<a id='n15830' href='#n15830'>15830</a>
<a id='n15831' href='#n15831'>15831</a>
<a id='n15832' href='#n15832'>15832</a>
<a id='n15833' href='#n15833'>15833</a>
<a id='n15834' href='#n15834'>15834</a>
<a id='n15835' href='#n15835'>15835</a>
<a id='n15836' href='#n15836'>15836</a>
<a id='n15837' href='#n15837'>15837</a>
<a id='n15838' href='#n15838'>15838</a>
<a id='n15839' href='#n15839'>15839</a>
<a id='n15840' href='#n15840'>15840</a>
<a id='n15841' href='#n15841'>15841</a>
<a id='n15842' href='#n15842'>15842</a>
<a id='n15843' href='#n15843'>15843</a>
<a id='n15844' href='#n15844'>15844</a>
<a id='n15845' href='#n15845'>15845</a>
<a id='n15846' href='#n15846'>15846</a>
<a id='n15847' href='#n15847'>15847</a>
<a id='n15848' href='#n15848'>15848</a>
<a id='n15849' href='#n15849'>15849</a>
<a id='n15850' href='#n15850'>15850</a>
<a id='n15851' href='#n15851'>15851</a>
<a id='n15852' href='#n15852'>15852</a>
<a id='n15853' href='#n15853'>15853</a>
<a id='n15854' href='#n15854'>15854</a>
<a id='n15855' href='#n15855'>15855</a>
<a id='n15856' href='#n15856'>15856</a>
<a id='n15857' href='#n15857'>15857</a>
<a id='n15858' href='#n15858'>15858</a>
<a id='n15859' href='#n15859'>15859</a>
<a id='n15860' href='#n15860'>15860</a>
<a id='n15861' href='#n15861'>15861</a>
<a id='n15862' href='#n15862'>15862</a>
<a id='n15863' href='#n15863'>15863</a>
<a id='n15864' href='#n15864'>15864</a>
<a id='n15865' href='#n15865'>15865</a>
<a id='n15866' href='#n15866'>15866</a>
<a id='n15867' href='#n15867'>15867</a>
<a id='n15868' href='#n15868'>15868</a>
<a id='n15869' href='#n15869'>15869</a>
<a id='n15870' href='#n15870'>15870</a>
<a id='n15871' href='#n15871'>15871</a>
<a id='n15872' href='#n15872'>15872</a>
<a id='n15873' href='#n15873'>15873</a>
<a id='n15874' href='#n15874'>15874</a>
<a id='n15875' href='#n15875'>15875</a>
<a id='n15876' href='#n15876'>15876</a>
<a id='n15877' href='#n15877'>15877</a>
<a id='n15878' href='#n15878'>15878</a>
<a id='n15879' href='#n15879'>15879</a>
<a id='n15880' href='#n15880'>15880</a>
<a id='n15881' href='#n15881'>15881</a>
<a id='n15882' href='#n15882'>15882</a>
<a id='n15883' href='#n15883'>15883</a>
<a id='n15884' href='#n15884'>15884</a>
<a id='n15885' href='#n15885'>15885</a>
<a id='n15886' href='#n15886'>15886</a>
<a id='n15887' href='#n15887'>15887</a>
<a id='n15888' href='#n15888'>15888</a>
<a id='n15889' href='#n15889'>15889</a>
<a id='n15890' href='#n15890'>15890</a>
<a id='n15891' href='#n15891'>15891</a>
<a id='n15892' href='#n15892'>15892</a>
<a id='n15893' href='#n15893'>15893</a>
<a id='n15894' href='#n15894'>15894</a>
<a id='n15895' href='#n15895'>15895</a>
<a id='n15896' href='#n15896'>15896</a>
<a id='n15897' href='#n15897'>15897</a>
<a id='n15898' href='#n15898'>15898</a>
<a id='n15899' href='#n15899'>15899</a>
<a id='n15900' href='#n15900'>15900</a>
<a id='n15901' href='#n15901'>15901</a>
<a id='n15902' href='#n15902'>15902</a>
<a id='n15903' href='#n15903'>15903</a>
<a id='n15904' href='#n15904'>15904</a>
<a id='n15905' href='#n15905'>15905</a>
<a id='n15906' href='#n15906'>15906</a>
<a id='n15907' href='#n15907'>15907</a>
<a id='n15908' href='#n15908'>15908</a>
<a id='n15909' href='#n15909'>15909</a>
<a id='n15910' href='#n15910'>15910</a>
<a id='n15911' href='#n15911'>15911</a>
<a id='n15912' href='#n15912'>15912</a>
<a id='n15913' href='#n15913'>15913</a>
<a id='n15914' href='#n15914'>15914</a>
<a id='n15915' href='#n15915'>15915</a>
<a id='n15916' href='#n15916'>15916</a>
<a id='n15917' href='#n15917'>15917</a>
<a id='n15918' href='#n15918'>15918</a>
<a id='n15919' href='#n15919'>15919</a>
<a id='n15920' href='#n15920'>15920</a>
<a id='n15921' href='#n15921'>15921</a>
<a id='n15922' href='#n15922'>15922</a>
<a id='n15923' href='#n15923'>15923</a>
<a id='n15924' href='#n15924'>15924</a>
<a id='n15925' href='#n15925'>15925</a>
<a id='n15926' href='#n15926'>15926</a>
<a id='n15927' href='#n15927'>15927</a>
<a id='n15928' href='#n15928'>15928</a>
<a id='n15929' href='#n15929'>15929</a>
<a id='n15930' href='#n15930'>15930</a>
<a id='n15931' href='#n15931'>15931</a>
<a id='n15932' href='#n15932'>15932</a>
<a id='n15933' href='#n15933'>15933</a>
<a id='n15934' href='#n15934'>15934</a>
<a id='n15935' href='#n15935'>15935</a>
<a id='n15936' href='#n15936'>15936</a>
<a id='n15937' href='#n15937'>15937</a>
<a id='n15938' href='#n15938'>15938</a>
<a id='n15939' href='#n15939'>15939</a>
<a id='n15940' href='#n15940'>15940</a>
<a id='n15941' href='#n15941'>15941</a>
<a id='n15942' href='#n15942'>15942</a>
<a id='n15943' href='#n15943'>15943</a>
<a id='n15944' href='#n15944'>15944</a>
<a id='n15945' href='#n15945'>15945</a>
<a id='n15946' href='#n15946'>15946</a>
<a id='n15947' href='#n15947'>15947</a>
<a id='n15948' href='#n15948'>15948</a>
<a id='n15949' href='#n15949'>15949</a>
<a id='n15950' href='#n15950'>15950</a>
<a id='n15951' href='#n15951'>15951</a>
<a id='n15952' href='#n15952'>15952</a>
<a id='n15953' href='#n15953'>15953</a>
<a id='n15954' href='#n15954'>15954</a>
<a id='n15955' href='#n15955'>15955</a>
<a id='n15956' href='#n15956'>15956</a>
<a id='n15957' href='#n15957'>15957</a>
<a id='n15958' href='#n15958'>15958</a>
<a id='n15959' href='#n15959'>15959</a>
<a id='n15960' href='#n15960'>15960</a>
<a id='n15961' href='#n15961'>15961</a>
<a id='n15962' href='#n15962'>15962</a>
<a id='n15963' href='#n15963'>15963</a>
<a id='n15964' href='#n15964'>15964</a>
<a id='n15965' href='#n15965'>15965</a>
<a id='n15966' href='#n15966'>15966</a>
<a id='n15967' href='#n15967'>15967</a>
<a id='n15968' href='#n15968'>15968</a>
<a id='n15969' href='#n15969'>15969</a>
<a id='n15970' href='#n15970'>15970</a>
<a id='n15971' href='#n15971'>15971</a>
<a id='n15972' href='#n15972'>15972</a>
<a id='n15973' href='#n15973'>15973</a>
<a id='n15974' href='#n15974'>15974</a>
<a id='n15975' href='#n15975'>15975</a>
<a id='n15976' href='#n15976'>15976</a>
<a id='n15977' href='#n15977'>15977</a>
<a id='n15978' href='#n15978'>15978</a>
<a id='n15979' href='#n15979'>15979</a>
<a id='n15980' href='#n15980'>15980</a>
<a id='n15981' href='#n15981'>15981</a>
<a id='n15982' href='#n15982'>15982</a>
<a id='n15983' href='#n15983'>15983</a>
<a id='n15984' href='#n15984'>15984</a>
<a id='n15985' href='#n15985'>15985</a>
<a id='n15986' href='#n15986'>15986</a>
<a id='n15987' href='#n15987'>15987</a>
<a id='n15988' href='#n15988'>15988</a>
<a id='n15989' href='#n15989'>15989</a>
<a id='n15990' href='#n15990'>15990</a>
<a id='n15991' href='#n15991'>15991</a>
<a id='n15992' href='#n15992'>15992</a>
<a id='n15993' href='#n15993'>15993</a>
<a id='n15994' href='#n15994'>15994</a>
<a id='n15995' href='#n15995'>15995</a>
<a id='n15996' href='#n15996'>15996</a>
<a id='n15997' href='#n15997'>15997</a>
<a id='n15998' href='#n15998'>15998</a>
<a id='n15999' href='#n15999'>15999</a>
<a id='n16000' href='#n16000'>16000</a>
<a id='n16001' href='#n16001'>16001</a>
<a id='n16002' href='#n16002'>16002</a>
<a id='n16003' href='#n16003'>16003</a>
<a id='n16004' href='#n16004'>16004</a>
<a id='n16005' href='#n16005'>16005</a>
<a id='n16006' href='#n16006'>16006</a>
<a id='n16007' href='#n16007'>16007</a>
<a id='n16008' href='#n16008'>16008</a>
<a id='n16009' href='#n16009'>16009</a>
<a id='n16010' href='#n16010'>16010</a>
<a id='n16011' href='#n16011'>16011</a>
<a id='n16012' href='#n16012'>16012</a>
<a id='n16013' href='#n16013'>16013</a>
<a id='n16014' href='#n16014'>16014</a>
<a id='n16015' href='#n16015'>16015</a>
<a id='n16016' href='#n16016'>16016</a>
<a id='n16017' href='#n16017'>16017</a>
<a id='n16018' href='#n16018'>16018</a>
<a id='n16019' href='#n16019'>16019</a>
<a id='n16020' href='#n16020'>16020</a>
<a id='n16021' href='#n16021'>16021</a>
<a id='n16022' href='#n16022'>16022</a>
<a id='n16023' href='#n16023'>16023</a>
<a id='n16024' href='#n16024'>16024</a>
<a id='n16025' href='#n16025'>16025</a>
<a id='n16026' href='#n16026'>16026</a>
<a id='n16027' href='#n16027'>16027</a>
<a id='n16028' href='#n16028'>16028</a>
<a id='n16029' href='#n16029'>16029</a>
<a id='n16030' href='#n16030'>16030</a>
<a id='n16031' href='#n16031'>16031</a>
<a id='n16032' href='#n16032'>16032</a>
<a id='n16033' href='#n16033'>16033</a>
<a id='n16034' href='#n16034'>16034</a>
<a id='n16035' href='#n16035'>16035</a>
<a id='n16036' href='#n16036'>16036</a>
<a id='n16037' href='#n16037'>16037</a>
<a id='n16038' href='#n16038'>16038</a>
<a id='n16039' href='#n16039'>16039</a>
<a id='n16040' href='#n16040'>16040</a>
<a id='n16041' href='#n16041'>16041</a>
<a id='n16042' href='#n16042'>16042</a>
<a id='n16043' href='#n16043'>16043</a>
<a id='n16044' href='#n16044'>16044</a>
<a id='n16045' href='#n16045'>16045</a>
<a id='n16046' href='#n16046'>16046</a>
<a id='n16047' href='#n16047'>16047</a>
<a id='n16048' href='#n16048'>16048</a>
<a id='n16049' href='#n16049'>16049</a>
<a id='n16050' href='#n16050'>16050</a>
<a id='n16051' href='#n16051'>16051</a>
<a id='n16052' href='#n16052'>16052</a>
<a id='n16053' href='#n16053'>16053</a>
<a id='n16054' href='#n16054'>16054</a>
<a id='n16055' href='#n16055'>16055</a>
<a id='n16056' href='#n16056'>16056</a>
<a id='n16057' href='#n16057'>16057</a>
<a id='n16058' href='#n16058'>16058</a>
<a id='n16059' href='#n16059'>16059</a>
<a id='n16060' href='#n16060'>16060</a>
<a id='n16061' href='#n16061'>16061</a>
<a id='n16062' href='#n16062'>16062</a>
<a id='n16063' href='#n16063'>16063</a>
<a id='n16064' href='#n16064'>16064</a>
<a id='n16065' href='#n16065'>16065</a>
<a id='n16066' href='#n16066'>16066</a>
<a id='n16067' href='#n16067'>16067</a>
<a id='n16068' href='#n16068'>16068</a>
<a id='n16069' href='#n16069'>16069</a>
<a id='n16070' href='#n16070'>16070</a>
<a id='n16071' href='#n16071'>16071</a>
<a id='n16072' href='#n16072'>16072</a>
<a id='n16073' href='#n16073'>16073</a>
<a id='n16074' href='#n16074'>16074</a>
<a id='n16075' href='#n16075'>16075</a>
<a id='n16076' href='#n16076'>16076</a>
<a id='n16077' href='#n16077'>16077</a>
<a id='n16078' href='#n16078'>16078</a>
<a id='n16079' href='#n16079'>16079</a>
<a id='n16080' href='#n16080'>16080</a>
<a id='n16081' href='#n16081'>16081</a>
<a id='n16082' href='#n16082'>16082</a>
<a id='n16083' href='#n16083'>16083</a>
<a id='n16084' href='#n16084'>16084</a>
<a id='n16085' href='#n16085'>16085</a>
<a id='n16086' href='#n16086'>16086</a>
<a id='n16087' href='#n16087'>16087</a>
<a id='n16088' href='#n16088'>16088</a>
<a id='n16089' href='#n16089'>16089</a>
<a id='n16090' href='#n16090'>16090</a>
<a id='n16091' href='#n16091'>16091</a>
<a id='n16092' href='#n16092'>16092</a>
<a id='n16093' href='#n16093'>16093</a>
<a id='n16094' href='#n16094'>16094</a>
<a id='n16095' href='#n16095'>16095</a>
<a id='n16096' href='#n16096'>16096</a>
<a id='n16097' href='#n16097'>16097</a>
<a id='n16098' href='#n16098'>16098</a>
<a id='n16099' href='#n16099'>16099</a>
<a id='n16100' href='#n16100'>16100</a>
<a id='n16101' href='#n16101'>16101</a>
<a id='n16102' href='#n16102'>16102</a>
<a id='n16103' href='#n16103'>16103</a>
<a id='n16104' href='#n16104'>16104</a>
<a id='n16105' href='#n16105'>16105</a>
<a id='n16106' href='#n16106'>16106</a>
<a id='n16107' href='#n16107'>16107</a>
<a id='n16108' href='#n16108'>16108</a>
<a id='n16109' href='#n16109'>16109</a>
<a id='n16110' href='#n16110'>16110</a>
<a id='n16111' href='#n16111'>16111</a>
<a id='n16112' href='#n16112'>16112</a>
<a id='n16113' href='#n16113'>16113</a>
<a id='n16114' href='#n16114'>16114</a>
<a id='n16115' href='#n16115'>16115</a>
<a id='n16116' href='#n16116'>16116</a>
<a id='n16117' href='#n16117'>16117</a>
<a id='n16118' href='#n16118'>16118</a>
<a id='n16119' href='#n16119'>16119</a>
<a id='n16120' href='#n16120'>16120</a>
<a id='n16121' href='#n16121'>16121</a>
<a id='n16122' href='#n16122'>16122</a>
<a id='n16123' href='#n16123'>16123</a>
<a id='n16124' href='#n16124'>16124</a>
<a id='n16125' href='#n16125'>16125</a>
<a id='n16126' href='#n16126'>16126</a>
<a id='n16127' href='#n16127'>16127</a>
<a id='n16128' href='#n16128'>16128</a>
<a id='n16129' href='#n16129'>16129</a>
<a id='n16130' href='#n16130'>16130</a>
<a id='n16131' href='#n16131'>16131</a>
<a id='n16132' href='#n16132'>16132</a>
<a id='n16133' href='#n16133'>16133</a>
<a id='n16134' href='#n16134'>16134</a>
<a id='n16135' href='#n16135'>16135</a>
<a id='n16136' href='#n16136'>16136</a>
<a id='n16137' href='#n16137'>16137</a>
<a id='n16138' href='#n16138'>16138</a>
<a id='n16139' href='#n16139'>16139</a>
<a id='n16140' href='#n16140'>16140</a>
<a id='n16141' href='#n16141'>16141</a>
<a id='n16142' href='#n16142'>16142</a>
<a id='n16143' href='#n16143'>16143</a>
<a id='n16144' href='#n16144'>16144</a>
<a id='n16145' href='#n16145'>16145</a>
<a id='n16146' href='#n16146'>16146</a>
<a id='n16147' href='#n16147'>16147</a>
<a id='n16148' href='#n16148'>16148</a>
<a id='n16149' href='#n16149'>16149</a>
<a id='n16150' href='#n16150'>16150</a>
<a id='n16151' href='#n16151'>16151</a>
<a id='n16152' href='#n16152'>16152</a>
<a id='n16153' href='#n16153'>16153</a>
<a id='n16154' href='#n16154'>16154</a>
<a id='n16155' href='#n16155'>16155</a>
<a id='n16156' href='#n16156'>16156</a>
<a id='n16157' href='#n16157'>16157</a>
<a id='n16158' href='#n16158'>16158</a>
<a id='n16159' href='#n16159'>16159</a>
<a id='n16160' href='#n16160'>16160</a>
<a id='n16161' href='#n16161'>16161</a>
<a id='n16162' href='#n16162'>16162</a>
<a id='n16163' href='#n16163'>16163</a>
<a id='n16164' href='#n16164'>16164</a>
<a id='n16165' href='#n16165'>16165</a>
<a id='n16166' href='#n16166'>16166</a>
<a id='n16167' href='#n16167'>16167</a>
<a id='n16168' href='#n16168'>16168</a>
<a id='n16169' href='#n16169'>16169</a>
<a id='n16170' href='#n16170'>16170</a>
<a id='n16171' href='#n16171'>16171</a>
<a id='n16172' href='#n16172'>16172</a>
<a id='n16173' href='#n16173'>16173</a>
<a id='n16174' href='#n16174'>16174</a>
<a id='n16175' href='#n16175'>16175</a>
<a id='n16176' href='#n16176'>16176</a>
<a id='n16177' href='#n16177'>16177</a>
<a id='n16178' href='#n16178'>16178</a>
<a id='n16179' href='#n16179'>16179</a>
<a id='n16180' href='#n16180'>16180</a>
<a id='n16181' href='#n16181'>16181</a>
<a id='n16182' href='#n16182'>16182</a>
<a id='n16183' href='#n16183'>16183</a>
<a id='n16184' href='#n16184'>16184</a>
<a id='n16185' href='#n16185'>16185</a>
<a id='n16186' href='#n16186'>16186</a>
<a id='n16187' href='#n16187'>16187</a>
<a id='n16188' href='#n16188'>16188</a>
<a id='n16189' href='#n16189'>16189</a>
<a id='n16190' href='#n16190'>16190</a>
<a id='n16191' href='#n16191'>16191</a>
<a id='n16192' href='#n16192'>16192</a>
<a id='n16193' href='#n16193'>16193</a>
<a id='n16194' href='#n16194'>16194</a>
<a id='n16195' href='#n16195'>16195</a>
<a id='n16196' href='#n16196'>16196</a>
<a id='n16197' href='#n16197'>16197</a>
<a id='n16198' href='#n16198'>16198</a>
<a id='n16199' href='#n16199'>16199</a>
<a id='n16200' href='#n16200'>16200</a>
<a id='n16201' href='#n16201'>16201</a>
<a id='n16202' href='#n16202'>16202</a>
<a id='n16203' href='#n16203'>16203</a>
<a id='n16204' href='#n16204'>16204</a>
<a id='n16205' href='#n16205'>16205</a>
<a id='n16206' href='#n16206'>16206</a>
<a id='n16207' href='#n16207'>16207</a>
<a id='n16208' href='#n16208'>16208</a>
<a id='n16209' href='#n16209'>16209</a>
<a id='n16210' href='#n16210'>16210</a>
<a id='n16211' href='#n16211'>16211</a>
<a id='n16212' href='#n16212'>16212</a>
<a id='n16213' href='#n16213'>16213</a>
<a id='n16214' href='#n16214'>16214</a>
<a id='n16215' href='#n16215'>16215</a>
<a id='n16216' href='#n16216'>16216</a>
<a id='n16217' href='#n16217'>16217</a>
<a id='n16218' href='#n16218'>16218</a>
<a id='n16219' href='#n16219'>16219</a>
<a id='n16220' href='#n16220'>16220</a>
<a id='n16221' href='#n16221'>16221</a>
<a id='n16222' href='#n16222'>16222</a>
<a id='n16223' href='#n16223'>16223</a>
<a id='n16224' href='#n16224'>16224</a>
<a id='n16225' href='#n16225'>16225</a>
<a id='n16226' href='#n16226'>16226</a>
<a id='n16227' href='#n16227'>16227</a>
<a id='n16228' href='#n16228'>16228</a>
<a id='n16229' href='#n16229'>16229</a>
<a id='n16230' href='#n16230'>16230</a>
<a id='n16231' href='#n16231'>16231</a>
<a id='n16232' href='#n16232'>16232</a>
<a id='n16233' href='#n16233'>16233</a>
<a id='n16234' href='#n16234'>16234</a>
<a id='n16235' href='#n16235'>16235</a>
<a id='n16236' href='#n16236'>16236</a>
<a id='n16237' href='#n16237'>16237</a>
<a id='n16238' href='#n16238'>16238</a>
<a id='n16239' href='#n16239'>16239</a>
<a id='n16240' href='#n16240'>16240</a>
<a id='n16241' href='#n16241'>16241</a>
<a id='n16242' href='#n16242'>16242</a>
<a id='n16243' href='#n16243'>16243</a>
<a id='n16244' href='#n16244'>16244</a>
<a id='n16245' href='#n16245'>16245</a>
<a id='n16246' href='#n16246'>16246</a>
<a id='n16247' href='#n16247'>16247</a>
<a id='n16248' href='#n16248'>16248</a>
<a id='n16249' href='#n16249'>16249</a>
<a id='n16250' href='#n16250'>16250</a>
<a id='n16251' href='#n16251'>16251</a>
<a id='n16252' href='#n16252'>16252</a>
<a id='n16253' href='#n16253'>16253</a>
<a id='n16254' href='#n16254'>16254</a>
<a id='n16255' href='#n16255'>16255</a>
<a id='n16256' href='#n16256'>16256</a>
<a id='n16257' href='#n16257'>16257</a>
<a id='n16258' href='#n16258'>16258</a>
<a id='n16259' href='#n16259'>16259</a>
<a id='n16260' href='#n16260'>16260</a>
<a id='n16261' href='#n16261'>16261</a>
<a id='n16262' href='#n16262'>16262</a>
<a id='n16263' href='#n16263'>16263</a>
<a id='n16264' href='#n16264'>16264</a>
<a id='n16265' href='#n16265'>16265</a>
<a id='n16266' href='#n16266'>16266</a>
<a id='n16267' href='#n16267'>16267</a>
<a id='n16268' href='#n16268'>16268</a>
<a id='n16269' href='#n16269'>16269</a>
<a id='n16270' href='#n16270'>16270</a>
<a id='n16271' href='#n16271'>16271</a>
<a id='n16272' href='#n16272'>16272</a>
<a id='n16273' href='#n16273'>16273</a>
<a id='n16274' href='#n16274'>16274</a>
<a id='n16275' href='#n16275'>16275</a>
<a id='n16276' href='#n16276'>16276</a>
<a id='n16277' href='#n16277'>16277</a>
<a id='n16278' href='#n16278'>16278</a>
<a id='n16279' href='#n16279'>16279</a>
<a id='n16280' href='#n16280'>16280</a>
<a id='n16281' href='#n16281'>16281</a>
<a id='n16282' href='#n16282'>16282</a>
<a id='n16283' href='#n16283'>16283</a>
<a id='n16284' href='#n16284'>16284</a>
<a id='n16285' href='#n16285'>16285</a>
<a id='n16286' href='#n16286'>16286</a>
<a id='n16287' href='#n16287'>16287</a>
<a id='n16288' href='#n16288'>16288</a>
<a id='n16289' href='#n16289'>16289</a>
<a id='n16290' href='#n16290'>16290</a>
<a id='n16291' href='#n16291'>16291</a>
<a id='n16292' href='#n16292'>16292</a>
<a id='n16293' href='#n16293'>16293</a>
<a id='n16294' href='#n16294'>16294</a>
<a id='n16295' href='#n16295'>16295</a>
<a id='n16296' href='#n16296'>16296</a>
<a id='n16297' href='#n16297'>16297</a>
<a id='n16298' href='#n16298'>16298</a>
<a id='n16299' href='#n16299'>16299</a>
<a id='n16300' href='#n16300'>16300</a>
<a id='n16301' href='#n16301'>16301</a>
<a id='n16302' href='#n16302'>16302</a>
<a id='n16303' href='#n16303'>16303</a>
<a id='n16304' href='#n16304'>16304</a>
<a id='n16305' href='#n16305'>16305</a>
<a id='n16306' href='#n16306'>16306</a>
<a id='n16307' href='#n16307'>16307</a>
<a id='n16308' href='#n16308'>16308</a>
<a id='n16309' href='#n16309'>16309</a>
<a id='n16310' href='#n16310'>16310</a>
<a id='n16311' href='#n16311'>16311</a>
<a id='n16312' href='#n16312'>16312</a>
<a id='n16313' href='#n16313'>16313</a>
<a id='n16314' href='#n16314'>16314</a>
<a id='n16315' href='#n16315'>16315</a>
<a id='n16316' href='#n16316'>16316</a>
<a id='n16317' href='#n16317'>16317</a>
<a id='n16318' href='#n16318'>16318</a>
<a id='n16319' href='#n16319'>16319</a>
<a id='n16320' href='#n16320'>16320</a>
<a id='n16321' href='#n16321'>16321</a>
<a id='n16322' href='#n16322'>16322</a>
<a id='n16323' href='#n16323'>16323</a>
<a id='n16324' href='#n16324'>16324</a>
<a id='n16325' href='#n16325'>16325</a>
<a id='n16326' href='#n16326'>16326</a>
<a id='n16327' href='#n16327'>16327</a>
<a id='n16328' href='#n16328'>16328</a>
<a id='n16329' href='#n16329'>16329</a>
<a id='n16330' href='#n16330'>16330</a>
<a id='n16331' href='#n16331'>16331</a>
<a id='n16332' href='#n16332'>16332</a>
<a id='n16333' href='#n16333'>16333</a>
<a id='n16334' href='#n16334'>16334</a>
<a id='n16335' href='#n16335'>16335</a>
<a id='n16336' href='#n16336'>16336</a>
<a id='n16337' href='#n16337'>16337</a>
<a id='n16338' href='#n16338'>16338</a>
<a id='n16339' href='#n16339'>16339</a>
<a id='n16340' href='#n16340'>16340</a>
<a id='n16341' href='#n16341'>16341</a>
<a id='n16342' href='#n16342'>16342</a>
<a id='n16343' href='#n16343'>16343</a>
<a id='n16344' href='#n16344'>16344</a>
<a id='n16345' href='#n16345'>16345</a>
<a id='n16346' href='#n16346'>16346</a>
<a id='n16347' href='#n16347'>16347</a>
<a id='n16348' href='#n16348'>16348</a>
<a id='n16349' href='#n16349'>16349</a>
<a id='n16350' href='#n16350'>16350</a>
<a id='n16351' href='#n16351'>16351</a>
<a id='n16352' href='#n16352'>16352</a>
<a id='n16353' href='#n16353'>16353</a>
<a id='n16354' href='#n16354'>16354</a>
<a id='n16355' href='#n16355'>16355</a>
<a id='n16356' href='#n16356'>16356</a>
<a id='n16357' href='#n16357'>16357</a>
<a id='n16358' href='#n16358'>16358</a>
<a id='n16359' href='#n16359'>16359</a>
<a id='n16360' href='#n16360'>16360</a>
<a id='n16361' href='#n16361'>16361</a>
<a id='n16362' href='#n16362'>16362</a>
<a id='n16363' href='#n16363'>16363</a>
<a id='n16364' href='#n16364'>16364</a>
<a id='n16365' href='#n16365'>16365</a>
<a id='n16366' href='#n16366'>16366</a>
<a id='n16367' href='#n16367'>16367</a>
<a id='n16368' href='#n16368'>16368</a>
<a id='n16369' href='#n16369'>16369</a>
<a id='n16370' href='#n16370'>16370</a>
<a id='n16371' href='#n16371'>16371</a>
<a id='n16372' href='#n16372'>16372</a>
<a id='n16373' href='#n16373'>16373</a>
<a id='n16374' href='#n16374'>16374</a>
<a id='n16375' href='#n16375'>16375</a>
<a id='n16376' href='#n16376'>16376</a>
<a id='n16377' href='#n16377'>16377</a>
<a id='n16378' href='#n16378'>16378</a>
<a id='n16379' href='#n16379'>16379</a>
<a id='n16380' href='#n16380'>16380</a>
<a id='n16381' href='#n16381'>16381</a>
<a id='n16382' href='#n16382'>16382</a>
<a id='n16383' href='#n16383'>16383</a>
<a id='n16384' href='#n16384'>16384</a>
<a id='n16385' href='#n16385'>16385</a>
<a id='n16386' href='#n16386'>16386</a>
<a id='n16387' href='#n16387'>16387</a>
<a id='n16388' href='#n16388'>16388</a>
<a id='n16389' href='#n16389'>16389</a>
<a id='n16390' href='#n16390'>16390</a>
<a id='n16391' href='#n16391'>16391</a>
<a id='n16392' href='#n16392'>16392</a>
<a id='n16393' href='#n16393'>16393</a>
<a id='n16394' href='#n16394'>16394</a>
<a id='n16395' href='#n16395'>16395</a>
<a id='n16396' href='#n16396'>16396</a>
<a id='n16397' href='#n16397'>16397</a>
<a id='n16398' href='#n16398'>16398</a>
<a id='n16399' href='#n16399'>16399</a>
<a id='n16400' href='#n16400'>16400</a>
<a id='n16401' href='#n16401'>16401</a>
<a id='n16402' href='#n16402'>16402</a>
<a id='n16403' href='#n16403'>16403</a>
<a id='n16404' href='#n16404'>16404</a>
<a id='n16405' href='#n16405'>16405</a>
<a id='n16406' href='#n16406'>16406</a>
<a id='n16407' href='#n16407'>16407</a>
<a id='n16408' href='#n16408'>16408</a>
<a id='n16409' href='#n16409'>16409</a>
<a id='n16410' href='#n16410'>16410</a>
<a id='n16411' href='#n16411'>16411</a>
<a id='n16412' href='#n16412'>16412</a>
<a id='n16413' href='#n16413'>16413</a>
<a id='n16414' href='#n16414'>16414</a>
<a id='n16415' href='#n16415'>16415</a>
<a id='n16416' href='#n16416'>16416</a>
<a id='n16417' href='#n16417'>16417</a>
<a id='n16418' href='#n16418'>16418</a>
<a id='n16419' href='#n16419'>16419</a>
<a id='n16420' href='#n16420'>16420</a>
<a id='n16421' href='#n16421'>16421</a>
<a id='n16422' href='#n16422'>16422</a>
<a id='n16423' href='#n16423'>16423</a>
<a id='n16424' href='#n16424'>16424</a>
<a id='n16425' href='#n16425'>16425</a>
<a id='n16426' href='#n16426'>16426</a>
<a id='n16427' href='#n16427'>16427</a>
<a id='n16428' href='#n16428'>16428</a>
<a id='n16429' href='#n16429'>16429</a>
<a id='n16430' href='#n16430'>16430</a>
<a id='n16431' href='#n16431'>16431</a>
<a id='n16432' href='#n16432'>16432</a>
<a id='n16433' href='#n16433'>16433</a>
<a id='n16434' href='#n16434'>16434</a>
<a id='n16435' href='#n16435'>16435</a>
<a id='n16436' href='#n16436'>16436</a>
<a id='n16437' href='#n16437'>16437</a>
<a id='n16438' href='#n16438'>16438</a>
<a id='n16439' href='#n16439'>16439</a>
<a id='n16440' href='#n16440'>16440</a>
<a id='n16441' href='#n16441'>16441</a>
<a id='n16442' href='#n16442'>16442</a>
<a id='n16443' href='#n16443'>16443</a>
<a id='n16444' href='#n16444'>16444</a>
<a id='n16445' href='#n16445'>16445</a>
<a id='n16446' href='#n16446'>16446</a>
<a id='n16447' href='#n16447'>16447</a>
<a id='n16448' href='#n16448'>16448</a>
<a id='n16449' href='#n16449'>16449</a>
<a id='n16450' href='#n16450'>16450</a>
<a id='n16451' href='#n16451'>16451</a>
<a id='n16452' href='#n16452'>16452</a>
<a id='n16453' href='#n16453'>16453</a>
<a id='n16454' href='#n16454'>16454</a>
<a id='n16455' href='#n16455'>16455</a>
<a id='n16456' href='#n16456'>16456</a>
<a id='n16457' href='#n16457'>16457</a>
<a id='n16458' href='#n16458'>16458</a>
<a id='n16459' href='#n16459'>16459</a>
<a id='n16460' href='#n16460'>16460</a>
<a id='n16461' href='#n16461'>16461</a>
<a id='n16462' href='#n16462'>16462</a>
<a id='n16463' href='#n16463'>16463</a>
<a id='n16464' href='#n16464'>16464</a>
<a id='n16465' href='#n16465'>16465</a>
<a id='n16466' href='#n16466'>16466</a>
<a id='n16467' href='#n16467'>16467</a>
<a id='n16468' href='#n16468'>16468</a>
<a id='n16469' href='#n16469'>16469</a>
<a id='n16470' href='#n16470'>16470</a>
<a id='n16471' href='#n16471'>16471</a>
<a id='n16472' href='#n16472'>16472</a>
<a id='n16473' href='#n16473'>16473</a>
<a id='n16474' href='#n16474'>16474</a>
<a id='n16475' href='#n16475'>16475</a>
<a id='n16476' href='#n16476'>16476</a>
<a id='n16477' href='#n16477'>16477</a>
<a id='n16478' href='#n16478'>16478</a>
<a id='n16479' href='#n16479'>16479</a>
<a id='n16480' href='#n16480'>16480</a>
<a id='n16481' href='#n16481'>16481</a>
<a id='n16482' href='#n16482'>16482</a>
<a id='n16483' href='#n16483'>16483</a>
<a id='n16484' href='#n16484'>16484</a>
<a id='n16485' href='#n16485'>16485</a>
<a id='n16486' href='#n16486'>16486</a>
<a id='n16487' href='#n16487'>16487</a>
<a id='n16488' href='#n16488'>16488</a>
<a id='n16489' href='#n16489'>16489</a>
<a id='n16490' href='#n16490'>16490</a>
<a id='n16491' href='#n16491'>16491</a>
<a id='n16492' href='#n16492'>16492</a>
<a id='n16493' href='#n16493'>16493</a>
<a id='n16494' href='#n16494'>16494</a>
<a id='n16495' href='#n16495'>16495</a>
<a id='n16496' href='#n16496'>16496</a>
<a id='n16497' href='#n16497'>16497</a>
<a id='n16498' href='#n16498'>16498</a>
<a id='n16499' href='#n16499'>16499</a>
<a id='n16500' href='#n16500'>16500</a>
<a id='n16501' href='#n16501'>16501</a>
<a id='n16502' href='#n16502'>16502</a>
<a id='n16503' href='#n16503'>16503</a>
<a id='n16504' href='#n16504'>16504</a>
<a id='n16505' href='#n16505'>16505</a>
<a id='n16506' href='#n16506'>16506</a>
<a id='n16507' href='#n16507'>16507</a>
<a id='n16508' href='#n16508'>16508</a>
<a id='n16509' href='#n16509'>16509</a>
<a id='n16510' href='#n16510'>16510</a>
<a id='n16511' href='#n16511'>16511</a>
<a id='n16512' href='#n16512'>16512</a>
<a id='n16513' href='#n16513'>16513</a>
<a id='n16514' href='#n16514'>16514</a>
<a id='n16515' href='#n16515'>16515</a>
<a id='n16516' href='#n16516'>16516</a>
<a id='n16517' href='#n16517'>16517</a>
<a id='n16518' href='#n16518'>16518</a>
<a id='n16519' href='#n16519'>16519</a>
<a id='n16520' href='#n16520'>16520</a>
<a id='n16521' href='#n16521'>16521</a>
<a id='n16522' href='#n16522'>16522</a>
<a id='n16523' href='#n16523'>16523</a>
<a id='n16524' href='#n16524'>16524</a>
<a id='n16525' href='#n16525'>16525</a>
<a id='n16526' href='#n16526'>16526</a>
<a id='n16527' href='#n16527'>16527</a>
<a id='n16528' href='#n16528'>16528</a>
<a id='n16529' href='#n16529'>16529</a>
<a id='n16530' href='#n16530'>16530</a>
<a id='n16531' href='#n16531'>16531</a>
<a id='n16532' href='#n16532'>16532</a>
<a id='n16533' href='#n16533'>16533</a>
<a id='n16534' href='#n16534'>16534</a>
<a id='n16535' href='#n16535'>16535</a>
<a id='n16536' href='#n16536'>16536</a>
<a id='n16537' href='#n16537'>16537</a>
<a id='n16538' href='#n16538'>16538</a>
<a id='n16539' href='#n16539'>16539</a>
<a id='n16540' href='#n16540'>16540</a>
<a id='n16541' href='#n16541'>16541</a>
<a id='n16542' href='#n16542'>16542</a>
<a id='n16543' href='#n16543'>16543</a>
<a id='n16544' href='#n16544'>16544</a>
<a id='n16545' href='#n16545'>16545</a>
<a id='n16546' href='#n16546'>16546</a>
<a id='n16547' href='#n16547'>16547</a>
<a id='n16548' href='#n16548'>16548</a>
<a id='n16549' href='#n16549'>16549</a>
<a id='n16550' href='#n16550'>16550</a>
<a id='n16551' href='#n16551'>16551</a>
<a id='n16552' href='#n16552'>16552</a>
<a id='n16553' href='#n16553'>16553</a>
<a id='n16554' href='#n16554'>16554</a>
<a id='n16555' href='#n16555'>16555</a>
<a id='n16556' href='#n16556'>16556</a>
<a id='n16557' href='#n16557'>16557</a>
<a id='n16558' href='#n16558'>16558</a>
<a id='n16559' href='#n16559'>16559</a>
<a id='n16560' href='#n16560'>16560</a>
<a id='n16561' href='#n16561'>16561</a>
<a id='n16562' href='#n16562'>16562</a>
<a id='n16563' href='#n16563'>16563</a>
<a id='n16564' href='#n16564'>16564</a>
<a id='n16565' href='#n16565'>16565</a>
<a id='n16566' href='#n16566'>16566</a>
<a id='n16567' href='#n16567'>16567</a>
<a id='n16568' href='#n16568'>16568</a>
<a id='n16569' href='#n16569'>16569</a>
<a id='n16570' href='#n16570'>16570</a>
<a id='n16571' href='#n16571'>16571</a>
<a id='n16572' href='#n16572'>16572</a>
<a id='n16573' href='#n16573'>16573</a>
<a id='n16574' href='#n16574'>16574</a>
<a id='n16575' href='#n16575'>16575</a>
<a id='n16576' href='#n16576'>16576</a>
<a id='n16577' href='#n16577'>16577</a>
<a id='n16578' href='#n16578'>16578</a>
<a id='n16579' href='#n16579'>16579</a>
<a id='n16580' href='#n16580'>16580</a>
<a id='n16581' href='#n16581'>16581</a>
<a id='n16582' href='#n16582'>16582</a>
<a id='n16583' href='#n16583'>16583</a>
<a id='n16584' href='#n16584'>16584</a>
<a id='n16585' href='#n16585'>16585</a>
<a id='n16586' href='#n16586'>16586</a>
<a id='n16587' href='#n16587'>16587</a>
<a id='n16588' href='#n16588'>16588</a>
<a id='n16589' href='#n16589'>16589</a>
<a id='n16590' href='#n16590'>16590</a>
<a id='n16591' href='#n16591'>16591</a>
<a id='n16592' href='#n16592'>16592</a>
<a id='n16593' href='#n16593'>16593</a>
<a id='n16594' href='#n16594'>16594</a>
<a id='n16595' href='#n16595'>16595</a>
<a id='n16596' href='#n16596'>16596</a>
<a id='n16597' href='#n16597'>16597</a>
<a id='n16598' href='#n16598'>16598</a>
<a id='n16599' href='#n16599'>16599</a>
<a id='n16600' href='#n16600'>16600</a>
<a id='n16601' href='#n16601'>16601</a>
<a id='n16602' href='#n16602'>16602</a>
<a id='n16603' href='#n16603'>16603</a>
<a id='n16604' href='#n16604'>16604</a>
<a id='n16605' href='#n16605'>16605</a>
<a id='n16606' href='#n16606'>16606</a>
<a id='n16607' href='#n16607'>16607</a>
<a id='n16608' href='#n16608'>16608</a>
<a id='n16609' href='#n16609'>16609</a>
<a id='n16610' href='#n16610'>16610</a>
<a id='n16611' href='#n16611'>16611</a>
<a id='n16612' href='#n16612'>16612</a>
<a id='n16613' href='#n16613'>16613</a>
<a id='n16614' href='#n16614'>16614</a>
<a id='n16615' href='#n16615'>16615</a>
<a id='n16616' href='#n16616'>16616</a>
<a id='n16617' href='#n16617'>16617</a>
<a id='n16618' href='#n16618'>16618</a>
<a id='n16619' href='#n16619'>16619</a>
<a id='n16620' href='#n16620'>16620</a>
<a id='n16621' href='#n16621'>16621</a>
<a id='n16622' href='#n16622'>16622</a>
<a id='n16623' href='#n16623'>16623</a>
<a id='n16624' href='#n16624'>16624</a>
<a id='n16625' href='#n16625'>16625</a>
<a id='n16626' href='#n16626'>16626</a>
<a id='n16627' href='#n16627'>16627</a>
<a id='n16628' href='#n16628'>16628</a>
<a id='n16629' href='#n16629'>16629</a>
<a id='n16630' href='#n16630'>16630</a>
<a id='n16631' href='#n16631'>16631</a>
<a id='n16632' href='#n16632'>16632</a>
<a id='n16633' href='#n16633'>16633</a>
<a id='n16634' href='#n16634'>16634</a>
<a id='n16635' href='#n16635'>16635</a>
<a id='n16636' href='#n16636'>16636</a>
<a id='n16637' href='#n16637'>16637</a>
<a id='n16638' href='#n16638'>16638</a>
<a id='n16639' href='#n16639'>16639</a>
<a id='n16640' href='#n16640'>16640</a>
<a id='n16641' href='#n16641'>16641</a>
<a id='n16642' href='#n16642'>16642</a>
<a id='n16643' href='#n16643'>16643</a>
<a id='n16644' href='#n16644'>16644</a>
<a id='n16645' href='#n16645'>16645</a>
<a id='n16646' href='#n16646'>16646</a>
<a id='n16647' href='#n16647'>16647</a>
<a id='n16648' href='#n16648'>16648</a>
<a id='n16649' href='#n16649'>16649</a>
<a id='n16650' href='#n16650'>16650</a>
<a id='n16651' href='#n16651'>16651</a>
<a id='n16652' href='#n16652'>16652</a>
<a id='n16653' href='#n16653'>16653</a>
<a id='n16654' href='#n16654'>16654</a>
<a id='n16655' href='#n16655'>16655</a>
<a id='n16656' href='#n16656'>16656</a>
<a id='n16657' href='#n16657'>16657</a>
<a id='n16658' href='#n16658'>16658</a>
<a id='n16659' href='#n16659'>16659</a>
<a id='n16660' href='#n16660'>16660</a>
<a id='n16661' href='#n16661'>16661</a>
<a id='n16662' href='#n16662'>16662</a>
<a id='n16663' href='#n16663'>16663</a>
<a id='n16664' href='#n16664'>16664</a>
<a id='n16665' href='#n16665'>16665</a>
<a id='n16666' href='#n16666'>16666</a>
<a id='n16667' href='#n16667'>16667</a>
<a id='n16668' href='#n16668'>16668</a>
<a id='n16669' href='#n16669'>16669</a>
<a id='n16670' href='#n16670'>16670</a>
<a id='n16671' href='#n16671'>16671</a>
<a id='n16672' href='#n16672'>16672</a>
<a id='n16673' href='#n16673'>16673</a>
<a id='n16674' href='#n16674'>16674</a>
<a id='n16675' href='#n16675'>16675</a>
<a id='n16676' href='#n16676'>16676</a>
<a id='n16677' href='#n16677'>16677</a>
<a id='n16678' href='#n16678'>16678</a>
<a id='n16679' href='#n16679'>16679</a>
<a id='n16680' href='#n16680'>16680</a>
<a id='n16681' href='#n16681'>16681</a>
<a id='n16682' href='#n16682'>16682</a>
<a id='n16683' href='#n16683'>16683</a>
<a id='n16684' href='#n16684'>16684</a>
<a id='n16685' href='#n16685'>16685</a>
<a id='n16686' href='#n16686'>16686</a>
<a id='n16687' href='#n16687'>16687</a>
<a id='n16688' href='#n16688'>16688</a>
<a id='n16689' href='#n16689'>16689</a>
<a id='n16690' href='#n16690'>16690</a>
<a id='n16691' href='#n16691'>16691</a>
<a id='n16692' href='#n16692'>16692</a>
<a id='n16693' href='#n16693'>16693</a>
<a id='n16694' href='#n16694'>16694</a>
<a id='n16695' href='#n16695'>16695</a>
<a id='n16696' href='#n16696'>16696</a>
<a id='n16697' href='#n16697'>16697</a>
<a id='n16698' href='#n16698'>16698</a>
<a id='n16699' href='#n16699'>16699</a>
<a id='n16700' href='#n16700'>16700</a>
<a id='n16701' href='#n16701'>16701</a>
<a id='n16702' href='#n16702'>16702</a>
<a id='n16703' href='#n16703'>16703</a>
<a id='n16704' href='#n16704'>16704</a>
<a id='n16705' href='#n16705'>16705</a>
<a id='n16706' href='#n16706'>16706</a>
<a id='n16707' href='#n16707'>16707</a>
<a id='n16708' href='#n16708'>16708</a>
<a id='n16709' href='#n16709'>16709</a>
<a id='n16710' href='#n16710'>16710</a>
<a id='n16711' href='#n16711'>16711</a>
<a id='n16712' href='#n16712'>16712</a>
<a id='n16713' href='#n16713'>16713</a>
<a id='n16714' href='#n16714'>16714</a>
<a id='n16715' href='#n16715'>16715</a>
<a id='n16716' href='#n16716'>16716</a>
<a id='n16717' href='#n16717'>16717</a>
<a id='n16718' href='#n16718'>16718</a>
<a id='n16719' href='#n16719'>16719</a>
<a id='n16720' href='#n16720'>16720</a>
<a id='n16721' href='#n16721'>16721</a>
<a id='n16722' href='#n16722'>16722</a>
<a id='n16723' href='#n16723'>16723</a>
<a id='n16724' href='#n16724'>16724</a>
<a id='n16725' href='#n16725'>16725</a>
<a id='n16726' href='#n16726'>16726</a>
<a id='n16727' href='#n16727'>16727</a>
<a id='n16728' href='#n16728'>16728</a>
<a id='n16729' href='#n16729'>16729</a>
<a id='n16730' href='#n16730'>16730</a>
<a id='n16731' href='#n16731'>16731</a>
<a id='n16732' href='#n16732'>16732</a>
<a id='n16733' href='#n16733'>16733</a>
<a id='n16734' href='#n16734'>16734</a>
<a id='n16735' href='#n16735'>16735</a>
<a id='n16736' href='#n16736'>16736</a>
<a id='n16737' href='#n16737'>16737</a>
<a id='n16738' href='#n16738'>16738</a>
<a id='n16739' href='#n16739'>16739</a>
<a id='n16740' href='#n16740'>16740</a>
<a id='n16741' href='#n16741'>16741</a>
<a id='n16742' href='#n16742'>16742</a>
<a id='n16743' href='#n16743'>16743</a>
<a id='n16744' href='#n16744'>16744</a>
<a id='n16745' href='#n16745'>16745</a>
<a id='n16746' href='#n16746'>16746</a>
<a id='n16747' href='#n16747'>16747</a>
<a id='n16748' href='#n16748'>16748</a>
<a id='n16749' href='#n16749'>16749</a>
<a id='n16750' href='#n16750'>16750</a>
<a id='n16751' href='#n16751'>16751</a>
<a id='n16752' href='#n16752'>16752</a>
<a id='n16753' href='#n16753'>16753</a>
<a id='n16754' href='#n16754'>16754</a>
<a id='n16755' href='#n16755'>16755</a>
<a id='n16756' href='#n16756'>16756</a>
<a id='n16757' href='#n16757'>16757</a>
<a id='n16758' href='#n16758'>16758</a>
<a id='n16759' href='#n16759'>16759</a>
<a id='n16760' href='#n16760'>16760</a>
<a id='n16761' href='#n16761'>16761</a>
<a id='n16762' href='#n16762'>16762</a>
<a id='n16763' href='#n16763'>16763</a>
<a id='n16764' href='#n16764'>16764</a>
<a id='n16765' href='#n16765'>16765</a>
<a id='n16766' href='#n16766'>16766</a>
<a id='n16767' href='#n16767'>16767</a>
<a id='n16768' href='#n16768'>16768</a>
<a id='n16769' href='#n16769'>16769</a>
<a id='n16770' href='#n16770'>16770</a>
<a id='n16771' href='#n16771'>16771</a>
<a id='n16772' href='#n16772'>16772</a>
<a id='n16773' href='#n16773'>16773</a>
<a id='n16774' href='#n16774'>16774</a>
<a id='n16775' href='#n16775'>16775</a>
<a id='n16776' href='#n16776'>16776</a>
<a id='n16777' href='#n16777'>16777</a>
<a id='n16778' href='#n16778'>16778</a>
<a id='n16779' href='#n16779'>16779</a>
<a id='n16780' href='#n16780'>16780</a>
<a id='n16781' href='#n16781'>16781</a>
<a id='n16782' href='#n16782'>16782</a>
<a id='n16783' href='#n16783'>16783</a>
<a id='n16784' href='#n16784'>16784</a>
<a id='n16785' href='#n16785'>16785</a>
<a id='n16786' href='#n16786'>16786</a>
<a id='n16787' href='#n16787'>16787</a>
<a id='n16788' href='#n16788'>16788</a>
<a id='n16789' href='#n16789'>16789</a>
<a id='n16790' href='#n16790'>16790</a>
<a id='n16791' href='#n16791'>16791</a>
<a id='n16792' href='#n16792'>16792</a>
<a id='n16793' href='#n16793'>16793</a>
<a id='n16794' href='#n16794'>16794</a>
<a id='n16795' href='#n16795'>16795</a>
<a id='n16796' href='#n16796'>16796</a>
<a id='n16797' href='#n16797'>16797</a>
<a id='n16798' href='#n16798'>16798</a>
<a id='n16799' href='#n16799'>16799</a>
<a id='n16800' href='#n16800'>16800</a>
<a id='n16801' href='#n16801'>16801</a>
<a id='n16802' href='#n16802'>16802</a>
<a id='n16803' href='#n16803'>16803</a>
<a id='n16804' href='#n16804'>16804</a>
<a id='n16805' href='#n16805'>16805</a>
<a id='n16806' href='#n16806'>16806</a>
<a id='n16807' href='#n16807'>16807</a>
<a id='n16808' href='#n16808'>16808</a>
<a id='n16809' href='#n16809'>16809</a>
<a id='n16810' href='#n16810'>16810</a>
<a id='n16811' href='#n16811'>16811</a>
<a id='n16812' href='#n16812'>16812</a>
<a id='n16813' href='#n16813'>16813</a>
<a id='n16814' href='#n16814'>16814</a>
<a id='n16815' href='#n16815'>16815</a>
<a id='n16816' href='#n16816'>16816</a>
<a id='n16817' href='#n16817'>16817</a>
<a id='n16818' href='#n16818'>16818</a>
<a id='n16819' href='#n16819'>16819</a>
<a id='n16820' href='#n16820'>16820</a>
<a id='n16821' href='#n16821'>16821</a>
<a id='n16822' href='#n16822'>16822</a>
<a id='n16823' href='#n16823'>16823</a>
<a id='n16824' href='#n16824'>16824</a>
<a id='n16825' href='#n16825'>16825</a>
<a id='n16826' href='#n16826'>16826</a>
<a id='n16827' href='#n16827'>16827</a>
<a id='n16828' href='#n16828'>16828</a>
<a id='n16829' href='#n16829'>16829</a>
<a id='n16830' href='#n16830'>16830</a>
<a id='n16831' href='#n16831'>16831</a>
<a id='n16832' href='#n16832'>16832</a>
<a id='n16833' href='#n16833'>16833</a>
<a id='n16834' href='#n16834'>16834</a>
<a id='n16835' href='#n16835'>16835</a>
<a id='n16836' href='#n16836'>16836</a>
<a id='n16837' href='#n16837'>16837</a>
<a id='n16838' href='#n16838'>16838</a>
<a id='n16839' href='#n16839'>16839</a>
<a id='n16840' href='#n16840'>16840</a>
<a id='n16841' href='#n16841'>16841</a>
<a id='n16842' href='#n16842'>16842</a>
<a id='n16843' href='#n16843'>16843</a>
<a id='n16844' href='#n16844'>16844</a>
<a id='n16845' href='#n16845'>16845</a>
<a id='n16846' href='#n16846'>16846</a>
<a id='n16847' href='#n16847'>16847</a>
<a id='n16848' href='#n16848'>16848</a>
<a id='n16849' href='#n16849'>16849</a>
<a id='n16850' href='#n16850'>16850</a>
<a id='n16851' href='#n16851'>16851</a>
<a id='n16852' href='#n16852'>16852</a>
<a id='n16853' href='#n16853'>16853</a>
<a id='n16854' href='#n16854'>16854</a>
<a id='n16855' href='#n16855'>16855</a>
<a id='n16856' href='#n16856'>16856</a>
<a id='n16857' href='#n16857'>16857</a>
<a id='n16858' href='#n16858'>16858</a>
<a id='n16859' href='#n16859'>16859</a>
<a id='n16860' href='#n16860'>16860</a>
</pre></td>
<td class='lines'><pre><code><span class="hl com">/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *</span>
<span class="hl com"> * Copyright by The HDF Group.                                               *</span>
<span class="hl com"> * Copyright by the Board of Trustees of the University of Illinois.         *</span>
<span class="hl com"> * All rights reserved.                                                      *</span>
<span class="hl com"> *                                                                           *</span>
<span class="hl com"> * This file is part of HDF5.  The full HDF5 copyright notice, including     *</span>
<span class="hl com"> * terms governing use, modification, and redistribution, is contained in    *</span>
<span class="hl com"> * the files COPYING and Copyright.html.  COPYING can be found at the root   *</span>
<span class="hl com"> * of the source code distribution tree; Copyright.html can be found at the  *</span>
<span class="hl com"> * root level of an installed copy of the electronic HDF5 document set and   *</span>
<span class="hl com"> * is linked from the top-level documents page.  It can also be found at     *</span>
<span class="hl com"> * http://hdfgroup.org/HDF5/doc/Copyright.html.  If you do not have          *</span>
<span class="hl com"> * access to either file, you may request a copy from help&#64;hdfgroup.org.     *</span>
<span class="hl com"> * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */</span>

<span class="hl com">/* Programmer:  Quincey Koziol &lt;koziol&#64;ncsa.uiuc.edu&gt;</span>
<span class="hl com"> *              Friday, February 24, 2006</span>
<span class="hl com"> */</span>
<span class="hl ppc">#include</span> <span class="hl pps">&quot;h5test.h&quot;</span><span class="hl ppc"></span>

<span class="hl com">/*</span>
<span class="hl com"> * This file needs to access private datatypes from the H5HF package.</span>
<span class="hl com"> * This file also needs to access the fractal heap testing code.</span>
<span class="hl com"> */</span>
<span class="hl ppc">#define H5HF_PACKAGE</span>
<span class="hl ppc">#define H5HF_TESTING</span>
<span class="hl ppc">#include</span> <span class="hl pps">&quot;H5HFpkg.h&quot;</span><span class="hl ppc"></span>		<span class="hl com">/* Fractal heaps			*/</span><span class="hl ppc"></span>

<span class="hl com">/* Other private headers that this test requires */</span>
<span class="hl ppc">#include</span> <span class="hl pps">&quot;H5Iprivate.h&quot;</span><span class="hl ppc"></span>		<span class="hl com">/* IDs			  		*/</span><span class="hl ppc"></span>
<span class="hl ppc">#include</span> <span class="hl pps">&quot;H5MMprivate.h&quot;</span><span class="hl ppc"></span>	<span class="hl com">/* Memory management			*/</span><span class="hl ppc"></span>
<span class="hl ppc">#include</span> <span class="hl pps">&quot;H5VMprivate.h&quot;</span><span class="hl ppc"></span>		<span class="hl com">/* Vectors and arrays 			*/</span><span class="hl ppc"></span>

<span class="hl com">/* Max. testfile name length */</span>
<span class="hl ppc">#define FHEAP_FILENAME_LEN      1024</span>

<span class="hl com">/* Object size macros */</span>
<span class="hl ppc">#define SMALL_OBJ_SIZE1         10</span>
<span class="hl ppc">#define SMALL_OBJ_SIZE2         20</span>
<span class="hl ppc">#define NUM_FILL_OBJS           11</span>

<span class="hl com">/* &quot;Small&quot; heap creation parameters */</span>
<span class="hl ppc">#define SMALL_DBLOCK_OVERHEAD 21</span>                <span class="hl com">/* Overhead for direct blocks */</span><span class="hl ppc"></span>
<span class="hl ppc">#define SMALL_CHECKSUM_DBLOCKS TRUE</span>             <span class="hl com">/* Whether to checksum direct blocks */</span><span class="hl ppc"></span>
<span class="hl ppc">#define SMALL_MAN_WIDTH   4</span>                     <span class="hl com">/* Managed obj. table width */</span><span class="hl ppc"></span>
<span class="hl ppc">#define SMALL_MAN_START_BLOCK_SIZE 512</span>          <span class="hl com">/* Managed obj. starting block size */</span><span class="hl ppc"></span>
<span class="hl ppc">#define SMALL_MAN_MAX_DIRECT_SIZE (64 * 1024)</span>   <span class="hl com">/* Managed obj. max. direct block size */</span><span class="hl ppc"></span>
<span class="hl ppc">#define SMALL_MAN_MAX_INDEX 32</span>                  <span class="hl com">/* Managed obj. # of bits for total heap size */</span><span class="hl ppc"></span>
<span class="hl ppc">#define SMALL_MAN_START_ROOT_ROWS 1</span>             <span class="hl com">/* Managed obj. starting # of root indirect block rows */</span><span class="hl ppc"></span>
<span class="hl ppc">#define SMALL_ID_LEN 0</span>                          <span class="hl com">/* &quot;Default&quot; heap ID length */</span><span class="hl ppc"></span>
<span class="hl ppc">#define SMALL_STAND_SIZE  (SMALL_MAN_MAX_DIRECT_SIZE - SMALL_DBLOCK_OVERHEAD)</span>           <span class="hl com">/* Standalone obj. min. size */</span><span class="hl ppc"></span>

<span class="hl com">/* &quot;Large&quot; heap creation parameters */</span>
<span class="hl ppc">#define LARGE_DBLOCK_OVERHEAD 21</span>                <span class="hl com">/* Overhead for direct blocks */</span><span class="hl ppc"></span>
                                                <span class="hl com">/* (coincidentally the same size as for small direct blocks) */</span>
<span class="hl ppc">#define LARGE_CHECKSUM_DBLOCKS FALSE</span>            <span class="hl com">/* Whether to checksum direct blocks */</span><span class="hl ppc"></span>
<span class="hl ppc">#define LARGE_MAN_WIDTH  32</span>                     <span class="hl com">/* Managed obj. table width */</span><span class="hl ppc"></span>
<span class="hl ppc">#define LARGE_MAN_START_BLOCK_SIZE 4096</span>         <span class="hl com">/* Managed obj. starting block size */</span><span class="hl ppc"></span>
<span class="hl ppc">#define LARGE_MAN_MAX_DIRECT_SIZE (1024 * 1024)</span> <span class="hl com">/* Managed obj. max. direct block size */</span><span class="hl ppc"></span>
<span class="hl ppc">#define LARGE_MAN_MAX_INDEX 64</span>                  <span class="hl com">/* Managed obj. # of bits for total heap size */</span><span class="hl ppc"></span>
<span class="hl ppc">#define LARGE_MAN_START_ROOT_ROWS 1</span>             <span class="hl com">/* Managed obj. starting # of root indirect block rows */</span><span class="hl ppc"></span>
<span class="hl ppc">#define LARGE_ID_LEN 0</span>                          <span class="hl com">/* &quot;Default&quot; heap ID length */</span><span class="hl ppc"></span>
<span class="hl ppc">#define LARGE_STAND_SIZE  (LARGE_MAN_MAX_DIRECT_SIZE - LARGE_DBLOCK_OVERHEAD)</span>           <span class="hl com">/* Standalone obj. min. size */</span><span class="hl ppc"></span>

<span class="hl com">/* Define this macro to enable all insertion tests */</span>
<span class="hl com">/* #define ALL_INSERT_TESTS */</span>

<span class="hl com">/* Heap metadata macros */</span>
<span class="hl ppc">#define MAX_HEAP_ID_LEN        64</span>               <span class="hl com">/* Max. # of bytes to use for heap ID */</span><span class="hl ppc"></span>
<span class="hl ppc">#define HEAP_ID_LEN             7</span>               <span class="hl com">/* # of bytes to use for heap ID */</span><span class="hl ppc"></span>
<span class="hl ppc">#define SMALL_HEAP_ID_LEN       7</span>               <span class="hl com">/* # of bytes to use for &quot;small&quot; heap's IDs */</span><span class="hl ppc"></span>
<span class="hl ppc">#define LARGE_HEAP_ID_LEN      12</span>               <span class="hl com">/* # of bytes to use for &quot;large&quot; heap's IDs */</span><span class="hl ppc"></span>
<span class="hl ppc">#define HEAP_MAX_ROOT_ROWS(fh) H5HF_get_max_root_rows(fh)</span>       <span class="hl com">/* Max. # of rows in root indirect block */</span><span class="hl ppc"></span>
<span class="hl ppc">#define DTABLE_WIDTH(fh) H5HF_get_dtable_width_test(fh)</span> <span class="hl com">/* Width of doubling table for heap */</span><span class="hl ppc"></span>
<span class="hl ppc">#define DTABLE_MAX_DROWS(fh) H5HF_get_dtable_max_drows_test(fh)</span> <span class="hl com">/* Max. # of direct block rows in any indirect block */</span><span class="hl ppc"></span>
<span class="hl ppc">#define IBLOCK_MAX_DROWS(fh, pos) H5HF_get_iblock_max_drows_test(fh, pos)</span> <span class="hl com">/* Max. # of direct block rows in a indirect block */</span><span class="hl ppc"></span>
<span class="hl ppc">#define DBLOCK_SIZE(fh, r) H5HF_get_dblock_size_test(fh, r)</span>     <span class="hl com">/* Size of a direct block in a given row */</span><span class="hl ppc"></span>
<span class="hl ppc">#define DBLOCK_FREE(fh, r) H5HF_get_dblock_free_test(fh, r)</span>     <span class="hl com">/* Free space in a direct block of a given row */</span><span class="hl ppc"></span>

<span class="hl kwb">const char</span> <span class="hl opt">*</span>FILENAME<span class="hl opt">[] = {</span>
    <span class="hl str">&quot;fheap&quot;</span><span class="hl opt">,</span>
    NULL
<span class="hl opt">};</span>

<span class="hl com">/* Types of tests to perform */</span>
<span class="hl kwc">typedef</span> <span class="hl kwb">enum</span> <span class="hl opt">{</span>
    FHEAP_TEST_NORMAL<span class="hl opt">,</span>          <span class="hl com">/* &quot;Normal&quot; test, with no testing parameters set */</span>
    FHEAP_TEST_REOPEN<span class="hl opt">,</span>          <span class="hl com">/* Set the reopen_heap flag */</span>
    FHEAP_TEST_NTESTS           <span class="hl com">/* The number of test types, must be last */</span>
<span class="hl opt">}</span> fheap_test_type_t<span class="hl opt">;</span>

<span class="hl com">/* Order to delete objects */</span>
<span class="hl kwc">typedef</span> <span class="hl kwb">enum</span> <span class="hl opt">{</span>
    FHEAP_DEL_FORWARD<span class="hl opt">,</span>          <span class="hl com">/* Delete objects from 0 -&gt; nobjs */</span>
    FHEAP_DEL_REVERSE<span class="hl opt">,</span>          <span class="hl com">/* Delete objects from nobjs -&gt; 0 */</span>
    FHEAP_DEL_HEAP<span class="hl opt">,</span>             <span class="hl com">/* Delete entire heap at once */</span>
    FHEAP_DEL_NDIRS             <span class="hl com">/* The number of different deletion orders, must be last */</span>
<span class="hl opt">}</span> fheap_test_del_dir_t<span class="hl opt">;</span>

<span class="hl com">/* Order to delete objects */</span>
<span class="hl kwc">typedef</span> <span class="hl kwb">enum</span> <span class="hl opt">{</span>
    FHEAP_DEL_DRAIN_ALL<span class="hl opt">,</span>        <span class="hl com">/* Don't drain half of objects first */</span>
    FHEAP_DEL_DRAIN_HALF<span class="hl opt">,</span>       <span class="hl com">/* Don't drain half of objects first */</span>
    FHEAP_DEL_DRAIN_N           <span class="hl com">/* The number of different ways to drain, must be last */</span>
<span class="hl opt">}</span> fheap_test_del_drain_t<span class="hl opt">;</span>

<span class="hl com">/* Size of objects for &quot;bulk&quot; filling heap blocks */</span>
<span class="hl kwc">typedef</span> <span class="hl kwb">enum</span> <span class="hl opt">{</span>
    FHEAP_TEST_FILL_LARGE<span class="hl opt">,</span>      <span class="hl com">/* Fill heap blocks with &quot;large&quot; objects */</span>
    FHEAP_TEST_FILL_SINGLE<span class="hl opt">,</span>     <span class="hl com">/* Fill heap blocks with single object */</span>
    FHEAP_TEST_FILL_N           <span class="hl com">/* The number of different ways to test filling heap blocks, must be last */</span>
<span class="hl opt">}</span> fheap_test_fill_t<span class="hl opt">;</span>

<span class="hl com">/* Whether to compress blocks (during random tests) */</span>
<span class="hl kwc">typedef</span> <span class="hl kwb">enum</span> <span class="hl opt">{</span>
    FHEAP_TEST_NO_COMPRESS<span class="hl opt">,</span>     <span class="hl com">/* Don't compress direct blocks */</span>
    FHEAP_TEST_COMPRESS<span class="hl opt">,</span>        <span class="hl com">/* Compress direct blocks */</span>
    FHEAP_TEST_COMP_N           <span class="hl com">/* The number of different ways to test compressing heap blocks, must be last */</span>
<span class="hl opt">}</span> fheap_test_comp_t<span class="hl opt">;</span>

<span class="hl com">/* Testing parameters */</span>
<span class="hl kwc">typedef</span> <span class="hl kwb">struct</span> fheap_test_param_t <span class="hl opt">{</span>
    fheap_test_type_t reopen_heap<span class="hl opt">;</span>      <span class="hl com">/* Whether to re-open the heap during the test */</span>
    fheap_test_del_dir_t del_dir<span class="hl opt">;</span>       <span class="hl com">/* Whether to delete objects forward or reverse */</span>
    fheap_test_del_drain_t drain_half<span class="hl opt">;</span>  <span class="hl com">/* Whether to drain half of the objects &amp; refill, when deleting objects */</span>
    fheap_test_fill_t fill<span class="hl opt">;</span>             <span class="hl com">/* How to &quot;bulk&quot; fill heap blocks */</span>
    <span class="hl kwb">size_t</span> actual_id_len<span class="hl opt">;</span>               <span class="hl com">/* The actual length of heap IDs for a test */</span>
    fheap_test_comp_t comp<span class="hl opt">;</span>             <span class="hl com">/* Whether to compress the blocks or not */</span>
<span class="hl opt">}</span> fheap_test_param_t<span class="hl opt">;</span>

<span class="hl com">/* Heap state information */</span>
<span class="hl kwc">typedef</span> <span class="hl kwb">struct</span> fheap_heap_state_t <span class="hl opt">{</span>
    <span class="hl kwb">size_t</span>      man_nobjs<span class="hl opt">;</span>              <span class="hl com">/* # of managed objects within heap */</span>
    hsize_t     man_size<span class="hl opt">;</span>               <span class="hl com">/* Size of managed object heap */</span>
    hsize_t     man_alloc_size<span class="hl opt">;</span>         <span class="hl com">/* Size of managed object heap allocated */</span>
    hsize_t     man_free_space<span class="hl opt">;</span>         <span class="hl com">/* Managed object free space within heap */</span>
    <span class="hl kwb">size_t</span>      huge_nobjs<span class="hl opt">;</span>             <span class="hl com">/* # of 'huge' objects within heap */</span>
    hsize_t     huge_size<span class="hl opt">;</span>              <span class="hl com">/* Size of 'huge' object heap */</span>
    <span class="hl kwb">size_t</span>      tiny_nobjs<span class="hl opt">;</span>             <span class="hl com">/* # of 'tiny' objects within heap */</span>
    hsize_t     tiny_size<span class="hl opt">;</span>              <span class="hl com">/* Size of 'tiny' object heap */</span>
<span class="hl opt">}</span> fheap_heap_state_t<span class="hl opt">;</span>

<span class="hl com">/* Heap IDs to retain */</span>
<span class="hl kwc">typedef</span> <span class="hl kwb">struct</span> fheap_heap_ids_t <span class="hl opt">{</span>
    <span class="hl kwb">size_t</span>      num_ids<span class="hl opt">;</span>        <span class="hl com">/* # of heap IDs in array */</span>
    <span class="hl kwb">size_t</span>      alloc_ids<span class="hl opt">;</span>      <span class="hl com">/* # of heap IDs allocated in array */</span>
    <span class="hl kwb">unsigned char</span> <span class="hl opt">*</span>ids<span class="hl opt">;</span>         <span class="hl com">/* Array of object heap IDs */</span>
    <span class="hl kwb">size_t</span> <span class="hl opt">*</span>lens<span class="hl opt">;</span>               <span class="hl com">/* Array of object lengths */</span>
    <span class="hl kwb">size_t</span> <span class="hl opt">*</span>offs<span class="hl opt">;</span>               <span class="hl com">/* Array of object offsets (in global shared write buffer) */</span>
<span class="hl opt">}</span> fheap_heap_ids_t<span class="hl opt">;</span>

<span class="hl com">/* Local variables */</span>
<span class="hl kwb">unsigned char</span> <span class="hl opt">*</span>shared_wobj_g<span class="hl opt">;</span>   <span class="hl com">/* Pointer to shared write buffer for objects */</span>
<span class="hl kwb">unsigned char</span> <span class="hl opt">*</span>shared_robj_g<span class="hl opt">;</span>   <span class="hl com">/* Pointer to shared read buffer for objects */</span>
<span class="hl kwb">size_t</span> shared_obj_size_g<span class="hl opt">;</span>       <span class="hl com">/* Size of shared objects */</span>
<span class="hl kwb">unsigned char</span> <span class="hl opt">*</span>shared_ids_g <span class="hl opt">=</span> NULL<span class="hl opt">;</span>     <span class="hl com">/* Array of shared object heap IDs */</span>
<span class="hl kwb">size_t</span> <span class="hl opt">*</span>shared_lens_g <span class="hl opt">=</span> NULL<span class="hl opt">;</span>   <span class="hl com">/* Array of shared object lengths */</span>
<span class="hl kwb">size_t</span> <span class="hl opt">*</span>shared_offs_g <span class="hl opt">=</span> NULL<span class="hl opt">;</span>   <span class="hl com">/* Array of shared object offsets */</span>
<span class="hl kwb">size_t</span> shared_alloc_ids_g <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>  <span class="hl com">/* # of shared heap IDs allocated in array */</span>

<span class="hl com">/* Local routines */</span>
<span class="hl kwb">static int</span> <span class="hl kwd">init_small_cparam</span><span class="hl opt">(</span>H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">);</span>
<span class="hl kwb">static int</span> <span class="hl kwd">init_large_cparam</span><span class="hl opt">(</span>H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">);</span>
<span class="hl kwb">static int</span> <span class="hl kwd">check_stats</span><span class="hl opt">(</span><span class="hl kwb">const</span> H5HF_t <span class="hl opt">*</span>fh<span class="hl opt">,</span> <span class="hl kwb">const</span> fheap_heap_state_t <span class="hl opt">*</span>state<span class="hl opt">);</span>
<span class="hl kwb">static int</span> <span class="hl kwd">del_objs</span><span class="hl opt">(</span>H5F_t <span class="hl opt">*</span>f<span class="hl opt">,</span> hid_t dxpl<span class="hl opt">,</span> H5HF_t <span class="hl opt">**</span>fh<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">,</span>
    fheap_heap_state_t <span class="hl opt">*</span>state<span class="hl opt">,</span> fheap_heap_ids_t <span class="hl opt">*</span>keep_ids<span class="hl opt">);</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	init_small_cparam</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Initialize heap creation parameter structure with small</span>
<span class="hl com"> *              settings</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Tuesday, March 21, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static int</span>
<span class="hl kwd">init_small_cparam</span><span class="hl opt">(</span>H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    <span class="hl com">/* Wipe out background */</span>
    <span class="hl kwd">HDmemset</span><span class="hl opt">(</span>cparam<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>H5HF_create_t<span class="hl opt">));</span>

    <span class="hl com">/* General parameters */</span>
    cparam<span class="hl opt">-&gt;</span>id_len <span class="hl opt">=</span> SMALL_ID_LEN<span class="hl opt">;</span>
    cparam<span class="hl opt">-&gt;</span>max_man_size <span class="hl opt">=</span> SMALL_STAND_SIZE<span class="hl opt">;</span>
    cparam<span class="hl opt">-&gt;</span>checksum_dblocks <span class="hl opt">=</span> SMALL_CHECKSUM_DBLOCKS<span class="hl opt">;</span>

    <span class="hl com">/* Managed object doubling-table parameters */</span>
    cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">=</span> SMALL_MAN_WIDTH<span class="hl opt">;</span>
    cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>start_block_size <span class="hl opt">=</span> SMALL_MAN_START_BLOCK_SIZE<span class="hl opt">;</span>
    cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>max_direct_size <span class="hl opt">=</span> SMALL_MAN_MAX_DIRECT_SIZE<span class="hl opt">;</span>
    cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>max_index <span class="hl opt">=</span> SMALL_MAN_MAX_INDEX<span class="hl opt">;</span>
    cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>start_root_rows <span class="hl opt">=</span> SMALL_MAN_START_ROOT_ROWS<span class="hl opt">;</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* init_small_cparam() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	init_large_cparam</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Initialize heap creation parameter structure with large</span>
<span class="hl com"> *              settings</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Tuesday, March 21, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static int</span>
<span class="hl kwd">init_large_cparam</span><span class="hl opt">(</span>H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    <span class="hl com">/* Wipe out background */</span>
    <span class="hl kwd">HDmemset</span><span class="hl opt">(</span>cparam<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>H5HF_create_t<span class="hl opt">));</span>

    <span class="hl com">/* General parameters */</span>
    cparam<span class="hl opt">-&gt;</span>id_len <span class="hl opt">=</span> LARGE_ID_LEN<span class="hl opt">;</span>
    cparam<span class="hl opt">-&gt;</span>max_man_size <span class="hl opt">=</span> LARGE_STAND_SIZE<span class="hl opt">;</span>
    cparam<span class="hl opt">-&gt;</span>checksum_dblocks <span class="hl opt">=</span> LARGE_CHECKSUM_DBLOCKS<span class="hl opt">;</span>

    <span class="hl com">/* Managed object doubling-table parameters */</span>
    cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">=</span> LARGE_MAN_WIDTH<span class="hl opt">;</span>
    cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>start_block_size <span class="hl opt">=</span> LARGE_MAN_START_BLOCK_SIZE<span class="hl opt">;</span>
    cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>max_direct_size <span class="hl opt">=</span> LARGE_MAN_MAX_DIRECT_SIZE<span class="hl opt">;</span>
    cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>max_index <span class="hl opt">=</span> LARGE_MAN_MAX_INDEX<span class="hl opt">;</span>
    cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>start_root_rows <span class="hl opt">=</span> LARGE_MAN_START_ROOT_ROWS<span class="hl opt">;</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* init_large_cparam() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	check_stats</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Verify stats for a heap</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, March  6, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static int</span>
<span class="hl kwd">check_stats</span><span class="hl opt">(</span><span class="hl kwb">const</span> H5HF_t <span class="hl opt">*</span>fh<span class="hl opt">,</span> <span class="hl kwb">const</span> fheap_heap_state_t <span class="hl opt">*</span>state<span class="hl opt">)</span>
<span class="hl opt">{</span>
    H5HF_stat_t heap_stats<span class="hl opt">;</span>             <span class="hl com">/* Statistics about the heap */</span>

    <span class="hl com">/* Get statistics for heap and verify they are correct */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_stat_info</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>heap_stats<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>heap_stats<span class="hl opt">.</span>man_nobjs <span class="hl opt">!=</span> state<span class="hl opt">-&gt;</span>man_nobjs<span class="hl opt">) {</span>
        <span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stdout<span class="hl opt">,</span> <span class="hl str">&quot;heap_stats.man_nobjs = %Hu, state-&gt;man_nobjs = %Zu</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">,</span> heap_stats<span class="hl opt">.</span>man_nobjs<span class="hl opt">,</span> state<span class="hl opt">-&gt;</span>man_nobjs<span class="hl opt">);</span>
        TEST_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>heap_stats<span class="hl opt">.</span>man_size <span class="hl opt">!=</span> state<span class="hl opt">-&gt;</span>man_size<span class="hl opt">) {</span>
        <span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stdout<span class="hl opt">,</span> <span class="hl str">&quot;heap_stats.man_size = %Hu, state-&gt;man_size = %Hu</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">,</span> heap_stats<span class="hl opt">.</span>man_size<span class="hl opt">,</span> state<span class="hl opt">-&gt;</span>man_size<span class="hl opt">);</span>
        TEST_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>heap_stats<span class="hl opt">.</span>man_alloc_size <span class="hl opt">!=</span> state<span class="hl opt">-&gt;</span>man_alloc_size<span class="hl opt">) {</span>
        <span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stdout<span class="hl opt">,</span> <span class="hl str">&quot;heap_stats.man_alloc_size = %Hu, state-&gt;man_alloc_size = %Hu</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">,</span> heap_stats<span class="hl opt">.</span>man_alloc_size<span class="hl opt">,</span> state<span class="hl opt">-&gt;</span>man_alloc_size<span class="hl opt">);</span>
        TEST_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>heap_stats<span class="hl opt">.</span>man_free_space <span class="hl opt">!=</span> state<span class="hl opt">-&gt;</span>man_free_space<span class="hl opt">) {</span>
        <span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stdout<span class="hl opt">,</span> <span class="hl str">&quot;heap_stats.man_free_space = %Hu, state-&gt;man_free_space = %Hu</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">,</span> heap_stats<span class="hl opt">.</span>man_free_space<span class="hl opt">,</span> state<span class="hl opt">-&gt;</span>man_free_space<span class="hl opt">);</span>
        TEST_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>heap_stats<span class="hl opt">.</span>huge_nobjs <span class="hl opt">!=</span> state<span class="hl opt">-&gt;</span>huge_nobjs<span class="hl opt">) {</span>
        <span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stdout<span class="hl opt">,</span> <span class="hl str">&quot;heap_stats.huge_nobjs = %Hu, state-&gt;huge_nobjs = %Zu</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">,</span> heap_stats<span class="hl opt">.</span>huge_nobjs<span class="hl opt">,</span> state<span class="hl opt">-&gt;</span>huge_nobjs<span class="hl opt">);</span>
        TEST_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>heap_stats<span class="hl opt">.</span>huge_size <span class="hl opt">!=</span> state<span class="hl opt">-&gt;</span>huge_size<span class="hl opt">) {</span>
        <span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stdout<span class="hl opt">,</span> <span class="hl str">&quot;heap_stats.huge_size = %Hu, state-&gt;huge_size = %Hu</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">,</span> heap_stats<span class="hl opt">.</span>huge_size<span class="hl opt">,</span> state<span class="hl opt">-&gt;</span>huge_size<span class="hl opt">);</span>
        TEST_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>heap_stats<span class="hl opt">.</span>tiny_nobjs <span class="hl opt">!=</span> state<span class="hl opt">-&gt;</span>tiny_nobjs<span class="hl opt">) {</span>
        <span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stdout<span class="hl opt">,</span> <span class="hl str">&quot;heap_stats.tiny_nobjs = %Hu, state-&gt;tiny_nobjs = %Zu</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">,</span> heap_stats<span class="hl opt">.</span>tiny_nobjs<span class="hl opt">,</span> state<span class="hl opt">-&gt;</span>tiny_nobjs<span class="hl opt">);</span>
        TEST_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>heap_stats<span class="hl opt">.</span>tiny_size <span class="hl opt">!=</span> state<span class="hl opt">-&gt;</span>tiny_size<span class="hl opt">) {</span>
        <span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stdout<span class="hl opt">,</span> <span class="hl str">&quot;heap_stats.tiny_size = %Hu, state-&gt;tiny_size = %Hu</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">,</span> heap_stats<span class="hl opt">.</span>tiny_size<span class="hl opt">,</span> state<span class="hl opt">-&gt;</span>tiny_size<span class="hl opt">);</span>
        TEST_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* check_stats() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	op_memcpy</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Perform 'memcpy' for an object</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, September 11, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static</span> herr_t
<span class="hl kwd">op_memcpy</span><span class="hl opt">(</span><span class="hl kwb">const void</span> <span class="hl opt">*</span>obj<span class="hl opt">,</span> <span class="hl kwb">size_t</span> obj_len<span class="hl opt">,</span> <span class="hl kwb">void</span> <span class="hl opt">*</span>op_data<span class="hl opt">)</span>
<span class="hl opt">{</span>
    <span class="hl com">/* Make copy of the object */</span>
    <span class="hl kwd">HDmemcpy</span><span class="hl opt">(</span>op_data<span class="hl opt">,</span> obj<span class="hl opt">,</span> obj_len<span class="hl opt">);</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span>SUCCEED<span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* op_memcpy() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	add_obj</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Add an object to heap</span>
<span class="hl com"> *</span>
<span class="hl com"> * Note:        The following fields in the 'state' structure are set to</span>
<span class="hl com"> *              the values expected _after_ any block created for the object:</span>
<span class="hl com"> *                      man_size</span>
<span class="hl com"> *                      man_alloc_size</span>
<span class="hl com"> *                      man_free_space</span>
<span class="hl com"> *</span>
<span class="hl com"> *              The following fields in the 'state' structure are set to</span>
<span class="hl com"> *              the current state, before any block has been created:</span>
<span class="hl com"> *                      nobjs</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, April 10, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static int</span>
<span class="hl kwd">add_obj</span><span class="hl opt">(</span>H5HF_t <span class="hl opt">*</span>fh<span class="hl opt">,</span> hid_t dxpl<span class="hl opt">,</span> <span class="hl kwb">size_t</span> obj_off<span class="hl opt">,</span>
    <span class="hl kwb">size_t</span> obj_size<span class="hl opt">,</span> fheap_heap_state_t <span class="hl opt">*</span>state<span class="hl opt">,</span> fheap_heap_ids_t <span class="hl opt">*</span>keep_ids<span class="hl opt">)</span>
<span class="hl opt">{</span>
    <span class="hl kwb">unsigned char</span> heap_id<span class="hl opt">[</span>MAX_HEAP_ID_LEN<span class="hl opt">];</span> <span class="hl com">/* Heap ID for object inserted */</span>
    <span class="hl kwb">unsigned char</span> <span class="hl opt">*</span>obj<span class="hl opt">;</span>                 <span class="hl com">/* Buffer for object to insert */</span>
    <span class="hl kwb">size_t</span> id_len<span class="hl opt">;</span>                      <span class="hl com">/* Size of fractal heap IDs */</span>
    <span class="hl kwb">size_t</span> robj_size<span class="hl opt">;</span>                   <span class="hl com">/* Object size read in */</span>

    <span class="hl com">/* Sanity check */</span>
    <span class="hl kwd">HDassert</span><span class="hl opt">(</span>fh<span class="hl opt">);</span>

    <span class="hl com">/* Initialize object buffer */</span>
    obj <span class="hl opt">= &amp;</span>shared_wobj_g<span class="hl opt">[</span>obj_off<span class="hl opt">];</span>

    <span class="hl com">/* Get information about heap ID lengths */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">&gt;</span> MAX_HEAP_ID_LEN<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert object */</span>
    <span class="hl kwd">HDmemset</span><span class="hl opt">(</span>heap_id<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> id_len<span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_insert</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> obj_size<span class="hl opt">,</span> obj<span class="hl opt">,</span> heap_id<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Check for tracking the heap's state */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>state<span class="hl opt">) {</span>
        <span class="hl kwb">size_t</span>      tiny_max_len<span class="hl opt">;</span>           <span class="hl com">/* Max. length of tiny objects */</span>
        hbool_t     tiny_len_extended<span class="hl opt">;</span>      <span class="hl com">/* Do tiny objects use two bytes for the length? */</span>

        <span class="hl com">/* Check information about tiny objects */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_tiny_info_test</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>tiny_max_len<span class="hl opt">, &amp;</span>tiny_len_extended<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR

        <span class="hl com">/* Adjust state of heap */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>obj_size <span class="hl opt">&lt;=</span> tiny_max_len<span class="hl opt">) {</span>
            state<span class="hl opt">-&gt;</span>tiny_nobjs<span class="hl opt">++;</span>
            state<span class="hl opt">-&gt;</span>tiny_size <span class="hl opt">+=</span> obj_size<span class="hl opt">;</span>
        <span class="hl opt">}</span> <span class="hl com">/* end if */</span>
        <span class="hl kwa">else</span> <span class="hl opt">{</span>
            state<span class="hl opt">-&gt;</span>man_nobjs<span class="hl opt">++;</span>
            state<span class="hl opt">-&gt;</span>man_free_space <span class="hl opt">-=</span> obj_size<span class="hl opt">;</span>
        <span class="hl opt">}</span> <span class="hl com">/* end else */</span>

        <span class="hl com">/* Check free space left in heap */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> state<span class="hl opt">))</span>
            TEST_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>

    <span class="hl com">/* Read in object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_obj_len</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id<span class="hl opt">, &amp;</span>robj_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>obj_size <span class="hl opt">!=</span> robj_size<span class="hl opt">)</span>
        TEST_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_read</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id<span class="hl opt">,</span> shared_robj_g<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">HDmemcmp</span><span class="hl opt">(</span>obj<span class="hl opt">,</span> shared_robj_g<span class="hl opt">,</span> obj_size<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* If the heap IDs are to be retained, append them to the list */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>keep_ids<span class="hl opt">) {</span>
        <span class="hl com">/* Check for needing to increase size of heap ID array */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>keep_ids<span class="hl opt">-&gt;</span>num_ids <span class="hl opt">+</span> <span class="hl num">1</span> <span class="hl opt">&gt;</span> keep_ids<span class="hl opt">-&gt;</span>alloc_ids<span class="hl opt">) {</span>
            <span class="hl kwb">unsigned char</span> <span class="hl opt">*</span>tmp_ids<span class="hl opt">;</span>
            <span class="hl kwb">size_t</span> <span class="hl opt">*</span>tmp_lens<span class="hl opt">;</span>
            <span class="hl kwb">size_t</span> <span class="hl opt">*</span>tmp_offs<span class="hl opt">;</span>

            keep_ids<span class="hl opt">-&gt;</span>alloc_ids <span class="hl opt">=</span> <span class="hl kwd">MAX</span><span class="hl opt">(</span><span class="hl num">1024</span><span class="hl opt">, (</span>keep_ids<span class="hl opt">-&gt;</span>alloc_ids <span class="hl opt">*</span> <span class="hl num">2</span><span class="hl opt">));</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>tmp_ids <span class="hl opt">= (</span><span class="hl kwb">unsigned char</span> <span class="hl opt">*)</span><span class="hl kwd">H5MM_realloc</span><span class="hl opt">(</span>keep_ids<span class="hl opt">-&gt;</span>ids<span class="hl opt">,</span> id_len <span class="hl opt">*</span> keep_ids<span class="hl opt">-&gt;</span>alloc_ids<span class="hl opt">)))</span>
                TEST_ERROR
            keep_ids<span class="hl opt">-&gt;</span>ids <span class="hl opt">=</span> tmp_ids<span class="hl opt">;</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>tmp_lens <span class="hl opt">= (</span><span class="hl kwb">size_t</span> <span class="hl opt">*)</span><span class="hl kwd">H5MM_realloc</span><span class="hl opt">(</span>keep_ids<span class="hl opt">-&gt;</span>lens<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span><span class="hl kwb">size_t</span><span class="hl opt">) *</span> keep_ids<span class="hl opt">-&gt;</span>alloc_ids<span class="hl opt">)))</span>
                TEST_ERROR
            keep_ids<span class="hl opt">-&gt;</span>lens <span class="hl opt">=</span> tmp_lens<span class="hl opt">;</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>tmp_offs <span class="hl opt">= (</span><span class="hl kwb">size_t</span> <span class="hl opt">*)</span><span class="hl kwd">H5MM_realloc</span><span class="hl opt">(</span>keep_ids<span class="hl opt">-&gt;</span>offs<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span><span class="hl kwb">size_t</span><span class="hl opt">) *</span> keep_ids<span class="hl opt">-&gt;</span>alloc_ids<span class="hl opt">)))</span>
                TEST_ERROR
            keep_ids<span class="hl opt">-&gt;</span>offs <span class="hl opt">=</span> tmp_offs<span class="hl opt">;</span>
        <span class="hl opt">}</span> <span class="hl com">/* end if */</span>

        <span class="hl com">/* Append the object info onto the array */</span>
        <span class="hl kwd">HDmemcpy</span><span class="hl opt">(&amp;</span>keep_ids<span class="hl opt">-&gt;</span>ids<span class="hl opt">[</span>keep_ids<span class="hl opt">-&gt;</span>num_ids <span class="hl opt">*</span> id_len<span class="hl opt">],</span> heap_id<span class="hl opt">,</span> id_len<span class="hl opt">);</span>
        keep_ids<span class="hl opt">-&gt;</span>lens<span class="hl opt">[</span>keep_ids<span class="hl opt">-&gt;</span>num_ids<span class="hl opt">] =</span> obj_size<span class="hl opt">;</span>
        keep_ids<span class="hl opt">-&gt;</span>offs<span class="hl opt">[</span>keep_ids<span class="hl opt">-&gt;</span>num_ids<span class="hl opt">] =</span> obj_off<span class="hl opt">;</span>

        <span class="hl com">/* Increment the number of IDs kept */</span>
        keep_ids<span class="hl opt">-&gt;</span>num_ids<span class="hl opt">++;</span>
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>

    <span class="hl com">/* Operations succeeded */</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* add_obj() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	get_del_string</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Return string describing the kind of deletion to perform</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, June  6, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static char</span> <span class="hl opt">*</span>
<span class="hl kwd">get_del_string</span><span class="hl opt">(</span><span class="hl kwb">const</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    <span class="hl kwb">char</span> <span class="hl opt">*</span>str<span class="hl opt">;</span>

    <span class="hl com">/* Remove half of total objects from heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>del_dir <span class="hl opt">==</span> FHEAP_DEL_FORWARD<span class="hl opt">)</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>drain_half <span class="hl opt">==</span> FHEAP_DEL_DRAIN_ALL<span class="hl opt">)</span>
            str <span class="hl opt">=</span> <span class="hl kwd">HDstrdup</span><span class="hl opt">(</span><span class="hl str">&quot;(all - forward)&quot;</span><span class="hl opt">);</span>
        <span class="hl kwa">else</span>
            str <span class="hl opt">=</span> <span class="hl kwd">HDstrdup</span><span class="hl opt">(</span><span class="hl str">&quot;(half, refill, all - forward)&quot;</span><span class="hl opt">);</span>
    <span class="hl kwa">else if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>del_dir <span class="hl opt">==</span> FHEAP_DEL_REVERSE<span class="hl opt">)</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>drain_half <span class="hl opt">==</span> FHEAP_DEL_DRAIN_ALL<span class="hl opt">)</span>
            str <span class="hl opt">=</span> <span class="hl kwd">HDstrdup</span><span class="hl opt">(</span><span class="hl str">&quot;(all - reverse)&quot;</span><span class="hl opt">);</span>
        <span class="hl kwa">else</span>
            str <span class="hl opt">=</span> <span class="hl kwd">HDstrdup</span><span class="hl opt">(</span><span class="hl str">&quot;(half, refill, all - reverse)&quot;</span><span class="hl opt">);</span>
    <span class="hl kwa">else</span>
        str <span class="hl opt">=</span> <span class="hl kwd">HDstrdup</span><span class="hl opt">(</span><span class="hl str">&quot;(all - deleting heap)&quot;</span><span class="hl opt">);</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span>str<span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* get_del_string() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	get_fill_size</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Retrieve the size of objects to &quot;bulk&quot; fill blocks with</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Size of object to pass down to &quot;fill_heap&quot; routine on</span>
<span class="hl com"> *              success/can't fail</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Thursday, July 27, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static size_t</span>
<span class="hl kwd">get_fill_size</span><span class="hl opt">(</span><span class="hl kwb">const</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    <span class="hl kwa">switch</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>fill<span class="hl opt">) {</span>
        <span class="hl kwa">case</span> FHEAP_TEST_FILL_LARGE<span class="hl opt">:</span>
            <span class="hl kwa">return</span><span class="hl opt">((</span><span class="hl kwb">size_t</span><span class="hl opt">)(-</span><span class="hl num">1</span><span class="hl opt">));</span>

        <span class="hl kwa">case</span> FHEAP_TEST_FILL_SINGLE<span class="hl opt">:</span>
            <span class="hl kwa">return</span><span class="hl opt">((</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">0</span><span class="hl opt">);</span>

        <span class="hl kwa">case</span> FHEAP_TEST_FILL_N<span class="hl opt">:</span>
        <span class="hl kwa">default</span><span class="hl opt">:</span>
            <span class="hl kwd">HDassert</span><span class="hl opt">(</span><span class="hl num">0</span> <span class="hl opt">&amp;&amp;</span> <span class="hl str">&quot;Unknown bulk fill type?!?&quot;</span><span class="hl opt">);</span>
    <span class="hl opt">}</span> <span class="hl com">/* end switch */</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* get_fill_size() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	begin_test</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Perform common &quot;test being&quot; operations</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Friday, August  4, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static int</span>
<span class="hl kwd">begin_test</span><span class="hl opt">(</span>fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">,</span> <span class="hl kwb">const char</span> <span class="hl opt">*</span>base_desc<span class="hl opt">,</span>
    fheap_heap_ids_t <span class="hl opt">*</span>keep_ids<span class="hl opt">,</span> <span class="hl kwb">size_t</span> <span class="hl opt">*</span>fill_size<span class="hl opt">)</span>
<span class="hl opt">{</span>
    <span class="hl kwb">char</span> <span class="hl opt">*</span>del_str <span class="hl opt">=</span> NULL<span class="hl opt">;</span>               <span class="hl com">/* Deletion order description */</span>
    <span class="hl kwb">char</span> <span class="hl opt">*</span>test_desc <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Test description */</span>

    <span class="hl com">/*</span>
<span class="hl com">     * Test filling &amp; removing all (small) objects from root direct block of absolute heap</span>
<span class="hl com">     */</span>
    del_str <span class="hl opt">=</span> <span class="hl kwd">get_del_string</span><span class="hl opt">(</span>tparam<span class="hl opt">);</span>
    <span class="hl kwd">HDassert</span><span class="hl opt">(</span>del_str<span class="hl opt">);</span>
    test_desc <span class="hl opt">= (</span><span class="hl kwb">char</span> <span class="hl opt">*)</span><span class="hl kwd">H5MM_malloc</span><span class="hl opt">(</span><span class="hl kwd">HDstrlen</span><span class="hl opt">(</span>del_str<span class="hl opt">) +</span> <span class="hl kwd">HDstrlen</span><span class="hl opt">(</span>base_desc<span class="hl opt">));</span>
    <span class="hl kwd">sprintf</span><span class="hl opt">(</span>test_desc<span class="hl opt">,</span> base_desc<span class="hl opt">,</span> del_str<span class="hl opt">);</span>
    <span class="hl kwd">TESTING</span><span class="hl opt">(</span>test_desc<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>del_str<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>test_desc<span class="hl opt">);</span>

    <span class="hl com">/* Initialize the heap ID structure */</span>
    <span class="hl kwd">HDmemset</span><span class="hl opt">(</span>keep_ids<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>fheap_heap_ids_t<span class="hl opt">));</span>

    <span class="hl com">/* Retrieve &quot;bulk&quot; filling object size */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>fill_size<span class="hl opt">)</span>
        <span class="hl opt">*</span>fill_size <span class="hl opt">=</span> <span class="hl kwd">get_fill_size</span><span class="hl opt">(</span>tparam<span class="hl opt">);</span>

    <span class="hl com">/* Success */</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* end begin_test() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	reopen_file</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Perform common &quot;re-open&quot; operations on file &amp; heap for testing</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Friday, August 18, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static int</span>
<span class="hl kwd">reopen_file</span><span class="hl opt">(</span>hid_t <span class="hl opt">*</span>file<span class="hl opt">,</span> H5F_t <span class="hl opt">**</span>f<span class="hl opt">,</span> <span class="hl kwb">const char</span> <span class="hl opt">*</span>filename<span class="hl opt">,</span> hid_t fapl<span class="hl opt">,</span> hid_t dxpl<span class="hl opt">,</span>
    H5HF_t <span class="hl opt">**</span>fh<span class="hl opt">,</span> haddr_t fh_addr<span class="hl opt">,</span> <span class="hl kwb">const</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl com">/* (actually will close &amp; re-open the file as well) */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>reopen_heap<span class="hl opt">) {</span>
        <span class="hl com">/* Close heap */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(*</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR
        <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>

        <span class="hl com">/* Close file */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(*</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR
        <span class="hl opt">*</span>file <span class="hl opt">= (-</span><span class="hl num">1</span><span class="hl opt">);</span>
        <span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>

        <span class="hl com">/* Re-open the file */</span>
        <span class="hl kwa">if</span><span class="hl opt">((*</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fopen</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_RDWR<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR

        <span class="hl com">/* Get a pointer to the internal file object */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (*</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(*</span>file<span class="hl opt">)))</span>
            FAIL_STACK_ERROR

        <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
        <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(*</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR

        <span class="hl com">/* Re-open heap */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (*</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_open</span><span class="hl opt">(*</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fh_addr<span class="hl opt">)))</span>
            FAIL_STACK_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>

    <span class="hl com">/* Success */</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    <span class="hl kwa">return</span><span class="hl opt">(-</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* end reopen_file() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	open_heap</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Perform common &quot;open&quot; operations on file &amp; heap for testing</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Friday, August  4, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static int</span>
<span class="hl kwd">open_heap</span><span class="hl opt">(</span><span class="hl kwb">char</span> <span class="hl opt">*</span>filename<span class="hl opt">,</span> hid_t fapl<span class="hl opt">,</span> hid_t dxpl<span class="hl opt">,</span> <span class="hl kwb">const</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span>
    <span class="hl kwb">const</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">,</span> hid_t <span class="hl opt">*</span>file<span class="hl opt">,</span> H5F_t <span class="hl opt">**</span>f<span class="hl opt">,</span> H5HF_t <span class="hl opt">**</span>fh<span class="hl opt">,</span>
    haddr_t <span class="hl opt">*</span>fh_addr<span class="hl opt">,</span> fheap_heap_state_t <span class="hl opt">*</span>state<span class="hl opt">,</span> h5_stat_size_t <span class="hl opt">*</span>empty_size<span class="hl opt">)</span>
<span class="hl opt">{</span>
    <span class="hl kwb">size_t</span>      id_len<span class="hl opt">;</span>                 <span class="hl com">/* Size of fractal heap IDs */</span>

    <span class="hl com">/* Set the filename to use for this test (dependent on fapl) */</span>
    <span class="hl kwd">h5_fixname</span><span class="hl opt">(</span>FILENAME<span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">],</span> fapl<span class="hl opt">,</span> filename<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span>FHEAP_FILENAME_LEN<span class="hl opt">);</span>

    <span class="hl com">/* Create the file to work on */</span>
    <span class="hl kwa">if</span><span class="hl opt">((*</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fcreate</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_TRUNC<span class="hl opt">,</span> H5P_DEFAULT<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Check for deleting the entire heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>del_dir <span class="hl opt">!=</span> FHEAP_DEL_HEAP<span class="hl opt">) {</span>
        <span class="hl com">/* Get a pointer to the internal file object */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (*</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(*</span>file<span class="hl opt">)))</span>
            FAIL_STACK_ERROR

        <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
        <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(*</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR

        <span class="hl com">/* Create absolute heap */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (*</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_create</span><span class="hl opt">(*</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">)))</span>
            FAIL_STACK_ERROR
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(*</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR
        <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">&gt;</span> tparam<span class="hl opt">-&gt;</span>actual_id_len<span class="hl opt">)</span>
            TEST_ERROR
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_heap_addr</span><span class="hl opt">(*</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR
        <span class="hl kwa">if</span><span class="hl opt">(!</span><span class="hl kwd">H5F_addr_defined</span><span class="hl opt">(*</span>fh_addr<span class="hl opt">))</span>
            TEST_ERROR
        <span class="hl kwd">HDmemset</span><span class="hl opt">(</span>state<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>fheap_heap_state_t<span class="hl opt">));</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(*</span>fh<span class="hl opt">,</span> state<span class="hl opt">))</span>
            TEST_ERROR

        <span class="hl com">/* Prepare for querying the size of a file with an empty heap */</span>

        <span class="hl com">/* Close (empty) heap */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(*</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>

    <span class="hl com">/* Close file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(*</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Get the size of a file w/empty heap*/</span>
    <span class="hl kwa">if</span><span class="hl opt">((*</span>empty_size <span class="hl opt">=</span> <span class="hl kwd">h5_get_file_size</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Re-open the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">((*</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fopen</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_RDWR<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (*</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(*</span>file<span class="hl opt">)))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(*</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Check for deleting the entire heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>del_dir <span class="hl opt">==</span> FHEAP_DEL_HEAP<span class="hl opt">) {</span>
        <span class="hl com">/* Create absolute heap */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (*</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_create</span><span class="hl opt">(*</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">)))</span>
            FAIL_STACK_ERROR
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(*</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR
        <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">&gt;</span> tparam<span class="hl opt">-&gt;</span>actual_id_len<span class="hl opt">)</span>
            TEST_ERROR
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_heap_addr</span><span class="hl opt">(*</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR
        <span class="hl kwa">if</span><span class="hl opt">(!</span><span class="hl kwd">H5F_addr_defined</span><span class="hl opt">(*</span>fh_addr<span class="hl opt">))</span>
            TEST_ERROR
        <span class="hl kwd">HDmemset</span><span class="hl opt">(</span>state<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>fheap_heap_state_t<span class="hl opt">));</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(*</span>fh<span class="hl opt">,</span> state<span class="hl opt">))</span>
            TEST_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>
    <span class="hl kwa">else</span> <span class="hl opt">{</span>
        <span class="hl com">/* Re-open heap */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (*</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_open</span><span class="hl opt">(*</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, *</span>fh_addr<span class="hl opt">)))</span>
            FAIL_STACK_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end else */</span>

    <span class="hl com">/* Success */</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    <span class="hl kwa">return</span><span class="hl opt">(-</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* end open_heap() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	reopen_heap</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Perform common &quot;re-open&quot; operations on heap for testing</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Friday, August  4, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static int</span>
<span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>H5F_t <span class="hl opt">*</span>f<span class="hl opt">,</span> hid_t dxpl<span class="hl opt">,</span> H5HF_t <span class="hl opt">**</span>fh<span class="hl opt">,</span> haddr_t fh_addr<span class="hl opt">,</span>
    <span class="hl kwb">const</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>reopen_heap<span class="hl opt">) {</span>
        <span class="hl com">/* Close (empty) heap */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(*</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR

        <span class="hl com">/* Re-open heap */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (*</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_open</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fh_addr<span class="hl opt">)))</span>
            FAIL_STACK_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>

    <span class="hl com">/* Success */</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    <span class="hl kwa">return</span><span class="hl opt">(-</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* end reopen_heap() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	close_heap</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Perform common &quot;close&quot; operations on file &amp; heap for testing</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Friday, August  4, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static int</span>
<span class="hl kwd">close_heap</span><span class="hl opt">(</span><span class="hl kwb">char</span> <span class="hl opt">*</span>filename<span class="hl opt">,</span> hid_t fapl<span class="hl opt">,</span> hid_t dxpl<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">,</span>
    hid_t file<span class="hl opt">,</span> H5F_t <span class="hl opt">*</span>f<span class="hl opt">,</span> H5HF_t <span class="hl opt">**</span>fh<span class="hl opt">,</span> haddr_t fh_addr<span class="hl opt">,</span>
    fheap_heap_state_t <span class="hl opt">*</span>state<span class="hl opt">,</span> fheap_heap_ids_t <span class="hl opt">*</span>keep_ids<span class="hl opt">,</span>
    h5_stat_size_t empty_size<span class="hl opt">)</span>
<span class="hl opt">{</span>
    h5_stat_size_t       file_size<span class="hl opt">;</span>              <span class="hl com">/* Size of file currently */</span>

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check up on heap... */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(*</span>fh<span class="hl opt">,</span> state<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for deleting the objects in the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>del_dir <span class="hl opt">!=</span> FHEAP_DEL_HEAP<span class="hl opt">) {</span>
        <span class="hl com">/* Delete objects inserted (either forward or reverse order) */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">del_objs</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fh<span class="hl opt">,</span> tparam<span class="hl opt">,</span> state<span class="hl opt">,</span> keep_ids<span class="hl opt">))</span>
            FAIL_STACK_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(*</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>

    <span class="hl com">/* Check for deleting the entire heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>del_dir <span class="hl opt">==</span> FHEAP_DEL_HEAP<span class="hl opt">) {</span>
        <span class="hl com">/* Delete heap */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_delete</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Get the size of the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file_size <span class="hl opt">=</span> <span class="hl kwd">h5_get_file_size</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Verify the file is correct size */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>file_size <span class="hl opt">!=</span> empty_size<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Success */</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    <span class="hl kwa">return</span><span class="hl opt">(-</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* end close_heap() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	del_objs_half_refill</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Remove half of objects from heap and refill</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, June  6, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static int</span>
<span class="hl kwd">del_objs_half_refill</span><span class="hl opt">(</span>H5F_t <span class="hl opt">*</span>f<span class="hl opt">,</span> hid_t dxpl<span class="hl opt">,</span> H5HF_t <span class="hl opt">**</span>fh<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">,</span>
    fheap_heap_ids_t <span class="hl opt">*</span>keep_ids<span class="hl opt">)</span>
<span class="hl opt">{</span>
    <span class="hl kwb">unsigned char</span> <span class="hl opt">*</span>wobj<span class="hl opt">;</span>        <span class="hl com">/* Buffer for object to insert */</span>
    haddr_t fh_addr <span class="hl opt">=</span> HADDR_UNDEF<span class="hl opt">;</span>      <span class="hl com">/* Address of fractal heap */</span>
    <span class="hl kwb">size_t</span> id_len<span class="hl opt">;</span>              <span class="hl com">/* Size of fractal heap IDs */</span>
    <span class="hl kwb">size_t</span> half_nobjs<span class="hl opt">;</span>          <span class="hl com">/* Half of total # of objects */</span>
    <span class="hl kwb">size_t</span> obj_idx<span class="hl opt">;</span>             <span class="hl com">/* Index of the object to remove */</span>
    <span class="hl kwb">size_t</span> u<span class="hl opt">;</span>                   <span class="hl com">/* Local index variable */</span>

    <span class="hl com">/* Sanity check */</span>
    <span class="hl kwd">HDassert</span><span class="hl opt">(</span>fh<span class="hl opt">);</span>
    <span class="hl kwd">HDassert</span><span class="hl opt">(*</span>fh<span class="hl opt">);</span>
    <span class="hl kwd">HDassert</span><span class="hl opt">(</span>keep_ids<span class="hl opt">);</span>

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>reopen_heap<span class="hl opt">) {</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_heap_addr</span><span class="hl opt">(*</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR
        <span class="hl kwa">if</span><span class="hl opt">(!</span><span class="hl kwd">H5F_addr_defined</span><span class="hl opt">(</span>fh_addr<span class="hl opt">))</span>
            TEST_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>

    <span class="hl com">/* Get information about heap ID lengths */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(*</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Remove half of total objects from heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>del_dir <span class="hl opt">==</span> FHEAP_DEL_FORWARD<span class="hl opt">)</span>
        obj_idx <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
    <span class="hl kwa">else</span>
        obj_idx <span class="hl opt">=</span> keep_ids<span class="hl opt">-&gt;</span>num_ids <span class="hl opt">-</span> <span class="hl num">1</span><span class="hl opt">;</span>
    half_nobjs <span class="hl opt">=</span> keep_ids<span class="hl opt">-&gt;</span>num_ids <span class="hl opt">/</span> <span class="hl num">2</span><span class="hl opt">;</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> half_nobjs<span class="hl opt">;</span> u<span class="hl opt">++) {</span>
        <span class="hl com">/* Remove object from heap */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(*</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">-&gt;</span>ids<span class="hl opt">[</span>id_len <span class="hl opt">*</span> obj_idx<span class="hl opt">]) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR

        <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            TEST_ERROR

        <span class="hl com">/* Adjust index of object to delete next */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>del_dir <span class="hl opt">==</span> FHEAP_DEL_FORWARD<span class="hl opt">)</span>
            obj_idx<span class="hl opt">++;</span>
        <span class="hl kwa">else</span>
            obj_idx<span class="hl opt">--;</span>
    <span class="hl opt">}</span> <span class="hl com">/* end for */</span>

    <span class="hl com">/* Re-insert half of total objects back into heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>del_dir <span class="hl opt">==</span> FHEAP_DEL_FORWARD<span class="hl opt">)</span>
        obj_idx <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
    <span class="hl kwa">else</span>
        obj_idx <span class="hl opt">=</span> keep_ids<span class="hl opt">-&gt;</span>num_ids <span class="hl opt">-</span> <span class="hl num">1</span><span class="hl opt">;</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> half_nobjs<span class="hl opt">;</span> u<span class="hl opt">++) {</span>
        <span class="hl com">/* Re-insert object */</span>
        wobj <span class="hl opt">= &amp;</span>shared_wobj_g<span class="hl opt">[</span>keep_ids<span class="hl opt">-&gt;</span>offs<span class="hl opt">[</span>obj_idx<span class="hl opt">]];</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_insert</span><span class="hl opt">(*</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> keep_ids<span class="hl opt">-&gt;</span>lens<span class="hl opt">[</span>obj_idx<span class="hl opt">],</span> wobj<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">-&gt;</span>ids<span class="hl opt">[</span>id_len <span class="hl opt">*</span> obj_idx<span class="hl opt">]) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR

        <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            TEST_ERROR

        <span class="hl com">/* Adjust index of object to delete next */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>del_dir <span class="hl opt">==</span> FHEAP_DEL_FORWARD<span class="hl opt">)</span>
            obj_idx<span class="hl opt">++;</span>
        <span class="hl kwa">else</span>
            obj_idx<span class="hl opt">--;</span>
    <span class="hl opt">}</span> <span class="hl com">/* end for */</span>

    <span class="hl com">/* Operations succeeded */</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* del_objs_half_refill() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	del_objs</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Remove objects from heap</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, June  6, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static int</span>
<span class="hl kwd">del_objs</span><span class="hl opt">(</span>H5F_t <span class="hl opt">*</span>f<span class="hl opt">,</span> hid_t dxpl<span class="hl opt">,</span> H5HF_t <span class="hl opt">**</span>fh<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">,</span>
    fheap_heap_state_t <span class="hl opt">*</span>state<span class="hl opt">,</span> fheap_heap_ids_t <span class="hl opt">*</span>keep_ids<span class="hl opt">)</span>
<span class="hl opt">{</span>
    haddr_t fh_addr <span class="hl opt">=</span> HADDR_UNDEF<span class="hl opt">;</span>      <span class="hl com">/* Address of fractal heap */</span>
    <span class="hl kwb">size_t</span> id_len<span class="hl opt">;</span>              <span class="hl com">/* Size of fractal heap IDs */</span>
    <span class="hl kwb">size_t</span> obj_idx<span class="hl opt">;</span>             <span class="hl com">/* Index of the object to remove */</span>
    <span class="hl kwb">size_t</span> u<span class="hl opt">;</span>                   <span class="hl com">/* Local index variable */</span>

    <span class="hl com">/* Sanity check */</span>
    <span class="hl kwd">HDassert</span><span class="hl opt">(</span>fh<span class="hl opt">);</span>
    <span class="hl kwd">HDassert</span><span class="hl opt">(*</span>fh<span class="hl opt">);</span>
    <span class="hl kwd">HDassert</span><span class="hl opt">(</span>state<span class="hl opt">);</span>
    <span class="hl kwd">HDassert</span><span class="hl opt">(</span>keep_ids<span class="hl opt">);</span>

    <span class="hl com">/* Check for first deleting half of objects &amp; then re-inserting them */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>drain_half <span class="hl opt">==</span> FHEAP_DEL_DRAIN_HALF<span class="hl opt">)</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">del_objs_half_refill</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fh<span class="hl opt">,</span> tparam<span class="hl opt">,</span> keep_ids<span class="hl opt">))</span>
            TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>reopen_heap<span class="hl opt">) {</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_heap_addr</span><span class="hl opt">(*</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR
        <span class="hl kwa">if</span><span class="hl opt">(!</span><span class="hl kwd">H5F_addr_defined</span><span class="hl opt">(</span>fh_addr<span class="hl opt">))</span>
            TEST_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>

    <span class="hl com">/* Get information about heap ID lengths */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(*</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Remove all objects from heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>del_dir <span class="hl opt">==</span> FHEAP_DEL_FORWARD<span class="hl opt">)</span>
        obj_idx <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
    <span class="hl kwa">else</span>
        obj_idx <span class="hl opt">=</span> keep_ids<span class="hl opt">-&gt;</span>num_ids <span class="hl opt">-</span> <span class="hl num">1</span><span class="hl opt">;</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> keep_ids<span class="hl opt">-&gt;</span>num_ids<span class="hl opt">;</span> u<span class="hl opt">++) {</span>
        <span class="hl com">/* Remove object from heap */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(*</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">-&gt;</span>ids<span class="hl opt">[</span>id_len <span class="hl opt">*</span> obj_idx<span class="hl opt">]) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR

        <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            TEST_ERROR

        <span class="hl com">/* Adjust index of object to delete next */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>del_dir <span class="hl opt">==</span> FHEAP_DEL_FORWARD<span class="hl opt">)</span>
            obj_idx<span class="hl opt">++;</span>
        <span class="hl kwa">else</span>
            obj_idx<span class="hl opt">--;</span>
    <span class="hl opt">}</span> <span class="hl com">/* end for */</span>

    <span class="hl com">/* Heap should be completely empty now, reset our state */</span>
    <span class="hl kwd">HDmemset</span><span class="hl opt">(</span>state<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>fheap_heap_state_t<span class="hl opt">));</span>

    <span class="hl com">/* Check up on heap... */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(*</span>fh<span class="hl opt">,</span> state<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Operations succeeded */</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* del_objs() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	fill_heap</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Insert (small) objects to fill up the free space in a heap block</span>
<span class="hl com"> *</span>
<span class="hl com"> * Note:        The following fields in the 'state' structure are set to</span>
<span class="hl com"> *              the values expected _after_ the block has been created:</span>
<span class="hl com"> *                      man_size</span>
<span class="hl com"> *                      man_alloc_size</span>
<span class="hl com"> *                      man_free_space</span>
<span class="hl com"> *</span>
<span class="hl com"> *              The following fields in the 'state' structure are set to</span>
<span class="hl com"> *              the current state, before the block has been created:</span>
<span class="hl com"> *                      nobjs</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Tuesday, March  7, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static int</span>
<span class="hl kwd">fill_heap</span><span class="hl opt">(</span>H5HF_t <span class="hl opt">*</span>fh<span class="hl opt">,</span> hid_t dxpl<span class="hl opt">,</span> <span class="hl kwb">unsigned</span> block_row<span class="hl opt">,</span> <span class="hl kwb">size_t</span> obj_size<span class="hl opt">,</span>
    fheap_heap_state_t <span class="hl opt">*</span>state<span class="hl opt">,</span> fheap_heap_ids_t <span class="hl opt">*</span>keep_ids<span class="hl opt">)</span>
<span class="hl opt">{</span>
    <span class="hl kwb">unsigned char</span> <span class="hl opt">*</span>wobj<span class="hl opt">;</span>                <span class="hl com">/* Buffer for object to insert */</span>
    <span class="hl kwb">unsigned char</span> <span class="hl opt">*</span>curr_id_ptr<span class="hl opt">;</span>         <span class="hl com">/* Pointer into shared ID array */</span>
    <span class="hl kwb">size_t</span> <span class="hl opt">*</span>curr_len_ptr<span class="hl opt">;</span>               <span class="hl com">/* Pointer into shared length array */</span>
    <span class="hl kwb">size_t</span> <span class="hl opt">*</span>curr_off_ptr<span class="hl opt">;</span>               <span class="hl com">/* Pointer into shared offset array */</span>
    <span class="hl kwb">size_t</span>      num_ids <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>            <span class="hl com">/* # of heap IDs in array */</span>
    <span class="hl kwb">size_t</span>      data_size<span class="hl opt">;</span>              <span class="hl com">/* Size of data portion of heap block */</span>
    <span class="hl kwb">size_t</span>      last_obj_len<span class="hl opt">;</span>           <span class="hl com">/* Size of last object inserted into heap */</span>
    <span class="hl kwb">size_t</span>      obj_off<span class="hl opt">;</span>                <span class="hl com">/* Offset of object in shared write buffer */</span>
    <span class="hl kwb">size_t</span>      id_len<span class="hl opt">;</span>                 <span class="hl com">/* Size of fractal heap IDs */</span>
    <span class="hl kwb">unsigned</span>    u<span class="hl opt">;</span>                      <span class="hl com">/* Local index variable */</span>

    <span class="hl com">/* Sanity check */</span>
    <span class="hl kwd">HDassert</span><span class="hl opt">(</span>fh<span class="hl opt">);</span>
    <span class="hl kwd">HDassert</span><span class="hl opt">(</span>state<span class="hl opt">);</span>
    <span class="hl kwd">HDassert</span><span class="hl opt">(</span>obj_size <span class="hl opt">+</span> <span class="hl num">256</span> <span class="hl opt">&lt;</span> shared_obj_size_g<span class="hl opt">);</span>

    <span class="hl com">/* Initialize starting information */</span>
    data_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> block_row<span class="hl opt">);</span>
    wobj <span class="hl opt">=</span> shared_wobj_g<span class="hl opt">;</span>
    curr_id_ptr <span class="hl opt">=</span> shared_ids_g<span class="hl opt">;</span>
    curr_len_ptr <span class="hl opt">=</span> shared_lens_g<span class="hl opt">;</span>
    curr_off_ptr <span class="hl opt">=</span> shared_offs_g<span class="hl opt">;</span>
    obj_off <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>

    <span class="hl com">/* Get information about heap ID lengths */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Check for some &quot;magic&quot; object sizes */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>obj_size <span class="hl opt">==</span> <span class="hl num">0</span><span class="hl opt">)</span>
        obj_size <span class="hl opt">=</span> data_size<span class="hl opt">;</span>
    <span class="hl kwa">else if</span><span class="hl opt">(</span>obj_size <span class="hl opt">== (</span><span class="hl kwb">size_t</span><span class="hl opt">)(-</span><span class="hl num">1</span><span class="hl opt">))</span>
        obj_size <span class="hl opt">= (</span>data_size <span class="hl opt">/</span> NUM_FILL_OBJS<span class="hl opt">) +</span> <span class="hl num">1</span><span class="hl opt">;</span>

    <span class="hl com">/* Loop over inserting objects into the root direct block, until there's no more space */</span>
    <span class="hl kwa">while</span><span class="hl opt">(</span>data_size <span class="hl opt">&gt;=</span> obj_size<span class="hl opt">) {</span>
        <span class="hl com">/* Increment object count */</span>
        num_ids<span class="hl opt">++;</span>

        <span class="hl com">/* Check for needing to increase size of heap ID array */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>num_ids <span class="hl opt">&gt;</span> shared_alloc_ids_g<span class="hl opt">) {</span>
            shared_alloc_ids_g <span class="hl opt">=</span> <span class="hl kwd">MAX</span><span class="hl opt">(</span><span class="hl num">1024</span><span class="hl opt">, (</span>shared_alloc_ids_g <span class="hl opt">*</span> <span class="hl num">2</span><span class="hl opt">));</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>shared_ids_g <span class="hl opt">= (</span><span class="hl kwb">unsigned char</span> <span class="hl opt">*)</span><span class="hl kwd">H5MM_realloc</span><span class="hl opt">(</span>shared_ids_g<span class="hl opt">,</span> id_len <span class="hl opt">*</span> shared_alloc_ids_g<span class="hl opt">)))</span>
                TEST_ERROR
            <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>shared_lens_g <span class="hl opt">= (</span><span class="hl kwb">size_t</span> <span class="hl opt">*)</span><span class="hl kwd">H5MM_realloc</span><span class="hl opt">(</span>shared_lens_g<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span><span class="hl kwb">size_t</span><span class="hl opt">) *</span> shared_alloc_ids_g<span class="hl opt">)))</span>
                TEST_ERROR
            <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>shared_offs_g <span class="hl opt">= (</span><span class="hl kwb">size_t</span> <span class="hl opt">*)</span><span class="hl kwd">H5MM_realloc</span><span class="hl opt">(</span>shared_offs_g<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span><span class="hl kwb">size_t</span><span class="hl opt">) *</span> shared_alloc_ids_g<span class="hl opt">)))</span>
                TEST_ERROR
            curr_id_ptr <span class="hl opt">= &amp;</span>shared_ids_g<span class="hl opt">[(</span>num_ids <span class="hl opt">-</span> <span class="hl num">1</span><span class="hl opt">) *</span> id_len<span class="hl opt">];</span>
            curr_len_ptr <span class="hl opt">= &amp;</span>shared_lens_g<span class="hl opt">[(</span>num_ids <span class="hl opt">-</span> <span class="hl num">1</span><span class="hl opt">)];</span>
            curr_off_ptr <span class="hl opt">= &amp;</span>shared_offs_g<span class="hl opt">[(</span>num_ids <span class="hl opt">-</span> <span class="hl num">1</span><span class="hl opt">)];</span>
        <span class="hl opt">}</span> <span class="hl com">/* end if */</span>

        <span class="hl com">/* Insert object */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_insert</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> obj_size<span class="hl opt">,</span> wobj<span class="hl opt">,</span> curr_id_ptr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR
        <span class="hl opt">*</span>curr_len_ptr <span class="hl opt">=</span> obj_size<span class="hl opt">;</span>
        <span class="hl opt">*</span>curr_off_ptr <span class="hl opt">=</span> obj_off<span class="hl opt">;</span>

        <span class="hl com">/* Adjust state of heap */</span>
        state<span class="hl opt">-&gt;</span>man_nobjs<span class="hl opt">++;</span>
        state<span class="hl opt">-&gt;</span>man_free_space <span class="hl opt">-=</span> obj_size<span class="hl opt">;</span>

        <span class="hl com">/* Check stats for heap */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> state<span class="hl opt">))</span>
            TEST_ERROR

        <span class="hl com">/* Adjust object &amp; ID pointers */</span>
        wobj<span class="hl opt">++;</span>
        obj_off<span class="hl opt">++;</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>obj_off <span class="hl opt">&gt;</span> <span class="hl num">255</span><span class="hl opt">) {</span>
            wobj <span class="hl opt">=</span> shared_wobj_g<span class="hl opt">;</span>
            obj_off <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
        <span class="hl opt">}</span> <span class="hl com">/* end if */</span>
        curr_id_ptr <span class="hl opt">+=</span> id_len<span class="hl opt">;</span>
        curr_len_ptr<span class="hl opt">++;</span>
        curr_off_ptr<span class="hl opt">++;</span>

        <span class="hl com">/* Decrement space left in block */</span>
        data_size <span class="hl opt">-=</span> obj_size<span class="hl opt">;</span>
    <span class="hl opt">}</span> <span class="hl com">/* end while */</span>

    <span class="hl com">/* Check for adding smaller last object to heap block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>data_size <span class="hl opt">&gt;</span> <span class="hl num">0</span><span class="hl opt">) {</span>
        <span class="hl com">/* Set size of last object in block */</span>
        last_obj_len <span class="hl opt">=</span> data_size<span class="hl opt">;</span>

        <span class="hl com">/* Increment object count */</span>
        num_ids<span class="hl opt">++;</span>

        <span class="hl com">/* Check for needing to increase size of heap ID array */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>num_ids <span class="hl opt">&gt;</span> shared_alloc_ids_g<span class="hl opt">) {</span>
            shared_alloc_ids_g <span class="hl opt">=</span> <span class="hl kwd">MAX</span><span class="hl opt">(</span><span class="hl num">1024</span><span class="hl opt">, (</span>shared_alloc_ids_g <span class="hl opt">*</span> <span class="hl num">2</span><span class="hl opt">));</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>shared_ids_g <span class="hl opt">= (</span><span class="hl kwb">unsigned char</span> <span class="hl opt">*)</span><span class="hl kwd">H5MM_realloc</span><span class="hl opt">(</span>shared_ids_g<span class="hl opt">,</span> id_len <span class="hl opt">*</span> shared_alloc_ids_g<span class="hl opt">)))</span>
                TEST_ERROR
            <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>shared_lens_g <span class="hl opt">= (</span><span class="hl kwb">size_t</span> <span class="hl opt">*)</span><span class="hl kwd">H5MM_realloc</span><span class="hl opt">(</span>shared_lens_g<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span><span class="hl kwb">size_t</span><span class="hl opt">) *</span> shared_alloc_ids_g<span class="hl opt">)))</span>
                TEST_ERROR
            <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>shared_offs_g <span class="hl opt">= (</span><span class="hl kwb">size_t</span> <span class="hl opt">*)</span><span class="hl kwd">H5MM_realloc</span><span class="hl opt">(</span>shared_offs_g<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span><span class="hl kwb">size_t</span><span class="hl opt">) *</span> shared_alloc_ids_g<span class="hl opt">)))</span>
                TEST_ERROR
            curr_id_ptr <span class="hl opt">= &amp;</span>shared_ids_g<span class="hl opt">[(</span>num_ids <span class="hl opt">-</span> <span class="hl num">1</span><span class="hl opt">) *</span> id_len<span class="hl opt">];</span>
            curr_len_ptr <span class="hl opt">= &amp;</span>shared_lens_g<span class="hl opt">[(</span>num_ids <span class="hl opt">-</span> <span class="hl num">1</span><span class="hl opt">)];</span>
            curr_off_ptr <span class="hl opt">= &amp;</span>shared_offs_g<span class="hl opt">[(</span>num_ids <span class="hl opt">-</span> <span class="hl num">1</span><span class="hl opt">)];</span>
        <span class="hl opt">}</span> <span class="hl com">/* end if */</span>

        <span class="hl com">/* Insert last object into the heap, using the remaining free space */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_insert</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> last_obj_len<span class="hl opt">,</span> wobj<span class="hl opt">,</span> curr_id_ptr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR
        <span class="hl opt">*</span>curr_len_ptr <span class="hl opt">=</span> last_obj_len<span class="hl opt">;</span>
        <span class="hl opt">*</span>curr_off_ptr <span class="hl opt">=</span> obj_off<span class="hl opt">;</span>

        <span class="hl com">/* Adjust state of heap */</span>
        state<span class="hl opt">-&gt;</span>man_nobjs<span class="hl opt">++;</span>
        state<span class="hl opt">-&gt;</span>man_free_space <span class="hl opt">-=</span> last_obj_len<span class="hl opt">;</span>

        <span class="hl com">/* Verify that the heap is full */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> state<span class="hl opt">))</span>
            TEST_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>
    <span class="hl kwa">else</span>
        last_obj_len <span class="hl opt">=</span> obj_size<span class="hl opt">;</span>     <span class="hl com">/* Normal sized last object */</span>

    <span class="hl com">/* Verify reading the objects written out */</span>

    <span class="hl com">/* Verify all the objects */</span>
    wobj <span class="hl opt">=</span> shared_wobj_g<span class="hl opt">;</span>
    curr_id_ptr <span class="hl opt">=</span> shared_ids_g<span class="hl opt">;</span>
    curr_len_ptr <span class="hl opt">=</span> shared_lens_g<span class="hl opt">;</span>
    curr_off_ptr <span class="hl opt">=</span> shared_offs_g<span class="hl opt">;</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> num_ids<span class="hl opt">;</span> u<span class="hl opt">++) {</span>
        <span class="hl com">/* Read in object */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_read</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> curr_id_ptr<span class="hl opt">,</span> shared_robj_g<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR

        <span class="hl com">/* Check that object is correct */</span>
        wobj <span class="hl opt">= &amp;</span>shared_wobj_g<span class="hl opt">[*</span>curr_off_ptr<span class="hl opt">];</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">HDmemcmp</span><span class="hl opt">(</span>wobj<span class="hl opt">,</span> shared_robj_g<span class="hl opt">, *</span>curr_len_ptr<span class="hl opt">))</span>
            TEST_ERROR

        <span class="hl com">/* Adjust object &amp; ID pointers */</span>
        curr_id_ptr <span class="hl opt">+=</span> id_len<span class="hl opt">;</span>
        curr_len_ptr<span class="hl opt">++;</span>
        curr_off_ptr<span class="hl opt">++;</span>
    <span class="hl opt">}</span> <span class="hl com">/* end for */</span>

    <span class="hl com">/* If the heap IDs are to be retained, append them to the list */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>keep_ids<span class="hl opt">) {</span>
        <span class="hl com">/* Check for needing to increase size of heap ID array */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>keep_ids<span class="hl opt">-&gt;</span>num_ids <span class="hl opt">+</span> num_ids <span class="hl opt">&gt;</span> keep_ids<span class="hl opt">-&gt;</span>alloc_ids<span class="hl opt">) {</span>
            keep_ids<span class="hl opt">-&gt;</span>alloc_ids <span class="hl opt">=</span> <span class="hl kwd">MAX</span><span class="hl opt">(</span><span class="hl num">1024</span><span class="hl opt">, (</span>keep_ids<span class="hl opt">-&gt;</span>alloc_ids <span class="hl opt">*</span> <span class="hl num">2</span><span class="hl opt">));</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>keep_ids<span class="hl opt">-&gt;</span>ids <span class="hl opt">= (</span><span class="hl kwb">unsigned char</span> <span class="hl opt">*)</span><span class="hl kwd">H5MM_realloc</span><span class="hl opt">(</span>keep_ids<span class="hl opt">-&gt;</span>ids<span class="hl opt">,</span> id_len <span class="hl opt">*</span> keep_ids<span class="hl opt">-&gt;</span>alloc_ids<span class="hl opt">)))</span>
                TEST_ERROR
            <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>keep_ids<span class="hl opt">-&gt;</span>lens <span class="hl opt">= (</span><span class="hl kwb">size_t</span> <span class="hl opt">*)</span><span class="hl kwd">H5MM_realloc</span><span class="hl opt">(</span>keep_ids<span class="hl opt">-&gt;</span>lens<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span><span class="hl kwb">size_t</span><span class="hl opt">) *</span> keep_ids<span class="hl opt">-&gt;</span>alloc_ids<span class="hl opt">)))</span>
                TEST_ERROR
            <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>keep_ids<span class="hl opt">-&gt;</span>offs <span class="hl opt">= (</span><span class="hl kwb">size_t</span> <span class="hl opt">*)</span><span class="hl kwd">H5MM_realloc</span><span class="hl opt">(</span>keep_ids<span class="hl opt">-&gt;</span>offs<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span><span class="hl kwb">size_t</span><span class="hl opt">) *</span> keep_ids<span class="hl opt">-&gt;</span>alloc_ids<span class="hl opt">)))</span>
                TEST_ERROR
        <span class="hl opt">}</span> <span class="hl com">/* end if */</span>

        <span class="hl com">/* Append the IDs onto the array */</span>
        <span class="hl kwd">HDmemcpy</span><span class="hl opt">(&amp;</span>keep_ids<span class="hl opt">-&gt;</span>ids<span class="hl opt">[</span>keep_ids<span class="hl opt">-&gt;</span>num_ids <span class="hl opt">*</span> id_len<span class="hl opt">],</span> shared_ids_g<span class="hl opt">, (</span>num_ids <span class="hl opt">*</span> id_len<span class="hl opt">));</span>
        <span class="hl kwd">HDmemcpy</span><span class="hl opt">(&amp;</span>keep_ids<span class="hl opt">-&gt;</span>lens<span class="hl opt">[</span>keep_ids<span class="hl opt">-&gt;</span>num_ids<span class="hl opt">],</span> shared_lens_g<span class="hl opt">, (</span>num_ids <span class="hl opt">*</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span><span class="hl kwb">size_t</span><span class="hl opt">)));</span>
        <span class="hl kwd">HDmemcpy</span><span class="hl opt">(&amp;</span>keep_ids<span class="hl opt">-&gt;</span>offs<span class="hl opt">[</span>keep_ids<span class="hl opt">-&gt;</span>num_ids<span class="hl opt">],</span> shared_offs_g<span class="hl opt">, (</span>num_ids <span class="hl opt">*</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span><span class="hl kwb">size_t</span><span class="hl opt">)));</span>

        <span class="hl com">/* Increment the number of IDs kept */</span>
        keep_ids<span class="hl opt">-&gt;</span>num_ids <span class="hl opt">+=</span> num_ids<span class="hl opt">;</span>
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>

    <span class="hl com">/* Operations succeeded */</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* fill_heap() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	fill_root_row</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Fill up a row of direct blocks in the root indirect block</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, April 10, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static int</span>
<span class="hl kwd">fill_root_row</span><span class="hl opt">(</span>H5HF_t <span class="hl opt">*</span>fh<span class="hl opt">,</span> hid_t dxpl<span class="hl opt">,</span> <span class="hl kwb">unsigned</span> row<span class="hl opt">,</span> <span class="hl kwb">size_t</span> obj_size<span class="hl opt">,</span>
    fheap_heap_state_t <span class="hl opt">*</span>state<span class="hl opt">,</span> fheap_heap_ids_t <span class="hl opt">*</span>keep_ids<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hsize_t     first_free_space<span class="hl opt">;</span>       <span class="hl com">/* Size of free space in heap after the first block */</span>
    hsize_t     all_free_space<span class="hl opt">;</span>         <span class="hl com">/* Size of free space in heap after all blocks */</span>
    hsize_t     first_heap_size<span class="hl opt">;</span>        <span class="hl com">/* Total size of the heap after the first block */</span>
    hsize_t     all_heap_size<span class="hl opt">;</span>          <span class="hl com">/* Total size of the heap after all blocks */</span>
    <span class="hl kwb">size_t</span>      block_size<span class="hl opt">;</span>             <span class="hl com">/* Block size for row */</span>
    <span class="hl kwb">size_t</span>      block_free<span class="hl opt">;</span>             <span class="hl com">/* Free space in empty block of this row */</span>
    <span class="hl kwb">unsigned</span>    width<span class="hl opt">;</span>                  <span class="hl com">/* Width of heap's doubling table */</span>
    <span class="hl kwb">unsigned</span>    expand_rows<span class="hl opt">;</span>            <span class="hl com">/* # of rows to expand heap by */</span>
    <span class="hl kwb">unsigned</span>    u<span class="hl opt">;</span>                      <span class="hl com">/* Local index variable */</span>

    <span class="hl com">/* Sanity check */</span>
    <span class="hl kwd">HDassert</span><span class="hl opt">(</span>fh<span class="hl opt">);</span>
    <span class="hl kwd">HDassert</span><span class="hl opt">(</span>state<span class="hl opt">);</span>

    <span class="hl com">/* Get some information for the heap */</span>
    block_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> row<span class="hl opt">);</span>
    block_free <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> row<span class="hl opt">);</span>
    width <span class="hl opt">=</span> <span class="hl kwd">DTABLE_WIDTH</span><span class="hl opt">(</span>fh<span class="hl opt">);</span>

    <span class="hl com">/* Compute the number of rows to expand heap by */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>row <span class="hl opt">&lt;</span> <span class="hl num">2</span><span class="hl opt">)</span>
        expand_rows <span class="hl opt">=</span> <span class="hl num">1</span><span class="hl opt">;</span>
    <span class="hl kwa">else if</span><span class="hl opt">(</span><span class="hl kwd">POWER_OF_TWO</span><span class="hl opt">(</span>row<span class="hl opt">))</span>
        expand_rows <span class="hl opt">=</span> row<span class="hl opt">;</span>
    <span class="hl kwa">else</span>
        expand_rows <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>

    <span class="hl com">/* Compute first block &amp; all blocks heap size &amp; free space */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>state<span class="hl opt">-&gt;</span>man_size <span class="hl opt">==</span> <span class="hl num">0</span><span class="hl opt">) {</span>
        first_heap_size <span class="hl opt">=</span> block_size<span class="hl opt">;</span>
        first_free_space <span class="hl opt">=</span> block_free<span class="hl opt">;</span>
        all_heap_size <span class="hl opt">=</span> width <span class="hl opt">*</span> block_size<span class="hl opt">;</span>
        all_free_space <span class="hl opt">= (</span>width <span class="hl opt">-</span> <span class="hl num">1</span><span class="hl opt">) *</span> block_free<span class="hl opt">;</span>
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>
    <span class="hl kwa">else if</span><span class="hl opt">(</span>expand_rows <span class="hl opt">==</span> <span class="hl num">0</span><span class="hl opt">) {</span>
        all_heap_size <span class="hl opt">=</span> state<span class="hl opt">-&gt;</span>man_size<span class="hl opt">;</span>
        all_free_space <span class="hl opt">=</span> state<span class="hl opt">-&gt;</span>man_free_space<span class="hl opt">;</span>
        first_heap_size <span class="hl opt">=</span> all_heap_size<span class="hl opt">;</span>
        first_free_space <span class="hl opt">=</span> all_free_space<span class="hl opt">;</span>
        all_free_space <span class="hl opt">-=</span> block_free<span class="hl opt">;</span>      <span class="hl com">/* Account for shift from first free space */</span>
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>
    <span class="hl kwa">else</span> <span class="hl opt">{</span>
        all_heap_size <span class="hl opt">=</span> state<span class="hl opt">-&gt;</span>man_size<span class="hl opt">;</span>
        all_free_space <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
        <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> expand_rows<span class="hl opt">;</span> u<span class="hl opt">++) {</span>
            all_heap_size <span class="hl opt">+=</span> width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> row <span class="hl opt">+</span> u<span class="hl opt">);</span>
            all_free_space <span class="hl opt">+=</span> width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> row <span class="hl opt">+</span> u<span class="hl opt">);</span>
        <span class="hl opt">}</span> <span class="hl com">/* end for */</span>
        first_heap_size <span class="hl opt">=</span> all_heap_size<span class="hl opt">;</span>
        first_free_space <span class="hl opt">=</span> all_free_space<span class="hl opt">;</span>
        all_free_space <span class="hl opt">-=</span> block_free<span class="hl opt">;</span>      <span class="hl com">/* Account for shift from first free space */</span>
    <span class="hl opt">}</span> <span class="hl com">/* end else */</span>

    <span class="hl com">/* Loop over filling direct blocks, until root indirect row is full */</span>
    state<span class="hl opt">-&gt;</span>man_size <span class="hl opt">=</span> first_heap_size<span class="hl opt">;</span>
    state<span class="hl opt">-&gt;</span>man_free_space <span class="hl opt">=</span> first_free_space<span class="hl opt">;</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> width<span class="hl opt">;</span> u<span class="hl opt">++) {</span>
        <span class="hl com">/* Set heap's size &amp; free space correctly */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>u <span class="hl opt">==</span> <span class="hl num">1</span><span class="hl opt">) {</span>
            state<span class="hl opt">-&gt;</span>man_size <span class="hl opt">=</span> all_heap_size<span class="hl opt">;</span>
            state<span class="hl opt">-&gt;</span>man_free_space <span class="hl opt">=</span> all_free_space<span class="hl opt">;</span>
        <span class="hl opt">}</span> <span class="hl com">/* end if */</span>

        <span class="hl com">/* Account for new block added */</span>
        state<span class="hl opt">-&gt;</span>man_alloc_size <span class="hl opt">+=</span> block_size<span class="hl opt">;</span>

        <span class="hl com">/* Fill a direct heap block up */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_heap</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> row<span class="hl opt">,</span> obj_size<span class="hl opt">,</span> state<span class="hl opt">,</span> keep_ids<span class="hl opt">))</span>
            TEST_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end for */</span>

    <span class="hl com">/* Operations succeeded */</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* fill_root_row() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	fill_partial row</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Fill up part of a row of direct blocks in an non-root indirect block</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Tuesday, July 11, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static int</span>
<span class="hl kwd">fill_partial_row</span><span class="hl opt">(</span>H5HF_t <span class="hl opt">*</span>fh<span class="hl opt">,</span> hid_t dxpl<span class="hl opt">,</span> <span class="hl kwb">unsigned</span> row<span class="hl opt">,</span> <span class="hl kwb">unsigned</span> width<span class="hl opt">,</span>
    <span class="hl kwb">size_t</span> obj_size<span class="hl opt">,</span> fheap_heap_state_t <span class="hl opt">*</span>state<span class="hl opt">,</span> fheap_heap_ids_t <span class="hl opt">*</span>keep_ids<span class="hl opt">)</span>
<span class="hl opt">{</span>
    <span class="hl kwb">size_t</span>      block_size<span class="hl opt">;</span>             <span class="hl com">/* Size of direct block in this row */</span>
    <span class="hl kwb">unsigned</span>    u<span class="hl opt">;</span>                      <span class="hl com">/* Local index variable */</span>

    <span class="hl com">/* Sanity check */</span>
    <span class="hl kwd">HDassert</span><span class="hl opt">(</span>fh<span class="hl opt">);</span>
    <span class="hl kwd">HDassert</span><span class="hl opt">(</span>state<span class="hl opt">);</span>

    <span class="hl com">/* Get some information for the heap */</span>
    block_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> row<span class="hl opt">);</span>

    <span class="hl com">/* Loop over filling direct blocks, until indirect row is full */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> width<span class="hl opt">;</span> u<span class="hl opt">++) {</span>
        <span class="hl com">/* Adjust stats for new block */</span>
        state<span class="hl opt">-&gt;</span>man_alloc_size <span class="hl opt">+=</span> block_size<span class="hl opt">;</span>

        <span class="hl com">/* Fill a direct heap block up */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_heap</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> row<span class="hl opt">,</span> obj_size<span class="hl opt">,</span> state<span class="hl opt">,</span> keep_ids<span class="hl opt">))</span>
            TEST_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end for */</span>

    <span class="hl com">/* Operations succeeded */</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* fill_partial_row() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	fill_row</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Fill up entire row of direct blocks in an non-root indirect block</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, April 10, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static int</span>
<span class="hl kwd">fill_row</span><span class="hl opt">(</span>H5HF_t <span class="hl opt">*</span>fh<span class="hl opt">,</span> hid_t dxpl<span class="hl opt">,</span> <span class="hl kwb">unsigned</span> row<span class="hl opt">,</span> <span class="hl kwb">size_t</span> obj_size<span class="hl opt">,</span>
    fheap_heap_state_t <span class="hl opt">*</span>state<span class="hl opt">,</span> fheap_heap_ids_t <span class="hl opt">*</span>keep_ids<span class="hl opt">)</span>
<span class="hl opt">{</span>
    <span class="hl com">/* Sanity check */</span>
    <span class="hl kwd">HDassert</span><span class="hl opt">(</span>fh<span class="hl opt">);</span>
    <span class="hl kwd">HDassert</span><span class="hl opt">(</span>state<span class="hl opt">);</span>

    <span class="hl com">/* Fill the entire row (with the partial row fill routine) */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_partial_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> row<span class="hl opt">,</span> <span class="hl kwd">DTABLE_WIDTH</span><span class="hl opt">(</span>fh<span class="hl opt">),</span> obj_size<span class="hl opt">,</span> state<span class="hl opt">,</span> keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Operations succeeded */</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* fill_row() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	fill_root_direct</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Insert (small) objects to fill up the free space in all direct</span>
<span class="hl com"> *              heap blocks in the root indirect block</span>
<span class="hl com"> *              (Generally used to create &amp; fill up direct blocks in a new</span>
<span class="hl com"> *              indirect block)</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, April  3, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static int</span>
<span class="hl kwd">fill_root_direct</span><span class="hl opt">(</span>H5HF_t <span class="hl opt">*</span>fh<span class="hl opt">,</span> hid_t dxpl<span class="hl opt">,</span> <span class="hl kwb">size_t</span> obj_size<span class="hl opt">,</span>
    fheap_heap_state_t <span class="hl opt">*</span>state<span class="hl opt">,</span> fheap_heap_ids_t <span class="hl opt">*</span>keep_ids<span class="hl opt">)</span>
<span class="hl opt">{</span>
    <span class="hl kwb">unsigned</span>    max_dblock_rows<span class="hl opt">;</span>        <span class="hl com">/* Max. # of direct block rows in indirect block */</span>
    <span class="hl kwb">unsigned</span>    row<span class="hl opt">;</span>                    <span class="hl com">/* Row being created */</span>

    <span class="hl com">/* Get heap info */</span>
    max_dblock_rows <span class="hl opt">=</span> <span class="hl kwd">DTABLE_MAX_DROWS</span><span class="hl opt">(</span>fh<span class="hl opt">);</span>
    <span class="hl kwd">HDassert</span><span class="hl opt">(</span>max_dblock_rows<span class="hl opt">);</span>

    <span class="hl com">/* Loop over rows */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>row <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> row <span class="hl opt">&lt;</span> max_dblock_rows<span class="hl opt">;</span> row<span class="hl opt">++)</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_root_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> row<span class="hl opt">,</span> obj_size<span class="hl opt">,</span> state<span class="hl opt">,</span> keep_ids<span class="hl opt">))</span>
            TEST_ERROR

    <span class="hl com">/* Operations succeeded */</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* fill_root_direct() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	fill_2nd_indirect</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Insert (small) objects to fill up the free space in all direct</span>
<span class="hl com"> *              heap blocks in a second-level indirect block (which only has</span>
<span class="hl com"> *              direct blocks)</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, April 10, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static int</span>
<span class="hl kwd">fill_2nd_indirect</span><span class="hl opt">(</span>H5HF_t <span class="hl opt">*</span>fh<span class="hl opt">,</span> hid_t dxpl<span class="hl opt">,</span> <span class="hl kwb">unsigned</span> pos<span class="hl opt">,</span> <span class="hl kwb">size_t</span> obj_size<span class="hl opt">,</span>
    fheap_heap_state_t <span class="hl opt">*</span>state<span class="hl opt">,</span> fheap_heap_ids_t <span class="hl opt">*</span>keep_ids<span class="hl opt">)</span>
<span class="hl opt">{</span>
    <span class="hl kwb">unsigned</span>    max_dblock_rows<span class="hl opt">;</span>        <span class="hl com">/* Max. # of direct block rows in indirect block */</span>
    <span class="hl kwb">unsigned</span>    row<span class="hl opt">;</span>                    <span class="hl com">/* Current row to create */</span>

    <span class="hl com">/* Get some information for the heap */</span>
    max_dblock_rows <span class="hl opt">=</span> <span class="hl kwd">IBLOCK_MAX_DROWS</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> pos<span class="hl opt">);</span>
    <span class="hl kwd">HDassert</span><span class="hl opt">(</span>max_dblock_rows<span class="hl opt">);</span>

    <span class="hl com">/* Loop over rows */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>row <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> row <span class="hl opt">&lt;</span> max_dblock_rows<span class="hl opt">;</span> row<span class="hl opt">++)</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> row<span class="hl opt">,</span> obj_size<span class="hl opt">,</span> state<span class="hl opt">,</span> keep_ids<span class="hl opt">))</span>
            TEST_ERROR

    <span class="hl com">/* Operations succeeded */</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* fill_2nd_direct() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	fill_all_direct</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Insert (small) objects to fill up the free space in all direct</span>
<span class="hl com"> *              heap blocks up to the maximum direct block size</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, April 10, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static int</span>
<span class="hl kwd">fill_all_direct</span><span class="hl opt">(</span>H5HF_t <span class="hl opt">*</span>fh<span class="hl opt">,</span> hid_t dxpl<span class="hl opt">,</span> <span class="hl kwb">size_t</span> obj_size<span class="hl opt">,</span>
    fheap_heap_state_t <span class="hl opt">*</span>state<span class="hl opt">,</span> fheap_heap_ids_t <span class="hl opt">*</span>keep_ids<span class="hl opt">)</span>
<span class="hl opt">{</span>
    <span class="hl kwb">unsigned</span>    max_dblock_rows<span class="hl opt">;</span>        <span class="hl com">/* Max. # of direct block rows in indirect block */</span>
    <span class="hl kwb">unsigned</span>    row<span class="hl opt">;</span>                    <span class="hl com">/* Row being created */</span>

    <span class="hl com">/* Get heap info */</span>
    max_dblock_rows <span class="hl opt">=</span> <span class="hl kwd">DTABLE_MAX_DROWS</span><span class="hl opt">(</span>fh<span class="hl opt">);</span>
    <span class="hl kwd">HDassert</span><span class="hl opt">(</span>max_dblock_rows<span class="hl opt">);</span>

    <span class="hl com">/* Loop over rows */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>row <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> row <span class="hl opt">&lt;</span> max_dblock_rows<span class="hl opt">;</span> row<span class="hl opt">++)</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> row<span class="hl opt">,</span> obj_size<span class="hl opt">,</span> state<span class="hl opt">,</span> keep_ids<span class="hl opt">))</span>
            TEST_ERROR

    <span class="hl com">/* Operations succeeded */</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* fill_all_direct() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	fill_2nd_indirect_row</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Insert (small) objects to fill up the free space in all direct</span>
<span class="hl com"> *              heap blocks in a row of second-level indirect block (which only</span>
<span class="hl com"> *              have direct blocks)</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, April 10, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static int</span>
<span class="hl kwd">fill_2nd_indirect_row</span><span class="hl opt">(</span>H5HF_t <span class="hl opt">*</span>fh<span class="hl opt">,</span> hid_t dxpl<span class="hl opt">,</span> <span class="hl kwb">unsigned</span> pos<span class="hl opt">,</span> <span class="hl kwb">size_t</span> obj_size<span class="hl opt">,</span>
    fheap_heap_state_t <span class="hl opt">*</span>state<span class="hl opt">,</span> fheap_heap_ids_t <span class="hl opt">*</span>keep_ids<span class="hl opt">)</span>
<span class="hl opt">{</span>
    <span class="hl kwb">unsigned</span>    width<span class="hl opt">;</span>                  <span class="hl com">/* Width of heap's doubling table */</span>
    <span class="hl kwb">unsigned</span>    u<span class="hl opt">;</span>                      <span class="hl com">/* Local index variable */</span>

    <span class="hl com">/* Get some information for the heap */</span>
    width <span class="hl opt">=</span> <span class="hl kwd">DTABLE_WIDTH</span><span class="hl opt">(</span>fh<span class="hl opt">);</span>

    <span class="hl com">/* Loop over row of indirect blocks */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> width<span class="hl opt">;</span> u<span class="hl opt">++)</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_2nd_indirect</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> pos<span class="hl opt">,</span> obj_size<span class="hl opt">,</span> state<span class="hl opt">,</span> keep_ids<span class="hl opt">))</span>
            TEST_ERROR

    <span class="hl com">/* Operations succeeded */</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* fill_2nd_direct_row() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	fill_all_2nd_indirect_rows</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Insert (small) objects to fill up the free space in all direct</span>
<span class="hl com"> *              heap blocks in all rows of second-level indirect blocks (which only</span>
<span class="hl com"> *              have direct blocks)</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, April 10, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static int</span>
<span class="hl kwd">fill_all_2nd_indirect_rows</span><span class="hl opt">(</span>H5HF_t <span class="hl opt">*</span>fh<span class="hl opt">,</span> hid_t dxpl<span class="hl opt">,</span> <span class="hl kwb">size_t</span> obj_size<span class="hl opt">,</span>
    fheap_heap_state_t <span class="hl opt">*</span>state<span class="hl opt">,</span> fheap_heap_ids_t <span class="hl opt">*</span>keep_ids<span class="hl opt">)</span>
<span class="hl opt">{</span>
    <span class="hl kwb">unsigned</span>    width<span class="hl opt">;</span>                  <span class="hl com">/* Width of heap's doubling table */</span>
    <span class="hl kwb">unsigned</span>    u<span class="hl opt">;</span>                      <span class="hl com">/* Local index variable */</span>

    <span class="hl com">/* Get some information for the heap */</span>
    width <span class="hl opt">=</span> <span class="hl kwd">DTABLE_WIDTH</span><span class="hl opt">(</span>fh<span class="hl opt">);</span>

    <span class="hl com">/* Loop over rows of 2nd level deep indirect blocks */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt; (</span><span class="hl kwd">H5VM_log2_of2</span><span class="hl opt">(</span>width<span class="hl opt">) +</span> <span class="hl num">1</span><span class="hl opt">);</span> u<span class="hl opt">++)</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_2nd_indirect_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span>u <span class="hl opt">+</span> <span class="hl num">1</span><span class="hl opt">),</span> obj_size<span class="hl opt">,</span> state<span class="hl opt">,</span> keep_ids<span class="hl opt">))</span>
            TEST_ERROR

    <span class="hl com">/* Operations succeeded */</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* fill_2nd_direct_row() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	fill_3rd_indirect</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Insert (small) objects to fill up the free space in all direct</span>
<span class="hl com"> *              heap blocks in a third-level indirect block (which</span>
<span class="hl com"> *              has one more level of indirect blocks)</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Tuesday, April 18, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static int</span>
<span class="hl kwd">fill_3rd_indirect</span><span class="hl opt">(</span>H5HF_t <span class="hl opt">*</span>fh<span class="hl opt">,</span> hid_t dxpl<span class="hl opt">,</span> <span class="hl kwb">unsigned</span> pos<span class="hl opt">,</span> <span class="hl kwb">size_t</span> obj_size<span class="hl opt">,</span>
    fheap_heap_state_t <span class="hl opt">*</span>state<span class="hl opt">,</span> fheap_heap_ids_t <span class="hl opt">*</span>keep_ids<span class="hl opt">)</span>
<span class="hl opt">{</span>
    <span class="hl kwb">unsigned</span>    u<span class="hl opt">;</span>                      <span class="hl com">/* Local index variable */</span>

    <span class="hl com">/* Fill all direct block rows in third level indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> obj_size<span class="hl opt">,</span> state<span class="hl opt">,</span> keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Fill rows of recursive indirect blocks in third level indirect block */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> pos<span class="hl opt">;</span> u<span class="hl opt">++)</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_2nd_indirect_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span>u <span class="hl opt">+</span> <span class="hl num">1</span><span class="hl opt">),</span> obj_size<span class="hl opt">,</span> state<span class="hl opt">,</span> keep_ids<span class="hl opt">))</span>
            TEST_ERROR

    <span class="hl com">/* Operations succeeded */</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* fill_3rd_indirect() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	fill_3rd_indirect_row</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Insert (small) objects to fill up the free space in all direct</span>
<span class="hl com"> *              heap blocks in a row of third-level indirect block (which</span>
<span class="hl com"> *              have one more level of indirect blocks)</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, April 10, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static int</span>
<span class="hl kwd">fill_3rd_indirect_row</span><span class="hl opt">(</span>H5HF_t <span class="hl opt">*</span>fh<span class="hl opt">,</span> hid_t dxpl<span class="hl opt">,</span> <span class="hl kwb">unsigned</span> pos<span class="hl opt">,</span> <span class="hl kwb">size_t</span> obj_size<span class="hl opt">,</span>
    fheap_heap_state_t <span class="hl opt">*</span>state<span class="hl opt">,</span> fheap_heap_ids_t <span class="hl opt">*</span>keep_ids<span class="hl opt">)</span>
<span class="hl opt">{</span>
    <span class="hl kwb">unsigned</span>    width<span class="hl opt">;</span>                  <span class="hl com">/* Width of heap's doubling table */</span>
    <span class="hl kwb">unsigned</span>    u<span class="hl opt">;</span>              <span class="hl com">/* Local index variable */</span>

    <span class="hl com">/* Get some information for the heap */</span>
    width <span class="hl opt">=</span> <span class="hl kwd">DTABLE_WIDTH</span><span class="hl opt">(</span>fh<span class="hl opt">);</span>

    <span class="hl com">/* Loop over row of 3rd level indirect blocks */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> width<span class="hl opt">;</span> u<span class="hl opt">++)</span>
        <span class="hl com">/* Fill third level indirect block */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_3rd_indirect</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> pos<span class="hl opt">,</span> obj_size<span class="hl opt">,</span> state<span class="hl opt">,</span> keep_ids<span class="hl opt">))</span>
            TEST_ERROR

    <span class="hl com">/* Operations succeeded */</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* fill_3rd_direct_row() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	fill_all_3rd_indirect_rows</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Insert (small) objects to fill up the free space in all direct</span>
<span class="hl com"> *              heap blocks in all rows of third-level indirect blocks (which</span>
<span class="hl com"> *              have one more level of indirect blocks)</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, April 10, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static int</span>
<span class="hl kwd">fill_all_3rd_indirect_rows</span><span class="hl opt">(</span>H5HF_t <span class="hl opt">*</span>fh<span class="hl opt">,</span> hid_t dxpl<span class="hl opt">,</span> <span class="hl kwb">size_t</span> obj_size<span class="hl opt">,</span>
    fheap_heap_state_t <span class="hl opt">*</span>state<span class="hl opt">,</span> fheap_heap_ids_t <span class="hl opt">*</span>keep_ids<span class="hl opt">)</span>
<span class="hl opt">{</span>
    <span class="hl kwb">unsigned</span>    width<span class="hl opt">;</span>                  <span class="hl com">/* Width of heap's doubling table */</span>
    <span class="hl kwb">unsigned</span>    u<span class="hl opt">;</span>                      <span class="hl com">/* Local index variable */</span>

    <span class="hl com">/* Get some information for the heap */</span>
    width <span class="hl opt">=</span> <span class="hl kwd">DTABLE_WIDTH</span><span class="hl opt">(</span>fh<span class="hl opt">);</span>

    <span class="hl com">/* Loop over rows of 3rd level deep indirect blocks */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt; (</span><span class="hl kwd">H5VM_log2_of2</span><span class="hl opt">(</span>width<span class="hl opt">) +</span> <span class="hl num">1</span><span class="hl opt">);</span> u<span class="hl opt">++)</span>
        <span class="hl com">/* Fill row of 3rd level indirect blocks */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_3rd_indirect_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span>u <span class="hl opt">+</span> <span class="hl num">1</span><span class="hl opt">),</span> obj_size<span class="hl opt">,</span> state<span class="hl opt">,</span> keep_ids<span class="hl opt">))</span>
            TEST_ERROR

    <span class="hl com">/* Operations succeeded */</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* fill_all_3rd_direct_rows() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	fill_4th_indirect_row</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Insert (small) objects to fill up the free space in all direct</span>
<span class="hl com"> *              heap blocks in a row of fourth-level indirect blocks (which</span>
<span class="hl com"> *              have two more levels of indirect blocks)</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, April 10, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static int</span>
<span class="hl kwd">fill_4th_indirect_row</span><span class="hl opt">(</span>H5HF_t <span class="hl opt">*</span>fh<span class="hl opt">,</span> hid_t dxpl<span class="hl opt">,</span> <span class="hl kwb">unsigned</span> pos<span class="hl opt">,</span> <span class="hl kwb">size_t</span> obj_size<span class="hl opt">,</span>
    fheap_heap_state_t <span class="hl opt">*</span>state<span class="hl opt">,</span> fheap_heap_ids_t <span class="hl opt">*</span>keep_ids<span class="hl opt">)</span>
<span class="hl opt">{</span>
    <span class="hl kwb">unsigned</span>    width<span class="hl opt">;</span>                  <span class="hl com">/* Width of heap's doubling table */</span>
    <span class="hl kwb">unsigned</span>    u<span class="hl opt">,</span> v<span class="hl opt">;</span>                   <span class="hl com">/* Local index variables */</span>

    <span class="hl com">/* Get some information for the heap */</span>
    width <span class="hl opt">=</span> <span class="hl kwd">DTABLE_WIDTH</span><span class="hl opt">(</span>fh<span class="hl opt">);</span>

    <span class="hl com">/* Loop over row of 4th level indirect blocks */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> width<span class="hl opt">;</span> u<span class="hl opt">++) {</span>
        <span class="hl com">/* Fill all direct block rows in fourth level indirect block */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> obj_size<span class="hl opt">,</span> state<span class="hl opt">,</span> keep_ids<span class="hl opt">))</span>
            TEST_ERROR

        <span class="hl com">/* Fill all rows of 2nd level deep indirect blocks in fourth level indirect block */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_2nd_indirect_rows</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> obj_size<span class="hl opt">,</span> state<span class="hl opt">,</span> keep_ids<span class="hl opt">))</span>
            TEST_ERROR

        <span class="hl com">/* Fill rows of third level indirect blocks in fourth level indirect block */</span>
        <span class="hl kwa">for</span><span class="hl opt">(</span>v <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> v <span class="hl opt">&lt;</span> pos<span class="hl opt">;</span> v<span class="hl opt">++)</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_3rd_indirect_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span>v <span class="hl opt">+</span> <span class="hl num">1</span><span class="hl opt">),</span> obj_size<span class="hl opt">,</span> state<span class="hl opt">,</span> keep_ids<span class="hl opt">))</span>
                TEST_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end for */</span>

    <span class="hl com">/* Operations succeeded */</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* fill_4th_direct_row() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	fill_all_4th_indirect_rows</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Insert (small) objects to fill up the free space in all direct</span>
<span class="hl com"> *              heap blocks in all rows of fourth-level indirect blocks (which</span>
<span class="hl com"> *              have two more levels of indirect blocks)</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, April 10, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static int</span>
<span class="hl kwd">fill_all_4th_indirect_rows</span><span class="hl opt">(</span>H5HF_t <span class="hl opt">*</span>fh<span class="hl opt">,</span> hid_t dxpl<span class="hl opt">,</span> <span class="hl kwb">size_t</span> obj_size<span class="hl opt">,</span>
    fheap_heap_state_t <span class="hl opt">*</span>state<span class="hl opt">,</span> fheap_heap_ids_t <span class="hl opt">*</span>keep_ids<span class="hl opt">)</span>
<span class="hl opt">{</span>
    <span class="hl kwb">unsigned</span>    width<span class="hl opt">;</span>                  <span class="hl com">/* Width of heap's doubling table */</span>
    <span class="hl kwb">unsigned</span>    u<span class="hl opt">;</span>                      <span class="hl com">/* Local index variable */</span>

    <span class="hl com">/* Get some information for the heap */</span>
    width <span class="hl opt">=</span> <span class="hl kwd">DTABLE_WIDTH</span><span class="hl opt">(</span>fh<span class="hl opt">);</span>

    <span class="hl com">/* Loop over rows of 4th level deep indirect blocks */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt; (</span><span class="hl kwd">H5VM_log2_of2</span><span class="hl opt">(</span>width<span class="hl opt">) +</span> <span class="hl num">1</span><span class="hl opt">);</span> u<span class="hl opt">++) {</span>
        <span class="hl com">/* Fill row of 4th level indirect blocks */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_4th_indirect_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span>u <span class="hl opt">+</span> <span class="hl num">1</span><span class="hl opt">),</span> obj_size<span class="hl opt">,</span> state<span class="hl opt">,</span> keep_ids<span class="hl opt">))</span>
            TEST_ERROR

        <span class="hl com">/* Account for root indirect block doubling # of rows again */</span>
        <span class="hl com">/* (From 16 rows to the max. # of rows: 22) */</span>
        <span class="hl com">/* (Note: this is tied to the particular doubling table/heap creation parameters) */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>u <span class="hl opt">==</span> <span class="hl num">0</span><span class="hl opt">) {</span>
            <span class="hl kwb">unsigned</span> max_root_rows<span class="hl opt">;</span>     <span class="hl com">/* Maximum # of rows in root indirect block */</span>
            <span class="hl kwb">unsigned</span> row<span class="hl opt">;</span>               <span class="hl com">/* Row in heap */</span>

            <span class="hl com">/* Get some information for the heap */</span>
            max_root_rows <span class="hl opt">=</span> <span class="hl kwd">HEAP_MAX_ROOT_ROWS</span><span class="hl opt">(</span>fh<span class="hl opt">);</span>

            <span class="hl com">/* Increase heap size &amp; free space */</span>
            <span class="hl kwa">for</span><span class="hl opt">(</span>row <span class="hl opt">=</span> <span class="hl num">16</span><span class="hl opt">;</span> row <span class="hl opt">&lt;</span> max_root_rows<span class="hl opt">;</span> row<span class="hl opt">++) {</span>
                state<span class="hl opt">-&gt;</span>man_size <span class="hl opt">+=</span> width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> row<span class="hl opt">);</span>
                state<span class="hl opt">-&gt;</span>man_free_space <span class="hl opt">+=</span> width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> row<span class="hl opt">);</span>
            <span class="hl opt">}</span> <span class="hl com">/* end for */</span>
        <span class="hl opt">}</span> <span class="hl com">/* end if */</span>
    <span class="hl opt">}</span> <span class="hl com">/* end for */</span>

    <span class="hl com">/* Operations succeeded */</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* fill_all_4th_direct_rows() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_create</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Create fractal heap</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Friday, February 24, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_create</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t UNUSED <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_create_t test_cparam<span class="hl opt">;</span>          <span class="hl com">/* Creation parameters for heap */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Heap address in file */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>             <span class="hl com">/* File size, w/o heap */</span>
    h5_stat_size_t       file_size<span class="hl opt">;</span>              <span class="hl com">/* File size, after deleting heap */</span>
    <span class="hl kwb">size_t</span>      id_len<span class="hl opt">;</span>                 <span class="hl com">/* Size of fractal heap IDs */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>

    <span class="hl com">/* Set the filename to use for this test (dependent on fapl) */</span>
    <span class="hl kwd">h5_fixname</span><span class="hl opt">(</span>FILENAME<span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">],</span> fapl<span class="hl opt">,</span> filename<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>filename<span class="hl opt">));</span>

    <span class="hl com">/* Create the file to work on */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fcreate</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_TRUNC<span class="hl opt">,</span> H5P_DEFAULT<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Close file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Get the size of a file w/empty heap*/</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>empty_size <span class="hl opt">=</span> <span class="hl kwd">h5_get_file_size</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Re-open the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fopen</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_RDWR<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/*</span>
<span class="hl com">     * Test fractal heap creation</span>
<span class="hl com">     */</span>
    <span class="hl kwd">TESTING</span><span class="hl opt">(</span><span class="hl str">&quot;fractal heap creation&quot;</span><span class="hl opt">);</span>

    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_create</span><span class="hl opt">(</span>f<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">,</span> cparam<span class="hl opt">)))</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">&gt;</span> HEAP_ID_LEN<span class="hl opt">)</span>
        TEST_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_heap_addr</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(!</span><span class="hl kwd">H5F_addr_defined</span><span class="hl opt">(</span>fh_addr<span class="hl opt">))</span>
        TEST_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(&amp;</span>state<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>fheap_heap_state_t<span class="hl opt">));</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
        TEST_ERROR
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl com">/* Query the type of address mapping */</span>
    <span class="hl kwd">TESTING</span><span class="hl opt">(</span><span class="hl str">&quot;query heap creation parameters&quot;</span><span class="hl opt">);</span>
    <span class="hl kwd">HDmemset</span><span class="hl opt">(&amp;</span>test_cparam<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>H5HF_create_t<span class="hl opt">));</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_cparam_test</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>test_cparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_cmp_cparam_test</span><span class="hl opt">(</span>cparam<span class="hl opt">, &amp;</span>test_cparam<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Delete heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_delete</span><span class="hl opt">(</span>f<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">,</span> fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Get the size of the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file_size <span class="hl opt">=</span> <span class="hl kwd">h5_get_file_size</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Verify the file is correct size */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>file_size <span class="hl opt">!=</span> empty_size<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_create() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_reopen</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Create &amp; reopen a fractal heap</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Tuesday, April 18, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_reopen</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t UNUSED <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_create_t test_cparam<span class="hl opt">;</span>          <span class="hl com">/* Creation parameters for heap */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>             <span class="hl com">/* File size, w/o heap */</span>
    h5_stat_size_t       file_size<span class="hl opt">;</span>              <span class="hl com">/* File size, after deleting heap */</span>
    <span class="hl kwb">size_t</span>      id_len<span class="hl opt">;</span>                 <span class="hl com">/* Size of fractal heap IDs */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>

    <span class="hl com">/* Set the filename to use for this test (dependent on fapl) */</span>
    <span class="hl kwd">h5_fixname</span><span class="hl opt">(</span>FILENAME<span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">],</span> fapl<span class="hl opt">,</span> filename<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>filename<span class="hl opt">));</span>

    <span class="hl com">/* Create the file to work on */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fcreate</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_TRUNC<span class="hl opt">,</span> H5P_DEFAULT<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Close file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Get the size of a file w/empty heap*/</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>empty_size <span class="hl opt">=</span> <span class="hl kwd">h5_get_file_size</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Re-open the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fopen</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_RDWR<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
        STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/*</span>
<span class="hl com">     * Display testing message</span>
<span class="hl com">     */</span>

    <span class="hl kwd">TESTING</span><span class="hl opt">(</span><span class="hl str">&quot;create, close &amp; reopen fractal heap&quot;</span><span class="hl opt">);</span>

    <span class="hl com">/* Create heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_create</span><span class="hl opt">(</span>f<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">,</span> cparam<span class="hl opt">)))</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">&gt;</span> HEAP_ID_LEN<span class="hl opt">)</span>
        TEST_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_heap_addr</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(!</span><span class="hl kwd">H5F_addr_defined</span><span class="hl opt">(</span>fh_addr<span class="hl opt">))</span>
        TEST_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(&amp;</span>state<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>fheap_heap_state_t<span class="hl opt">));</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>reopen_heap<span class="hl opt">) {</span>
        <span class="hl com">/* Close file */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR

        <span class="hl com">/* Re-open the file */</span>
        <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fopen</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_RDWR<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR

        <span class="hl com">/* Get a pointer to the internal file object */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
            FAIL_STACK_ERROR

        <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
        <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR

    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>

    <span class="hl com">/* Re-open the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_open</span><span class="hl opt">(</span>f<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">,</span> fh_addr<span class="hl opt">)))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Query the creation parameters */</span>
    <span class="hl kwd">HDmemset</span><span class="hl opt">(&amp;</span>test_cparam<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>H5HF_create_t<span class="hl opt">));</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_cparam_test</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>test_cparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_cmp_cparam_test</span><span class="hl opt">(</span>cparam<span class="hl opt">, &amp;</span>test_cparam<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>

    <span class="hl com">/* Delete heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_delete</span><span class="hl opt">(</span>f<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">,</span> fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Get the size of the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file_size <span class="hl opt">=</span> <span class="hl kwd">h5_get_file_size</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Verify the file is correct size */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>file_size <span class="hl opt">!=</span> empty_size<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_reopen() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_open_twice</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Open a fractal heap twice</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Friday, August 18, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_open_twice</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t UNUSED <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t	file2 <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>             <span class="hl com">/* File ID */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5F_t	<span class="hl opt">*</span>f2 <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Internal file object pointer */</span>
    H5HF_create_t test_cparam<span class="hl opt">;</span>          <span class="hl com">/* Creation parameters for heap */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    H5HF_t      <span class="hl opt">*</span>fh2 <span class="hl opt">=</span> NULL<span class="hl opt">;</span>            <span class="hl com">/* 2nd fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>             <span class="hl com">/* File size, w/o heap */</span>
    h5_stat_size_t       file_size<span class="hl opt">;</span>              <span class="hl com">/* File size, after deleting heap */</span>
    <span class="hl kwb">size_t</span>      id_len<span class="hl opt">;</span>                 <span class="hl com">/* Size of fractal heap IDs */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>

    <span class="hl com">/* Set the filename to use for this test (dependent on fapl) */</span>
    <span class="hl kwd">h5_fixname</span><span class="hl opt">(</span>FILENAME<span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">],</span> fapl<span class="hl opt">,</span> filename<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>filename<span class="hl opt">));</span>

    <span class="hl com">/* Create the file to work on */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fcreate</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_TRUNC<span class="hl opt">,</span> H5P_DEFAULT<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Close file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Get the size of a file w/empty heap*/</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>empty_size <span class="hl opt">=</span> <span class="hl kwd">h5_get_file_size</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Re-open the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fopen</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_RDWR<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
        STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/*</span>
<span class="hl com">     * Display testing message</span>
<span class="hl com">     */</span>
    <span class="hl kwd">TESTING</span><span class="hl opt">(</span><span class="hl str">&quot;open fractal heap twice&quot;</span><span class="hl opt">);</span>

    <span class="hl com">/* Create heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_create</span><span class="hl opt">(</span>f<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">,</span> cparam<span class="hl opt">)))</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">&gt;</span> HEAP_ID_LEN<span class="hl opt">)</span>
        TEST_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_heap_addr</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(!</span><span class="hl kwd">H5F_addr_defined</span><span class="hl opt">(</span>fh_addr<span class="hl opt">))</span>
        TEST_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(&amp;</span>state<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>fheap_heap_state_t<span class="hl opt">));</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Open the heap again, through the first file handle */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh2 <span class="hl opt">=</span> <span class="hl kwd">H5HF_open</span><span class="hl opt">(</span>f<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">,</span> fh_addr<span class="hl opt">)))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Verify the creation parameters */</span>
    <span class="hl kwd">HDmemset</span><span class="hl opt">(&amp;</span>test_cparam<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>H5HF_create_t<span class="hl opt">));</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_cparam_test</span><span class="hl opt">(</span>fh2<span class="hl opt">, &amp;</span>test_cparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_cmp_cparam_test</span><span class="hl opt">(</span>cparam<span class="hl opt">, &amp;</span>test_cparam<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Close the second fractal heap wrapper */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh2<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    fh2 <span class="hl opt">=</span> NULL<span class="hl opt">;</span>

    <span class="hl com">/* Check for closing &amp; re-opening the heap &amp; file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_file</span><span class="hl opt">(&amp;</span>file<span class="hl opt">, &amp;</span>f<span class="hl opt">,</span> filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Re-open the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file2 <span class="hl opt">=</span> <span class="hl kwd">H5Freopen</span><span class="hl opt">(</span>file<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f2 <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file2<span class="hl opt">)))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f2<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Open the fractal heap through the second file handle */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh2 <span class="hl opt">=</span> <span class="hl kwd">H5HF_open</span><span class="hl opt">(</span>f2<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">,</span> fh_addr<span class="hl opt">)))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Verify the creation parameters */</span>
    <span class="hl kwd">HDmemset</span><span class="hl opt">(&amp;</span>test_cparam<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>H5HF_create_t<span class="hl opt">));</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_cparam_test</span><span class="hl opt">(</span>fh2<span class="hl opt">, &amp;</span>test_cparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_cmp_cparam_test</span><span class="hl opt">(</span>cparam<span class="hl opt">, &amp;</span>test_cparam<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Close the first fractal heap wrapper */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>

    <span class="hl com">/* Close the first file */</span>
    <span class="hl com">/* (close before second file, to detect error on internal heap header's</span>
<span class="hl com">     *  shared file information)</span>
<span class="hl com">     */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Close the second fractal heap wrapper */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh2<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    fh2 <span class="hl opt">=</span> NULL<span class="hl opt">;</span>

    <span class="hl com">/* Delete heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_delete</span><span class="hl opt">(</span>f2<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">,</span> fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Close the second file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file2<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Get the size of the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file_size <span class="hl opt">=</span> <span class="hl kwd">h5_get_file_size</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Verify the file is correct size */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>file_size <span class="hl opt">!=</span> empty_size<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh2<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh2<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file2<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_open_twice() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_delete_open</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Delete opened fractal heap (&amp; open deleted heap)</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Friday, January  5, 2007</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_delete_open</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t UNUSED <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_create_t test_cparam<span class="hl opt">;</span>          <span class="hl com">/* Creation parameters for heap */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    H5HF_t      <span class="hl opt">*</span>fh2 <span class="hl opt">=</span> NULL<span class="hl opt">;</span>            <span class="hl com">/* 2nd fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    <span class="hl kwb">size_t</span>      id_len<span class="hl opt">;</span>                 <span class="hl com">/* Size of fractal heap IDs */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>    <span class="hl com">/* Size of a file with an empty heap */</span>
    h5_stat_size_t       file_size<span class="hl opt">;</span>     <span class="hl com">/* Size of file currently */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>

    <span class="hl com">/* Set the filename to use for this test (dependent on fapl) */</span>
    <span class="hl kwd">h5_fixname</span><span class="hl opt">(</span>FILENAME<span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">],</span> fapl<span class="hl opt">,</span> filename<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>filename<span class="hl opt">));</span>

    <span class="hl com">/* Create the file to work on */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fcreate</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_TRUNC<span class="hl opt">,</span> H5P_DEFAULT<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Close file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Get the size of a file w/no heap*/</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>empty_size <span class="hl opt">=</span> <span class="hl kwd">h5_get_file_size</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Re-open the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fopen</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_RDWR<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
        STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Display test banner */</span>
    <span class="hl kwd">TESTING</span><span class="hl opt">(</span><span class="hl str">&quot;deleting open fractal heap&quot;</span><span class="hl opt">);</span>

    <span class="hl com">/* Create heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_create</span><span class="hl opt">(</span>f<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">,</span> cparam<span class="hl opt">)))</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">&gt;</span> HEAP_ID_LEN<span class="hl opt">)</span>
        TEST_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_heap_addr</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(!</span><span class="hl kwd">H5F_addr_defined</span><span class="hl opt">(</span>fh_addr<span class="hl opt">))</span>
        TEST_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(&amp;</span>state<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>fheap_heap_state_t<span class="hl opt">));</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Open the heap again */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh2 <span class="hl opt">=</span> <span class="hl kwd">H5HF_open</span><span class="hl opt">(</span>f<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">,</span> fh_addr<span class="hl opt">)))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Request that the heap be deleted */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_delete</span><span class="hl opt">(</span>f<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">,</span> fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Verify the creation parameters */</span>
    <span class="hl kwd">HDmemset</span><span class="hl opt">(&amp;</span>test_cparam<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>H5HF_create_t<span class="hl opt">));</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_cparam_test</span><span class="hl opt">(</span>fh2<span class="hl opt">, &amp;</span>test_cparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_cmp_cparam_test</span><span class="hl opt">(</span>cparam<span class="hl opt">, &amp;</span>test_cparam<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Close the second fractal heap wrapper */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh2<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    fh2 <span class="hl opt">=</span> NULL<span class="hl opt">;</span>

    <span class="hl com">/* Try re-opening the heap again (should fail, as heap will be deleted) */</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        fh2 <span class="hl opt">=</span> <span class="hl kwd">H5HF_open</span><span class="hl opt">(</span>f<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">,</span> fh_addr<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>fh2<span class="hl opt">) {</span>
        <span class="hl com">/* Close opened heap */</span>
        <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh2<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">);</span>

        <span class="hl com">/* Indicate error */</span>
        TEST_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>

    <span class="hl com">/* Close the first fractal heap wrapper */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>

    <span class="hl com">/* Check for closing &amp; re-opening the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>reopen_heap<span class="hl opt">) {</span>
        <span class="hl com">/* Close file */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR

        <span class="hl com">/* Re-open the file */</span>
        <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fopen</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_RDWR<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR

        <span class="hl com">/* Get a pointer to the internal file object */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
            FAIL_STACK_ERROR

        <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
        <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR

    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>

    <span class="hl com">/* Try re-opening the heap again (should fail, as heap is now deleted) */</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_open</span><span class="hl opt">(</span>f<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">,</span> fh_addr<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">) {</span>
        <span class="hl com">/* Close opened heap */</span>
        <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">);</span>

        <span class="hl com">/* Indicate error */</span>
        TEST_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Get the size of the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file_size <span class="hl opt">=</span> <span class="hl kwd">h5_get_file_size</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Verify the file is correct size */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>file_size <span class="hl opt">!=</span> empty_size<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh2<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh2<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_delete_open() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_id_limits</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test limits for heap ID lengths</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, August 14, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_id_limits</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    H5HF_create_t tmp_cparam<span class="hl opt">;</span>           <span class="hl com">/* Local heap creation parameters */</span>
    <span class="hl kwb">unsigned</span>    deflate_level<span class="hl opt">;</span>          <span class="hl com">/* Deflation level */</span>
    <span class="hl kwb">size_t</span>      id_len<span class="hl opt">;</span>                 <span class="hl com">/* Size of fractal heap IDs */</span>
    <span class="hl kwb">size_t</span>      tiny_max_len<span class="hl opt">;</span>           <span class="hl com">/* Max. length of tiny objects */</span>
    hbool_t     tiny_len_extended<span class="hl opt">;</span>      <span class="hl com">/* Do tiny objects use two bytes for the length? */</span>
    hbool_t     huge_ids_direct<span class="hl opt">;</span>        <span class="hl com">/* Are 'huge' objects directly acccessed? */</span>

    <span class="hl com">/* Set the filename to use for this test (dependent on fapl) */</span>
    <span class="hl kwd">h5_fixname</span><span class="hl opt">(</span>FILENAME<span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">],</span> fapl<span class="hl opt">,</span> filename<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>filename<span class="hl opt">));</span>

    <span class="hl com">/* Create the file to work on */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fcreate</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_TRUNC<span class="hl opt">,</span> H5P_DEFAULT<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Display testing message */</span>
    <span class="hl kwd">TESTING</span><span class="hl opt">(</span><span class="hl str">&quot;limits of heap ID lengths&quot;</span><span class="hl opt">)</span>

    <span class="hl com">/* Copy heap creation properties */</span>
    <span class="hl kwd">HDmemcpy</span><span class="hl opt">(&amp;</span>tmp_cparam<span class="hl opt">,</span> cparam<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>H5HF_create_t<span class="hl opt">));</span>


    <span class="hl com">/* Set the 'default' heap ID length */</span>
    tmp_cparam<span class="hl opt">.</span>id_len <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>

    <span class="hl com">/* Create absolute heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_create</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>tmp_cparam<span class="hl opt">)))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Test ID length information for heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">!=</span> HEAP_ID_LEN<span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_tiny_info_test</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>tiny_max_len<span class="hl opt">, &amp;</span>tiny_len_extended<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>tiny_max_len <span class="hl opt">!= (</span>HEAP_ID_LEN <span class="hl opt">-</span> <span class="hl num">1</span><span class="hl opt">))</span>
        TEST_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>tiny_len_extended <span class="hl opt">!=</span> FALSE<span class="hl opt">)</span>
        TEST_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_huge_info_test</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> NULL<span class="hl opt">, &amp;</span>huge_ids_direct<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>huge_ids_direct <span class="hl opt">!=</span> FALSE<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>


    <span class="hl com">/* Set the heap ID length to the size needed for directly accessing 'huge' objects */</span>
    <span class="hl com">/* (with no I/O pipeline filters) */</span>
    tmp_cparam<span class="hl opt">.</span>id_len <span class="hl opt">=</span> <span class="hl num">1</span><span class="hl opt">;</span>

    <span class="hl com">/* Create absolute heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_create</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>tmp_cparam<span class="hl opt">)))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Test ID length information for heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">!=</span> <span class="hl num">17</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_tiny_info_test</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>tiny_max_len<span class="hl opt">, &amp;</span>tiny_len_extended<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>tiny_max_len <span class="hl opt">!=</span> <span class="hl num">16</span><span class="hl opt">)</span>
        TEST_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>tiny_len_extended <span class="hl opt">!=</span> FALSE<span class="hl opt">)</span>
        TEST_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_huge_info_test</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> NULL<span class="hl opt">, &amp;</span>huge_ids_direct<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>huge_ids_direct <span class="hl opt">!=</span> TRUE<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>


    <span class="hl com">/* Set the heap ID length to the size needed for directly accessing 'huge' objects */</span>
    <span class="hl com">/* (with I/O pipeline filters) */</span>
    tmp_cparam<span class="hl opt">.</span>id_len <span class="hl opt">=</span> <span class="hl num">1</span><span class="hl opt">;</span>

    <span class="hl com">/* Set an I/O filter for heap data */</span>
    deflate_level <span class="hl opt">=</span> <span class="hl num">6</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Z_append</span><span class="hl opt">(&amp;</span>tmp_cparam<span class="hl opt">.</span>pline<span class="hl opt">,</span> H5Z_FILTER_DEFLATE<span class="hl opt">,</span> H5Z_FLAG_OPTIONAL<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">1</span><span class="hl opt">, &amp;</span>deflate_level<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Create absolute heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_create</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>tmp_cparam<span class="hl opt">)))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Test ID length information for heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">!=</span> <span class="hl num">29</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_tiny_info_test</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>tiny_max_len<span class="hl opt">, &amp;</span>tiny_len_extended<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>tiny_max_len <span class="hl opt">!=</span> <span class="hl num">27</span><span class="hl opt">)</span>
        TEST_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>tiny_len_extended <span class="hl opt">!=</span> TRUE<span class="hl opt">)</span>
        TEST_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_huge_info_test</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> NULL<span class="hl opt">, &amp;</span>huge_ids_direct<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>huge_ids_direct <span class="hl opt">!=</span> TRUE<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>

    <span class="hl com">/* Release the I/O pipeline filter information */</span>
    <span class="hl kwd">H5O_msg_reset</span><span class="hl opt">(</span>H5O_PLINE_ID<span class="hl opt">, &amp;</span>tmp_cparam<span class="hl opt">.</span>pline<span class="hl opt">);</span>


    <span class="hl com">/* Set the heap ID length to a size that's too small for 'managed' heap IDs */</span>
    tmp_cparam<span class="hl opt">.</span>id_len <span class="hl opt">=</span> <span class="hl num">3</span><span class="hl opt">;</span>

    <span class="hl com">/* Create absolute heap */</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_create</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>tmp_cparam<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">!=</span> fh<span class="hl opt">)</span>
        FAIL_STACK_ERROR


    <span class="hl com">/* Set the heap ID length a size that's large enough for 'tiny' &amp; 'managed'</span>
<span class="hl com">     *  objects, but too small for directly accessing 'huge' objects</span>
<span class="hl com">     */</span>
    tmp_cparam<span class="hl opt">.</span>id_len <span class="hl opt">=</span> <span class="hl num">8</span><span class="hl opt">;</span>

    <span class="hl com">/* Create absolute heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_create</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>tmp_cparam<span class="hl opt">)))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Test ID length information for heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">!=</span> <span class="hl num">8</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_tiny_info_test</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>tiny_max_len<span class="hl opt">, &amp;</span>tiny_len_extended<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>tiny_max_len <span class="hl opt">!=</span> <span class="hl num">7</span><span class="hl opt">)</span>
        TEST_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>tiny_len_extended <span class="hl opt">!=</span> FALSE<span class="hl opt">)</span>
        TEST_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_huge_info_test</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> NULL<span class="hl opt">, &amp;</span>huge_ids_direct<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>huge_ids_direct <span class="hl opt">!=</span> FALSE<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>


    <span class="hl com">/* Set the heap ID length a size that's large enough for directly</span>
<span class="hl com">     *  directly accessing 'huge' objects</span>
<span class="hl com">     */</span>
    tmp_cparam<span class="hl opt">.</span>id_len <span class="hl opt">=</span> <span class="hl num">17</span><span class="hl opt">;</span>

    <span class="hl com">/* Create absolute heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_create</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>tmp_cparam<span class="hl opt">)))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Test ID length information for heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">!=</span> <span class="hl num">17</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_tiny_info_test</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>tiny_max_len<span class="hl opt">, &amp;</span>tiny_len_extended<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>tiny_max_len <span class="hl opt">!=</span> <span class="hl num">16</span><span class="hl opt">)</span>
        TEST_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>tiny_len_extended <span class="hl opt">!=</span> FALSE<span class="hl opt">)</span>
        TEST_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_huge_info_test</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> NULL<span class="hl opt">, &amp;</span>huge_ids_direct<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>huge_ids_direct <span class="hl opt">!=</span> TRUE<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>


    <span class="hl com">/* Set the heap ID length to the low side of the boundary condition for</span>
<span class="hl com">     *  encoding 'tiny' objects in one byte</span>
<span class="hl com">     */</span>
    tmp_cparam<span class="hl opt">.</span>id_len <span class="hl opt">=</span> <span class="hl num">18</span><span class="hl opt">;</span>

    <span class="hl com">/* Create absolute heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_create</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>tmp_cparam<span class="hl opt">)))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Test ID length information for heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">!=</span> <span class="hl num">18</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_tiny_info_test</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>tiny_max_len<span class="hl opt">, &amp;</span>tiny_len_extended<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>tiny_max_len <span class="hl opt">!=</span> <span class="hl num">16</span><span class="hl opt">)</span>
        TEST_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>tiny_len_extended <span class="hl opt">!=</span> FALSE<span class="hl opt">)</span>
        TEST_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_huge_info_test</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> NULL<span class="hl opt">, &amp;</span>huge_ids_direct<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>huge_ids_direct <span class="hl opt">!=</span> TRUE<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>


    <span class="hl com">/* Set the heap ID length to the high side of the boundary condition for</span>
<span class="hl com">     *  encoding 'tiny' objects in one byte</span>
<span class="hl com">     */</span>
    tmp_cparam<span class="hl opt">.</span>id_len <span class="hl opt">=</span> <span class="hl num">19</span><span class="hl opt">;</span>

    <span class="hl com">/* Create absolute heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_create</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>tmp_cparam<span class="hl opt">)))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Test ID length information for heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">!=</span> <span class="hl num">19</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_tiny_info_test</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>tiny_max_len<span class="hl opt">, &amp;</span>tiny_len_extended<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>tiny_max_len <span class="hl opt">!=</span> <span class="hl num">17</span><span class="hl opt">)</span>
        TEST_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>tiny_len_extended <span class="hl opt">!=</span> TRUE<span class="hl opt">)</span>
        TEST_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_huge_info_test</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> NULL<span class="hl opt">, &amp;</span>huge_ids_direct<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>huge_ids_direct <span class="hl opt">!=</span> TRUE<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>


    <span class="hl com">/* Set the heap ID length a size that's larger than what is needed for</span>
<span class="hl com">     *  directly accessing 'huge' objects</span>
<span class="hl com">     */</span>
    tmp_cparam<span class="hl opt">.</span>id_len <span class="hl opt">=</span> <span class="hl num">45</span><span class="hl opt">;</span>

    <span class="hl com">/* Create absolute heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_create</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>tmp_cparam<span class="hl opt">)))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Test ID length information for heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">!=</span> <span class="hl num">45</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_tiny_info_test</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>tiny_max_len<span class="hl opt">, &amp;</span>tiny_len_extended<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>tiny_max_len <span class="hl opt">!=</span> <span class="hl num">43</span><span class="hl opt">)</span>
        TEST_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>tiny_len_extended <span class="hl opt">!=</span> TRUE<span class="hl opt">)</span>
        TEST_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_huge_info_test</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> NULL<span class="hl opt">, &amp;</span>huge_ids_direct<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>huge_ids_direct <span class="hl opt">!=</span> TRUE<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>


    <span class="hl com">/* Set the heap ID length to a size that's too large to encode the length</span>
<span class="hl com">     *  of 'tiny' objects</span>
<span class="hl com">     */</span>
    tmp_cparam<span class="hl opt">.</span>id_len <span class="hl opt">=</span> H5HF_MAX_ID_LEN <span class="hl opt">+</span> <span class="hl num">1</span><span class="hl opt">;</span>

    <span class="hl com">/* Create absolute heap */</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_create</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>tmp_cparam<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">!=</span> fh<span class="hl opt">)</span>
        FAIL_STACK_ERROR


    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_id_limits() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_filtered_create</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test creating a heap with I/O filters</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, August 14, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_filtered_create</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    H5HF_create_t tmp_cparam<span class="hl opt">;</span>           <span class="hl com">/* Local heap creation parameters */</span>
    H5HF_create_t test_cparam<span class="hl opt">;</span>          <span class="hl com">/* Temporary local heap creation parameters */</span>
    <span class="hl kwb">unsigned</span>    deflate_level<span class="hl opt">;</span>          <span class="hl com">/* Deflation level */</span>

    <span class="hl com">/* Set the filename to use for this test (dependent on fapl) */</span>
    <span class="hl kwd">h5_fixname</span><span class="hl opt">(</span>FILENAME<span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">],</span> fapl<span class="hl opt">,</span> filename<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>filename<span class="hl opt">));</span>

    <span class="hl com">/* Create the file to work on */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fcreate</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_TRUNC<span class="hl opt">,</span> H5P_DEFAULT<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Display testing message */</span>
    <span class="hl kwd">TESTING</span><span class="hl opt">(</span><span class="hl str">&quot;creating heaps with I/O filters&quot;</span><span class="hl opt">)</span>

    <span class="hl com">/* Copy heap creation properties */</span>
    <span class="hl kwd">HDmemcpy</span><span class="hl opt">(&amp;</span>tmp_cparam<span class="hl opt">,</span> cparam<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>H5HF_create_t<span class="hl opt">));</span>


    <span class="hl com">/* Set an I/O filter for heap data */</span>
    deflate_level <span class="hl opt">=</span> <span class="hl num">6</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Z_append</span><span class="hl opt">(&amp;</span>tmp_cparam<span class="hl opt">.</span>pline<span class="hl opt">,</span> H5Z_FILTER_DEFLATE<span class="hl opt">,</span> H5Z_FLAG_OPTIONAL<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">1</span><span class="hl opt">, &amp;</span>deflate_level<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Create absolute heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_create</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>tmp_cparam<span class="hl opt">)))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Get heap's address */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_heap_addr</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(!</span><span class="hl kwd">H5F_addr_defined</span><span class="hl opt">(</span>fh_addr<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Re-open the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fopen</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_RDONLY<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Re-open the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_open</span><span class="hl opt">(</span>f<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">,</span> fh_addr<span class="hl opt">)))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Query the heap creation parameters */</span>
    <span class="hl kwd">HDmemset</span><span class="hl opt">(&amp;</span>test_cparam<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>H5HF_create_t<span class="hl opt">));</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_cparam_test</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>test_cparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_cmp_cparam_test</span><span class="hl opt">(&amp;</span>tmp_cparam<span class="hl opt">, &amp;</span>test_cparam<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR


    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Release the I/O pipeline filter information */</span>
    <span class="hl kwd">H5O_msg_reset</span><span class="hl opt">(</span>H5O_PLINE_ID<span class="hl opt">, &amp;</span>tmp_cparam<span class="hl opt">.</span>pline<span class="hl opt">);</span>
    <span class="hl kwd">H5O_msg_reset</span><span class="hl opt">(</span>H5O_PLINE_ID<span class="hl opt">, &amp;</span>test_cparam<span class="hl opt">.</span>pline<span class="hl opt">);</span>

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_filtered_create() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_size</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test querying heap size</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Tuesday, August 14, 2007</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_size</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    hsize_t     empty_heap_size<span class="hl opt">;</span>        <span class="hl com">/* Total size of empty heap on disk */</span>
    hsize_t     one_heap_size<span class="hl opt">;</span>          <span class="hl com">/* Total size of heap on disk after inserting one object */</span>
    hsize_t     heap_size<span class="hl opt">;</span>              <span class="hl com">/* Total size of heap on disk */</span>

    <span class="hl com">/* Set the filename to use for this test (dependent on fapl) */</span>
    <span class="hl kwd">h5_fixname</span><span class="hl opt">(</span>FILENAME<span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">],</span> fapl<span class="hl opt">,</span> filename<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>filename<span class="hl opt">));</span>

    <span class="hl com">/* Create the file to work on */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fcreate</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_TRUNC<span class="hl opt">,</span> H5P_DEFAULT<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Display testing message */</span>
    <span class="hl kwd">TESTING</span><span class="hl opt">(</span><span class="hl str">&quot;querying heap statistics&quot;</span><span class="hl opt">)</span>


    <span class="hl com">/* Create absolute heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_create</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">)))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Get heap's address */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_heap_addr</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(!</span><span class="hl kwd">H5F_addr_defined</span><span class="hl opt">(</span>fh_addr<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Get an empty heap's size */</span>
    empty_heap_size <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_size</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>empty_heap_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>empty_heap_size <span class="hl opt">==</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert an object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">0</span><span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">,</span> NULL<span class="hl opt">,</span> NULL<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Get the heap's size after inserting one object */</span>
    one_heap_size <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_size</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>one_heap_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>one_heap_size <span class="hl opt">&lt;=</span> empty_heap_size<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR


    <span class="hl com">/* Re-open the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fopen</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_RDWR<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Re-open the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_open</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fh_addr<span class="hl opt">)))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Check the heap's size */</span>
    heap_size <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_size</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>heap_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>heap_size <span class="hl opt">!=</span> one_heap_size<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert another object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">1</span><span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">,</span> NULL<span class="hl opt">,</span> NULL<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check the heap's size */</span>
    heap_size <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_size</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>heap_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>heap_size <span class="hl opt">!=</span> one_heap_size<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR


    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_size() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:    test_reopen_hdr</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:     Test opening a header through one file handle, closing</span>
<span class="hl com"> *              that file handle, then reopening through a different file</span>
<span class="hl com"> *              handle that was open the whole time.  The header should</span>
<span class="hl com"> *              stay in cache between the two opens.</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:      Success:        0</span>
<span class="hl com"> *              Failure:        1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:  Neil Fortner</span>
<span class="hl com"> *              Tuesday, September 14, 2010</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_reopen_hdr</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t       file1 <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>             <span class="hl com">/* File ID */</span>
    hid_t       file2 <span class="hl opt">= -</span><span class="hl num">2</span><span class="hl opt">;</span>             <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>        filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t       <span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    hsize_t     heap_size<span class="hl opt">;</span>              <span class="hl com">/* Total size of heap on disk */</span>

    <span class="hl com">/* Set the filename to use for this test (dependent on fapl) */</span>
    <span class="hl kwd">h5_fixname</span><span class="hl opt">(</span>FILENAME<span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">],</span> fapl<span class="hl opt">,</span> filename<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>filename<span class="hl opt">));</span>

    <span class="hl com">/* Create the file to work on */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file1 <span class="hl opt">=</span> <span class="hl kwd">H5Fcreate</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_TRUNC<span class="hl opt">,</span> H5P_DEFAULT<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file1<span class="hl opt">)))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Display testing message */</span>
    <span class="hl kwd">TESTING</span><span class="hl opt">(</span><span class="hl str">&quot;reopening header through different file&quot;</span><span class="hl opt">)</span>


    <span class="hl com">/* Create absolute heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_create</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">)))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Get heap's address */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_heap_addr</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(!</span><span class="hl kwd">H5F_addr_defined</span><span class="hl opt">(</span>fh_addr<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Insert an object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">0</span><span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">,</span> NULL<span class="hl opt">,</span> NULL<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file1<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR


    <span class="hl com">/* Re-open the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file1 <span class="hl opt">=</span> <span class="hl kwd">H5Fopen</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_RDWR<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Re-open the file again */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file2 <span class="hl opt">=</span> <span class="hl kwd">H5Fopen</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_RDWR<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Get a pointer to the internal file object (file1) */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file1<span class="hl opt">)))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Open the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_open</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fh_addr<span class="hl opt">)))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Close the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>

    <span class="hl com">/* Close the file (file1) */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file1<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR


    <span class="hl com">/* Get a pointer to the internal file object (file2) */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file2<span class="hl opt">)))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Reopen the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_open</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fh_addr<span class="hl opt">)))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Check the heap's size */</span>
    heap_size <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_size</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>heap_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR


    <span class="hl com">/* Close the file (file2) */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file2<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
        <span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file1<span class="hl opt">);</span>
        <span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file2<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_reopen_hdr() */</span>

<span class="hl ppc">#ifndef QAK2</span>

<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_insert_weird</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test inserting &quot;weird&quot; sized objects into absolute heap</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Friday, August 18, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_insert_weird</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    <span class="hl kwb">unsigned char</span> heap_id<span class="hl opt">[</span>HEAP_ID_LEN<span class="hl opt">];</span> <span class="hl com">/* Heap ID for object */</span>
    <span class="hl kwb">size_t</span>      id_len<span class="hl opt">;</span>                 <span class="hl com">/* Size of fractal heap IDs */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>
    herr_t      ret<span class="hl opt">;</span>                    <span class="hl com">/* Generic return value */</span>

    <span class="hl com">/* Set the filename to use for this test (dependent on fapl) */</span>
    <span class="hl kwd">h5_fixname</span><span class="hl opt">(</span>FILENAME<span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">],</span> fapl<span class="hl opt">,</span> filename<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>filename<span class="hl opt">));</span>

    <span class="hl com">/* Create the file to work on */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fcreate</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_TRUNC<span class="hl opt">,</span> H5P_DEFAULT<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Create absolute heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_create</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">)))</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">&gt;</span> HEAP_ID_LEN<span class="hl opt">)</span>
        TEST_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_heap_addr</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(!</span><span class="hl kwd">H5F_addr_defined</span><span class="hl opt">(</span>fh_addr<span class="hl opt">))</span>
        TEST_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(&amp;</span>state<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>fheap_heap_state_t<span class="hl opt">));</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/*</span>
<span class="hl com">     * Test inserting &quot;weird&quot; sized objects into heap</span>
<span class="hl com">     */</span>
    <span class="hl kwd">TESTING</span><span class="hl opt">(</span><span class="hl str">&quot;inserting 'weird' sized objects into absolute heap&quot;</span><span class="hl opt">);</span>

    <span class="hl com">/* Attempt to insert 0-sized object into heap */</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        ret <span class="hl opt">=</span> <span class="hl kwd">H5HF_insert</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">0</span><span class="hl opt">,</span> shared_wobj_g<span class="hl opt">,</span> heap_id<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>ret <span class="hl opt">&gt;=</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR
    <span class="hl kwd">H5Eclear2</span><span class="hl opt">(</span>H5E_DEFAULT<span class="hl opt">);</span>

    <span class="hl com">/* Insert a 1-sized object into heap (should be a 'tiny' object) */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">1</span><span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check for correctly sized heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_insert_weird() */</span>

<span class="hl ppc">#ifdef ALL_INSERT_TESTS</span>

<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_insert_first</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test inserting first object into absolute heap</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Friday, February 24, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_insert_first</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    <span class="hl kwb">size_t</span>      id_len<span class="hl opt">;</span>                 <span class="hl com">/* Size of fractal heap IDs */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>

    <span class="hl com">/* Set the filename to use for this test (dependent on fapl) */</span>
    <span class="hl kwd">h5_fixname</span><span class="hl opt">(</span>FILENAME<span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">],</span> fapl<span class="hl opt">,</span> filename<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>filename<span class="hl opt">));</span>

    <span class="hl com">/* Create the file to work on */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fcreate</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_TRUNC<span class="hl opt">,</span> H5P_DEFAULT<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Create absolute heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_create</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">)))</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">&gt;</span> HEAP_ID_LEN<span class="hl opt">)</span>
        TEST_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_heap_addr</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(!</span><span class="hl kwd">H5F_addr_defined</span><span class="hl opt">(</span>fh_addr<span class="hl opt">))</span>
        TEST_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(&amp;</span>state<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>fheap_heap_state_t<span class="hl opt">));</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/*</span>
<span class="hl com">     * Test inserting first (small) object into absolute heap</span>
<span class="hl com">     */</span>
    <span class="hl kwd">TESTING</span><span class="hl opt">(</span><span class="hl str">&quot;inserting first (small) object into absolute heap&quot;</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">=</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">,</span> SMALL_OBJ_SIZE1<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check for correctly sized heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_insert_first() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_insert_second</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test inserting two objects into absolute heap</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, March  6, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_insert_second</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    <span class="hl kwb">size_t</span>      id_len<span class="hl opt">;</span>                 <span class="hl com">/* Size of fractal heap IDs */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>

    <span class="hl com">/* Set the filename to use for this test (dependent on fapl) */</span>
    <span class="hl kwd">h5_fixname</span><span class="hl opt">(</span>FILENAME<span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">],</span> fapl<span class="hl opt">,</span> filename<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>filename<span class="hl opt">));</span>

    <span class="hl com">/* Create the file to work on */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fcreate</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_TRUNC<span class="hl opt">,</span> H5P_DEFAULT<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
        STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        STACK_ERROR

    <span class="hl com">/* Create absolute heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_create</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">)))</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">&gt;</span> HEAP_ID_LEN<span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_heap_addr</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(!</span><span class="hl kwd">H5F_addr_defined</span><span class="hl opt">(</span>fh_addr<span class="hl opt">))</span>
        FAIL_STACK_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(&amp;</span>state<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>fheap_heap_state_t<span class="hl opt">));</span>

    <span class="hl com">/*</span>
<span class="hl com">     * Test inserting first (small) object into absolute heap</span>
<span class="hl com">     */</span>
    <span class="hl kwd">TESTING</span><span class="hl opt">(</span><span class="hl str">&quot;inserting two (small) objects into absolute heap&quot;</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">=</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">,</span> SMALL_OBJ_SIZE1<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert second object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">20</span><span class="hl opt">,</span> SMALL_OBJ_SIZE2<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_insert_second() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_insert_root_mult</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test inserting mult. objects into absolute heap, up to the</span>
<span class="hl com"> *              limit of a root direct block</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, March  6, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_insert_root_mult</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    <span class="hl kwb">size_t</span>      id_len<span class="hl opt">;</span>                 <span class="hl com">/* Size of fractal heap IDs */</span>
    <span class="hl kwb">size_t</span>      fill_size<span class="hl opt">;</span>              <span class="hl com">/* Size of objects for &quot;bulk&quot; filled blocks */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>

    <span class="hl com">/* Set the filename to use for this test (dependent on fapl) */</span>
    <span class="hl kwd">h5_fixname</span><span class="hl opt">(</span>FILENAME<span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">],</span> fapl<span class="hl opt">,</span> filename<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>filename<span class="hl opt">));</span>

    <span class="hl com">/* Create the file to work on */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fcreate</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_TRUNC<span class="hl opt">,</span> H5P_DEFAULT<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
        STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        STACK_ERROR

    <span class="hl com">/* Create absolute heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_create</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">)))</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">&gt;</span> HEAP_ID_LEN<span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_heap_addr</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(!</span><span class="hl kwd">H5F_addr_defined</span><span class="hl opt">(</span>fh_addr<span class="hl opt">))</span>
        FAIL_STACK_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(&amp;</span>state<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>fheap_heap_state_t<span class="hl opt">));</span>

    <span class="hl com">/*</span>
<span class="hl com">     * Test inserting mult. (small) object into absolute heap</span>
<span class="hl com">     */</span>
    <span class="hl kwd">TESTING</span><span class="hl opt">(</span><span class="hl str">&quot;inserting objects to fill absolute heap's root direct block&quot;</span><span class="hl opt">);</span>

    <span class="hl com">/* Retrieve &quot;bulk&quot; filling object size */</span>
    fill_size <span class="hl opt">=</span> <span class="hl kwd">get_fill_size</span><span class="hl opt">(</span>tparam<span class="hl opt">);</span>

    <span class="hl com">/* Fill the heap up */</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">=</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_heap</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_insert_root_mult() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_insert_force_indirect</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test inserting mult. objects into absolute heap, filling the</span>
<span class="hl com"> *              root direct block and forcing the root block to be converted</span>
<span class="hl com"> *              into an indirect block</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, March  6, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_insert_force_indirect</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    <span class="hl kwb">size_t</span>      id_len<span class="hl opt">;</span>                 <span class="hl com">/* Size of fractal heap IDs */</span>
    <span class="hl kwb">size_t</span>      fill_size<span class="hl opt">;</span>              <span class="hl com">/* Size of objects for &quot;bulk&quot; filled blocks */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>

    <span class="hl com">/* Set the filename to use for this test (dependent on fapl) */</span>
    <span class="hl kwd">h5_fixname</span><span class="hl opt">(</span>FILENAME<span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">],</span> fapl<span class="hl opt">,</span> filename<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>filename<span class="hl opt">));</span>

    <span class="hl com">/* Create the file to work on */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fcreate</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_TRUNC<span class="hl opt">,</span> H5P_DEFAULT<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
        STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        STACK_ERROR

    <span class="hl com">/* Create absolute heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_create</span><span class="hl opt">(</span>f<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">,</span> cparam<span class="hl opt">)))</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">&gt;</span> HEAP_ID_LEN<span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_heap_addr</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(!</span><span class="hl kwd">H5F_addr_defined</span><span class="hl opt">(</span>fh_addr<span class="hl opt">))</span>
        FAIL_STACK_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(&amp;</span>state<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>fheap_heap_state_t<span class="hl opt">));</span>

    <span class="hl com">/*</span>
<span class="hl com">     * Test forcing creation of indirect root block &amp; second direct block</span>
<span class="hl com">     */</span>
    <span class="hl kwd">TESTING</span><span class="hl opt">(</span><span class="hl str">&quot;inserting objects to create root indirect block&quot;</span><span class="hl opt">);</span>

    <span class="hl com">/* Retrieve &quot;bulk&quot; filling object size */</span>
    fill_size <span class="hl opt">=</span> <span class="hl kwd">get_fill_size</span><span class="hl opt">(</span>tparam<span class="hl opt">);</span>

    <span class="hl com">/* Fill the heap up */</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">=</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_heap</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert one more object, to force root indirect block creation */</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">= (</span>cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">-</span> <span class="hl num">1</span><span class="hl opt">) *</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">,</span> SMALL_OBJ_SIZE1<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_insert_force_indirect() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_insert_fill_second</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test inserting mult. objects into absolute heap, filling the</span>
<span class="hl com"> *              root direct block, forcing the root block to be converted</span>
<span class="hl com"> *              into an indirect block and filling the secnod indirect block</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Tuesday, March  7, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_insert_fill_second</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    <span class="hl kwb">size_t</span>      id_len<span class="hl opt">;</span>                 <span class="hl com">/* Size of fractal heap IDs */</span>
    <span class="hl kwb">size_t</span>      fill_size<span class="hl opt">;</span>              <span class="hl com">/* Size of objects for &quot;bulk&quot; filled blocks */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>

    <span class="hl com">/* Set the filename to use for this test (dependent on fapl) */</span>
    <span class="hl kwd">h5_fixname</span><span class="hl opt">(</span>FILENAME<span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">],</span> fapl<span class="hl opt">,</span> filename<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>filename<span class="hl opt">));</span>

    <span class="hl com">/* Create the file to work on */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fcreate</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_TRUNC<span class="hl opt">,</span> H5P_DEFAULT<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
        STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        STACK_ERROR

    <span class="hl com">/* Create absolute heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_create</span><span class="hl opt">(</span>f<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">,</span> cparam<span class="hl opt">)))</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">&gt;</span> HEAP_ID_LEN<span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_heap_addr</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(!</span><span class="hl kwd">H5F_addr_defined</span><span class="hl opt">(</span>fh_addr<span class="hl opt">))</span>
        FAIL_STACK_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(&amp;</span>state<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>fheap_heap_state_t<span class="hl opt">));</span>

    <span class="hl com">/*</span>
<span class="hl com">     * Test inserting mult. (small) objects to fill second direct block</span>
<span class="hl com">     */</span>
    <span class="hl kwd">TESTING</span><span class="hl opt">(</span><span class="hl str">&quot;inserting objects to fill second direct block&quot;</span><span class="hl opt">);</span>

    <span class="hl com">/* Retrieve &quot;bulk&quot; filling object size */</span>
    fill_size <span class="hl opt">=</span> <span class="hl kwd">get_fill_size</span><span class="hl opt">(</span>tparam<span class="hl opt">);</span>

    <span class="hl com">/* Fill the first direct block heap up */</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">=</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_heap</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill the second direct block heap up (also creates initial root indirect block) */</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">= (</span>cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">-</span> <span class="hl num">1</span><span class="hl opt">) *</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_heap</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_insert_fill_second() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_insert_third_direct</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test inserting mult. objects into absolute heap, filling the</span>
<span class="hl com"> *              root direct block, forcing the root block to be converted</span>
<span class="hl com"> *              into an indirect block, filling the secnod indirect block and</span>
<span class="hl com"> *              creating a third direct block</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Tuesday, March  7, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_insert_third_direct</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    <span class="hl kwb">size_t</span>      id_len<span class="hl opt">;</span>                 <span class="hl com">/* Size of fractal heap IDs */</span>
    <span class="hl kwb">size_t</span>      fill_size<span class="hl opt">;</span>              <span class="hl com">/* Size of objects for &quot;bulk&quot; filled blocks */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>

    <span class="hl com">/* Set the filename to use for this test (dependent on fapl) */</span>
    <span class="hl kwd">h5_fixname</span><span class="hl opt">(</span>FILENAME<span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">],</span> fapl<span class="hl opt">,</span> filename<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>filename<span class="hl opt">));</span>

    <span class="hl com">/* Create the file to work on */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fcreate</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_TRUNC<span class="hl opt">,</span> H5P_DEFAULT<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
        STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        STACK_ERROR

    <span class="hl com">/* Create absolute heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_create</span><span class="hl opt">(</span>f<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">,</span> cparam<span class="hl opt">)))</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">&gt;</span> HEAP_ID_LEN<span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_heap_addr</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(!</span><span class="hl kwd">H5F_addr_defined</span><span class="hl opt">(</span>fh_addr<span class="hl opt">))</span>
        FAIL_STACK_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(&amp;</span>state<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>fheap_heap_state_t<span class="hl opt">));</span>

    <span class="hl com">/*</span>
<span class="hl com">     * Test inserting mult. (small) objects to create third direct block</span>
<span class="hl com">     */</span>
    <span class="hl kwd">TESTING</span><span class="hl opt">(</span><span class="hl str">&quot;inserting objects to create third direct block&quot;</span><span class="hl opt">);</span>

    <span class="hl com">/* Retrieve &quot;bulk&quot; filling object size */</span>
    fill_size <span class="hl opt">=</span> <span class="hl kwd">get_fill_size</span><span class="hl opt">(</span>tparam<span class="hl opt">);</span>

    <span class="hl com">/* Fill the first direct block up */</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">=</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_heap</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Fill the second direct block heap up (also creates initial root indirect block) */</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">= (</span>cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">-</span> <span class="hl num">1</span><span class="hl opt">) *</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_heap</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert one more object, to force creation of third direct block */</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">,</span> SMALL_OBJ_SIZE1<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_insert_third_direct() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_fill_first_row</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test inserting mult. objects into absolute heap, creating</span>
<span class="hl com"> *              enough direct blocks to fill first row of root indirect</span>
<span class="hl com"> *              block.</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, March 13, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_fill_first_row</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    <span class="hl kwb">size_t</span>      id_len<span class="hl opt">;</span>                 <span class="hl com">/* Size of fractal heap IDs */</span>
    <span class="hl kwb">size_t</span>      fill_size<span class="hl opt">;</span>              <span class="hl com">/* Size of objects for &quot;bulk&quot; filled blocks */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>

    <span class="hl com">/* Set the filename to use for this test (dependent on fapl) */</span>
    <span class="hl kwd">h5_fixname</span><span class="hl opt">(</span>FILENAME<span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">],</span> fapl<span class="hl opt">,</span> filename<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>filename<span class="hl opt">));</span>

    <span class="hl com">/* Create the file to work on */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fcreate</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_TRUNC<span class="hl opt">,</span> H5P_DEFAULT<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
        STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        STACK_ERROR

    <span class="hl com">/* Create absolute heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_create</span><span class="hl opt">(</span>f<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">,</span> cparam<span class="hl opt">)))</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">&gt;</span> HEAP_ID_LEN<span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_heap_addr</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(!</span><span class="hl kwd">H5F_addr_defined</span><span class="hl opt">(</span>fh_addr<span class="hl opt">))</span>
        FAIL_STACK_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(&amp;</span>state<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>fheap_heap_state_t<span class="hl opt">));</span>

    <span class="hl com">/*</span>
<span class="hl com">     * Test inserting mult. (small) objects to fill first row in root indirect block</span>
<span class="hl com">     */</span>
    <span class="hl kwd">TESTING</span><span class="hl opt">(</span><span class="hl str">&quot;inserting objects to fill first row of root indirect block&quot;</span><span class="hl opt">);</span>

    <span class="hl com">/* Retrieve &quot;bulk&quot; filling object size */</span>
    fill_size <span class="hl opt">=</span> <span class="hl kwd">get_fill_size</span><span class="hl opt">(</span>tparam<span class="hl opt">);</span>

    <span class="hl com">/* Fill first row of [root] indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_root_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_fill_first_row() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_start_second_row</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test inserting mult. objects into absolute heap, creating</span>
<span class="hl com"> *              enough direct blocks to fill first row of root indirect</span>
<span class="hl com"> *              block, then add another object to start second row.</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Tuesday, March 14, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_start_second_row</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    <span class="hl kwb">size_t</span>      id_len<span class="hl opt">;</span>                 <span class="hl com">/* Size of fractal heap IDs */</span>
    <span class="hl kwb">size_t</span>      fill_size<span class="hl opt">;</span>              <span class="hl com">/* Size of objects for &quot;bulk&quot; filled blocks */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>

    <span class="hl com">/* Set the filename to use for this test (dependent on fapl) */</span>
    <span class="hl kwd">h5_fixname</span><span class="hl opt">(</span>FILENAME<span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">],</span> fapl<span class="hl opt">,</span> filename<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>filename<span class="hl opt">));</span>

    <span class="hl com">/* Create the file to work on */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fcreate</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_TRUNC<span class="hl opt">,</span> H5P_DEFAULT<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
        STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        STACK_ERROR

    <span class="hl com">/* Create absolute heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_create</span><span class="hl opt">(</span>f<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">,</span> cparam<span class="hl opt">)))</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">&gt;</span> HEAP_ID_LEN<span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_heap_addr</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(!</span><span class="hl kwd">H5F_addr_defined</span><span class="hl opt">(</span>fh_addr<span class="hl opt">))</span>
        FAIL_STACK_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(&amp;</span>state<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>fheap_heap_state_t<span class="hl opt">));</span>

    <span class="hl com">/*</span>
<span class="hl com">     * Test inserting mult. (small) objects to start second row in root indirect block</span>
<span class="hl com">     */</span>
    <span class="hl kwd">TESTING</span><span class="hl opt">(</span><span class="hl str">&quot;inserting objects to start second row of root indirect block&quot;</span><span class="hl opt">);</span>

    <span class="hl com">/* Retrieve &quot;bulk&quot; filling object size */</span>
    fill_size <span class="hl opt">=</span> <span class="hl kwd">get_fill_size</span><span class="hl opt">(</span>tparam<span class="hl opt">);</span>

    <span class="hl com">/* Fill first root indirect row */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_root_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert one more object, to force expanding root indirect block to two rows */</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">,</span> SMALL_OBJ_SIZE1<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_start_second_row() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_fill_second_row</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test inserting mult. objects into absolute heap, creating</span>
<span class="hl com"> *              enough direct blocks to fill first row of root indirect</span>
<span class="hl com"> *              block, then fill the second row also.</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Tuesday, March 14, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_fill_second_row</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    <span class="hl kwb">size_t</span>      id_len<span class="hl opt">;</span>                 <span class="hl com">/* Size of fractal heap IDs */</span>
    <span class="hl kwb">size_t</span>      fill_size<span class="hl opt">;</span>              <span class="hl com">/* Size of objects for &quot;bulk&quot; filled blocks */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>

    <span class="hl com">/* Set the filename to use for this test (dependent on fapl) */</span>
    <span class="hl kwd">h5_fixname</span><span class="hl opt">(</span>FILENAME<span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">],</span> fapl<span class="hl opt">,</span> filename<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>filename<span class="hl opt">));</span>

    <span class="hl com">/* Create the file to work on */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fcreate</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_TRUNC<span class="hl opt">,</span> H5P_DEFAULT<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
        STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        STACK_ERROR

    <span class="hl com">/* Create absolute heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_create</span><span class="hl opt">(</span>f<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">,</span> cparam<span class="hl opt">)))</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">&gt;</span> HEAP_ID_LEN<span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_heap_addr</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(!</span><span class="hl kwd">H5F_addr_defined</span><span class="hl opt">(</span>fh_addr<span class="hl opt">))</span>
        FAIL_STACK_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(&amp;</span>state<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>fheap_heap_state_t<span class="hl opt">));</span>

    <span class="hl com">/*</span>
<span class="hl com">     * Test inserting mult. (small) objects to start second row in root indirect block</span>
<span class="hl com">     */</span>
    <span class="hl kwd">TESTING</span><span class="hl opt">(</span><span class="hl str">&quot;inserting objects to fill second row of root indirect block&quot;</span><span class="hl opt">);</span>

    <span class="hl com">/* Retrieve &quot;bulk&quot; filling object size */</span>
    fill_size <span class="hl opt">=</span> <span class="hl kwd">get_fill_size</span><span class="hl opt">(</span>tparam<span class="hl opt">);</span>

    <span class="hl com">/* Fill first root indirect row */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_root_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill second root indirect row */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_root_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_fill_second_row() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_start_third_row</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test inserting mult. objects into absolute heap, creating</span>
<span class="hl com"> *              enough direct blocks to fill first row of root indirect</span>
<span class="hl com"> *              block, fill the second row also, then add another object to</span>
<span class="hl com"> *              start the third row.</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, March 20, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_start_third_row</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    <span class="hl kwb">size_t</span>      id_len<span class="hl opt">;</span>                 <span class="hl com">/* Size of fractal heap IDs */</span>
    <span class="hl kwb">size_t</span>      fill_size<span class="hl opt">;</span>              <span class="hl com">/* Size of objects for &quot;bulk&quot; filled blocks */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>

    <span class="hl com">/* Set the filename to use for this test (dependent on fapl) */</span>
    <span class="hl kwd">h5_fixname</span><span class="hl opt">(</span>FILENAME<span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">],</span> fapl<span class="hl opt">,</span> filename<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>filename<span class="hl opt">));</span>

    <span class="hl com">/* Create the file to work on */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fcreate</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_TRUNC<span class="hl opt">,</span> H5P_DEFAULT<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
        STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        STACK_ERROR

    <span class="hl com">/* Create absolute heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_create</span><span class="hl opt">(</span>f<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">,</span> cparam<span class="hl opt">)))</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">&gt;</span> HEAP_ID_LEN<span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_heap_addr</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(!</span><span class="hl kwd">H5F_addr_defined</span><span class="hl opt">(</span>fh_addr<span class="hl opt">))</span>
        FAIL_STACK_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(&amp;</span>state<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>fheap_heap_state_t<span class="hl opt">));</span>

    <span class="hl com">/*</span>
<span class="hl com">     * Test inserting mult. (small) objects to start third row in root indirect block</span>
<span class="hl com">     */</span>
    <span class="hl kwd">TESTING</span><span class="hl opt">(</span><span class="hl str">&quot;inserting objects to start third row of root indirect block&quot;</span><span class="hl opt">);</span>

    <span class="hl com">/* Retrieve &quot;bulk&quot; filling object size */</span>
    fill_size <span class="hl opt">=</span> <span class="hl kwd">get_fill_size</span><span class="hl opt">(</span>tparam<span class="hl opt">);</span>

    <span class="hl com">/* Fill first root indirect row */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_root_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Fill second root indirect row */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_root_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert one more object, to force expanding root indirect block to four rows */</span>
    <span class="hl com">/* (Goes to four rows because it's doubling) */</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">2</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">3</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">2</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">2</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">3</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">,</span> SMALL_OBJ_SIZE1<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_start_third_row() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_fill_fourth_row</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test inserting mult. objects into absolute heap, creating</span>
<span class="hl com"> *              enough direct blocks to fill first four rows of root indirect</span>
<span class="hl com"> *              block.</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, March 20, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_fill_fourth_row</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    <span class="hl kwb">size_t</span>      id_len<span class="hl opt">;</span>                 <span class="hl com">/* Size of fractal heap IDs */</span>
    <span class="hl kwb">size_t</span>      fill_size<span class="hl opt">;</span>              <span class="hl com">/* Size of objects for &quot;bulk&quot; filled blocks */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>
    <span class="hl kwb">unsigned</span>    u<span class="hl opt">;</span>                      <span class="hl com">/* Local index variables */</span>

    <span class="hl com">/* Set the filename to use for this test (dependent on fapl) */</span>
    <span class="hl kwd">h5_fixname</span><span class="hl opt">(</span>FILENAME<span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">],</span> fapl<span class="hl opt">,</span> filename<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>filename<span class="hl opt">));</span>

    <span class="hl com">/* Create the file to work on */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fcreate</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_TRUNC<span class="hl opt">,</span> H5P_DEFAULT<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
        STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        STACK_ERROR

    <span class="hl com">/* Create absolute heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_create</span><span class="hl opt">(</span>f<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">,</span> cparam<span class="hl opt">)))</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">&gt;</span> HEAP_ID_LEN<span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_heap_addr</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(!</span><span class="hl kwd">H5F_addr_defined</span><span class="hl opt">(</span>fh_addr<span class="hl opt">))</span>
        FAIL_STACK_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(&amp;</span>state<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>fheap_heap_state_t<span class="hl opt">));</span>

    <span class="hl com">/*</span>
<span class="hl com">     * Test inserting mult. (small) objects to fill four rows in root indirect block</span>
<span class="hl com">     */</span>
    <span class="hl kwd">TESTING</span><span class="hl opt">(</span><span class="hl str">&quot;inserting objects to fill four rows of root indirect block&quot;</span><span class="hl opt">);</span>

    <span class="hl com">/* Retrieve &quot;bulk&quot; filling object size */</span>
    fill_size <span class="hl opt">=</span> <span class="hl kwd">get_fill_size</span><span class="hl opt">(</span>tparam<span class="hl opt">);</span>

    <span class="hl com">/* Loop over rows */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> <span class="hl num">4</span><span class="hl opt">;</span> u<span class="hl opt">++)</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_root_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> u<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
            FAIL_STACK_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_fill_fourth_row() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_fill_all_root_direct</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test inserting mult. objects into absolute heap, creating</span>
<span class="hl com"> *              enough direct blocks to fill all direct rows of root indirect</span>
<span class="hl com"> *              block.</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, March 20, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_fill_all_root_direct</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    <span class="hl kwb">size_t</span>      id_len<span class="hl opt">;</span>                 <span class="hl com">/* Size of fractal heap IDs */</span>
    <span class="hl kwb">size_t</span>      fill_size<span class="hl opt">;</span>              <span class="hl com">/* Size of objects for &quot;bulk&quot; filled blocks */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>

    <span class="hl com">/* Set the filename to use for this test (dependent on fapl) */</span>
    <span class="hl kwd">h5_fixname</span><span class="hl opt">(</span>FILENAME<span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">],</span> fapl<span class="hl opt">,</span> filename<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>filename<span class="hl opt">));</span>

    <span class="hl com">/* Create the file to work on */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fcreate</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_TRUNC<span class="hl opt">,</span> H5P_DEFAULT<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
        STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        STACK_ERROR

    <span class="hl com">/* Create absolute heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_create</span><span class="hl opt">(</span>f<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">,</span> cparam<span class="hl opt">)))</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">&gt;</span> HEAP_ID_LEN<span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_heap_addr</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(!</span><span class="hl kwd">H5F_addr_defined</span><span class="hl opt">(</span>fh_addr<span class="hl opt">))</span>
        FAIL_STACK_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(&amp;</span>state<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>fheap_heap_state_t<span class="hl opt">));</span>

    <span class="hl com">/*</span>
<span class="hl com">     * Test inserting mult. (small) objects to fill all direct  rows in root indirect block</span>
<span class="hl com">     */</span>
    <span class="hl kwd">TESTING</span><span class="hl opt">(</span><span class="hl str">&quot;inserting objects to fill all direct rows of root indirect block&quot;</span><span class="hl opt">);</span>

    <span class="hl com">/* Retrieve &quot;bulk&quot; filling object size */</span>
    fill_size <span class="hl opt">=</span> <span class="hl kwd">get_fill_size</span><span class="hl opt">(</span>tparam<span class="hl opt">);</span>

    <span class="hl com">/* Fill all direct blocks in root indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_root_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_fill_all_root_direct() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_first_recursive_indirect</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test inserting mult. objects into absolute heap, creating</span>
<span class="hl com"> *              enough direct blocks to fill all direct rows of root indirect</span>
<span class="hl com"> *              block and create first recursive indirect block.</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, March 20, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_first_recursive_indirect</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    <span class="hl kwb">size_t</span>      id_len<span class="hl opt">;</span>                 <span class="hl com">/* Size of fractal heap IDs */</span>
    <span class="hl kwb">size_t</span>      fill_size<span class="hl opt">;</span>              <span class="hl com">/* Size of objects for &quot;bulk&quot; filled blocks */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>

    <span class="hl com">/* Set the filename to use for this test (dependent on fapl) */</span>
    <span class="hl kwd">h5_fixname</span><span class="hl opt">(</span>FILENAME<span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">],</span> fapl<span class="hl opt">,</span> filename<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>filename<span class="hl opt">));</span>

    <span class="hl com">/* Create the file to work on */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fcreate</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_TRUNC<span class="hl opt">,</span> H5P_DEFAULT<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
        STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        STACK_ERROR

    <span class="hl com">/* Create absolute heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_create</span><span class="hl opt">(</span>f<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">,</span> cparam<span class="hl opt">)))</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">&gt;</span> HEAP_ID_LEN<span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_heap_addr</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(!</span><span class="hl kwd">H5F_addr_defined</span><span class="hl opt">(</span>fh_addr<span class="hl opt">))</span>
        FAIL_STACK_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(&amp;</span>state<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>fheap_heap_state_t<span class="hl opt">));</span>

    <span class="hl com">/*</span>
<span class="hl com">     * Test inserting mult. (small) objects to force creation of first recursive indirect block</span>
<span class="hl com">     */</span>
    <span class="hl kwd">TESTING</span><span class="hl opt">(</span><span class="hl str">&quot;inserting objects to create first recursive indirect block&quot;</span><span class="hl opt">);</span>

    <span class="hl com">/* Retrieve &quot;bulk&quot; filling object size */</span>
    fill_size <span class="hl opt">=</span> <span class="hl kwd">get_fill_size</span><span class="hl opt">(</span>tparam<span class="hl opt">);</span>

    <span class="hl com">/* Fill direct blocks up */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_root_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert one more object, to force creation of first recursive indirect block */</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">,</span> SMALL_OBJ_SIZE1<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_first_recursive_indirect() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_second_direct_recursive_indirect</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test inserting mult. objects into absolute heap, creating</span>
<span class="hl com"> *              enough direct blocks to fill all direct rows of root indirect</span>
<span class="hl com"> *              block, create first recursive indirect block and start second</span>
<span class="hl com"> *              direct block in that indirect block.</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Tuesday, March 21, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_second_direct_recursive_indirect</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    <span class="hl kwb">size_t</span>      id_len<span class="hl opt">;</span>                 <span class="hl com">/* Size of fractal heap IDs */</span>
    <span class="hl kwb">size_t</span>      fill_size<span class="hl opt">;</span>              <span class="hl com">/* Size of objects for &quot;bulk&quot; filled blocks */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>

    <span class="hl com">/* Set the filename to use for this test (dependent on fapl) */</span>
    <span class="hl kwd">h5_fixname</span><span class="hl opt">(</span>FILENAME<span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">],</span> fapl<span class="hl opt">,</span> filename<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>filename<span class="hl opt">));</span>

    <span class="hl com">/* Create the file to work on */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fcreate</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_TRUNC<span class="hl opt">,</span> H5P_DEFAULT<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
        STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        STACK_ERROR

    <span class="hl com">/* Create absolute heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_create</span><span class="hl opt">(</span>f<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">,</span> cparam<span class="hl opt">)))</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">&gt;</span> HEAP_ID_LEN<span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_heap_addr</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(!</span><span class="hl kwd">H5F_addr_defined</span><span class="hl opt">(</span>fh_addr<span class="hl opt">))</span>
        FAIL_STACK_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(&amp;</span>state<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>fheap_heap_state_t<span class="hl opt">));</span>

    <span class="hl com">/*</span>
<span class="hl com">     * Test inserting mult. (small) objects to force creation of second direct</span>
<span class="hl com">     *  block in first recursive indirect block</span>
<span class="hl com">     */</span>
    <span class="hl kwd">TESTING</span><span class="hl opt">(</span><span class="hl str">&quot;inserting objects to create second direct block in first recursive indirect block&quot;</span><span class="hl opt">);</span>

    <span class="hl com">/* Retrieve &quot;bulk&quot; filling object size */</span>
    fill_size <span class="hl opt">=</span> <span class="hl kwd">get_fill_size</span><span class="hl opt">(</span>tparam<span class="hl opt">);</span>

    <span class="hl com">/* Fill direct blocks up */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_root_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Fill the first direct block in the recursive indirect block up */</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_heap</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert one more object, to force creation of second direct block in</span>
<span class="hl com">     * first recursive indirect block</span>
<span class="hl com">     */</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">,</span> SMALL_OBJ_SIZE1<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_second_direct_recursive_indirect() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_fill_first_recursive_indirect</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test inserting mult. objects into absolute heap, creating</span>
<span class="hl com"> *              enough direct blocks to fill all direct rows of root indirect</span>
<span class="hl com"> *              block, create first recursive indirect block and filling all</span>
<span class="hl com"> *              direct blocks in that indirect block.</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Tuesday, March 21, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_fill_first_recursive_indirect</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    <span class="hl kwb">size_t</span>      id_len<span class="hl opt">;</span>                 <span class="hl com">/* Size of fractal heap IDs */</span>
    <span class="hl kwb">size_t</span>      fill_size<span class="hl opt">;</span>              <span class="hl com">/* Size of objects for &quot;bulk&quot; filled blocks */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>

    <span class="hl com">/* Set the filename to use for this test (dependent on fapl) */</span>
    <span class="hl kwd">h5_fixname</span><span class="hl opt">(</span>FILENAME<span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">],</span> fapl<span class="hl opt">,</span> filename<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>filename<span class="hl opt">));</span>

    <span class="hl com">/* Create the file to work on */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fcreate</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_TRUNC<span class="hl opt">,</span> H5P_DEFAULT<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
        STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        STACK_ERROR

    <span class="hl com">/* Create absolute heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_create</span><span class="hl opt">(</span>f<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">,</span> cparam<span class="hl opt">)))</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">&gt;</span> HEAP_ID_LEN<span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_heap_addr</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(!</span><span class="hl kwd">H5F_addr_defined</span><span class="hl opt">(</span>fh_addr<span class="hl opt">))</span>
        FAIL_STACK_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(&amp;</span>state<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>fheap_heap_state_t<span class="hl opt">));</span>

    <span class="hl com">/*</span>
<span class="hl com">     * Test inserting mult. (small) objects to fill all direct</span>
<span class="hl com">     *  blocks in first recursive indirect block</span>
<span class="hl com">     */</span>
    <span class="hl kwd">TESTING</span><span class="hl opt">(</span><span class="hl str">&quot;inserting objects to fill all direct blocks in first recursive indirect block&quot;</span><span class="hl opt">);</span>

    <span class="hl com">/* Retrieve &quot;bulk&quot; filling object size */</span>
    fill_size <span class="hl opt">=</span> <span class="hl kwd">get_fill_size</span><span class="hl opt">(</span>tparam<span class="hl opt">);</span>

    <span class="hl com">/* Fill direct blocks up in root indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_root_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill first recursive indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_2nd_indirect</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_fill_first_recursive_indirect() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_second_recursive_indirect</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test inserting mult. objects into absolute heap, creating</span>
<span class="hl com"> *              enough direct blocks to fill all direct rows of root indirect</span>
<span class="hl com"> *              block, create first recursive indirect block, filling all</span>
<span class="hl com"> *              direct blocks in that indirect block and adding another</span>
<span class="hl com"> *              object to force creation of second recursive indirect block.</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Tuesday, March 21, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_second_recursive_indirect</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    <span class="hl kwb">size_t</span>      id_len<span class="hl opt">;</span>                 <span class="hl com">/* Size of fractal heap IDs */</span>
    <span class="hl kwb">size_t</span>      fill_size<span class="hl opt">;</span>              <span class="hl com">/* Size of objects for &quot;bulk&quot; filled blocks */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>

    <span class="hl com">/* Set the filename to use for this test (dependent on fapl) */</span>
    <span class="hl kwd">h5_fixname</span><span class="hl opt">(</span>FILENAME<span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">],</span> fapl<span class="hl opt">,</span> filename<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>filename<span class="hl opt">));</span>

    <span class="hl com">/* Create the file to work on */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fcreate</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_TRUNC<span class="hl opt">,</span> H5P_DEFAULT<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
        STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        STACK_ERROR

    <span class="hl com">/* Create absolute heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_create</span><span class="hl opt">(</span>f<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">,</span> cparam<span class="hl opt">)))</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">&gt;</span> HEAP_ID_LEN<span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_heap_addr</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(!</span><span class="hl kwd">H5F_addr_defined</span><span class="hl opt">(</span>fh_addr<span class="hl opt">))</span>
        FAIL_STACK_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(&amp;</span>state<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>fheap_heap_state_t<span class="hl opt">));</span>

    <span class="hl com">/*</span>
<span class="hl com">     * Test inserting mult. (small) objects to fill all direct</span>
<span class="hl com">     *  blocks in first recursive indirect block</span>
<span class="hl com">     */</span>
    <span class="hl kwd">TESTING</span><span class="hl opt">(</span><span class="hl str">&quot;inserting objects to start second recursive indirect block&quot;</span><span class="hl opt">);</span>

    <span class="hl com">/* Retrieve &quot;bulk&quot; filling object size */</span>
    fill_size <span class="hl opt">=</span> <span class="hl kwd">get_fill_size</span><span class="hl opt">(</span>tparam<span class="hl opt">);</span>

    <span class="hl com">/* Fill direct blocks up in root indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_root_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Fill first recursive indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_2nd_indirect</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert one more object, to force creation of second</span>
<span class="hl com">     * recursive indirect block</span>
<span class="hl com">     */</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">,</span> SMALL_OBJ_SIZE1<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_second_recursive_indirect() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_fill_second_recursive_indirect</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test inserting mult. objects into absolute heap, creating</span>
<span class="hl com"> *              enough direct blocks to fill all direct rows of root indirect</span>
<span class="hl com"> *              block, create first recursive indirect block, filling all</span>
<span class="hl com"> *              direct blocks in that indirect block and then create second</span>
<span class="hl com"> *              recursive indirect block and fill all direct blocks in that</span>
<span class="hl com"> *              indirect block.</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Tuesday, March 21, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_fill_second_recursive_indirect</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    <span class="hl kwb">size_t</span>      id_len<span class="hl opt">;</span>                 <span class="hl com">/* Size of fractal heap IDs */</span>
    <span class="hl kwb">size_t</span>      fill_size<span class="hl opt">;</span>              <span class="hl com">/* Size of objects for &quot;bulk&quot; filled blocks */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>

    <span class="hl com">/* Set the filename to use for this test (dependent on fapl) */</span>
    <span class="hl kwd">h5_fixname</span><span class="hl opt">(</span>FILENAME<span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">],</span> fapl<span class="hl opt">,</span> filename<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>filename<span class="hl opt">));</span>

    <span class="hl com">/* Create the file to work on */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fcreate</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_TRUNC<span class="hl opt">,</span> H5P_DEFAULT<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
        STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        STACK_ERROR

    <span class="hl com">/* Create absolute heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_create</span><span class="hl opt">(</span>f<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">,</span> cparam<span class="hl opt">)))</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">&gt;</span> HEAP_ID_LEN<span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_heap_addr</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(!</span><span class="hl kwd">H5F_addr_defined</span><span class="hl opt">(</span>fh_addr<span class="hl opt">))</span>
        FAIL_STACK_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(&amp;</span>state<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>fheap_heap_state_t<span class="hl opt">));</span>

    <span class="hl com">/*</span>
<span class="hl com">     * Test inserting mult. (small) objects to fill all direct</span>
<span class="hl com">     *  blocks in first recursive indirect block</span>
<span class="hl com">     */</span>
    <span class="hl kwd">TESTING</span><span class="hl opt">(</span><span class="hl str">&quot;inserting objects to fill all direct blocks in second recursive indirect block&quot;</span><span class="hl opt">);</span>

    <span class="hl com">/* Retrieve &quot;bulk&quot; filling object size */</span>
    fill_size <span class="hl opt">=</span> <span class="hl kwd">get_fill_size</span><span class="hl opt">(</span>tparam<span class="hl opt">);</span>

    <span class="hl com">/* Fill direct blocks up in root indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_root_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Fill first recursive indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_2nd_indirect</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill 2nd recursive indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_2nd_indirect</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_fill_second_recursive_indirect() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_fill_recursive_indirect_row</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test inserting mult. objects into absolute heap, creating</span>
<span class="hl com"> *              enough direct blocks to fill all direct rows of root indirect</span>
<span class="hl com"> *              block, create first recursive indirect block, filling all</span>
<span class="hl com"> *              direct blocks in that indirect block and then create second</span>
<span class="hl com"> *              recursive indirect block and fill all direct blocks in that</span>
<span class="hl com"> *              indirect block.</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Tuesday, March 21, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_fill_recursive_indirect_row</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    <span class="hl kwb">size_t</span>      id_len<span class="hl opt">;</span>                 <span class="hl com">/* Size of fractal heap IDs */</span>
    <span class="hl kwb">size_t</span>      fill_size<span class="hl opt">;</span>              <span class="hl com">/* Size of objects for &quot;bulk&quot; filled blocks */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>

    <span class="hl com">/* Set the filename to use for this test (dependent on fapl) */</span>
    <span class="hl kwd">h5_fixname</span><span class="hl opt">(</span>FILENAME<span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">],</span> fapl<span class="hl opt">,</span> filename<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>filename<span class="hl opt">));</span>

    <span class="hl com">/* Create the file to work on */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fcreate</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_TRUNC<span class="hl opt">,</span> H5P_DEFAULT<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
        STACK_ERROR

    <span class="hl com">/* Create absolute heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_create</span><span class="hl opt">(</span>f<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">,</span> cparam<span class="hl opt">)))</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">&gt;</span> HEAP_ID_LEN<span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_heap_addr</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(!</span><span class="hl kwd">H5F_addr_defined</span><span class="hl opt">(</span>fh_addr<span class="hl opt">))</span>
        FAIL_STACK_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(&amp;</span>state<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>fheap_heap_state_t<span class="hl opt">));</span>

    <span class="hl com">/*</span>
<span class="hl com">     * Test inserting mult. (small) objects to fill all direct</span>
<span class="hl com">     *  blocks in first recursive indirect block</span>
<span class="hl com">     */</span>
    <span class="hl kwd">TESTING</span><span class="hl opt">(</span><span class="hl str">&quot;inserting objects to fill all direct blocks in first row of recursive indirect block&quot;</span><span class="hl opt">);</span>

    <span class="hl com">/* Retrieve &quot;bulk&quot; filling object size */</span>
    fill_size <span class="hl opt">=</span> <span class="hl kwd">get_fill_size</span><span class="hl opt">(</span>tparam<span class="hl opt">);</span>

    <span class="hl com">/* Fill direct blocks in root indirect block up */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_root_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill row of recursive indirect blocks */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_2nd_indirect_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_fill_recursive_indirect_row() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_start_2nd_recursive_indirect</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test inserting mult. objects into absolute heap, creating</span>
<span class="hl com"> *              enough direct blocks to fill all direct rows of root indirect</span>
<span class="hl com"> *              block, fill all direct blocks in the first row of indirect</span>
<span class="hl com"> *              blocks and start on first block in second row of indirect blocks</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, March 27, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_start_2nd_recursive_indirect</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    <span class="hl kwb">size_t</span>      id_len<span class="hl opt">;</span>                 <span class="hl com">/* Size of fractal heap IDs */</span>
    <span class="hl kwb">size_t</span>      fill_size<span class="hl opt">;</span>              <span class="hl com">/* Size of objects for &quot;bulk&quot; filled blocks */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>

    <span class="hl com">/* Set the filename to use for this test (dependent on fapl) */</span>
    <span class="hl kwd">h5_fixname</span><span class="hl opt">(</span>FILENAME<span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">],</span> fapl<span class="hl opt">,</span> filename<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>filename<span class="hl opt">));</span>

    <span class="hl com">/* Create the file to work on */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fcreate</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_TRUNC<span class="hl opt">,</span> H5P_DEFAULT<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
        STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        STACK_ERROR

    <span class="hl com">/* Create absolute heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_create</span><span class="hl opt">(</span>f<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">,</span> cparam<span class="hl opt">)))</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">&gt;</span> HEAP_ID_LEN<span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_heap_addr</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(!</span><span class="hl kwd">H5F_addr_defined</span><span class="hl opt">(</span>fh_addr<span class="hl opt">))</span>
        FAIL_STACK_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(&amp;</span>state<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>fheap_heap_state_t<span class="hl opt">));</span>

    <span class="hl com">/*</span>
<span class="hl com">     * Test inserting mult. (small) objects to fill all direct</span>
<span class="hl com">     *  blocks in first recursive indirect block</span>
<span class="hl com">     */</span>
    <span class="hl kwd">TESTING</span><span class="hl opt">(</span><span class="hl str">&quot;inserting objects to start second row of recursive indirect blocks&quot;</span><span class="hl opt">);</span>

    <span class="hl com">/* Retrieve &quot;bulk&quot; filling object size */</span>
    fill_size <span class="hl opt">=</span> <span class="hl kwd">get_fill_size</span><span class="hl opt">(</span>tparam<span class="hl opt">);</span>

    <span class="hl com">/* Fill direct blocks in root indirect block up */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_root_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Fill row of recursive indirect blocks */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_2nd_indirect_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert one more object, to force creation of second</span>
<span class="hl com">     * recursive indirect block</span>
<span class="hl com">     */</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">,</span> SMALL_OBJ_SIZE1<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_start_2nd_recursive_indirect() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_recursive_indirect_two_deep</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test inserting mult. objects into absolute heap, creating</span>
<span class="hl com"> *              enough direct blocks to fill all direct rows of root indirect</span>
<span class="hl com"> *              block, fill all direct blocks in the row of indirect</span>
<span class="hl com"> *              blocks that are 2 levels deep</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, March 27, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_recursive_indirect_two_deep</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    <span class="hl kwb">size_t</span>      id_len<span class="hl opt">;</span>                 <span class="hl com">/* Size of fractal heap IDs */</span>
    <span class="hl kwb">size_t</span>      fill_size<span class="hl opt">;</span>              <span class="hl com">/* Size of objects for &quot;bulk&quot; filled blocks */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>

    <span class="hl com">/* Set the filename to use for this test (dependent on fapl) */</span>
    <span class="hl kwd">h5_fixname</span><span class="hl opt">(</span>FILENAME<span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">],</span> fapl<span class="hl opt">,</span> filename<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>filename<span class="hl opt">));</span>

    <span class="hl com">/* Create the file to work on */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fcreate</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_TRUNC<span class="hl opt">,</span> H5P_DEFAULT<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
        STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        STACK_ERROR

    <span class="hl com">/* Create absolute heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_create</span><span class="hl opt">(</span>f<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">,</span> cparam<span class="hl opt">)))</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">&gt;</span> HEAP_ID_LEN<span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_heap_addr</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(!</span><span class="hl kwd">H5F_addr_defined</span><span class="hl opt">(</span>fh_addr<span class="hl opt">))</span>
        FAIL_STACK_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(&amp;</span>state<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>fheap_heap_state_t<span class="hl opt">));</span>

    <span class="hl com">/*</span>
<span class="hl com">     * Test inserting mult. (small) objects to fill all direct</span>
<span class="hl com">     *  blocks in first recursive indirect block</span>
<span class="hl com">     */</span>
    <span class="hl kwd">TESTING</span><span class="hl opt">(</span><span class="hl str">&quot;inserting objects to fill recursive indirect blocks two levels deep&quot;</span><span class="hl opt">);</span>

    <span class="hl com">/* Retrieve &quot;bulk&quot; filling object size */</span>
    fill_size <span class="hl opt">=</span> <span class="hl kwd">get_fill_size</span><span class="hl opt">(</span>tparam<span class="hl opt">);</span>

    <span class="hl com">/* Fill direct blocks up in root indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_root_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill all rows of 2nd level indirect blocks */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_2nd_indirect_rows</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_recursive_indirect_two_deep() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_start_3rd_recursive_indirect</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test inserting mult. objects into absolute heap, creating</span>
<span class="hl com"> *              enough direct blocks to fill all direct rows of root indirect</span>
<span class="hl com"> *              block, fill all direct blocks in the row of indirect</span>
<span class="hl com"> *              blocks that are 2 levels deep and start first direct block</span>
<span class="hl com"> *              in 3rd level of indirect blocks</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, March 27, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_start_3rd_recursive_indirect</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    <span class="hl kwb">size_t</span>      id_len<span class="hl opt">;</span>                 <span class="hl com">/* Size of fractal heap IDs */</span>
    <span class="hl kwb">size_t</span>      fill_size<span class="hl opt">;</span>              <span class="hl com">/* Size of objects for &quot;bulk&quot; filled blocks */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>

    <span class="hl com">/* Set the filename to use for this test (dependent on fapl) */</span>
    <span class="hl kwd">h5_fixname</span><span class="hl opt">(</span>FILENAME<span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">],</span> fapl<span class="hl opt">,</span> filename<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>filename<span class="hl opt">));</span>

    <span class="hl com">/* Create the file to work on */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fcreate</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_TRUNC<span class="hl opt">,</span> H5P_DEFAULT<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
        STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        STACK_ERROR

    <span class="hl com">/* Create absolute heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_create</span><span class="hl opt">(</span>f<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">,</span> cparam<span class="hl opt">)))</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">&gt;</span> HEAP_ID_LEN<span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_heap_addr</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(!</span><span class="hl kwd">H5F_addr_defined</span><span class="hl opt">(</span>fh_addr<span class="hl opt">))</span>
        FAIL_STACK_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(&amp;</span>state<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>fheap_heap_state_t<span class="hl opt">));</span>

    <span class="hl com">/*</span>
<span class="hl com">     * Test inserting mult. (small) objects to fill all direct</span>
<span class="hl com">     *  blocks in first recursive indirect block</span>
<span class="hl com">     */</span>
    <span class="hl kwd">TESTING</span><span class="hl opt">(</span><span class="hl str">&quot;inserting objects to start recursive indirect blocks three levels deep&quot;</span><span class="hl opt">);</span>

    <span class="hl com">/* Retrieve &quot;bulk&quot; filling object size */</span>
    fill_size <span class="hl opt">=</span> <span class="hl kwd">get_fill_size</span><span class="hl opt">(</span>tparam<span class="hl opt">);</span>

    <span class="hl com">/* Fill direct blocks up in root indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_root_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Fill all rows of 2nd level indirect blocks */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_2nd_indirect_rows</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert one more object, to force creation of third level deep</span>
<span class="hl com">     * recursive indirect block</span>
<span class="hl com">     */</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">,</span> SMALL_OBJ_SIZE1<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_start_3rd_recursive_indirect() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_fill_first_3rd_recursive_indirect</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test inserting mult. objects into absolute heap, creating</span>
<span class="hl com"> *              enough direct blocks to fill all direct rows of root indirect</span>
<span class="hl com"> *              block, fill all direct blocks in the row of indirect</span>
<span class="hl com"> *              blocks that are 2 levels deep and fill first indirect block</span>
<span class="hl com"> *              in 3rd level of indirect blocks</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, March 27, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_fill_first_3rd_recursive_indirect</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    <span class="hl kwb">size_t</span>      id_len<span class="hl opt">;</span>                 <span class="hl com">/* Size of fractal heap IDs */</span>
    <span class="hl kwb">size_t</span>      fill_size<span class="hl opt">;</span>              <span class="hl com">/* Size of objects for &quot;bulk&quot; filled blocks */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>

    <span class="hl com">/* Set the filename to use for this test (dependent on fapl) */</span>
    <span class="hl kwd">h5_fixname</span><span class="hl opt">(</span>FILENAME<span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">],</span> fapl<span class="hl opt">,</span> filename<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>filename<span class="hl opt">));</span>

    <span class="hl com">/* Create the file to work on */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fcreate</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_TRUNC<span class="hl opt">,</span> H5P_DEFAULT<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
        STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        STACK_ERROR

    <span class="hl com">/* Create absolute heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_create</span><span class="hl opt">(</span>f<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">,</span> cparam<span class="hl opt">)))</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">&gt;</span> HEAP_ID_LEN<span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_heap_addr</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(!</span><span class="hl kwd">H5F_addr_defined</span><span class="hl opt">(</span>fh_addr<span class="hl opt">))</span>
        FAIL_STACK_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(&amp;</span>state<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>fheap_heap_state_t<span class="hl opt">));</span>

    <span class="hl com">/*</span>
<span class="hl com">     * Test inserting mult. (small) objects to fill all direct</span>
<span class="hl com">     *  blocks in first recursive indirect block</span>
<span class="hl com">     */</span>
    <span class="hl kwd">TESTING</span><span class="hl opt">(</span><span class="hl str">&quot;inserting objects to fill first indirect block of recursive indirect blocks three levels deep&quot;</span><span class="hl opt">);</span>

    <span class="hl com">/* Retrieve &quot;bulk&quot; filling object size */</span>
    fill_size <span class="hl opt">=</span> <span class="hl kwd">get_fill_size</span><span class="hl opt">(</span>tparam<span class="hl opt">);</span>

    <span class="hl com">/* Fill direct blocks up in root indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_root_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Fill all rows of 2nd level indirect blocks */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_2nd_indirect_rows</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Fill all direct block rows in third level indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill row of recursive indirect blocks in third level indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_2nd_indirect_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_fill_first_3rd_recursive_indirect() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_fill_3rd_recursive_indirect_row</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test inserting mult. objects into absolute heap, creating</span>
<span class="hl com"> *              enough direct blocks to fill all direct rows of root indirect</span>
<span class="hl com"> *              block, fill all direct blocks in the row of indirect</span>
<span class="hl com"> *              blocks that are 2 levels deep and fill all indirect blocks</span>
<span class="hl com"> *              first row of 3rd level of indirect blocks</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, March 27, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_fill_3rd_recursive_indirect_row</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    <span class="hl kwb">size_t</span>      id_len<span class="hl opt">;</span>                 <span class="hl com">/* Size of fractal heap IDs */</span>
    <span class="hl kwb">size_t</span>      fill_size<span class="hl opt">;</span>              <span class="hl com">/* Size of objects for &quot;bulk&quot; filled blocks */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>

    <span class="hl com">/* Set the filename to use for this test (dependent on fapl) */</span>
    <span class="hl kwd">h5_fixname</span><span class="hl opt">(</span>FILENAME<span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">],</span> fapl<span class="hl opt">,</span> filename<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>filename<span class="hl opt">));</span>

    <span class="hl com">/* Create the file to work on */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fcreate</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_TRUNC<span class="hl opt">,</span> H5P_DEFAULT<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
        STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        STACK_ERROR

    <span class="hl com">/* Create absolute heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_create</span><span class="hl opt">(</span>f<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">,</span> cparam<span class="hl opt">)))</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">&gt;</span> HEAP_ID_LEN<span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_heap_addr</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(!</span><span class="hl kwd">H5F_addr_defined</span><span class="hl opt">(</span>fh_addr<span class="hl opt">))</span>
        FAIL_STACK_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(&amp;</span>state<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>fheap_heap_state_t<span class="hl opt">));</span>

    <span class="hl com">/*</span>
<span class="hl com">     * Test inserting mult. (small) objects to fill all direct</span>
<span class="hl com">     *  blocks in first recursive indirect block</span>
<span class="hl com">     */</span>
    <span class="hl kwd">TESTING</span><span class="hl opt">(</span><span class="hl str">&quot;inserting objects to fill row of indirect blocks in recursive indirect blocks three levels deep&quot;</span><span class="hl opt">);</span>

    <span class="hl com">/* Retrieve &quot;bulk&quot; filling object size */</span>
    fill_size <span class="hl opt">=</span> <span class="hl kwd">get_fill_size</span><span class="hl opt">(</span>tparam<span class="hl opt">);</span>

    <span class="hl com">/* Fill direct blocks up in root indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_root_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Fill all rows of 2nd level indirect blocks */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_2nd_indirect_rows</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill 1st row of 3rd level indirect blocks */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_3rd_indirect_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_fill_3rd_recursive_indirect_row() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_fill_all_3rd_recursive_indirect</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test inserting mult. objects into absolute heap, creating</span>
<span class="hl com"> *              enough direct blocks to fill all direct rows of root indirect</span>
<span class="hl com"> *              block, fill all direct blocks in the row of indirect</span>
<span class="hl com"> *              blocks that are 2 levels deep and fill all indirect blocks</span>
<span class="hl com"> *              that are three levels deep</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, March 27, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_fill_all_3rd_recursive_indirect</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    <span class="hl kwb">size_t</span>      id_len<span class="hl opt">;</span>                 <span class="hl com">/* Size of fractal heap IDs */</span>
    <span class="hl kwb">size_t</span>      fill_size<span class="hl opt">;</span>              <span class="hl com">/* Size of objects for &quot;bulk&quot; filled blocks */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>

    <span class="hl com">/* Set the filename to use for this test (dependent on fapl) */</span>
    <span class="hl kwd">h5_fixname</span><span class="hl opt">(</span>FILENAME<span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">],</span> fapl<span class="hl opt">,</span> filename<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>filename<span class="hl opt">));</span>

    <span class="hl com">/* Create the file to work on */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fcreate</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_TRUNC<span class="hl opt">,</span> H5P_DEFAULT<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
        STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        STACK_ERROR

    <span class="hl com">/* Create absolute heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_create</span><span class="hl opt">(</span>f<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">,</span> cparam<span class="hl opt">)))</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">&gt;</span> HEAP_ID_LEN<span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_heap_addr</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(!</span><span class="hl kwd">H5F_addr_defined</span><span class="hl opt">(</span>fh_addr<span class="hl opt">))</span>
        FAIL_STACK_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(&amp;</span>state<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>fheap_heap_state_t<span class="hl opt">));</span>

    <span class="hl com">/*</span>
<span class="hl com">     * Test inserting mult. (small) objects to fill all direct</span>
<span class="hl com">     *  blocks in first recursive indirect block</span>
<span class="hl com">     */</span>
    <span class="hl kwd">TESTING</span><span class="hl opt">(</span><span class="hl str">&quot;inserting objects to fill row of indirect blocks in recursive indirect blocks three levels deep&quot;</span><span class="hl opt">);</span>

    <span class="hl com">/* Retrieve &quot;bulk&quot; filling object size */</span>
    fill_size <span class="hl opt">=</span> <span class="hl kwd">get_fill_size</span><span class="hl opt">(</span>tparam<span class="hl opt">);</span>

    <span class="hl com">/* Fill direct blocks up in root indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_root_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Fill all rows of 2nd level indirect blocks */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_2nd_indirect_rows</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill all rows of 3rd level indirect blocks */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_3rd_indirect_rows</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_fill_all_3rd_recursive_indirect() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_start_4th_recursive_indirect</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test inserting mult. objects into absolute heap, creating</span>
<span class="hl com"> *              enough direct blocks to fill all direct rows of root indirect</span>
<span class="hl com"> *              block, fill all direct blocks in the row of indirect</span>
<span class="hl com"> *              blocks that are 2 levels deep, fill all indirect blocks</span>
<span class="hl com"> *              that are three levels deep and start first direct block that</span>
<span class="hl com"> *              is four levels deep</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, March 27, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_start_4th_recursive_indirect</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    <span class="hl kwb">size_t</span>      id_len<span class="hl opt">;</span>                 <span class="hl com">/* Size of fractal heap IDs */</span>
    <span class="hl kwb">size_t</span>      fill_size<span class="hl opt">;</span>              <span class="hl com">/* Size of objects for &quot;bulk&quot; filled blocks */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>

    <span class="hl com">/* Set the filename to use for this test (dependent on fapl) */</span>
    <span class="hl kwd">h5_fixname</span><span class="hl opt">(</span>FILENAME<span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">],</span> fapl<span class="hl opt">,</span> filename<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>filename<span class="hl opt">));</span>

    <span class="hl com">/* Create the file to work on */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fcreate</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_TRUNC<span class="hl opt">,</span> H5P_DEFAULT<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
        STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        STACK_ERROR

    <span class="hl com">/* Create absolute heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_create</span><span class="hl opt">(</span>f<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">,</span> cparam<span class="hl opt">)))</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">&gt;</span> HEAP_ID_LEN<span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_heap_addr</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(!</span><span class="hl kwd">H5F_addr_defined</span><span class="hl opt">(</span>fh_addr<span class="hl opt">))</span>
        FAIL_STACK_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(&amp;</span>state<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>fheap_heap_state_t<span class="hl opt">));</span>

    <span class="hl com">/*</span>
<span class="hl com">     * Test inserting mult. (small) objects to fill all direct</span>
<span class="hl com">     *  blocks in first recursive indirect block</span>
<span class="hl com">     */</span>
    <span class="hl kwd">TESTING</span><span class="hl opt">(</span><span class="hl str">&quot;inserting objects to start first direct block in recursive indirect blocks four levels deep&quot;</span><span class="hl opt">);</span>

    <span class="hl com">/* Retrieve &quot;bulk&quot; filling object size */</span>
    fill_size <span class="hl opt">=</span> <span class="hl kwd">get_fill_size</span><span class="hl opt">(</span>tparam<span class="hl opt">);</span>

    <span class="hl com">/* Fill direct blocks up in root indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_root_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Fill all rows of 2nd level indirect blocks */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_2nd_indirect_rows</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Fill all rows of 3rd level indirect blocks */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_3rd_indirect_rows</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert one more object, to force creation of four level deep</span>
<span class="hl com">     * recursive indirect block</span>
<span class="hl com">     */</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">,</span> SMALL_OBJ_SIZE1<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_start_4th_recursive_indirect() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_fill_first_4th_recursive_indirect</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test inserting mult. objects into absolute heap, creating</span>
<span class="hl com"> *              enough direct blocks to fill all direct rows of root indirect</span>
<span class="hl com"> *              block, fill all direct blocks in the row of indirect</span>
<span class="hl com"> *              blocks that are 2 levels deep, fill all indirect blocks</span>
<span class="hl com"> *              that are three levels deep and fill the first (3rd level)</span>
<span class="hl com"> *              indirect block that is four levels deep</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, March 27, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_fill_first_4th_recursive_indirect</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    <span class="hl kwb">size_t</span>      id_len<span class="hl opt">;</span>                 <span class="hl com">/* Size of fractal heap IDs */</span>
    <span class="hl kwb">size_t</span>      fill_size<span class="hl opt">;</span>              <span class="hl com">/* Size of objects for &quot;bulk&quot; filled blocks */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>

    <span class="hl com">/* Set the filename to use for this test (dependent on fapl) */</span>
    <span class="hl kwd">h5_fixname</span><span class="hl opt">(</span>FILENAME<span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">],</span> fapl<span class="hl opt">,</span> filename<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>filename<span class="hl opt">));</span>

    <span class="hl com">/* Create the file to work on */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fcreate</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_TRUNC<span class="hl opt">,</span> H5P_DEFAULT<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
        STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        STACK_ERROR

    <span class="hl com">/* Create absolute heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_create</span><span class="hl opt">(</span>f<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">,</span> cparam<span class="hl opt">)))</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">&gt;</span> HEAP_ID_LEN<span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_heap_addr</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(!</span><span class="hl kwd">H5F_addr_defined</span><span class="hl opt">(</span>fh_addr<span class="hl opt">))</span>
        FAIL_STACK_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(&amp;</span>state<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>fheap_heap_state_t<span class="hl opt">));</span>

    <span class="hl com">/*</span>
<span class="hl com">     * Test inserting mult. (small) objects to fill all direct</span>
<span class="hl com">     *  blocks in first recursive indirect block</span>
<span class="hl com">     */</span>
    <span class="hl kwd">TESTING</span><span class="hl opt">(</span><span class="hl str">&quot;inserting objects to fill first (3rd level) indirect block in recursive indirect block four levels deep&quot;</span><span class="hl opt">);</span>

    <span class="hl com">/* Retrieve &quot;bulk&quot; filling object size */</span>
    fill_size <span class="hl opt">=</span> <span class="hl kwd">get_fill_size</span><span class="hl opt">(</span>tparam<span class="hl opt">);</span>

    <span class="hl com">/* Fill direct blocks up in root indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_root_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Fill all rows of 2nd level indirect blocks */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_2nd_indirect_rows</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Fill all rows of 3rd level indirect blocks */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_3rd_indirect_rows</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Fill direct block rows in fourth level indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Fill all rows of 2nd level deep indirect blocks in fourth level indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_2nd_indirect_rows</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill first row of 3rd level deep indirect blocks in fourth level indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_3rd_indirect_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_fill_first_4th_recursive_indirect() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_fill_4th_recursive_indirect_row</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test inserting mult. objects into absolute heap, creating</span>
<span class="hl com"> *              enough direct blocks to fill all direct rows of root indirect</span>
<span class="hl com"> *              block, fill all direct blocks in the row of indirect</span>
<span class="hl com"> *              blocks that are 2 levels deep, fill all indirect blocks</span>
<span class="hl com"> *              that are three levels deep and fill the first row of</span>
<span class="hl com"> *              indirect block that is four levels deep</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, March 27, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_fill_4th_recursive_indirect_row</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    <span class="hl kwb">size_t</span>      id_len<span class="hl opt">;</span>                 <span class="hl com">/* Size of fractal heap IDs */</span>
    <span class="hl kwb">size_t</span>      fill_size<span class="hl opt">;</span>              <span class="hl com">/* Size of objects for &quot;bulk&quot; filled blocks */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>

    <span class="hl com">/* Set the filename to use for this test (dependent on fapl) */</span>
    <span class="hl kwd">h5_fixname</span><span class="hl opt">(</span>FILENAME<span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">],</span> fapl<span class="hl opt">,</span> filename<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>filename<span class="hl opt">));</span>

    <span class="hl com">/* Create the file to work on */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fcreate</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_TRUNC<span class="hl opt">,</span> H5P_DEFAULT<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
        STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        STACK_ERROR

    <span class="hl com">/* Create absolute heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_create</span><span class="hl opt">(</span>f<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">,</span> cparam<span class="hl opt">)))</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">&gt;</span> HEAP_ID_LEN<span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_heap_addr</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(!</span><span class="hl kwd">H5F_addr_defined</span><span class="hl opt">(</span>fh_addr<span class="hl opt">))</span>
        FAIL_STACK_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(&amp;</span>state<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>fheap_heap_state_t<span class="hl opt">));</span>

    <span class="hl com">/*</span>
<span class="hl com">     * Test inserting mult. (small) objects to fill all direct</span>
<span class="hl com">     *  blocks in first recursive indirect block</span>
<span class="hl com">     */</span>
    <span class="hl kwd">TESTING</span><span class="hl opt">(</span><span class="hl str">&quot;inserting objects to fill first row of recursive indirect blocks four levels deep&quot;</span><span class="hl opt">);</span>

    <span class="hl com">/* Retrieve &quot;bulk&quot; filling object size */</span>
    fill_size <span class="hl opt">=</span> <span class="hl kwd">get_fill_size</span><span class="hl opt">(</span>tparam<span class="hl opt">);</span>

    <span class="hl com">/* Fill direct blocks up in root indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_root_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Fill all rows of 2nd level indirect blocks */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_2nd_indirect_rows</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Fill all rows of 3rd level indirect blocks */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_3rd_indirect_rows</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill 1st row of 4th level indirect blocks */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_4th_indirect_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_fill_4th_recursive_indirect_row() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_fill_all_4th_recursive_indirect</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test inserting mult. objects into absolute heap, creating</span>
<span class="hl com"> *              enough direct blocks to fill all direct rows of root indirect</span>
<span class="hl com"> *              block, fill all direct blocks in the row of indirect</span>
<span class="hl com"> *              blocks that are 2 levels deep, fill all indirect blocks</span>
<span class="hl com"> *              that are three levels deep and fill all rows of</span>
<span class="hl com"> *              indirect blocks that are four levels deep</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, March 27, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_fill_all_4th_recursive_indirect</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    <span class="hl kwb">size_t</span>      id_len<span class="hl opt">;</span>                 <span class="hl com">/* Size of fractal heap IDs */</span>
    <span class="hl kwb">size_t</span>      fill_size<span class="hl opt">;</span>              <span class="hl com">/* Size of objects for &quot;bulk&quot; filled blocks */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>

    <span class="hl com">/* Set the filename to use for this test (dependent on fapl) */</span>
    <span class="hl kwd">h5_fixname</span><span class="hl opt">(</span>FILENAME<span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">],</span> fapl<span class="hl opt">,</span> filename<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>filename<span class="hl opt">));</span>

    <span class="hl com">/* Create the file to work on */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fcreate</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_TRUNC<span class="hl opt">,</span> H5P_DEFAULT<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
        STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        STACK_ERROR

    <span class="hl com">/* Create absolute heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_create</span><span class="hl opt">(</span>f<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">,</span> cparam<span class="hl opt">)))</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">&gt;</span> HEAP_ID_LEN<span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_heap_addr</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(!</span><span class="hl kwd">H5F_addr_defined</span><span class="hl opt">(</span>fh_addr<span class="hl opt">))</span>
        FAIL_STACK_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(&amp;</span>state<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>fheap_heap_state_t<span class="hl opt">));</span>

    <span class="hl com">/*</span>
<span class="hl com">     * Test inserting mult. (small) objects to fill all direct</span>
<span class="hl com">     *  blocks in recursive indirect blocks four levels deep</span>
<span class="hl com">     */</span>
    <span class="hl kwd">TESTING</span><span class="hl opt">(</span><span class="hl str">&quot;inserting objects to fill all rows of recursive indirect blocks four levels deep&quot;</span><span class="hl opt">);</span>

    <span class="hl com">/* Retrieve &quot;bulk&quot; filling object size */</span>
    fill_size <span class="hl opt">=</span> <span class="hl kwd">get_fill_size</span><span class="hl opt">(</span>tparam<span class="hl opt">);</span>

    <span class="hl com">/* Fill direct blocks up in root indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_root_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Fill all rows of 2nd level indirect blocks */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_2nd_indirect_rows</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Fill all rows of 3rd level indirect blocks */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_3rd_indirect_rows</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill all rows of 4th level indirect blocks */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_4th_indirect_rows</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_fill_all_4th_recursive_indirect() */</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* ALL_INSERT_TESTS */</span><span class="hl ppc"></span>

<span class="hl ppc">#ifndef QAK</span>

<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_start_5th_recursive_indirect</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test inserting mult. objects into absolute heap, creating</span>
<span class="hl com"> *              enough direct blocks to fill all direct rows of root indirect</span>
<span class="hl com"> *              block, fill all direct blocks in the row of indirect</span>
<span class="hl com"> *              blocks that are 2 levels deep, fill all indirect blocks</span>
<span class="hl com"> *              that are three levels deep, fill all rows of indirect blocks</span>
<span class="hl com"> *              that are four levels deep and start first direct block in</span>
<span class="hl com"> *              indirect blocks five levels deep</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, March 27, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_start_5th_recursive_indirect</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    <span class="hl kwb">size_t</span>      id_len<span class="hl opt">;</span>                 <span class="hl com">/* Size of fractal heap IDs */</span>
    <span class="hl kwb">size_t</span>      fill_size<span class="hl opt">;</span>              <span class="hl com">/* Size of objects for &quot;bulk&quot; filled blocks */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>

    <span class="hl com">/* Set the filename to use for this test (dependent on fapl) */</span>
    <span class="hl kwd">h5_fixname</span><span class="hl opt">(</span>FILENAME<span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">],</span> fapl<span class="hl opt">,</span> filename<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>filename<span class="hl opt">));</span>

    <span class="hl com">/* Create the file to work on */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fcreate</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_TRUNC<span class="hl opt">,</span> H5P_DEFAULT<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
        STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        STACK_ERROR

    <span class="hl com">/* Create absolute heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_create</span><span class="hl opt">(</span>f<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">,</span> cparam<span class="hl opt">)))</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">&gt;</span> HEAP_ID_LEN<span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_heap_addr</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(!</span><span class="hl kwd">H5F_addr_defined</span><span class="hl opt">(</span>fh_addr<span class="hl opt">))</span>
        FAIL_STACK_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(&amp;</span>state<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>fheap_heap_state_t<span class="hl opt">));</span>

    <span class="hl com">/*</span>
<span class="hl com">     * Test inserting mult. (small) objects to fill all direct</span>
<span class="hl com">     *  blocks in recursive indirect blocks four levels deep and add one more</span>
<span class="hl com">     *  block, to make a five level deep structure</span>
<span class="hl com">     */</span>
    <span class="hl kwd">TESTING</span><span class="hl opt">(</span><span class="hl str">&quot;inserting objects to create first direct block in recursive indirect blocks five levels deep&quot;</span><span class="hl opt">);</span>

    <span class="hl com">/* Retrieve &quot;bulk&quot; filling object size */</span>
    fill_size <span class="hl opt">=</span> <span class="hl kwd">get_fill_size</span><span class="hl opt">(</span>tparam<span class="hl opt">);</span>

    <span class="hl com">/* Fill direct blocks up in root indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_root_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap &amp; file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_file</span><span class="hl opt">(&amp;</span>file<span class="hl opt">, &amp;</span>f<span class="hl opt">,</span> filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill all rows of 2nd level indirect blocks */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_2nd_indirect_rows</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap &amp; file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_file</span><span class="hl opt">(&amp;</span>file<span class="hl opt">, &amp;</span>f<span class="hl opt">,</span> filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill all rows of 3rd level indirect blocks */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_3rd_indirect_rows</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap &amp; file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_file</span><span class="hl opt">(&amp;</span>file<span class="hl opt">, &amp;</span>f<span class="hl opt">,</span> filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill all rows of 4th level indirect blocks */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_4th_indirect_rows</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap &amp; file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_file</span><span class="hl opt">(&amp;</span>file<span class="hl opt">, &amp;</span>f<span class="hl opt">,</span> filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert one more object, to force creation of five level deep</span>
<span class="hl com">     * recursive indirect block</span>
<span class="hl com">     */</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span>SMALL_OBJ_SIZE1<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_start_5th_recursive_indirect() */</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>

<span class="hl ppc">#ifndef QAK</span>

<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_remove_bogus</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test removing bogus heap IDs</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, May 15, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_remove_bogus</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    <span class="hl kwb">unsigned char</span> heap_id<span class="hl opt">[</span>HEAP_ID_LEN<span class="hl opt">];</span> <span class="hl com">/* Heap ID for object */</span>
    <span class="hl kwb">unsigned long</span> seed <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>             <span class="hl com">/* Random # seed */</span>
    <span class="hl kwb">size_t</span>      id_len<span class="hl opt">;</span>                 <span class="hl com">/* Size of fractal heap IDs */</span>
    hsize_t     obj_off<span class="hl opt">;</span>                <span class="hl com">/* Offset of object in heap */</span>
    <span class="hl kwb">size_t</span>      fill_size<span class="hl opt">;</span>              <span class="hl com">/* Size of objects for &quot;bulk&quot; filled blocks */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>
    <span class="hl kwb">unsigned</span>    u<span class="hl opt">;</span>                      <span class="hl com">/* Local index variable */</span>
    herr_t      ret<span class="hl opt">;</span>                    <span class="hl com">/* Generic return value */</span>

    <span class="hl com">/* Set the filename to use for this test (dependent on fapl) */</span>
    <span class="hl kwd">h5_fixname</span><span class="hl opt">(</span>FILENAME<span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">],</span> fapl<span class="hl opt">,</span> filename<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>filename<span class="hl opt">));</span>

    <span class="hl com">/* Create the file to work on */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fcreate</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_TRUNC<span class="hl opt">,</span> H5P_DEFAULT<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
        STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        STACK_ERROR

    <span class="hl com">/* Create absolute heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_create</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">)))</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">&gt;</span> HEAP_ID_LEN<span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_heap_addr</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(!</span><span class="hl kwd">H5F_addr_defined</span><span class="hl opt">(</span>fh_addr<span class="hl opt">))</span>
        FAIL_STACK_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(&amp;</span>state<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>fheap_heap_state_t<span class="hl opt">));</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/*</span>
<span class="hl com">     * Test removing bogus IDs from heap</span>
<span class="hl com">     */</span>
    <span class="hl kwd">TESTING</span><span class="hl opt">(</span><span class="hl str">&quot;removing bad heap IDs from absolute heap&quot;</span><span class="hl opt">);</span>

    <span class="hl com">/* Retrieve &quot;bulk&quot; filling object size */</span>
    fill_size <span class="hl opt">=</span> <span class="hl kwd">get_fill_size</span><span class="hl opt">(</span>tparam<span class="hl opt">);</span>

    <span class="hl com">/* Choose random # seed */</span>
    seed <span class="hl opt">= (</span><span class="hl kwb">unsigned long</span><span class="hl opt">)</span><span class="hl kwd">HDtime</span><span class="hl opt">(</span>NULL<span class="hl opt">);</span>
<span class="hl ppc">#ifdef QAK</span>
<span class="hl com">/* seed = (unsigned long)1155438845; */</span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;Random # seed was: %lu</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">,</span> seed<span class="hl opt">);</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>
    <span class="hl kwd">HDsrandom</span><span class="hl opt">((</span><span class="hl kwb">unsigned</span><span class="hl opt">)</span>seed<span class="hl opt">);</span>

    <span class="hl com">/* Set heap ID to random (non-null) value */</span>
    heap_id<span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">] =</span> H5HF_ID_VERS_CURR <span class="hl opt">|</span> H5HF_ID_TYPE_MAN<span class="hl opt">;</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">1</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> HEAP_ID_LEN<span class="hl opt">;</span> u<span class="hl opt">++)</span>
        heap_id<span class="hl opt">[</span>u<span class="hl opt">] = (</span><span class="hl kwb">unsigned char</span><span class="hl opt">)(</span><span class="hl kwd">HDrandom</span><span class="hl opt">() +</span> <span class="hl num">1</span><span class="hl opt">);</span>

    <span class="hl com">/* Try removing bogus heap ID from empty heap */</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        ret <span class="hl opt">=</span> <span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>ret <span class="hl opt">&gt;=</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Fill root direct blocks */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_root_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">,</span> NULL<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Get offset of random heap ID */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_off_test</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> heap_id<span class="hl opt">, &amp;</span>obj_off<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Make certain we can't accidentally use a valid heap ID */</span>
    <span class="hl kwa">while</span><span class="hl opt">(</span>obj_off <span class="hl opt">&lt;</span> state<span class="hl opt">.</span>man_size<span class="hl opt">) {</span>
        <span class="hl com">/* Set heap ID to random (non-null) value */</span>
        heap_id<span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">] =</span> H5HF_ID_VERS_CURR <span class="hl opt">|</span> H5HF_ID_TYPE_MAN<span class="hl opt">;</span>
        <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">1</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> HEAP_ID_LEN<span class="hl opt">;</span> u<span class="hl opt">++)</span>
            heap_id<span class="hl opt">[</span>u<span class="hl opt">] = (</span><span class="hl kwb">unsigned char</span><span class="hl opt">)(</span><span class="hl kwd">HDrandom</span><span class="hl opt">() +</span> <span class="hl num">1</span><span class="hl opt">);</span>

        <span class="hl com">/* Get offset of random heap ID */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_off_test</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> heap_id<span class="hl opt">, &amp;</span>obj_off<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end while */</span>

    <span class="hl com">/* Try removing bogus heap ID from heap w/objects */</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        ret <span class="hl opt">=</span> <span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>ret <span class="hl opt">&gt;=</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR
    <span class="hl kwd">H5Eclear2</span><span class="hl opt">(</span>H5E_DEFAULT<span class="hl opt">);</span>

    <span class="hl com">/* Try reading bogus heap ID from heap w/objects */</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        ret <span class="hl opt">=</span> <span class="hl kwd">H5HF_read</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id<span class="hl opt">,</span> shared_robj_g<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>ret <span class="hl opt">&gt;=</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR
    <span class="hl kwd">H5Eclear2</span><span class="hl opt">(</span>H5E_DEFAULT<span class="hl opt">);</span>

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    <span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;Random # seed was: %lu</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">,</span> seed<span class="hl opt">);</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_remove_bogus() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_remove_one</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test removing single object from heap</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, May 15, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_remove_one</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    <span class="hl kwb">unsigned char</span> heap_id<span class="hl opt">[</span>HEAP_ID_LEN<span class="hl opt">];</span> <span class="hl com">/* Heap ID for object */</span>
    <span class="hl kwb">unsigned char</span> obj<span class="hl opt">[</span>SMALL_OBJ_SIZE1<span class="hl opt">];</span> <span class="hl com">/* Buffer for object to insert */</span>
    <span class="hl kwb">size_t</span>      id_len<span class="hl opt">;</span>                 <span class="hl com">/* Size of fractal heap IDs */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>             <span class="hl com">/* Size of a file with an empty heap */</span>
    h5_stat_size_t       file_size<span class="hl opt">;</span>              <span class="hl com">/* Size of file currently */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>
    <span class="hl kwb">unsigned</span>    u<span class="hl opt">;</span>                      <span class="hl com">/* Local index variable */</span>

    <span class="hl com">/* Set the filename to use for this test (dependent on fapl) */</span>
    <span class="hl kwd">h5_fixname</span><span class="hl opt">(</span>FILENAME<span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">],</span> fapl<span class="hl opt">,</span> filename<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>filename<span class="hl opt">));</span>

    <span class="hl com">/* Create the file to work on */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fcreate</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_TRUNC<span class="hl opt">,</span> H5P_DEFAULT<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
        STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        STACK_ERROR

    <span class="hl com">/* Create absolute heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_create</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">)))</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">&gt;</span> HEAP_ID_LEN<span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_heap_addr</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(!</span><span class="hl kwd">H5F_addr_defined</span><span class="hl opt">(</span>fh_addr<span class="hl opt">))</span>
        FAIL_STACK_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(&amp;</span>state<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>fheap_heap_state_t<span class="hl opt">));</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Prepare for querying the size of a file with an empty heap */</span>

    <span class="hl com">/* Close (empty) heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Close file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Get the size of a file w/empty heap*/</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>empty_size <span class="hl opt">=</span> <span class="hl kwd">h5_get_file_size</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Re-open the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fopen</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_RDWR<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        STACK_ERROR

    <span class="hl com">/* Re-open heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_open</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fh_addr<span class="hl opt">)))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/*</span>
<span class="hl com">     * Test removing first (small) object from absolute heap</span>
<span class="hl com">     */</span>
    <span class="hl kwd">TESTING</span><span class="hl opt">(</span><span class="hl str">&quot;removing single object from absolute heap&quot;</span><span class="hl opt">);</span>

    <span class="hl com">/* Initialize the buffer for objects to insert */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>obj<span class="hl opt">);</span> u<span class="hl opt">++)</span>
        obj<span class="hl opt">[</span>u<span class="hl opt">] = (</span><span class="hl kwb">unsigned char</span><span class="hl opt">)</span>u<span class="hl opt">;</span>

    <span class="hl com">/* Insert object into heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_insert</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>obj<span class="hl opt">),</span> obj<span class="hl opt">, &amp;</span>heap_id<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check up on heap... */</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">=</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">) -</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>obj<span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_nobjs <span class="hl opt">=</span> <span class="hl num">1</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Remove object from heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check up on heap... */</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_nobjs <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Get the size of the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file_size <span class="hl opt">=</span> <span class="hl kwd">h5_get_file_size</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Verify the file is correct size */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>file_size <span class="hl opt">!=</span> empty_size<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_remove_one() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_remove_two</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test removing two objects from heap</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, May 22, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_remove_two</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    <span class="hl kwb">unsigned char</span> heap_id1<span class="hl opt">[</span>HEAP_ID_LEN<span class="hl opt">];</span> <span class="hl com">/* Heap ID for first object */</span>
    <span class="hl kwb">unsigned char</span> heap_id2<span class="hl opt">[</span>HEAP_ID_LEN<span class="hl opt">];</span> <span class="hl com">/* Heap ID for second object */</span>
    <span class="hl kwb">unsigned char</span> obj<span class="hl opt">[</span>SMALL_OBJ_SIZE1<span class="hl opt">];</span> <span class="hl com">/* Buffer for object to insert */</span>
    <span class="hl kwb">size_t</span>      id_len<span class="hl opt">;</span>                 <span class="hl com">/* Size of fractal heap IDs */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>             <span class="hl com">/* Size of a file with an empty heap */</span>
    h5_stat_size_t       file_size<span class="hl opt">;</span>              <span class="hl com">/* Size of file currently */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>
    <span class="hl kwb">unsigned</span>    u<span class="hl opt">;</span>                      <span class="hl com">/* Local index variable */</span>

    <span class="hl com">/* Set the filename to use for this test (dependent on fapl) */</span>
    <span class="hl kwd">h5_fixname</span><span class="hl opt">(</span>FILENAME<span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">],</span> fapl<span class="hl opt">,</span> filename<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>filename<span class="hl opt">));</span>

    <span class="hl com">/* Create the file to work on */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fcreate</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_TRUNC<span class="hl opt">,</span> H5P_DEFAULT<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
        STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        STACK_ERROR

    <span class="hl com">/* Create absolute heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_create</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">)))</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">&gt;</span> HEAP_ID_LEN<span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_heap_addr</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(!</span><span class="hl kwd">H5F_addr_defined</span><span class="hl opt">(</span>fh_addr<span class="hl opt">))</span>
        FAIL_STACK_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(&amp;</span>state<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>fheap_heap_state_t<span class="hl opt">));</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Prepare for querying the size of a file with an empty heap */</span>

    <span class="hl com">/* Close (empty) heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Close file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Get the size of a file w/empty heap*/</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>empty_size <span class="hl opt">=</span> <span class="hl kwd">h5_get_file_size</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Re-open the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fopen</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_RDWR<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        STACK_ERROR

    <span class="hl com">/* Re-open heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_open</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fh_addr<span class="hl opt">)))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/*</span>
<span class="hl com">     * Test removing two (small) objects from absolute heap</span>
<span class="hl com">     */</span>
    <span class="hl kwd">TESTING</span><span class="hl opt">(</span><span class="hl str">&quot;removing two objects from absolute heap&quot;</span><span class="hl opt">);</span>

    <span class="hl com">/* Initialize the buffer for objects to insert */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>obj<span class="hl opt">);</span> u<span class="hl opt">++)</span>
        obj<span class="hl opt">[</span>u<span class="hl opt">] = (</span><span class="hl kwb">unsigned char</span><span class="hl opt">)</span>u<span class="hl opt">;</span>

    <span class="hl com">/* Insert first object into heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_insert</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>obj<span class="hl opt">),</span> obj<span class="hl opt">, &amp;</span>heap_id1<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check up on heap... */</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">=</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">) -</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>obj<span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_nobjs <span class="hl opt">=</span> <span class="hl num">1</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Insert second object into heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_insert</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>obj<span class="hl opt">),</span> obj<span class="hl opt">, &amp;</span>heap_id2<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check up on heap... */</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">-=</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>obj<span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_nobjs<span class="hl opt">++;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Remove first object from heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id1<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check up on heap... */</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">+=</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>obj<span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_nobjs<span class="hl opt">--;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Remove second object from heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id2<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check up on heap... */</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_nobjs <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Get the size of the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file_size <span class="hl opt">=</span> <span class="hl kwd">h5_get_file_size</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Verify the file is correct size */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>file_size <span class="hl opt">!=</span> empty_size<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_remove_two() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_remove_one_larger</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test removing single larger (but &lt; standalone size) object</span>
<span class="hl com"> *              from heap</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Tuesday, June  6, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_remove_one_larger</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    <span class="hl kwb">unsigned char</span> heap_id<span class="hl opt">[</span>HEAP_ID_LEN<span class="hl opt">];</span> <span class="hl com">/* Heap ID for object */</span>
    <span class="hl kwb">unsigned char</span> <span class="hl opt">*</span>obj<span class="hl opt">;</span>                 <span class="hl com">/* Buffer for object to insert */</span>
    <span class="hl kwb">size_t</span>      obj_len<span class="hl opt">;</span>                <span class="hl com">/* Length of object to insert */</span>
    <span class="hl kwb">size_t</span>      id_len<span class="hl opt">;</span>                 <span class="hl com">/* Size of fractal heap IDs */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>             <span class="hl com">/* Size of a file with an empty heap */</span>
    h5_stat_size_t       file_size<span class="hl opt">;</span>              <span class="hl com">/* Size of file currently */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>
    <span class="hl kwb">unsigned</span>    u<span class="hl opt">;</span>                      <span class="hl com">/* Local index variable */</span>

    <span class="hl com">/* Set the filename to use for this test (dependent on fapl) */</span>
    <span class="hl kwd">h5_fixname</span><span class="hl opt">(</span>FILENAME<span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">],</span> fapl<span class="hl opt">,</span> filename<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>filename<span class="hl opt">));</span>

    <span class="hl com">/* Create the file to work on */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fcreate</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_TRUNC<span class="hl opt">,</span> H5P_DEFAULT<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
        STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        STACK_ERROR

    <span class="hl com">/* Create absolute heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_create</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">)))</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">&gt;</span> HEAP_ID_LEN<span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_heap_addr</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(!</span><span class="hl kwd">H5F_addr_defined</span><span class="hl opt">(</span>fh_addr<span class="hl opt">))</span>
        FAIL_STACK_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(&amp;</span>state<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>fheap_heap_state_t<span class="hl opt">));</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Prepare for querying the size of a file with an empty heap */</span>

    <span class="hl com">/* Close (empty) heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Close file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Get the size of a file w/empty heap*/</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>empty_size <span class="hl opt">=</span> <span class="hl kwd">h5_get_file_size</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Re-open the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fopen</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_RDWR<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        STACK_ERROR

    <span class="hl com">/* Re-open heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_open</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fh_addr<span class="hl opt">)))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/*</span>
<span class="hl com">     * Test removing one larger object from absolute heap</span>
<span class="hl com">     */</span>
    <span class="hl kwd">TESTING</span><span class="hl opt">(</span><span class="hl str">&quot;removing single larger object from absolute heap&quot;</span><span class="hl opt">);</span>

    <span class="hl com">/* Set up object to insert */</span>
    obj_len <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">2</span><span class="hl opt">) +</span> <span class="hl num">1</span><span class="hl opt">;</span>
    obj <span class="hl opt">=</span> shared_wobj_g<span class="hl opt">;</span>

    <span class="hl com">/* Insert object into heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_insert</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> obj_len<span class="hl opt">,</span> obj<span class="hl opt">, &amp;</span>heap_id<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check up on heap... */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> <span class="hl num">4</span><span class="hl opt">;</span> u<span class="hl opt">++) {</span>
        state<span class="hl opt">.</span>man_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> u<span class="hl opt">) *</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span>
        state<span class="hl opt">.</span>man_free_space <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> u<span class="hl opt">) *</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span>
    <span class="hl opt">}</span> <span class="hl com">/* end for */</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">3</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">-=</span> obj_len<span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_nobjs <span class="hl opt">=</span> <span class="hl num">1</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Remove object from heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check up on heap... */</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_nobjs <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Get the size of the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file_size <span class="hl opt">=</span> <span class="hl kwd">h5_get_file_size</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Verify the file is correct size */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>file_size <span class="hl opt">!=</span> empty_size<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_remove_one_larger() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_remove_two_larger</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test removing two larger (but &lt; standalone size) objects</span>
<span class="hl com"> *              from heap</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Saturday, June 10, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_remove_two_larger</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    <span class="hl kwb">unsigned char</span> heap_id1<span class="hl opt">[</span>HEAP_ID_LEN<span class="hl opt">];</span> <span class="hl com">/* Heap ID for first object */</span>
    <span class="hl kwb">unsigned char</span> heap_id2<span class="hl opt">[</span>HEAP_ID_LEN<span class="hl opt">];</span> <span class="hl com">/* Heap ID for second object */</span>
    <span class="hl kwb">unsigned char</span> <span class="hl opt">*</span>obj<span class="hl opt">;</span>                 <span class="hl com">/* Buffer for object to insert */</span>
    <span class="hl kwb">size_t</span>      obj_len<span class="hl opt">;</span>                <span class="hl com">/* Length of object to insert */</span>
    <span class="hl kwb">size_t</span>      id_len<span class="hl opt">;</span>                 <span class="hl com">/* Size of fractal heap IDs */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>             <span class="hl com">/* Size of a file with an empty heap */</span>
    h5_stat_size_t       file_size<span class="hl opt">;</span>              <span class="hl com">/* Size of file currently */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>
    <span class="hl kwb">unsigned</span>    u<span class="hl opt">;</span>                      <span class="hl com">/* Local index variable */</span>

    <span class="hl com">/* Set the filename to use for this test (dependent on fapl) */</span>
    <span class="hl kwd">h5_fixname</span><span class="hl opt">(</span>FILENAME<span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">],</span> fapl<span class="hl opt">,</span> filename<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>filename<span class="hl opt">));</span>

    <span class="hl com">/* Create the file to work on */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fcreate</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_TRUNC<span class="hl opt">,</span> H5P_DEFAULT<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
        STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        STACK_ERROR

    <span class="hl com">/* Create absolute heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_create</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">)))</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">&gt;</span> HEAP_ID_LEN<span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_heap_addr</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(!</span><span class="hl kwd">H5F_addr_defined</span><span class="hl opt">(</span>fh_addr<span class="hl opt">))</span>
        FAIL_STACK_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(&amp;</span>state<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>fheap_heap_state_t<span class="hl opt">));</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Prepare for querying the size of a file with an empty heap */</span>

    <span class="hl com">/* Close (empty) heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Close file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Get the size of a file w/empty heap*/</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>empty_size <span class="hl opt">=</span> <span class="hl kwd">h5_get_file_size</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Re-open the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fopen</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_RDWR<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        STACK_ERROR

    <span class="hl com">/* Re-open heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_open</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fh_addr<span class="hl opt">)))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/*</span>
<span class="hl com">     * Test removing two larger objects from absolute heap</span>
<span class="hl com">     */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>del_dir <span class="hl opt">==</span> FHEAP_DEL_FORWARD<span class="hl opt">)</span>
        <span class="hl kwd">TESTING</span><span class="hl opt">(</span><span class="hl str">&quot;removing two larger objects from absolute heap (forward)&quot;</span><span class="hl opt">)</span>
    <span class="hl kwa">else</span>
        <span class="hl kwd">TESTING</span><span class="hl opt">(</span><span class="hl str">&quot;removing two larger objects from absolute heap (reverse)&quot;</span><span class="hl opt">)</span>

    <span class="hl com">/* Set up first object to insert */</span>
    obj_len <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">2</span><span class="hl opt">) +</span> <span class="hl num">1</span><span class="hl opt">;</span>
    obj <span class="hl opt">=</span> shared_wobj_g<span class="hl opt">;</span>

    <span class="hl com">/* Insert object into heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_insert</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> obj_len<span class="hl opt">,</span> obj<span class="hl opt">, &amp;</span>heap_id1<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check up on heap... */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> <span class="hl num">4</span><span class="hl opt">;</span> u<span class="hl opt">++) {</span>
        state<span class="hl opt">.</span>man_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> u<span class="hl opt">) *</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span>
        state<span class="hl opt">.</span>man_free_space <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> u<span class="hl opt">) *</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span>
    <span class="hl opt">}</span> <span class="hl com">/* end for */</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">3</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">-=</span> obj_len<span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_nobjs <span class="hl opt">=</span> <span class="hl num">1</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Set up second object to insert */</span>
    obj_len <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">4</span><span class="hl opt">) +</span> <span class="hl num">1</span><span class="hl opt">;</span>
    obj <span class="hl opt">=</span> shared_wobj_g<span class="hl opt">;</span>

    <span class="hl com">/* Insert object into heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_insert</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> obj_len<span class="hl opt">,</span> obj<span class="hl opt">, &amp;</span>heap_id2<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check up on heap... */</span>
    <span class="hl com">/* (Goes to 8 rows because of doubling) */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">4</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> <span class="hl num">8</span><span class="hl opt">;</span> u<span class="hl opt">++) {</span>
        state<span class="hl opt">.</span>man_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> u<span class="hl opt">) *</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span>
        state<span class="hl opt">.</span>man_free_space <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> u<span class="hl opt">) *</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span>
    <span class="hl opt">}</span> <span class="hl com">/* end for */</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">5</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">-=</span> obj_len<span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_nobjs <span class="hl opt">=</span> <span class="hl num">2</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Remove objects in different orders */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>del_dir <span class="hl opt">==</span> FHEAP_DEL_FORWARD<span class="hl opt">) {</span>
        <span class="hl com">/* Remove first object from heap */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id1<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR

        <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            TEST_ERROR

        <span class="hl com">/* Check up on heap... */</span>
        state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">-=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">3</span><span class="hl opt">);</span>
        state<span class="hl opt">.</span>man_free_space <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">2</span><span class="hl opt">) +</span> <span class="hl num">1</span><span class="hl opt">;</span>
        state<span class="hl opt">.</span>man_nobjs <span class="hl opt">=</span> <span class="hl num">1</span><span class="hl opt">;</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
            FAIL_STACK_ERROR

        <span class="hl com">/* Remove second object from heap */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id2<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>
    <span class="hl kwa">else</span> <span class="hl opt">{</span>
        <span class="hl com">/* Remove second object from heap */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id2<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR

        <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            TEST_ERROR

        <span class="hl com">/* Check up on heap... */</span>
        <span class="hl com">/* (Goes to 4 rows because of halving) */</span>
        <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">4</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> <span class="hl num">8</span><span class="hl opt">;</span> u<span class="hl opt">++) {</span>
            state<span class="hl opt">.</span>man_size <span class="hl opt">-=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> u<span class="hl opt">) *</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span>
            state<span class="hl opt">.</span>man_free_space <span class="hl opt">-=</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> u<span class="hl opt">) *</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span>
        <span class="hl opt">}</span> <span class="hl com">/* end for */</span>
        state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">-=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">5</span><span class="hl opt">);</span>
        state<span class="hl opt">.</span>man_free_space <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">4</span><span class="hl opt">) +</span> <span class="hl num">1</span><span class="hl opt">;</span>
        state<span class="hl opt">.</span>man_nobjs <span class="hl opt">=</span> <span class="hl num">1</span><span class="hl opt">;</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
            FAIL_STACK_ERROR

        <span class="hl com">/* Remove first object from heap */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id1<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end else */</span>

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check up on heap... */</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_nobjs <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Get the size of the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file_size <span class="hl opt">=</span> <span class="hl kwd">h5_get_file_size</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Verify the file is correct size */</span>
<span class="hl ppc">#ifdef QAK</span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;empty_size = %lu</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">, (</span><span class="hl kwb">unsigned long</span><span class="hl opt">)</span>empty_size<span class="hl opt">);</span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;file_size = %lu</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">, (</span><span class="hl kwb">unsigned long</span><span class="hl opt">)</span>file_size<span class="hl opt">);</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>file_size <span class="hl opt">!=</span> empty_size<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_remove_two_larger() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_remove_three_larger</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test removing three larger (but &lt; standalone size) objects</span>
<span class="hl com"> *              from heap</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, June 12, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_remove_three_larger</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    <span class="hl kwb">unsigned char</span> heap_id1<span class="hl opt">[</span>HEAP_ID_LEN<span class="hl opt">];</span> <span class="hl com">/* Heap ID for first object */</span>
    <span class="hl kwb">unsigned char</span> heap_id2<span class="hl opt">[</span>HEAP_ID_LEN<span class="hl opt">];</span> <span class="hl com">/* Heap ID for second object */</span>
    <span class="hl kwb">unsigned char</span> heap_id3<span class="hl opt">[</span>HEAP_ID_LEN<span class="hl opt">];</span> <span class="hl com">/* Heap ID for third object */</span>
    <span class="hl kwb">unsigned char</span> <span class="hl opt">*</span>obj<span class="hl opt">;</span>                 <span class="hl com">/* Buffer for object to insert */</span>
    <span class="hl kwb">size_t</span>      obj_len<span class="hl opt">;</span>                <span class="hl com">/* Length of object to insert */</span>
    <span class="hl kwb">size_t</span>      id_len<span class="hl opt">;</span>                 <span class="hl com">/* Size of fractal heap IDs */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>             <span class="hl com">/* Size of a file with an empty heap */</span>
    h5_stat_size_t       file_size<span class="hl opt">;</span>              <span class="hl com">/* Size of file currently */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>
    <span class="hl kwb">unsigned</span>    u<span class="hl opt">;</span>                      <span class="hl com">/* Local index variable */</span>

    <span class="hl com">/* Set the filename to use for this test (dependent on fapl) */</span>
    <span class="hl kwd">h5_fixname</span><span class="hl opt">(</span>FILENAME<span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">],</span> fapl<span class="hl opt">,</span> filename<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>filename<span class="hl opt">));</span>

    <span class="hl com">/* Create the file to work on */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fcreate</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_TRUNC<span class="hl opt">,</span> H5P_DEFAULT<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
        STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        STACK_ERROR

    <span class="hl com">/* Create absolute heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_create</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">)))</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">&gt;</span> HEAP_ID_LEN<span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_heap_addr</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(!</span><span class="hl kwd">H5F_addr_defined</span><span class="hl opt">(</span>fh_addr<span class="hl opt">))</span>
        FAIL_STACK_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(&amp;</span>state<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>fheap_heap_state_t<span class="hl opt">));</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Prepare for querying the size of a file with an empty heap */</span>

    <span class="hl com">/* Close (empty) heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Close file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Get the size of a file w/empty heap*/</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>empty_size <span class="hl opt">=</span> <span class="hl kwd">h5_get_file_size</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Re-open the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fopen</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_RDWR<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        STACK_ERROR

    <span class="hl com">/* Re-open heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_open</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fh_addr<span class="hl opt">)))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/*</span>
<span class="hl com">     * Test removing three larger objects from absolute heap</span>
<span class="hl com">     */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>del_dir <span class="hl opt">==</span> FHEAP_DEL_FORWARD<span class="hl opt">)</span>
        <span class="hl kwd">TESTING</span><span class="hl opt">(</span><span class="hl str">&quot;removing three larger objects from absolute heap (forward)&quot;</span><span class="hl opt">)</span>
    <span class="hl kwa">else</span>
        <span class="hl kwd">TESTING</span><span class="hl opt">(</span><span class="hl str">&quot;removing three larger objects from absolute heap (reverse)&quot;</span><span class="hl opt">)</span>

    <span class="hl com">/* Set up first object to insert */</span>
    obj_len <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">2</span><span class="hl opt">) +</span> <span class="hl num">1</span><span class="hl opt">;</span>
    obj <span class="hl opt">=</span> shared_wobj_g<span class="hl opt">;</span>

    <span class="hl com">/* Insert object into heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_insert</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> obj_len<span class="hl opt">,</span> obj<span class="hl opt">, &amp;</span>heap_id1<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check up on heap... */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> <span class="hl num">4</span><span class="hl opt">;</span> u<span class="hl opt">++) {</span>
        state<span class="hl opt">.</span>man_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> u<span class="hl opt">) *</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span>
        state<span class="hl opt">.</span>man_free_space <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> u<span class="hl opt">) *</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span>
    <span class="hl opt">}</span> <span class="hl com">/* end for */</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">3</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">-=</span> obj_len<span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_nobjs <span class="hl opt">=</span> <span class="hl num">1</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Set up second object to insert */</span>
    obj_len <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">4</span><span class="hl opt">) +</span> <span class="hl num">1</span><span class="hl opt">;</span>
    obj <span class="hl opt">=</span> shared_wobj_g<span class="hl opt">;</span>

    <span class="hl com">/* Insert object into heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_insert</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> obj_len<span class="hl opt">,</span> obj<span class="hl opt">, &amp;</span>heap_id2<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check up on heap... */</span>
    <span class="hl com">/* (Goes to 8 rows because of doubling) */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">4</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> <span class="hl num">8</span><span class="hl opt">;</span> u<span class="hl opt">++) {</span>
        state<span class="hl opt">.</span>man_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> u<span class="hl opt">) *</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span>
        state<span class="hl opt">.</span>man_free_space <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> u<span class="hl opt">) *</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span>
    <span class="hl opt">}</span> <span class="hl com">/* end for */</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">5</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">-=</span> obj_len<span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_nobjs <span class="hl opt">=</span> <span class="hl num">2</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Set up third object to insert */</span>
    obj_len <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">7</span><span class="hl opt">) +</span> <span class="hl num">1</span><span class="hl opt">;</span>
    obj <span class="hl opt">=</span> shared_wobj_g<span class="hl opt">;</span>

    <span class="hl com">/* Insert object into heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_insert</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> obj_len<span class="hl opt">,</span> obj<span class="hl opt">, &amp;</span>heap_id3<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check up on heap... */</span>
    <span class="hl com">/* (Goes to 16 rows because of doubling) */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">8</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> <span class="hl num">16</span><span class="hl opt">;</span> u<span class="hl opt">++) {</span>
        state<span class="hl opt">.</span>man_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> u<span class="hl opt">) *</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span>
        state<span class="hl opt">.</span>man_free_space <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> u<span class="hl opt">) *</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span>
    <span class="hl opt">}</span> <span class="hl com">/* end for */</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">8</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">-=</span> obj_len<span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_nobjs <span class="hl opt">=</span> <span class="hl num">3</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Remove objects in different orders */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>del_dir <span class="hl opt">==</span> FHEAP_DEL_FORWARD<span class="hl opt">) {</span>
        <span class="hl com">/* Remove first object from heap */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id1<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR

        <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            TEST_ERROR

        <span class="hl com">/* Check up on heap... */</span>
        state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">-=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">3</span><span class="hl opt">);</span>
        state<span class="hl opt">.</span>man_free_space <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">2</span><span class="hl opt">) +</span> <span class="hl num">1</span><span class="hl opt">;</span>
        state<span class="hl opt">.</span>man_nobjs <span class="hl opt">=</span> <span class="hl num">2</span><span class="hl opt">;</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
            FAIL_STACK_ERROR

        <span class="hl com">/* Remove second object from heap */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id2<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR

        <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            TEST_ERROR

        <span class="hl com">/* Check up on heap... */</span>
        state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">-=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">5</span><span class="hl opt">);</span>
        state<span class="hl opt">.</span>man_free_space <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">4</span><span class="hl opt">) +</span> <span class="hl num">1</span><span class="hl opt">;</span>
        state<span class="hl opt">.</span>man_nobjs <span class="hl opt">=</span> <span class="hl num">1</span><span class="hl opt">;</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
            FAIL_STACK_ERROR

        <span class="hl com">/* Remove third object from heap */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id3<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>
    <span class="hl kwa">else</span> <span class="hl opt">{</span>
        <span class="hl com">/* Remove third object from heap */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id3<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR

        <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            TEST_ERROR

        <span class="hl com">/* Check up on heap... */</span>
        <span class="hl com">/* (Goes to 8 rows because of halving) */</span>
        <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">8</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> <span class="hl num">16</span><span class="hl opt">;</span> u<span class="hl opt">++) {</span>
            state<span class="hl opt">.</span>man_size <span class="hl opt">-=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> u<span class="hl opt">) *</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span>
            state<span class="hl opt">.</span>man_free_space <span class="hl opt">-=</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> u<span class="hl opt">) *</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span>
        <span class="hl opt">}</span> <span class="hl com">/* end for */</span>
        state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">-=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">8</span><span class="hl opt">);</span>
        state<span class="hl opt">.</span>man_free_space <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">7</span><span class="hl opt">) +</span> <span class="hl num">1</span><span class="hl opt">;</span>
        state<span class="hl opt">.</span>man_nobjs <span class="hl opt">=</span> <span class="hl num">2</span><span class="hl opt">;</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
            FAIL_STACK_ERROR

        <span class="hl com">/* Remove second object from heap */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id2<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR

        <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            TEST_ERROR

        <span class="hl com">/* Check up on heap... */</span>
        <span class="hl com">/* (Goes to 4 rows because of halving) */</span>
        <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">4</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> <span class="hl num">8</span><span class="hl opt">;</span> u<span class="hl opt">++) {</span>
            state<span class="hl opt">.</span>man_size <span class="hl opt">-=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> u<span class="hl opt">) *</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span>
            state<span class="hl opt">.</span>man_free_space <span class="hl opt">-=</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> u<span class="hl opt">) *</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span>
        <span class="hl opt">}</span> <span class="hl com">/* end for */</span>
        state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">-=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">5</span><span class="hl opt">);</span>
        state<span class="hl opt">.</span>man_free_space <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">4</span><span class="hl opt">) +</span> <span class="hl num">1</span><span class="hl opt">;</span>
        state<span class="hl opt">.</span>man_nobjs <span class="hl opt">=</span> <span class="hl num">1</span><span class="hl opt">;</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
            FAIL_STACK_ERROR

        <span class="hl com">/* Remove first object from heap */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id1<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end else */</span>

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check up on heap... */</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_nobjs <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Get the size of the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file_size <span class="hl opt">=</span> <span class="hl kwd">h5_get_file_size</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Verify the file is correct size */</span>
<span class="hl ppc">#ifdef QAK</span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;empty_size = %lu</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">, (</span><span class="hl kwb">unsigned long</span><span class="hl opt">)</span>empty_size<span class="hl opt">);</span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;file_size = %lu</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">, (</span><span class="hl kwb">unsigned long</span><span class="hl opt">)</span>file_size<span class="hl opt">);</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>file_size <span class="hl opt">!=</span> empty_size<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_remove_three_larger() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_incr_insert_remove</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test incremental insert &amp; removal of objects in heap</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Sunday, April 1, 2012</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_incr_insert_remove</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    <span class="hl kwb">unsigned char</span> heap_id<span class="hl opt">[</span><span class="hl num">100</span><span class="hl opt">][</span>MAX_HEAP_ID_LEN<span class="hl opt">];</span> <span class="hl com">/* Heap ID for object inserted */</span>
    <span class="hl kwb">struct</span> a_type_t1 <span class="hl opt">{</span>
        <span class="hl kwb">char</span> a<span class="hl opt">[</span><span class="hl num">10</span><span class="hl opt">];</span>
        <span class="hl kwb">char</span> b<span class="hl opt">[</span><span class="hl num">29</span><span class="hl opt">];</span>
    <span class="hl opt">}</span> obj1<span class="hl opt">,</span> obj2<span class="hl opt">;</span>                       <span class="hl com">/* Objects to insert/remove */</span>
    <span class="hl kwb">size_t</span>      id_len<span class="hl opt">;</span>                 <span class="hl com">/* Size of fractal heap IDs */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>
    <span class="hl kwb">int</span> i<span class="hl opt">,</span> j<span class="hl opt">;</span>

    <span class="hl com">/* Set the filename to use for this test (dependent on fapl) */</span>
    <span class="hl kwd">h5_fixname</span><span class="hl opt">(</span>FILENAME<span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">],</span> fapl<span class="hl opt">,</span> filename<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>filename<span class="hl opt">));</span>

    <span class="hl com">/* Create the file to work on */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fcreate</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_TRUNC<span class="hl opt">,</span> H5P_DEFAULT<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
        STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        STACK_ERROR

    <span class="hl com">/* Create absolute heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_create</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">)))</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">&gt;</span> HEAP_ID_LEN<span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_heap_addr</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(!</span><span class="hl kwd">H5F_addr_defined</span><span class="hl opt">(</span>fh_addr<span class="hl opt">))</span>
        FAIL_STACK_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(&amp;</span>state<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>fheap_heap_state_t<span class="hl opt">));</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/*</span>
<span class="hl com">     * Test incremental insert and removal </span>
<span class="hl com">     */</span>
    <span class="hl kwd">TESTING</span><span class="hl opt">(</span><span class="hl str">&quot;incremental object insertion and removal&quot;</span><span class="hl opt">)</span>

    <span class="hl kwa">for</span><span class="hl opt">(</span>i <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> i <span class="hl opt">&lt;</span> <span class="hl num">100</span><span class="hl opt">;</span> i<span class="hl opt">++) {</span>
        <span class="hl kwd">sprintf</span><span class="hl opt">(</span>obj1<span class="hl opt">.</span>b<span class="hl opt">,</span> <span class="hl str">&quot;%s%d&quot;</span><span class="hl opt">,</span> <span class="hl str">&quot;ABCDEFGHIJKLMNOPQRSTUVWXYZ&quot;</span><span class="hl opt">,</span> i<span class="hl opt">);</span>

        <span class="hl kwa">for</span><span class="hl opt">(</span>j <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> j <span class="hl opt">&lt;</span> i<span class="hl opt">;</span> j<span class="hl opt">++) {</span>
            <span class="hl kwd">sprintf</span><span class="hl opt">(</span>obj2<span class="hl opt">.</span>b<span class="hl opt">,</span> <span class="hl str">&quot;%s%d&quot;</span><span class="hl opt">,</span> <span class="hl str">&quot;ABCDEFGHIJKLMNOPQRSTUVWXYZ&quot;</span><span class="hl opt">,</span> j<span class="hl opt">);</span>

            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id<span class="hl opt">[</span>j<span class="hl opt">]) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_insert</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwa">sizeof</span><span class="hl opt">(</span>obj2<span class="hl opt">)), &amp;</span>obj2<span class="hl opt">,</span> heap_id<span class="hl opt">[</span>j<span class="hl opt">]) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR
        <span class="hl opt">}</span> <span class="hl com">/* end for */</span>

        <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            TEST_ERROR

        <span class="hl com">/* Insert object */</span>
        <span class="hl kwd">HDmemset</span><span class="hl opt">(</span>heap_id<span class="hl opt">[</span>i<span class="hl opt">],</span> <span class="hl num">0</span><span class="hl opt">,</span> id_len<span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_insert</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwa">sizeof</span><span class="hl opt">(</span>obj1<span class="hl opt">)), &amp;</span>obj1<span class="hl opt">,</span> heap_id<span class="hl opt">[</span>i<span class="hl opt">]) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end for */</span>
     
    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_incr_insert_remove() */</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>

<span class="hl ppc">#ifndef QAK</span>

<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_remove_root_direct</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test filling and removing all objects from root direct block in</span>
<span class="hl com"> *              heap</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, May 22, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_remove_root_direct</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    fheap_heap_ids_t keep_ids<span class="hl opt">;</span>          <span class="hl com">/* Structure to retain heap IDs */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>             <span class="hl com">/* Size of a file with an empty heap */</span>
    <span class="hl kwb">size_t</span>      fill_size<span class="hl opt">;</span>              <span class="hl com">/* Size of objects for &quot;bulk&quot; filled blocks */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>
    <span class="hl kwb">const char</span> <span class="hl opt">*</span>base_desc <span class="hl opt">=</span> <span class="hl str">&quot;removing all objects from root direct block of absolute heap %s&quot;</span><span class="hl opt">;</span>       <span class="hl com">/* Test description */</span>

    <span class="hl com">/* Perform common test initialization operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">begin_test</span><span class="hl opt">(</span>tparam<span class="hl opt">,</span> base_desc<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">, &amp;</span>fill_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Perform common file &amp; heap open operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">open_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">,</span> tparam<span class="hl opt">, &amp;</span>file<span class="hl opt">, &amp;</span>f<span class="hl opt">, &amp;</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR


    <span class="hl com">/* Fill the heap up */</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">=</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_heap</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR


    <span class="hl com">/* Perform common file &amp; heap close operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">close_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> tparam<span class="hl opt">,</span> file<span class="hl opt">,</span> f<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">,</span> empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Free resources */</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_remove_root_direct() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_remove_two_direct</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test filling and removing all objects from (first) two direct</span>
<span class="hl com"> *              blocks in heap</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, May 22, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_remove_two_direct</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    fheap_heap_ids_t keep_ids<span class="hl opt">;</span>          <span class="hl com">/* Structure to retain heap IDs */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>             <span class="hl com">/* Size of a file with an empty heap */</span>
    <span class="hl kwb">size_t</span>      fill_size<span class="hl opt">;</span>              <span class="hl com">/* Size of objects for &quot;bulk&quot; filled blocks */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>
    <span class="hl kwb">const char</span> <span class="hl opt">*</span>base_desc <span class="hl opt">=</span> <span class="hl str">&quot;removing all objects from two direct blocks of absolute heap %s&quot;</span><span class="hl opt">;</span>       <span class="hl com">/* Test description */</span>

    <span class="hl com">/* Perform common test initialization operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">begin_test</span><span class="hl opt">(</span>tparam<span class="hl opt">,</span> base_desc<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">, &amp;</span>fill_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Perform common file &amp; heap open operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">open_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">,</span> tparam<span class="hl opt">, &amp;</span>file<span class="hl opt">, &amp;</span>f<span class="hl opt">, &amp;</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR


    <span class="hl com">/* Fill the first block in heap */</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">=</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_heap</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check up on heap... */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Fill the second block in heap */</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">= (</span>cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">-</span> <span class="hl num">1</span><span class="hl opt">) *</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_heap</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR


    <span class="hl com">/* Perform common file &amp; heap close operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">close_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> tparam<span class="hl opt">,</span> file<span class="hl opt">,</span> f<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">,</span> empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Free resources */</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_remove_two_direct() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_remove_first_row</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test filling and removing all objects from first row of direct</span>
<span class="hl com"> *              blocks in heap</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, June  5, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_remove_first_row</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    fheap_heap_ids_t keep_ids<span class="hl opt">;</span>          <span class="hl com">/* Structure to retain heap IDs */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>             <span class="hl com">/* Size of a file with an empty heap */</span>
    <span class="hl kwb">size_t</span>      fill_size<span class="hl opt">;</span>              <span class="hl com">/* Size of objects for &quot;bulk&quot; filled blocks */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>
    <span class="hl kwb">const char</span> <span class="hl opt">*</span>base_desc <span class="hl opt">=</span> <span class="hl str">&quot;removing all objects from first row of direct blocks of absolute heap %s&quot;</span><span class="hl opt">;</span>       <span class="hl com">/* Test description */</span>

    <span class="hl com">/* Perform common test initialization operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">begin_test</span><span class="hl opt">(</span>tparam<span class="hl opt">,</span> base_desc<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">, &amp;</span>fill_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Perform common file &amp; heap open operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">open_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">,</span> tparam<span class="hl opt">, &amp;</span>file<span class="hl opt">, &amp;</span>f<span class="hl opt">, &amp;</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR


    <span class="hl com">/* Fill first row of direct blocks */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_root_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR


    <span class="hl com">/* Perform common file &amp; heap close operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">close_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> tparam<span class="hl opt">,</span> file<span class="hl opt">,</span> f<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">,</span> empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Free resources */</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_remove_first_row() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_remove_first_two_rows</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test filling and removing all objects from first two rows of</span>
<span class="hl com"> *              direct blocks in heap</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, June 12, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_remove_first_two_rows</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    fheap_heap_ids_t keep_ids<span class="hl opt">;</span>          <span class="hl com">/* Structure to retain heap IDs */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>             <span class="hl com">/* Size of a file with an empty heap */</span>
    <span class="hl kwb">size_t</span>      fill_size<span class="hl opt">;</span>              <span class="hl com">/* Size of objects for &quot;bulk&quot; filled blocks */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>
    <span class="hl kwb">const char</span> <span class="hl opt">*</span>base_desc <span class="hl opt">=</span> <span class="hl str">&quot;removing all objects from first two rows of direct blocks of absolute heap %s&quot;</span><span class="hl opt">;</span>       <span class="hl com">/* Test description */</span>

    <span class="hl com">/* Perform common test initialization operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">begin_test</span><span class="hl opt">(</span>tparam<span class="hl opt">,</span> base_desc<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">, &amp;</span>fill_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Perform common file &amp; heap open operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">open_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">,</span> tparam<span class="hl opt">, &amp;</span>file<span class="hl opt">, &amp;</span>f<span class="hl opt">, &amp;</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR


    <span class="hl com">/* Fill first two rows of direct blocks */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_root_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_root_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR


    <span class="hl com">/* Perform common file &amp; heap close operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">close_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> tparam<span class="hl opt">,</span> file<span class="hl opt">,</span> f<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">,</span> empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Free resources */</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_remove_first_two_rows() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_remove_first_four_rows</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test filling and removing all objects from first four rows of</span>
<span class="hl com"> *              direct blocks in heap</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Tuesday, June 13, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_remove_first_four_rows</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    fheap_heap_ids_t keep_ids<span class="hl opt">;</span>          <span class="hl com">/* Structure to retain heap IDs */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>             <span class="hl com">/* Size of a file with an empty heap */</span>
    <span class="hl kwb">size_t</span>      fill_size<span class="hl opt">;</span>              <span class="hl com">/* Size of objects for &quot;bulk&quot; filled blocks */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>
    <span class="hl kwb">const char</span> <span class="hl opt">*</span>base_desc <span class="hl opt">=</span> <span class="hl str">&quot;removing all objects from first four rows of direct blocks of absolute heap %s&quot;</span><span class="hl opt">;</span>       <span class="hl com">/* Test description */</span>

    <span class="hl com">/* Perform common test initialization operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">begin_test</span><span class="hl opt">(</span>tparam<span class="hl opt">,</span> base_desc<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">, &amp;</span>fill_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Perform common file &amp; heap open operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">open_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">,</span> tparam<span class="hl opt">, &amp;</span>file<span class="hl opt">, &amp;</span>f<span class="hl opt">, &amp;</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR


    <span class="hl com">/* Fill first two rows of direct blocks */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_root_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_root_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_root_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">2</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_root_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">3</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR


    <span class="hl com">/* Perform common file &amp; heap close operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">close_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> tparam<span class="hl opt">,</span> file<span class="hl opt">,</span> f<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">,</span> empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Free resources */</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_remove_first_four_rows() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_remove_all_root_direct</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test filling and removing all objects from all direct blocks</span>
<span class="hl com"> *              in root indirect block of heap</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Tuesday, June 13, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_remove_all_root_direct</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    fheap_heap_ids_t keep_ids<span class="hl opt">;</span>          <span class="hl com">/* Structure to retain heap IDs */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>             <span class="hl com">/* Size of a file with an empty heap */</span>
    <span class="hl kwb">size_t</span>      fill_size<span class="hl opt">;</span>              <span class="hl com">/* Size of objects for &quot;bulk&quot; filled blocks */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>
    <span class="hl kwb">const char</span> <span class="hl opt">*</span>base_desc <span class="hl opt">=</span> <span class="hl str">&quot;removing all objects from all direct blocks of root group in absolute heap %s&quot;</span><span class="hl opt">;</span>       <span class="hl com">/* Test description */</span>

    <span class="hl com">/* Perform common test initialization operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">begin_test</span><span class="hl opt">(</span>tparam<span class="hl opt">,</span> base_desc<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">, &amp;</span>fill_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Perform common file &amp; heap open operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">open_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">,</span> tparam<span class="hl opt">, &amp;</span>file<span class="hl opt">, &amp;</span>f<span class="hl opt">, &amp;</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR


    <span class="hl com">/* Fill direct blocks in root indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_root_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR


    <span class="hl com">/* Perform common file &amp; heap close operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">close_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> tparam<span class="hl opt">,</span> file<span class="hl opt">,</span> f<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">,</span> empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Free resources */</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_remove_all_root_direct() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_remove_2nd_indirect</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test filling and removing all objects up to 2nd level indirect</span>
<span class="hl com"> *              blocks of heap</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Tuesday, June 13, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_remove_2nd_indirect</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    fheap_heap_ids_t keep_ids<span class="hl opt">;</span>          <span class="hl com">/* Structure to retain heap IDs */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>             <span class="hl com">/* Size of a file with an empty heap */</span>
    <span class="hl kwb">size_t</span>      fill_size<span class="hl opt">;</span>              <span class="hl com">/* Size of objects for &quot;bulk&quot; filled blocks */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>
    <span class="hl kwb">const char</span> <span class="hl opt">*</span>base_desc <span class="hl opt">=</span> <span class="hl str">&quot;removing all objects from 2nd level indirect blocks of absolute heap %s&quot;</span><span class="hl opt">;</span>       <span class="hl com">/* Test description */</span>

    <span class="hl com">/* Perform common test initialization operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">begin_test</span><span class="hl opt">(</span>tparam<span class="hl opt">,</span> base_desc<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">, &amp;</span>fill_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Perform common file &amp; heap open operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">open_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">,</span> tparam<span class="hl opt">, &amp;</span>file<span class="hl opt">, &amp;</span>f<span class="hl opt">, &amp;</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR


    <span class="hl com">/* Fill direct blocks in root indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_root_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Fill all rows of 2nd level indirect blocks */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_2nd_indirect_rows</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR


    <span class="hl com">/* Perform common file &amp; heap close operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">close_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> tparam<span class="hl opt">,</span> file<span class="hl opt">,</span> f<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">,</span> empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Free resources */</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_remove_2nd_indirect() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_remove_3rd_indirect</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test filling and removing all objects up to 3rd level indirect</span>
<span class="hl com"> *              blocks of heap</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, July 24, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_remove_3rd_indirect</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    fheap_heap_ids_t keep_ids<span class="hl opt">;</span>          <span class="hl com">/* Structure to retain heap IDs */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>             <span class="hl com">/* Size of a file with an empty heap */</span>
    <span class="hl kwb">size_t</span>      fill_size<span class="hl opt">;</span>              <span class="hl com">/* Size of objects for &quot;bulk&quot; filled blocks */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>
    <span class="hl kwb">const char</span> <span class="hl opt">*</span>base_desc <span class="hl opt">=</span> <span class="hl str">&quot;removing all objects from 3rd level indirect blocks of absolute heap %s&quot;</span><span class="hl opt">;</span>       <span class="hl com">/* Test description */</span>

    <span class="hl com">/* Perform common test initialization operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">begin_test</span><span class="hl opt">(</span>tparam<span class="hl opt">,</span> base_desc<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">, &amp;</span>fill_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Perform common file &amp; heap open operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">open_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">,</span> tparam<span class="hl opt">, &amp;</span>file<span class="hl opt">, &amp;</span>f<span class="hl opt">, &amp;</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR


    <span class="hl com">/* Fill direct blocks in root indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_root_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Fill all rows of 2nd level indirect blocks */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_2nd_indirect_rows</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Fill all rows of 3rd level indirect blocks */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_3rd_indirect_rows</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR


    <span class="hl com">/* Perform common file &amp; heap close operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">close_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> tparam<span class="hl opt">,</span> file<span class="hl opt">,</span> f<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">,</span> empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Free resources */</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_remove_3rd_indirect() */</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>

<span class="hl ppc">#ifndef QAK</span>

<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_skip_start_block</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test inserting object into absolute heap which is too large</span>
<span class="hl com"> *              for starting block size, which forces root indirect block</span>
<span class="hl com"> *              creation</span>
<span class="hl com"> *</span>
<span class="hl com"> *              Then, remove all the objects, in various ways</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, March 27, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_skip_start_block</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    fheap_heap_ids_t keep_ids<span class="hl opt">;</span>          <span class="hl com">/* Structure to retain heap IDs */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>             <span class="hl com">/* Size of a file with an empty heap */</span>
    <span class="hl kwb">size_t</span>      obj_size<span class="hl opt">;</span>               <span class="hl com">/* Size of object */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>
    <span class="hl kwb">const char</span> <span class="hl opt">*</span>base_desc <span class="hl opt">=</span> <span class="hl str">&quot;inserting object that is too large for starting block, then remove all objects %s&quot;</span><span class="hl opt">;</span>       <span class="hl com">/* Test description */</span>

    <span class="hl com">/* Perform common test initialization operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">begin_test</span><span class="hl opt">(</span>tparam<span class="hl opt">,</span> base_desc<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">,</span> NULL<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Perform common file &amp; heap open operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">open_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">,</span> tparam<span class="hl opt">, &amp;</span>file<span class="hl opt">, &amp;</span>f<span class="hl opt">, &amp;</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">) +</span> <span class="hl num">1</span><span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">2</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">2</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">2</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR


    <span class="hl com">/* Perform common file &amp; heap close operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">close_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> tparam<span class="hl opt">,</span> file<span class="hl opt">,</span> f<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">,</span> empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Free resources */</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_skip_start_block() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_skip_start_block_add_back</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test inserting object into absolute heap which is too large</span>
<span class="hl com"> *              for starting block size, which forces root indirect block</span>
<span class="hl com"> *              creation, then add object which fits in skipped direct block</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Tuesday, March 28, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_skip_start_block_add_back</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    fheap_heap_ids_t keep_ids<span class="hl opt">;</span>          <span class="hl com">/* Structure to retain heap IDs */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>             <span class="hl com">/* Size of a file with an empty heap */</span>
    <span class="hl kwb">size_t</span>      obj_size<span class="hl opt">;</span>               <span class="hl com">/* Size of object */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>
    <span class="hl kwb">const char</span> <span class="hl opt">*</span>base_desc <span class="hl opt">=</span> <span class="hl str">&quot;skipping starting block, then adding object back to first block, then remove all objects %s&quot;</span><span class="hl opt">;</span>       <span class="hl com">/* Test description */</span>

    <span class="hl com">/* Perform common test initialization operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">begin_test</span><span class="hl opt">(</span>tparam<span class="hl opt">,</span> base_desc<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">,</span> NULL<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Perform common file &amp; heap open operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">open_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">,</span> tparam<span class="hl opt">, &amp;</span>file<span class="hl opt">, &amp;</span>f<span class="hl opt">, &amp;</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR


    <span class="hl com">/* Insert object too large for starting block size */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">) +</span> <span class="hl num">1</span><span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">2</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">2</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">2</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert an object to fill up the heap block just created */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">2</span><span class="hl opt">) -</span> obj_size<span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert second &quot;real&quot; object, which should go in earlier direct block */</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">20</span><span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span>SMALL_OBJ_SIZE2<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR


    <span class="hl com">/* Perform common file &amp; heap close operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">close_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> tparam<span class="hl opt">,</span> file<span class="hl opt">,</span> f<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">,</span> empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Free resources */</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_skip_start_block_add_back() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_skip_start_block_add_skipped</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test inserting object into absolute heap which is too large</span>
<span class="hl com"> *              for starting block size, which forces root indirect block</span>
<span class="hl com"> *              creation, then add objects to fill skipped direct blocks</span>
<span class="hl com"> *              and add another object to start on next &quot;normal&quot; block</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Tuesday, March 28, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_skip_start_block_add_skipped</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    fheap_heap_ids_t keep_ids<span class="hl opt">;</span>          <span class="hl com">/* Structure to retain heap IDs */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>             <span class="hl com">/* Size of a file with an empty heap */</span>
    <span class="hl kwb">size_t</span>      obj_size<span class="hl opt">;</span>               <span class="hl com">/* Size of object */</span>
    <span class="hl kwb">size_t</span>      fill_size<span class="hl opt">;</span>              <span class="hl com">/* Size of objects for &quot;bulk&quot; filled blocks */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>
    <span class="hl kwb">const char</span> <span class="hl opt">*</span>base_desc <span class="hl opt">=</span> <span class="hl str">&quot;skipping starting block, then adding objects to backfill and extend, then remove all objects %s&quot;</span><span class="hl opt">;</span>       <span class="hl com">/* Test description */</span>

    <span class="hl com">/* Perform common test initialization operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">begin_test</span><span class="hl opt">(</span>tparam<span class="hl opt">,</span> base_desc<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">, &amp;</span>fill_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Perform common file &amp; heap open operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">open_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">,</span> tparam<span class="hl opt">, &amp;</span>file<span class="hl opt">, &amp;</span>f<span class="hl opt">, &amp;</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR


    <span class="hl com">/* Insert object too large for starting block size */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">) +</span> <span class="hl num">1</span><span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">2</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">2</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">2</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert an object to fill up the heap block just created */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">2</span><span class="hl opt">) -</span> obj_size<span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Add rows of blocks to &quot;backfill&quot; direct blocks that were skipped */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert another object, which should extend direct blocks, instead of backfill */</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">2</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">20</span><span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span>SMALL_OBJ_SIZE2<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR


    <span class="hl com">/* Perform common file &amp; heap close operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">close_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> tparam<span class="hl opt">,</span> file<span class="hl opt">,</span> f<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">,</span> empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Free resources */</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_skip_start_block_add_skipped() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_skip_2nd_block</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test inserting object into absolute heap which is small</span>
<span class="hl com"> *              enough for starting block size, then add object too large</span>
<span class="hl com"> *              for any blocks in first row of direct blocks, to force</span>
<span class="hl com"> *              early creation of indirect block (and range of skipped blocks)</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Saturday, April  1, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_skip_2nd_block</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    fheap_heap_ids_t keep_ids<span class="hl opt">;</span>          <span class="hl com">/* Structure to retain heap IDs */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>             <span class="hl com">/* Size of a file with an empty heap */</span>
    <span class="hl kwb">size_t</span>      obj_size<span class="hl opt">;</span>               <span class="hl com">/* Size of object */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>
    <span class="hl kwb">const char</span> <span class="hl opt">*</span>base_desc <span class="hl opt">=</span> <span class="hl str">&quot;insert object to initial block, then add object too large for starting direct blocks, then remove all objects %s&quot;</span><span class="hl opt">;</span>       <span class="hl com">/* Test description */</span>

    <span class="hl com">/* Perform common test initialization operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">begin_test</span><span class="hl opt">(</span>tparam<span class="hl opt">,</span> base_desc<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">,</span> NULL<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Perform common file &amp; heap open operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">open_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">,</span> tparam<span class="hl opt">, &amp;</span>file<span class="hl opt">, &amp;</span>f<span class="hl opt">, &amp;</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR


    <span class="hl com">/* Insert small object, to create root direct block */</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">=</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span>SMALL_OBJ_SIZE1<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert large object, to force creation of indirect block and</span>
<span class="hl com">     * range of skipped blocks that are too small to hold the second object</span>
<span class="hl com">     */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">) +</span> <span class="hl num">1</span><span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">+= (</span>cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">-</span> <span class="hl num">1</span><span class="hl opt">) *</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">2</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">2</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">+= (</span>cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">-</span> <span class="hl num">1</span> <span class="hl opt">)*</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">2</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">20</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR


    <span class="hl com">/* Perform common file &amp; heap close operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">close_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> tparam<span class="hl opt">,</span> file<span class="hl opt">,</span> f<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">,</span> empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Free resources */</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_skip_2nd_block() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_skip_2nd_block_add_skipped</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test inserting object into absolute heap which is small</span>
<span class="hl com"> *              enough for starting block size, then add object too large</span>
<span class="hl com"> *              for any blocks in first row of direct blocks, to force</span>
<span class="hl com"> *              early creation of indirect block (and range of skipped blocks).</span>
<span class="hl com"> *              Then add more objects to fill up remainder of initial direct</span>
<span class="hl com"> *              block and all the skipped blocks, and one more object (to</span>
<span class="hl com"> *              start next &quot;normal&quot; block).</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Saturday, April  1, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_skip_2nd_block_add_skipped</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    fheap_heap_ids_t keep_ids<span class="hl opt">;</span>          <span class="hl com">/* Structure to retain heap IDs */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>             <span class="hl com">/* Size of a file with an empty heap */</span>
    <span class="hl kwb">size_t</span>      obj_size<span class="hl opt">;</span>               <span class="hl com">/* Size of object */</span>
    <span class="hl kwb">size_t</span>      fill_size<span class="hl opt">;</span>              <span class="hl com">/* Size of objects for &quot;bulk&quot; filled blocks */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>
    <span class="hl kwb">const char</span> <span class="hl opt">*</span>base_desc <span class="hl opt">=</span> <span class="hl str">&quot;insert object to initial block, then add object too large for starting direct blocks, then backfill and extend, then remove all objects %s&quot;</span><span class="hl opt">;</span>       <span class="hl com">/* Test description */</span>
    <span class="hl kwb">unsigned</span>    v<span class="hl opt">;</span>                      <span class="hl com">/* Local index variables */</span>

    <span class="hl com">/* Perform common test initialization operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">begin_test</span><span class="hl opt">(</span>tparam<span class="hl opt">,</span> base_desc<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">, &amp;</span>fill_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Perform common file &amp; heap open operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">open_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">,</span> tparam<span class="hl opt">, &amp;</span>file<span class="hl opt">, &amp;</span>f<span class="hl opt">, &amp;</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR


    <span class="hl com">/* Insert small object, to create root direct block */</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">=</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span>SMALL_OBJ_SIZE1<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert large object, to force creation of indirect block and</span>
<span class="hl com">     * range of skipped blocks that are too small to hold the second object</span>
<span class="hl com">     */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">) +</span> <span class="hl num">1</span><span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">+= (</span>cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">-</span> <span class="hl num">1</span><span class="hl opt">) *</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">2</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">2</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">+= (</span>cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">-</span> <span class="hl num">1</span> <span class="hl opt">)*</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">2</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">20</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert an object to fill up the (smaller) heap block just created */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">) -</span> SMALL_OBJ_SIZE1<span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill remainder of 2 * start size block */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">2</span><span class="hl opt">) - ((</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">) +</span> <span class="hl num">1</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">20</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert objects to fill remaining rows of the starting block size */</span>

    <span class="hl com">/* Fill remainder of first row of direct heap blocks up */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>v <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> v <span class="hl opt">&lt; (</span>cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">-</span> <span class="hl num">1</span><span class="hl opt">);</span> v<span class="hl opt">++) {</span>
        state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_heap</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
            TEST_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end for */</span>

    <span class="hl com">/* Fill second row of direct blocks */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert one more object, to create new 2 * start size direct block */</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">2</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span>SMALL_OBJ_SIZE1<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR


    <span class="hl com">/* Perform common file &amp; heap close operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">close_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> tparam<span class="hl opt">,</span> file<span class="hl opt">,</span> f<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">,</span> empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Free resources */</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_skip_2nd_block_add_skipped() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_fill_one_partial_skip_2nd_block_add_skipped</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test filling initial direct block, then add object small enough</span>
<span class="hl com"> *              for initial block size (to create root indirect block), then</span>
<span class="hl com"> *              add object too large for any blocks in first three rows of</span>
<span class="hl com"> *              direct blocks, to force extension of indirect block (and range</span>
<span class="hl com"> *              of skipped blocks).</span>
<span class="hl com"> *</span>
<span class="hl com"> *              Then add more objects to fill up remainder of partial direct</span>
<span class="hl com"> *              block and all the skipped blocks, and one more object (to</span>
<span class="hl com"> *              start next &quot;normal&quot; block).</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, April  3, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_fill_one_partial_skip_2nd_block_add_skipped</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    fheap_heap_ids_t keep_ids<span class="hl opt">;</span>          <span class="hl com">/* Structure to retain heap IDs */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>             <span class="hl com">/* Size of a file with an empty heap */</span>
    <span class="hl kwb">size_t</span>      obj_size<span class="hl opt">;</span>               <span class="hl com">/* Size of object */</span>
    <span class="hl kwb">size_t</span>      fill_size<span class="hl opt">;</span>              <span class="hl com">/* Size of objects for &quot;bulk&quot; filled blocks */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>
    <span class="hl kwb">const char</span> <span class="hl opt">*</span>base_desc <span class="hl opt">=</span> <span class="hl str">&quot;skipping blocks with indirect root, then backfill and extend, then remove all objects %s&quot;</span><span class="hl opt">;</span>       <span class="hl com">/* Test description */</span>
    <span class="hl kwb">unsigned</span>    u<span class="hl opt">;</span>                      <span class="hl com">/* Local index variable */</span>

    <span class="hl com">/* Perform common test initialization operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">begin_test</span><span class="hl opt">(</span>tparam<span class="hl opt">,</span> base_desc<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">, &amp;</span>fill_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Perform common file &amp; heap open operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">open_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">,</span> tparam<span class="hl opt">, &amp;</span>file<span class="hl opt">, &amp;</span>f<span class="hl opt">, &amp;</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR


    <span class="hl com">/* Fill initial direct block */</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">=</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_heap</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert small object, to create root indirect block */</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">+= (</span>cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">-</span> <span class="hl num">1</span><span class="hl opt">) *</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">+= (</span>cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">-</span> <span class="hl num">1</span><span class="hl opt">) *</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span>SMALL_OBJ_SIZE1<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert large object, to force creation of indirect block and</span>
<span class="hl com">     * range of skipped blocks that are too small to hold the large object</span>
<span class="hl com">     */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">2</span><span class="hl opt">) +</span> <span class="hl num">1</span><span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">2</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">3</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">3</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">2</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">3</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert an object to fill up the (smaller) heap block just created */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">) -</span> SMALL_OBJ_SIZE1<span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert object to fill remainder of 4 * start size block */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">3</span><span class="hl opt">) - ((</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">2</span><span class="hl opt">) +</span> <span class="hl num">1</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert objects to fill remaining heaps in first row */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt; (</span>cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">-</span> <span class="hl num">2</span><span class="hl opt">);</span> u<span class="hl opt">++) {</span>
        <span class="hl com">/* Fill a direct heap block up */</span>
        state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_heap</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
            TEST_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end for */</span>

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert objects to fill remaining heaps in second row */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert objects to fill remaining heaps in third row */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">2</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert one more object, to create new 4 * start size direct block */</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">3</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span>SMALL_OBJ_SIZE1<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR


    <span class="hl com">/* Perform common file &amp; heap close operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">close_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> tparam<span class="hl opt">,</span> file<span class="hl opt">,</span> f<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">,</span> empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Free resources */</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_fill_one_partial_skip_2nd_block_add_skipped() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_fill_row_skip_add_skipped</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test filling first row of direct blocks, then</span>
<span class="hl com"> *              add object too large for any blocks in first three rows of</span>
<span class="hl com"> *              direct blocks, to force extension of indirect block (and range</span>
<span class="hl com"> *              of skipped blocks).</span>
<span class="hl com"> *</span>
<span class="hl com"> *              Then add more objects to fill up remainder of partial direct</span>
<span class="hl com"> *              block and all the skipped blocks, and one more object (to</span>
<span class="hl com"> *              start next &quot;normal&quot; block).</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, May 15, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_fill_row_skip_add_skipped</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    fheap_heap_ids_t keep_ids<span class="hl opt">;</span>          <span class="hl com">/* Structure to retain heap IDs */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>             <span class="hl com">/* Size of a file with an empty heap */</span>
    <span class="hl kwb">size_t</span>      obj_size<span class="hl opt">;</span>               <span class="hl com">/* Size of object */</span>
    <span class="hl kwb">size_t</span>      fill_size<span class="hl opt">;</span>              <span class="hl com">/* Size of objects for &quot;bulk&quot; filled blocks */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>
    <span class="hl kwb">const char</span> <span class="hl opt">*</span>base_desc <span class="hl opt">=</span> <span class="hl str">&quot;filling first row, then skipping rows, then backfill and extend, then remove all objects %s&quot;</span><span class="hl opt">;</span>       <span class="hl com">/* Test description */</span>

    <span class="hl com">/* Perform common test initialization operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">begin_test</span><span class="hl opt">(</span>tparam<span class="hl opt">,</span> base_desc<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">, &amp;</span>fill_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Perform common file &amp; heap open operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">open_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">,</span> tparam<span class="hl opt">, &amp;</span>file<span class="hl opt">, &amp;</span>f<span class="hl opt">, &amp;</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR


    <span class="hl com">/* Fill first row of direct blocks */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_root_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert large object, to force creation of indirect block and</span>
<span class="hl com">     * range of skipped blocks that are too small to hold the large object</span>
<span class="hl com">     */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">2</span><span class="hl opt">) +</span> <span class="hl num">1</span><span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">2</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">3</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">3</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">2</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">3</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">20</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert object to fill remainder of 4 * start size block */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">3</span><span class="hl opt">) -</span> obj_size<span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">20</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert objects to fill remaining heaps in second row */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert objects to fill remaining heaps in third row */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">2</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert one more object, to create new 4 * start size direct block */</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">3</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR


    <span class="hl com">/* Perform common file &amp; heap close operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">close_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> tparam<span class="hl opt">,</span> file<span class="hl opt">,</span> f<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">,</span> empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Free resources */</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_fill_row_skip_add_skipped() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_skip_direct_skip_indirect_two_rows_add_skipped</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test adding object too large for all but the last row in the</span>
<span class="hl com"> *              direct blocks in root indirect block, then</span>
<span class="hl com"> *              add object too large for initial block in first two rows of</span>
<span class="hl com"> *              indirect blocks, to force extension of non-root</span>
<span class="hl com"> *              indirect block (and range of skipped blocks).</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Saturday, April 15, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_skip_direct_skip_indirect_two_rows_add_skipped</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    fheap_heap_ids_t keep_ids<span class="hl opt">;</span>          <span class="hl com">/* Structure to retain heap IDs */</span>
    <span class="hl kwb">unsigned</span>    num_direct_rows<span class="hl opt">;</span>        <span class="hl com">/* Number of rows (of direct blocks) in root indirect block */</span>
    <span class="hl kwb">unsigned</span>    row<span class="hl opt">;</span>                    <span class="hl com">/* Current row */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>             <span class="hl com">/* Size of a file with an empty heap */</span>
    <span class="hl kwb">size_t</span>      obj_size<span class="hl opt">;</span>               <span class="hl com">/* Size of object */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>
    <span class="hl kwb">const char</span> <span class="hl opt">*</span>base_desc <span class="hl opt">=</span> <span class="hl str">&quot;skipping direct blocks to last row and skipping two rows of root indirect block, then backfill and extend, then remove all objects %s&quot;</span><span class="hl opt">;</span>       <span class="hl com">/* Test description */</span>
    <span class="hl kwb">unsigned</span>    v<span class="hl opt">;</span>                      <span class="hl com">/* Local index variables */</span>

    <span class="hl com">/* Perform common test initialization operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">begin_test</span><span class="hl opt">(</span>tparam<span class="hl opt">,</span> base_desc<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">,</span> NULL<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Perform common file &amp; heap open operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">open_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">,</span> tparam<span class="hl opt">, &amp;</span>file<span class="hl opt">, &amp;</span>f<span class="hl opt">, &amp;</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR


    <span class="hl com">/* Compute # direct block rows in root indirect block */</span>
    num_direct_rows <span class="hl opt">=</span> <span class="hl kwd">DTABLE_MAX_DROWS</span><span class="hl opt">(</span>fh<span class="hl opt">);</span>

    <span class="hl com">/* Compute heap size &amp; free space when half direct blocks allocated */</span>
    row <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
    <span class="hl kwa">do</span> <span class="hl opt">{</span>
        state<span class="hl opt">.</span>man_size <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> row<span class="hl opt">);</span>
        state<span class="hl opt">.</span>man_free_space <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> row<span class="hl opt">);</span>
        row<span class="hl opt">++;</span>
    <span class="hl opt">}</span> <span class="hl kwa">while</span><span class="hl opt">(</span>row <span class="hl opt">&lt; (</span>num_direct_rows <span class="hl opt">/</span> <span class="hl num">2</span><span class="hl opt">));</span>

    <span class="hl com">/* Insert object to extend root block to middle of root direct blocks</span>
<span class="hl com">     */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> row <span class="hl opt">-</span> <span class="hl num">2</span><span class="hl opt">) +</span> <span class="hl num">1</span><span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> row <span class="hl opt">-</span> <span class="hl num">1</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Compute heap size &amp; free space when all direct blocks allocated */</span>
    <span class="hl kwa">do</span> <span class="hl opt">{</span>
        state<span class="hl opt">.</span>man_size <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> row<span class="hl opt">);</span>
        state<span class="hl opt">.</span>man_free_space <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> row<span class="hl opt">);</span>
        row<span class="hl opt">++;</span>
    <span class="hl opt">}</span> <span class="hl kwa">while</span><span class="hl opt">(</span>row <span class="hl opt">&lt;</span> num_direct_rows<span class="hl opt">);</span>

    <span class="hl com">/* Insert large objects into last row of direct blocks in root indirect</span>
<span class="hl com">     * block, to force extension of root indirect block that covers the first</span>
<span class="hl com">     * row of indirect blocks in root indirect block</span>
<span class="hl com">     */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> num_direct_rows <span class="hl opt">-</span> <span class="hl num">2</span><span class="hl opt">) +</span> <span class="hl num">1</span><span class="hl opt">;</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>v <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> v <span class="hl opt">&lt;</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span> v<span class="hl opt">++) {</span>
        state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> num_direct_rows <span class="hl opt">-</span> <span class="hl num">1</span><span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">20</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
            TEST_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end for */</span>

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Compute heap size &amp; free space when root indirect block doubles again */</span>
    <span class="hl kwa">do</span> <span class="hl opt">{</span>
        state<span class="hl opt">.</span>man_size <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> row<span class="hl opt">);</span>
        state<span class="hl opt">.</span>man_free_space <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> row<span class="hl opt">);</span>
        row<span class="hl opt">++;</span>
    <span class="hl opt">}</span> <span class="hl kwa">while</span><span class="hl opt">(</span>row <span class="hl opt">&lt; (</span><span class="hl num">2</span> <span class="hl opt">*</span> num_direct_rows<span class="hl opt">));</span>

    <span class="hl com">/* Insert large object, to force creation of indirect blocks with</span>
<span class="hl com">     * range of skipped blocks that are too small to hold the large object</span>
<span class="hl com">     */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> num_direct_rows <span class="hl opt">-</span> <span class="hl num">2</span><span class="hl opt">) +</span> <span class="hl num">1</span><span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> num_direct_rows <span class="hl opt">-</span> <span class="hl num">1</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">20</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR


    <span class="hl com">/* Perform common file &amp; heap close operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">close_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> tparam<span class="hl opt">,</span> file<span class="hl opt">,</span> f<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">,</span> empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Free resources */</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_skip_direct_skip_indirect_two_rows_add_skipped() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_fill_direct_skip_indirect_start_block_add_skipped</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test filling all direct blocks in root indirect block, then</span>
<span class="hl com"> *              add object too large for initial block in first row of direct</span>
<span class="hl com"> *              blocks in indirect block, to force extension of non-root</span>
<span class="hl com"> *              indirect block (and range of skipped blocks).</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, April  3, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_fill_direct_skip_indirect_start_block_add_skipped</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    fheap_heap_ids_t keep_ids<span class="hl opt">;</span>          <span class="hl com">/* Structure to retain heap IDs */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>             <span class="hl com">/* Size of a file with an empty heap */</span>
    <span class="hl kwb">size_t</span>      obj_size<span class="hl opt">;</span>               <span class="hl com">/* Size of object */</span>
    <span class="hl kwb">size_t</span>      fill_size<span class="hl opt">;</span>              <span class="hl com">/* Size of objects for &quot;bulk&quot; filled blocks */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>
    <span class="hl kwb">const char</span> <span class="hl opt">*</span>base_desc <span class="hl opt">=</span> <span class="hl str">&quot;filling direct blocks and skipping blocks in non-root indirect block, then backfill and extend, then remove all objects %s&quot;</span><span class="hl opt">;</span>       <span class="hl com">/* Test description */</span>

    <span class="hl com">/* Perform common test initialization operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">begin_test</span><span class="hl opt">(</span>tparam<span class="hl opt">,</span> base_desc<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">, &amp;</span>fill_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Perform common file &amp; heap open operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">open_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">,</span> tparam<span class="hl opt">, &amp;</span>file<span class="hl opt">, &amp;</span>f<span class="hl opt">, &amp;</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR


    <span class="hl com">/* Fill direct blocks in root indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_root_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert large object, to force creation of indirect block and</span>
<span class="hl com">     * range of skipped blocks that are too small to hold the large object</span>
<span class="hl com">     */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">2</span><span class="hl opt">) +</span> <span class="hl num">1</span><span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">3</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">20</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Add rows of blocks to &quot;backfill&quot; direct blocks that were skipped */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert an object to fill up the (biggest) heap block created */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">3</span><span class="hl opt">) -</span> obj_size<span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">20</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill direct block heaps with 2 * initial block size in nested indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">2</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert one more object, to create new 4 * start size direct block */</span>
    obj_size <span class="hl opt">=</span> SMALL_OBJ_SIZE1<span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">3</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR


    <span class="hl com">/* Perform common file &amp; heap close operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">close_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> tparam<span class="hl opt">,</span> file<span class="hl opt">,</span> f<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">,</span> empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Free resources */</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_fill_direct_skip_indirect_start_block_add_skipped() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_fill_direct_skip_2nd_indirect_start_block_add_skipped</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test filling all direct blocks in root indirect block, then</span>
<span class="hl com"> *              add object too large for all direct blocks in first row of</span>
<span class="hl com"> *              indirect blocks, to force skipping a row of indirect blocks</span>
<span class="hl com"> *              (and range of skipped blocks), then backfill all direct blocks</span>
<span class="hl com"> *              skipped and extend to next &quot;normal&quot; direct block.</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, April  3, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_fill_direct_skip_2nd_indirect_start_block_add_skipped</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    fheap_heap_ids_t keep_ids<span class="hl opt">;</span>          <span class="hl com">/* Structure to retain heap IDs */</span>
    <span class="hl kwb">unsigned</span>    num_first_indirect_rows<span class="hl opt">;</span>        <span class="hl com">/* Number of rows (of direct blocks) in each of the first indirect blocks */</span>
    <span class="hl kwb">unsigned</span>    row<span class="hl opt">;</span>                    <span class="hl com">/* Current row in indirect block */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>             <span class="hl com">/* Size of a file with an empty heap */</span>
    <span class="hl kwb">size_t</span>      obj_size<span class="hl opt">;</span>               <span class="hl com">/* Size of object */</span>
    <span class="hl kwb">size_t</span>      fill_size<span class="hl opt">;</span>              <span class="hl com">/* Size of objects for &quot;bulk&quot; filled blocks */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>
    <span class="hl kwb">const char</span> <span class="hl opt">*</span>base_desc <span class="hl opt">=</span> <span class="hl str">&quot;filling direct blocks and skipping row of non-root indirect blocks, then backfill and extend, then remove all objects %s&quot;</span><span class="hl opt">;</span>       <span class="hl com">/* Test description */</span>
    <span class="hl kwb">unsigned</span>    u<span class="hl opt">;</span>                      <span class="hl com">/* Local index variable */</span>

    <span class="hl com">/* Perform common test initialization operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">begin_test</span><span class="hl opt">(</span>tparam<span class="hl opt">,</span> base_desc<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">, &amp;</span>fill_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Perform common file &amp; heap open operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">open_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">,</span> tparam<span class="hl opt">, &amp;</span>file<span class="hl opt">, &amp;</span>f<span class="hl opt">, &amp;</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR


    <span class="hl com">/* Retrieve info about heap */</span>
    num_first_indirect_rows <span class="hl opt">=</span> <span class="hl kwd">IBLOCK_MAX_DROWS</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">);</span>

    <span class="hl com">/* Fill direct blocks in root indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_root_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert large object, to force creation of indirect block and</span>
<span class="hl com">     * range of skipped (indirect) blocks that are too small to hold the large</span>
<span class="hl com">     * object</span>
<span class="hl com">     */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> num_first_indirect_rows <span class="hl opt">-</span> <span class="hl num">1</span><span class="hl opt">) +</span> <span class="hl num">1</span><span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> num_first_indirect_rows<span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">20</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert object to fill space in (large) block created */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> num_first_indirect_rows<span class="hl opt">) -</span> obj_size<span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">20</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill all rows of direct blocks that are smaller than large object's block size */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>row <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> row <span class="hl opt">&lt;</span> num_first_indirect_rows<span class="hl opt">;</span> row<span class="hl opt">++) {</span>
        <span class="hl com">/* Fill rows of direct blocks in skipped indirect blocks */</span>
        <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span> u<span class="hl opt">++)</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> row<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
                TEST_ERROR

        <span class="hl com">/* Fill row of direct blocks in largest (i.e. non-skipped) indirect block */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> row<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
            TEST_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end for */</span>

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Add one more object, to create another &quot;large&quot; block */</span>
    obj_size <span class="hl opt">=</span> SMALL_OBJ_SIZE1<span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> num_first_indirect_rows<span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Perform common file &amp; heap close operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">close_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> tparam<span class="hl opt">,</span> file<span class="hl opt">,</span> f<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">,</span> empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Free resources */</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_fill_direct_skip_2nd_indirect_start_block_add_skipped() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_fill_2nd_direct_less_one_wrap_start_block_add_skipped</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test filling all direct blocks in root indirect block and all</span>
<span class="hl com"> *              direct blocks in 2nd level indirect blocks, except the last</span>
<span class="hl com"> *              one, then insert object insert object that is too large to</span>
<span class="hl com"> *              hold in row of 2nd level indirect blocks (forcing the use of</span>
<span class="hl com"> *              the next row of 2nd level blocks), then backfill all skipped</span>
<span class="hl com"> *              direct blocks &amp; extend.</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Tuesday, April 18, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_fill_2nd_direct_less_one_wrap_start_block_add_skipped</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    fheap_heap_ids_t keep_ids<span class="hl opt">;</span>          <span class="hl com">/* Structure to retain heap IDs */</span>
    <span class="hl kwb">unsigned</span>    num_first_indirect_rows<span class="hl opt">;</span>        <span class="hl com">/* Number of rows (of direct blocks) in each of the first indirect blocks */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>             <span class="hl com">/* Size of a file with an empty heap */</span>
    <span class="hl kwb">size_t</span>      obj_size<span class="hl opt">;</span>               <span class="hl com">/* Size of object */</span>
    <span class="hl kwb">size_t</span>      fill_size<span class="hl opt">;</span>              <span class="hl com">/* Size of objects for &quot;bulk&quot; filled blocks */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>
    <span class="hl kwb">const char</span> <span class="hl opt">*</span>base_desc <span class="hl opt">=</span> <span class="hl str">&quot;filling direct blocks, filling 2nd level indirect blocks, except last one, and insert object too large for 2nd level indirect blocks, then backfill and extend, then remove all objects %s&quot;</span><span class="hl opt">;</span>       <span class="hl com">/* Test description */</span>
    <span class="hl kwb">unsigned</span>    u<span class="hl opt">;</span>                      <span class="hl com">/* Local index variables */</span>

    <span class="hl com">/* Perform common test initialization operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">begin_test</span><span class="hl opt">(</span>tparam<span class="hl opt">,</span> base_desc<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">, &amp;</span>fill_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Perform common file &amp; heap open operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">open_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">,</span> tparam<span class="hl opt">, &amp;</span>file<span class="hl opt">, &amp;</span>f<span class="hl opt">, &amp;</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR


    <span class="hl com">/* Retrieve info about heap */</span>
    num_first_indirect_rows <span class="hl opt">=</span> <span class="hl kwd">IBLOCK_MAX_DROWS</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">);</span>

    <span class="hl com">/* Fill direct blocks in root indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_root_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill first row (except one) of 2nd level indirect blocks */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">-</span> <span class="hl num">1</span><span class="hl opt">;</span> u<span class="hl opt">++)</span>
        <span class="hl com">/* Fill all rows of 2nd level indirect blocks in root block */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_2nd_indirect</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
            TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert large object, to force creation of indirect block and</span>
<span class="hl com">     * range of skipped (indirect) blocks that are too small to hold the large</span>
<span class="hl com">     * object</span>
<span class="hl com">     */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> num_first_indirect_rows <span class="hl opt">-</span> <span class="hl num">1</span><span class="hl opt">) +</span> <span class="hl num">1</span><span class="hl opt">;</span>
<span class="hl ppc">#ifdef QAK</span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;obj_size = %Zu</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">,</span> obj_size<span class="hl opt">);</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> num_first_indirect_rows<span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">20</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert object to fill space in (large) block created */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> num_first_indirect_rows<span class="hl opt">) -</span> obj_size<span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">20</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill rows skipped over in 2nd level indirect block's direct blocks</span>
<span class="hl com">     * (and rows of next 2nd level indirect block's direct blocks)</span>
<span class="hl com">     */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> num_first_indirect_rows<span class="hl opt">;</span> u<span class="hl opt">++) {</span>
        <span class="hl com">/* Direct block rows in skipped 2nd level indirect block */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> u<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
            TEST_ERROR

        <span class="hl com">/* Direct block row in current 2nd level indirect block */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> u<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
            TEST_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end for */</span>

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Add one more object, to create another &quot;large&quot; block */</span>
    obj_size <span class="hl opt">=</span> SMALL_OBJ_SIZE1<span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> num_first_indirect_rows<span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR


    <span class="hl com">/* Perform common file &amp; heap close operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">close_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> tparam<span class="hl opt">,</span> file<span class="hl opt">,</span> f<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">,</span> empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Free resources */</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_fill_2nd_direct_less_one_wrap_start_block_add_skipped() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_fill_direct_skip_2nd_indirect_skip_2nd_block_add_skipped</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test filling all direct blocks in root indirect block, then</span>
<span class="hl com"> *              add object too large for all direct blocks in first row of</span>
<span class="hl com"> *              indirect blocks, to force skipping a row of indirect blocks</span>
<span class="hl com"> *              (and range of skipped blocks), then add object that is too</span>
<span class="hl com"> *              large for initial block size in skipped indirect blocks, then</span>
<span class="hl com"> *              backfill all direct blocks and extend to next &quot;normal&quot; direct</span>
<span class="hl com"> *              block (but insert first block of backfilling with object</span>
<span class="hl com"> *              too large for initial block size in skipped indirect block</span>
<span class="hl com"> *              row's direct blocks).</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Tuesday, April 11, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_fill_direct_skip_2nd_indirect_skip_2nd_block_add_skipped</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    fheap_heap_ids_t keep_ids<span class="hl opt">;</span>          <span class="hl com">/* Structure to retain heap IDs */</span>
    <span class="hl kwb">unsigned</span>    num_first_indirect_rows<span class="hl opt">;</span>        <span class="hl com">/* Number of rows (of direct blocks) in each of the first indirect blocks */</span>
    <span class="hl kwb">unsigned</span>    row<span class="hl opt">;</span>                    <span class="hl com">/* Current row in indirect block */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>             <span class="hl com">/* Size of a file with an empty heap */</span>
    <span class="hl kwb">size_t</span>      obj_size<span class="hl opt">;</span>               <span class="hl com">/* Size of object */</span>
    <span class="hl kwb">size_t</span>      fill_size<span class="hl opt">;</span>              <span class="hl com">/* Size of objects for &quot;bulk&quot; filled blocks */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>
    <span class="hl kwb">const char</span> <span class="hl opt">*</span>base_desc <span class="hl opt">=</span> <span class="hl str">&quot;filling direct blocks and skipping row of non-root indirect blocks, then skip row of direct blocks, then backfill and extend, then remove all objects %s&quot;</span><span class="hl opt">;</span>       <span class="hl com">/* Test description */</span>
    <span class="hl kwb">unsigned</span>    u<span class="hl opt">;</span>                      <span class="hl com">/* Local index variable */</span>

    <span class="hl com">/* Perform common test initialization operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">begin_test</span><span class="hl opt">(</span>tparam<span class="hl opt">,</span> base_desc<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">, &amp;</span>fill_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Perform common file &amp; heap open operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">open_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">,</span> tparam<span class="hl opt">, &amp;</span>file<span class="hl opt">, &amp;</span>f<span class="hl opt">, &amp;</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR


    <span class="hl com">/* Retrieve info about heap */</span>
    num_first_indirect_rows <span class="hl opt">=</span> <span class="hl kwd">IBLOCK_MAX_DROWS</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">);</span>

    <span class="hl com">/* Fill direct blocks in root indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_root_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert large object, to force creation of indirect block and</span>
<span class="hl com">     * range of skipped (indirect) blocks that are too small to hold the large</span>
<span class="hl com">     * object</span>
<span class="hl com">     */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> num_first_indirect_rows <span class="hl opt">-</span> <span class="hl num">1</span><span class="hl opt">) +</span> <span class="hl num">1</span><span class="hl opt">;</span>
<span class="hl ppc">#ifdef QAK</span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;obj_size = %Zu</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">,</span> obj_size<span class="hl opt">);</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> num_first_indirect_rows<span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">20</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert object to fill space in (large) block created */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> num_first_indirect_rows<span class="hl opt">) -</span> obj_size<span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">20</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert object too large for initial block size in skipped indirect blocks */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">3</span><span class="hl opt">) +</span> <span class="hl num">1</span><span class="hl opt">;</span>
<span class="hl ppc">#ifdef QAK</span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;obj_size = %Zu</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">,</span> obj_size<span class="hl opt">);</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">4</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert object to fill space in (medium) block just created */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">4</span><span class="hl opt">) -</span> obj_size<span class="hl opt">;</span>
<span class="hl ppc">#ifdef QAK</span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;obj_size = %Zu</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">,</span> obj_size<span class="hl opt">);</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">20</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Finish off blocks in row of medium block size (just to make row filling easier below) */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">4</span><span class="hl opt">);</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">1</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span> u<span class="hl opt">++) {</span>
        state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">4</span><span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">20</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
            TEST_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end for */</span>

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill all rows of direct blocks that are smaller than large object's block size */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>row <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> row <span class="hl opt">&lt;</span> num_first_indirect_rows<span class="hl opt">;</span> row<span class="hl opt">++) {</span>
        <span class="hl com">/* Fill rows of direct blocks in skipped indirect blocks */</span>
        <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span> u<span class="hl opt">++)</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> row<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
                TEST_ERROR

        <span class="hl com">/* Fill row of direct blocks in largest (i.e. non-skipped) indirect block */</span>
        <span class="hl com">/* (Skip the row of blocks filled above) */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>row <span class="hl opt">!=</span> <span class="hl num">4</span><span class="hl opt">)</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> row<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
                TEST_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end while */</span>

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Add one more object, to create another &quot;large&quot; block */</span>
    obj_size <span class="hl opt">=</span> SMALL_OBJ_SIZE1<span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> num_first_indirect_rows<span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR


    <span class="hl com">/* Perform common file &amp; heap close operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">close_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> tparam<span class="hl opt">,</span> file<span class="hl opt">,</span> f<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">,</span> empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Free resources */</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_fill_direct_skip_2nd_indirect_skip_2nd_block_add_skipped() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_fill_direct_skip_indirect_two_rows_add_skipped</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test filling all direct blocks in root indirect block, then</span>
<span class="hl com"> *              add object too large for initial block in first two rows of</span>
<span class="hl com"> *              indirect blocks, to force extension of non-root</span>
<span class="hl com"> *              indirect block (and range of skipped blocks).</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Saturday, April 15, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_fill_direct_skip_indirect_two_rows_add_skipped</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    fheap_heap_ids_t keep_ids<span class="hl opt">;</span>          <span class="hl com">/* Structure to retain heap IDs */</span>
    <span class="hl kwb">unsigned</span>    num_first_indirect_rows<span class="hl opt">;</span>        <span class="hl com">/* Number of rows (of direct blocks) in each of the first indirect blocks */</span>
    <span class="hl kwb">unsigned</span>    max_dblock_rows<span class="hl opt">;</span>        <span class="hl com">/* Max. # of rows (of direct blocks) in the root indirect block */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>             <span class="hl com">/* Size of a file with an empty heap */</span>
    <span class="hl kwb">size_t</span>      obj_size<span class="hl opt">;</span>               <span class="hl com">/* Size of object */</span>
    <span class="hl kwb">size_t</span>      fill_size<span class="hl opt">;</span>              <span class="hl com">/* Size of objects for &quot;bulk&quot; filled blocks */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>
    <span class="hl kwb">const char</span> <span class="hl opt">*</span>base_desc <span class="hl opt">=</span> <span class="hl str">&quot;filling direct blocks and skipping two rows of root indirect block, then backfill and extend, then remove all objects %s&quot;</span><span class="hl opt">;</span>       <span class="hl com">/* Test description */</span>
    <span class="hl kwb">unsigned</span>    u<span class="hl opt">,</span> v<span class="hl opt">;</span>                   <span class="hl com">/* Local index variables */</span>

    <span class="hl com">/* Perform common test initialization operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">begin_test</span><span class="hl opt">(</span>tparam<span class="hl opt">,</span> base_desc<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">, &amp;</span>fill_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Perform common file &amp; heap open operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">open_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">,</span> tparam<span class="hl opt">, &amp;</span>file<span class="hl opt">, &amp;</span>f<span class="hl opt">, &amp;</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR


    <span class="hl com">/* Retrieve info about heap */</span>
    num_first_indirect_rows <span class="hl opt">=</span> <span class="hl kwd">IBLOCK_MAX_DROWS</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">);</span>
    max_dblock_rows <span class="hl opt">=</span> <span class="hl kwd">DTABLE_MAX_DROWS</span><span class="hl opt">(</span>fh<span class="hl opt">);</span>

    <span class="hl com">/* Fill direct blocks in root indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_root_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert large object, to force creation of indirect block and</span>
<span class="hl com">     * range of skipped blocks that are too small to hold the large object</span>
<span class="hl com">     */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> max_dblock_rows <span class="hl opt">-</span> <span class="hl num">2</span><span class="hl opt">) +</span> <span class="hl num">1</span><span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> max_dblock_rows <span class="hl opt">-</span> <span class="hl num">1</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">20</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert an object to fill up the (biggest) heap block created */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> max_dblock_rows <span class="hl opt">-</span> <span class="hl num">1</span><span class="hl opt">) -</span> obj_size<span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">20</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill rows skipped over in indirect block's direct blocks */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> num_first_indirect_rows<span class="hl opt">;</span> u<span class="hl opt">++) {</span>
        <span class="hl com">/* Direct block rows in first row of skipped 2nd level indirect blocks */</span>
        <span class="hl kwa">for</span><span class="hl opt">(</span>v <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> v <span class="hl opt">&lt;</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span> v<span class="hl opt">++)</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> u<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
                TEST_ERROR

        <span class="hl com">/* Direct block rows in second row of skipped 2nd level indirect blocks */</span>
        <span class="hl kwa">for</span><span class="hl opt">(</span>v <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> v <span class="hl opt">&lt;</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span> v<span class="hl opt">++)</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> u<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
                TEST_ERROR

        <span class="hl com">/* Direct block row in used 2nd level indirect block */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> u<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
            TEST_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end for */</span>

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill rows in second row of skipped 2nd level indirect blocks (and used 2nd level block) */</span>

    <span class="hl com">/* Direct block rows in skipped 2nd level indirect blocks */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>v <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> v <span class="hl opt">&lt;</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span> v<span class="hl opt">++)</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> num_first_indirect_rows<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
            TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Direct block row in used 2nd level indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> num_first_indirect_rows<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Add one more object, to create another &quot;large&quot; block */</span>
    obj_size <span class="hl opt">=</span> SMALL_OBJ_SIZE1<span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> max_dblock_rows <span class="hl opt">-</span> <span class="hl num">1</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR


    <span class="hl com">/* Perform common file &amp; heap close operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">close_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> tparam<span class="hl opt">,</span> file<span class="hl opt">,</span> f<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">,</span> empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Free resources */</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_fill_direct_skip_indirect_two_rows_add_skipped() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_fill_direct_skip_indirect_two_rows_skip_indirect_row_add_skipped</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test filling all direct blocks in root indirect block, then</span>
<span class="hl com"> *              add object too large for initial block in first two rows of</span>
<span class="hl com"> *              indirect blocks, to force extension of non-root</span>
<span class="hl com"> *              indirect block, then add object too large for first row of</span>
<span class="hl com"> *              indirect blocks, (and ranges of skipped blocks), then backfill</span>
<span class="hl com"> *              and extend.</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Tuesday, July 11, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_fill_direct_skip_indirect_two_rows_skip_indirect_row_add_skipped</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    fheap_heap_ids_t keep_ids<span class="hl opt">;</span>          <span class="hl com">/* Structure to retain heap IDs */</span>
    <span class="hl kwb">unsigned</span>    num_first_indirect_rows<span class="hl opt">;</span>        <span class="hl com">/* Number of rows (of direct blocks) in each of the first indirect blocks */</span>
    <span class="hl kwb">unsigned</span>    max_dblock_rows<span class="hl opt">;</span>        <span class="hl com">/* Max. # of rows (of direct blocks) in the root indirect block */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>             <span class="hl com">/* Size of a file with an empty heap */</span>
    <span class="hl kwb">size_t</span>      obj_size<span class="hl opt">;</span>               <span class="hl com">/* Size of object */</span>
    <span class="hl kwb">size_t</span>      fill_size<span class="hl opt">;</span>              <span class="hl com">/* Size of objects for &quot;bulk&quot; filled blocks */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>
    <span class="hl kwb">const char</span> <span class="hl opt">*</span>base_desc <span class="hl opt">=</span> <span class="hl str">&quot;filling direct blocks and skipping two rows of root indirect block, skip one row of root indirect block, then backfill and extend, then remove all objects %s&quot;</span><span class="hl opt">;</span>       <span class="hl com">/* Test description */</span>
    <span class="hl kwb">unsigned</span>    u<span class="hl opt">,</span> v<span class="hl opt">;</span>                   <span class="hl com">/* Local index variables */</span>

    <span class="hl com">/* Perform common test initialization operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">begin_test</span><span class="hl opt">(</span>tparam<span class="hl opt">,</span> base_desc<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">, &amp;</span>fill_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Perform common file &amp; heap open operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">open_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">,</span> tparam<span class="hl opt">, &amp;</span>file<span class="hl opt">, &amp;</span>f<span class="hl opt">, &amp;</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR


    <span class="hl com">/* Retrieve info about heap */</span>
    num_first_indirect_rows <span class="hl opt">=</span> <span class="hl kwd">IBLOCK_MAX_DROWS</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">);</span>
    max_dblock_rows <span class="hl opt">=</span> <span class="hl kwd">DTABLE_MAX_DROWS</span><span class="hl opt">(</span>fh<span class="hl opt">);</span>

    <span class="hl com">/* Fill direct blocks in root indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_root_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert large object, to force creation of two rows of indirect blocks and</span>
<span class="hl com">     * range of skipped blocks that are too small to hold the large object</span>
<span class="hl com">     */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> max_dblock_rows <span class="hl opt">-</span> <span class="hl num">2</span><span class="hl opt">) +</span> <span class="hl num">1</span><span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> max_dblock_rows <span class="hl opt">-</span> <span class="hl num">1</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">20</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert an object to fill up the (biggest) heap block created */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> max_dblock_rows <span class="hl opt">-</span> <span class="hl num">1</span><span class="hl opt">) -</span> obj_size<span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">20</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert large object that can't fit in first row of indirect blocks</span>
<span class="hl com">     * previously skipped, but is small enough to fit into second row of</span>
<span class="hl com">     * skipped blocks.</span>
<span class="hl com">     */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> max_dblock_rows <span class="hl opt">-</span> <span class="hl num">3</span><span class="hl opt">) +</span> <span class="hl num">1</span><span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> max_dblock_rows <span class="hl opt">-</span> <span class="hl num">2</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">20</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert an object to fill up the (2nd biggest) heap block created */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> max_dblock_rows <span class="hl opt">-</span> <span class="hl num">2</span><span class="hl opt">) -</span> obj_size<span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">20</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill rows skipped over in indirect block's direct blocks */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> num_first_indirect_rows<span class="hl opt">;</span> u<span class="hl opt">++) {</span>
        <span class="hl com">/* Direct block rows in first row of skipped 2nd level indirect blocks */</span>
        <span class="hl kwa">for</span><span class="hl opt">(</span>v <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> v <span class="hl opt">&lt;</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span> v<span class="hl opt">++)</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> u<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
                TEST_ERROR

        <span class="hl com">/* Direct block rows in second row of skipped 2nd level indirect blocks */</span>
        <span class="hl kwa">for</span><span class="hl opt">(</span>v <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> v <span class="hl opt">&lt;</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span> v<span class="hl opt">++)</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> u<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
                TEST_ERROR

        <span class="hl com">/* Direct block row in used 2nd level indirect block */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> u<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
            TEST_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end for */</span>

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill rows in second row of skipped 2nd level indirect blocks (and used 2nd level block) */</span>

    <span class="hl com">/* Finish blocks in partially used 2nd level indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_partial_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> num_first_indirect_rows<span class="hl opt">,</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">-</span> <span class="hl num">1</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Direct block rows in skipped 2nd level indirect blocks */</span>
    <span class="hl com">/* (less the one indirect block already used) */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>v <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> v <span class="hl opt">&lt;</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">-</span> <span class="hl num">1</span><span class="hl opt">;</span> v<span class="hl opt">++)</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> num_first_indirect_rows<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
            TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Direct block row in used 3rd row 2nd level indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> num_first_indirect_rows<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Add one more object, to create another &quot;large&quot; block */</span>
    obj_size <span class="hl opt">=</span> SMALL_OBJ_SIZE1<span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> max_dblock_rows <span class="hl opt">-</span> <span class="hl num">1</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR


    <span class="hl com">/* Perform common file &amp; heap close operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">close_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> tparam<span class="hl opt">,</span> file<span class="hl opt">,</span> f<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">,</span> empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Free resources */</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_fill_direct_skip_indirect_two_rows_skip_indirect_row_add_skipped() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_fill_2nd_direct_skip_start_block_add_skipped</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test filling all direct blocks in root indirect block and all</span>
<span class="hl com"> *              direct blocks in 2nd level indirect blocks, the insert object</span>
<span class="hl com"> *              that is too large to hold in first row of direct blocks of</span>
<span class="hl com"> *              3rd level indirect block, then backfill &amp; extend all skipped</span>
<span class="hl com"> *              3rd level indirect block's direct blocks.</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Tuesday, April 11, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_fill_2nd_direct_skip_start_block_add_skipped</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    fheap_heap_ids_t keep_ids<span class="hl opt">;</span>          <span class="hl com">/* Structure to retain heap IDs */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>             <span class="hl com">/* Size of a file with an empty heap */</span>
    <span class="hl kwb">size_t</span>      obj_size<span class="hl opt">;</span>               <span class="hl com">/* Size of object */</span>
    <span class="hl kwb">size_t</span>      fill_size<span class="hl opt">;</span>              <span class="hl com">/* Size of objects for &quot;bulk&quot; filled blocks */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>
    <span class="hl kwb">const char</span> <span class="hl opt">*</span>base_desc <span class="hl opt">=</span> <span class="hl str">&quot;filling direct blocks, filling 2nd level indirect blocks, and skip first rows of direct blocks of 3rd level indirect block, then backfill and extend, then remove all objects %s&quot;</span><span class="hl opt">;</span>       <span class="hl com">/* Test description */</span>

    <span class="hl com">/* Perform common test initialization operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">begin_test</span><span class="hl opt">(</span>tparam<span class="hl opt">,</span> base_desc<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">, &amp;</span>fill_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Perform common file &amp; heap open operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">open_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">,</span> tparam<span class="hl opt">, &amp;</span>file<span class="hl opt">, &amp;</span>f<span class="hl opt">, &amp;</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR


    <span class="hl com">/* Fill direct blocks in root indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_root_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill all rows of 2nd level indirect blocks */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_2nd_indirect_rows</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert large object, to force creation of indirect block and</span>
<span class="hl com">     * range of skipped (indirect) blocks that are too small to hold the large</span>
<span class="hl com">     * object</span>
<span class="hl com">     */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">2</span><span class="hl opt">) +</span> <span class="hl num">1</span><span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">3</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert object to fill space in (large) block created */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">3</span><span class="hl opt">) -</span> obj_size<span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">20</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill rows skipped over in 3rd level indirect block's direct blocks */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">2</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Add one more object, to create another &quot;large&quot; block */</span>
    obj_size <span class="hl opt">=</span> SMALL_OBJ_SIZE1<span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">3</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR


    <span class="hl com">/* Perform common file &amp; heap close operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">close_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> tparam<span class="hl opt">,</span> file<span class="hl opt">,</span> f<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">,</span> empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Free resources */</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_fill_2nd_direct_skip_start_block_add_skipped() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_fill_2nd_direct_skip_2nd_indirect_start_block_add_skipped</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test filling all direct blocks in root indirect block and all</span>
<span class="hl com"> *              direct blocks in 2nd level indirect blocks, fill all direct</span>
<span class="hl com"> *              blocks in 3rd level indirect block, then insert object</span>
<span class="hl com"> *              that is too large to hold in first row of direct blocks of</span>
<span class="hl com"> *              3rd level indirect block's first 2nd level indirect block, then</span>
<span class="hl com"> *              backfill &amp; extend all skipped 2nd level indirect block's direct</span>
<span class="hl com"> *              blocks.</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Tuesday, April 11, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_fill_2nd_direct_skip_2nd_indirect_start_block_add_skipped</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    fheap_heap_ids_t keep_ids<span class="hl opt">;</span>          <span class="hl com">/* Structure to retain heap IDs */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>             <span class="hl com">/* Size of a file with an empty heap */</span>
    <span class="hl kwb">size_t</span>      obj_size<span class="hl opt">;</span>               <span class="hl com">/* Size of object */</span>
    <span class="hl kwb">size_t</span>      fill_size<span class="hl opt">;</span>              <span class="hl com">/* Size of objects for &quot;bulk&quot; filled blocks */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>
    <span class="hl kwb">const char</span> <span class="hl opt">*</span>base_desc <span class="hl opt">=</span> <span class="hl str">&quot;filling direct blocks, filling 2nd level indirect blocks, filling 3rd level indirect block's direct blocks, and skip first rows of direct blocks of 3rd level indirect block's 2nd level indirect block, then backfill and extend, then remove all objects %s&quot;</span><span class="hl opt">;</span>       <span class="hl com">/* Test description */</span>

    <span class="hl com">/* Perform common test initialization operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">begin_test</span><span class="hl opt">(</span>tparam<span class="hl opt">,</span> base_desc<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">, &amp;</span>fill_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Perform common file &amp; heap open operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">open_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">,</span> tparam<span class="hl opt">, &amp;</span>file<span class="hl opt">, &amp;</span>f<span class="hl opt">, &amp;</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR


    <span class="hl com">/* Fill direct blocks in root indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_root_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill all rows of 2nd level indirect blocks */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_2nd_indirect_rows</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill all direct block rows in third level indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert large object, to force creation of indirect block and</span>
<span class="hl com">     * range of skipped (indirect) blocks that are too small to hold the large</span>
<span class="hl com">     * object</span>
<span class="hl com">     */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">2</span><span class="hl opt">) +</span> <span class="hl num">1</span><span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">3</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert object to fill space in (large) block created */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">3</span><span class="hl opt">) -</span> obj_size<span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">20</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill rows skipped over in (3rd level indirect block's) 2nd level</span>
<span class="hl com">     *  indirect block's direct blocks</span>
<span class="hl com">     */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">2</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Add one more object, to create another &quot;large&quot; block */</span>
    obj_size <span class="hl opt">=</span> SMALL_OBJ_SIZE1<span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">3</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR


    <span class="hl com">/* Perform common file &amp; heap close operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">close_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> tparam<span class="hl opt">,</span> file<span class="hl opt">,</span> f<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">,</span> empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Free resources */</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_fill_2nd_direct_skip_2nd_indirect_start_block_add_skipped() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_fill_2nd_direct_fill_direct_skip_3rd_indirect_start_block_add_skipped</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test filling all direct blocks in root indirect block and all</span>
<span class="hl com"> *              direct blocks in 2nd level indirect blocks, fill all direct</span>
<span class="hl com"> *              blocks in 3rd level indirect block, then insert object</span>
<span class="hl com"> *              that is too large to hold in first row of 2nd level indirect</span>
<span class="hl com"> *              blocks of 3rd level indirect block, then backfill &amp; extend all</span>
<span class="hl com"> *              skipped direct blocks.</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Tuesday, April 11, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_fill_2nd_direct_fill_direct_skip_3rd_indirect_start_block_add_skipped</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    fheap_heap_ids_t keep_ids<span class="hl opt">;</span>          <span class="hl com">/* Structure to retain heap IDs */</span>
    <span class="hl kwb">unsigned</span>    num_first_indirect_rows<span class="hl opt">;</span>        <span class="hl com">/* Number of rows (of direct blocks) in each of the first indirect blocks */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>             <span class="hl com">/* Size of a file with an empty heap */</span>
    <span class="hl kwb">size_t</span>      obj_size<span class="hl opt">;</span>               <span class="hl com">/* Size of object */</span>
    <span class="hl kwb">size_t</span>      fill_size<span class="hl opt">;</span>              <span class="hl com">/* Size of objects for &quot;bulk&quot; filled blocks */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>
    <span class="hl kwb">const char</span> <span class="hl opt">*</span>base_desc <span class="hl opt">=</span> <span class="hl str">&quot;filling direct blocks, filling 2nd level indirect blocks, filling 3rd level indirect block's direct blocks, and skip first row of indirect blocks of 3rd level indirect block, then backfill and extend, then remove all objects %s&quot;</span><span class="hl opt">;</span>       <span class="hl com">/* Test description */</span>
    <span class="hl kwb">unsigned</span>    u<span class="hl opt">,</span> v<span class="hl opt">;</span>                   <span class="hl com">/* Local index variables */</span>

    <span class="hl com">/* Perform common test initialization operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">begin_test</span><span class="hl opt">(</span>tparam<span class="hl opt">,</span> base_desc<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">, &amp;</span>fill_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Perform common file &amp; heap open operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">open_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">,</span> tparam<span class="hl opt">, &amp;</span>file<span class="hl opt">, &amp;</span>f<span class="hl opt">, &amp;</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR


    <span class="hl com">/* Retrieve info about heap */</span>
    num_first_indirect_rows <span class="hl opt">=</span> <span class="hl kwd">IBLOCK_MAX_DROWS</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">);</span>

    <span class="hl com">/* Fill direct blocks in root indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_root_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill all rows of 2nd level indirect blocks */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_2nd_indirect_rows</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill all direct block rows in third level indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert large object, to force creation of indirect block and</span>
<span class="hl com">     * range of skipped (indirect) blocks that are too small to hold the large</span>
<span class="hl com">     * object</span>
<span class="hl com">     */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> num_first_indirect_rows <span class="hl opt">-</span> <span class="hl num">1</span><span class="hl opt">) +</span> <span class="hl num">1</span><span class="hl opt">;</span>
<span class="hl ppc">#ifdef QAK</span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;obj_size = %Zu</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">,</span> obj_size<span class="hl opt">);</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> num_first_indirect_rows<span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">20</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert object to fill space in (large) block created */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> num_first_indirect_rows<span class="hl opt">) -</span> obj_size<span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">20</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill rows skipped over in (first 3rd level indirect block's) 2nd level</span>
<span class="hl com">     *  indirect block's direct blocks</span>
<span class="hl com">     *  (and second 3rd level indirect block's direct blocks)</span>
<span class="hl com">     */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> num_first_indirect_rows<span class="hl opt">;</span> u<span class="hl opt">++) {</span>
        <span class="hl com">/* Direct block rows in 2nd level indirect blocks */</span>
        <span class="hl kwa">for</span><span class="hl opt">(</span>v <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> v <span class="hl opt">&lt;</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span> v<span class="hl opt">++)</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> u<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
                TEST_ERROR

        <span class="hl com">/* Direct block row in 3rd level indirect block */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> u<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
            TEST_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end for */</span>

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Add one more object, to create another &quot;large&quot; block */</span>
    obj_size <span class="hl opt">=</span> SMALL_OBJ_SIZE1<span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> num_first_indirect_rows<span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR


    <span class="hl com">/* Perform common file &amp; heap close operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">close_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> tparam<span class="hl opt">,</span> file<span class="hl opt">,</span> f<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">,</span> empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Free resources */</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_fill_2nd_direct_fill_direct_skip_3rd_indirect_start_block_add_skipped() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_fill_2nd_direct_fill_direct_skip2_3rd_indirect_start_block_add_skipped</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test filling all direct blocks in root indirect block and all</span>
<span class="hl com"> *              direct blocks in 2nd level indirect blocks, fill all direct</span>
<span class="hl com"> *              blocks in 3rd level indirect block, then insert object</span>
<span class="hl com"> *              that is too large to hold in first &amp; second rows of 2nd level</span>
<span class="hl com"> *              indirect blocks (although this 3rd level indirect block only</span>
<span class="hl com"> *              has one row of 2nd level indirect blocks) of 3rd level indirect</span>
<span class="hl com"> *             block, then backfill &amp; extend all skipped direct blocks.</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Tuesday, April 11, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_fill_2nd_direct_fill_direct_skip2_3rd_indirect_start_block_add_skipped</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    fheap_heap_ids_t keep_ids<span class="hl opt">;</span>          <span class="hl com">/* Structure to retain heap IDs */</span>
    <span class="hl kwb">unsigned</span>    num_first_indirect_rows<span class="hl opt">;</span>        <span class="hl com">/* Number of rows (of direct blocks) in each of the first indirect blocks */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>             <span class="hl com">/* Size of a file with an empty heap */</span>
    <span class="hl kwb">size_t</span>      obj_size<span class="hl opt">;</span>               <span class="hl com">/* Size of object */</span>
    <span class="hl kwb">size_t</span>      fill_size<span class="hl opt">;</span>              <span class="hl com">/* Size of objects for &quot;bulk&quot; filled blocks */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>
    <span class="hl kwb">const char</span> <span class="hl opt">*</span>base_desc <span class="hl opt">=</span> <span class="hl str">&quot;filling direct blocks, filling 2nd level indirect blocks, filling 3rd level indirect block's direct blocks, and skip first two rows of indirect blocks of 3rd level indirect block, then backfill and extend, then remove all objects %s&quot;</span><span class="hl opt">;</span>       <span class="hl com">/* Test description */</span>
    <span class="hl kwb">unsigned</span>    u<span class="hl opt">,</span> v<span class="hl opt">;</span>                   <span class="hl com">/* Local index variables */</span>

    <span class="hl com">/* Perform common test initialization operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">begin_test</span><span class="hl opt">(</span>tparam<span class="hl opt">,</span> base_desc<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">, &amp;</span>fill_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Perform common file &amp; heap open operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">open_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">,</span> tparam<span class="hl opt">, &amp;</span>file<span class="hl opt">, &amp;</span>f<span class="hl opt">, &amp;</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR


    <span class="hl com">/* Retrieve info about heap */</span>
    num_first_indirect_rows <span class="hl opt">=</span> <span class="hl kwd">IBLOCK_MAX_DROWS</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl ppc">#ifdef QAK</span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;num_first_indirect_rows = %u</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">,</span> num_first_indirect_rows<span class="hl opt">);</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>

    <span class="hl com">/* Fill direct blocks in root indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_root_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill all rows of 2nd level indirect blocks */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_2nd_indirect_rows</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill all direct block rows in third level indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert large object, to force creation of indirect block and</span>
<span class="hl com">     * range of skipped (indirect) blocks that are too small to hold the large</span>
<span class="hl com">     * object</span>
<span class="hl com">     */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> num_first_indirect_rows<span class="hl opt">) +</span> <span class="hl num">1</span><span class="hl opt">;</span>
<span class="hl ppc">#ifdef QAK</span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;obj_size = %Zu</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">,</span> obj_size<span class="hl opt">);</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> num_first_indirect_rows <span class="hl opt">+</span> <span class="hl num">1</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">20</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert object to fill space in (large) block created */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> num_first_indirect_rows <span class="hl opt">+</span> <span class="hl num">1</span><span class="hl opt">) -</span> obj_size<span class="hl opt">;</span>
<span class="hl ppc">#ifdef QAK</span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;obj_size = %Zu</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">,</span> obj_size<span class="hl opt">);</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">20</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill rows skipped over in (first 3rd level indirect block's) 2nd level</span>
<span class="hl com">     *  indirect block's direct blocks</span>
<span class="hl com">     *  (and second 3rd level indirect block's direct blocks)</span>
<span class="hl com">     */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> num_first_indirect_rows<span class="hl opt">;</span> u<span class="hl opt">++) {</span>
        <span class="hl com">/* Direct block rows in 2nd level indirect blocks */</span>
        <span class="hl kwa">for</span><span class="hl opt">(</span>v <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> v <span class="hl opt">&lt;</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span> v<span class="hl opt">++)</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> u<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
                TEST_ERROR

        <span class="hl com">/* Direct block row in 3rd level indirect block */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> u<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
            TEST_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end for */</span>

    <span class="hl com">/* Fill row of direct blocks in second 3rd level indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> num_first_indirect_rows<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Add one more object, to create another &quot;large&quot; block */</span>
    obj_size <span class="hl opt">=</span> SMALL_OBJ_SIZE1<span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> num_first_indirect_rows <span class="hl opt">+</span> <span class="hl num">1</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR


    <span class="hl com">/* Perform common file &amp; heap close operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">close_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> tparam<span class="hl opt">,</span> file<span class="hl opt">,</span> f<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">,</span> empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Free resources */</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_fill_2nd_direct_fill_direct_skip2_3rd_indirect_start_block_add_skipped() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_fill_3rd_direct_less_one_fill_direct_wrap_start_block_add_skipped</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test filling all direct blocks in root indirect block and all</span>
<span class="hl com"> *              direct blocks in 2nd level indirect blocks, all 3rd level</span>
<span class="hl com"> *              indirect blocks in first row except the last one, fill direct</span>
<span class="hl com"> *              blocks in last 3rd level indirect block, then insert object</span>
<span class="hl com"> *              insert object that is too large to hold in last 3rd level</span>
<span class="hl com"> *              indirect block's row of 2nd level indirect blocks (forcing the</span>
<span class="hl com"> *              use of the next row of 3rd level blocks), then backfill all</span>
<span class="hl com"> *              skipped direct blocks &amp; extend.</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Tues, April 18, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_fill_3rd_direct_less_one_fill_direct_wrap_start_block_add_skipped</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    fheap_heap_ids_t keep_ids<span class="hl opt">;</span>          <span class="hl com">/* Structure to retain heap IDs */</span>
    <span class="hl kwb">unsigned</span>    num_first_indirect_rows<span class="hl opt">;</span>        <span class="hl com">/* Number of rows (of direct blocks) in each of the first indirect blocks */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>             <span class="hl com">/* Size of a file with an empty heap */</span>
    <span class="hl kwb">size_t</span>      obj_size<span class="hl opt">;</span>               <span class="hl com">/* Size of object */</span>
    <span class="hl kwb">size_t</span>      fill_size<span class="hl opt">;</span>              <span class="hl com">/* Size of objects for &quot;bulk&quot; filled blocks */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>
    <span class="hl kwb">const char</span> <span class="hl opt">*</span>base_desc <span class="hl opt">=</span> <span class="hl str">&quot;filling direct blocks, filling 2nd level indirect blocks, filling first row of 3rd level indirect blocks, except last one, fill all direct blocks in last 3rd level indirect block, and insert object too large for it's 2nd level indirect blocks, then backfill and extend, then remove all objects %s&quot;</span><span class="hl opt">;</span>       <span class="hl com">/* Test description */</span>
    <span class="hl kwb">unsigned</span>    u<span class="hl opt">,</span> v<span class="hl opt">;</span>                   <span class="hl com">/* Local index variables */</span>

    <span class="hl com">/* Perform common test initialization operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">begin_test</span><span class="hl opt">(</span>tparam<span class="hl opt">,</span> base_desc<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">, &amp;</span>fill_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Perform common file &amp; heap open operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">open_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">,</span> tparam<span class="hl opt">, &amp;</span>file<span class="hl opt">, &amp;</span>f<span class="hl opt">, &amp;</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR


    <span class="hl com">/* Retrieve info about heap */</span>
    num_first_indirect_rows <span class="hl opt">=</span> <span class="hl kwd">IBLOCK_MAX_DROWS</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">);</span>

    <span class="hl com">/* Fill direct blocks in root indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_root_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill all rows of 2nd level indirect blocks in root indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_2nd_indirect_rows</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill first row (except one) of 3rd level indirect blocks */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">-</span> <span class="hl num">1</span><span class="hl opt">;</span> u<span class="hl opt">++)</span>
        <span class="hl com">/* Fill 3rd level indirect block */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_3rd_indirect</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
            TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill all direct block rows in last third level indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert large object, to force creation of indirect block and</span>
<span class="hl com">     * range of skipped (indirect) blocks that are too small to hold the large</span>
<span class="hl com">     * object</span>
<span class="hl com">     */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> num_first_indirect_rows <span class="hl opt">-</span> <span class="hl num">1</span><span class="hl opt">) +</span> <span class="hl num">1</span><span class="hl opt">;</span>
<span class="hl ppc">#ifdef QAK</span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;obj_size = %Zu</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">,</span> obj_size<span class="hl opt">);</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> num_first_indirect_rows<span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">20</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert object to fill space in (large) block created */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> num_first_indirect_rows<span class="hl opt">) -</span> obj_size<span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">20</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill rows skipped over in 2nd level indirect block's direct blocks</span>
<span class="hl com">     * (and rows of next 3rd level indirect block's direct blocks)</span>
<span class="hl com">     */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> num_first_indirect_rows<span class="hl opt">;</span> u<span class="hl opt">++) {</span>
        <span class="hl com">/* Direct block rows in 2nd level indirect blocks */</span>
        <span class="hl kwa">for</span><span class="hl opt">(</span>v <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> v <span class="hl opt">&lt;</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span> v<span class="hl opt">++)</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> u<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
                TEST_ERROR

        <span class="hl com">/* Direct block row in current 3rd level indirect block */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> u<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
            TEST_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end for */</span>

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Add one more object, to create another &quot;large&quot; block */</span>
    obj_size <span class="hl opt">=</span> SMALL_OBJ_SIZE1<span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> num_first_indirect_rows<span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR


    <span class="hl com">/* Perform common file &amp; heap close operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">close_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> tparam<span class="hl opt">,</span> file<span class="hl opt">,</span> f<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">,</span> empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Free resources */</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_fill_3rd_direct_less_one_fill_direct_wrap_start_block_add_skipped() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_fill_1st_row_3rd_direct_fill_2nd_direct_less_one_wrap_start_block_add_skipped</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test filling all direct blocks in root indirect block and all</span>
<span class="hl com"> *              direct blocks in 2nd level indirect blocks, all 3rd level</span>
<span class="hl com"> *              indirect blocks in first row, fill direct blocks in 2nd row 3rd</span>
<span class="hl com"> *              level indirect block, fill all direct blocks in 1st row of</span>
<span class="hl com"> *              2nd level indirect blocks except the last one, then insert</span>
<span class="hl com"> *              object that is too large to hold in 3rd level indirect block's</span>
<span class="hl com"> *              first row of 2nd level indirect blocks (forcing the use of the</span>
<span class="hl com"> *              next row of 2nd level blocks), then backfill all skipped direct</span>
<span class="hl com"> *              blocks &amp; extend.</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Tues, April 18, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_fill_1st_row_3rd_direct_fill_2nd_direct_less_one_wrap_start_block_add_skipped</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    fheap_heap_ids_t keep_ids<span class="hl opt">;</span>          <span class="hl com">/* Structure to retain heap IDs */</span>
    <span class="hl kwb">unsigned</span>    num_first_indirect_rows<span class="hl opt">;</span>        <span class="hl com">/* Number of rows (of direct blocks) in each of the first indirect blocks */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>             <span class="hl com">/* Size of a file with an empty heap */</span>
    <span class="hl kwb">size_t</span>      obj_size<span class="hl opt">;</span>               <span class="hl com">/* Size of object */</span>
    <span class="hl kwb">size_t</span>      fill_size<span class="hl opt">;</span>              <span class="hl com">/* Size of objects for &quot;bulk&quot; filled blocks */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>
    <span class="hl kwb">const char</span> <span class="hl opt">*</span>base_desc <span class="hl opt">=</span> <span class="hl str">&quot;filling direct blocks, filling 2nd level indirect blocks, filling first row of 3rd level indirect blocks, fill all direct blocks in next 3rd level indirect block, fill all 1st row of 2nd level indirect blocks, except last one, and insert object too large for 2nd level indirect block, then backfill and extend, then remove all objects %s&quot;</span><span class="hl opt">;</span>       <span class="hl com">/* Test description */</span>
    <span class="hl kwb">unsigned</span>    u<span class="hl opt">;</span>                      <span class="hl com">/* Local index variables */</span>

    <span class="hl com">/* Perform common test initialization operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">begin_test</span><span class="hl opt">(</span>tparam<span class="hl opt">,</span> base_desc<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">, &amp;</span>fill_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Perform common file &amp; heap open operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">open_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">,</span> tparam<span class="hl opt">, &amp;</span>file<span class="hl opt">, &amp;</span>f<span class="hl opt">, &amp;</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR


    <span class="hl com">/* Retrieve info about heap */</span>
    num_first_indirect_rows <span class="hl opt">=</span> <span class="hl kwd">IBLOCK_MAX_DROWS</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">);</span>

    <span class="hl com">/* Fill direct blocks in root indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_root_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill all rows of 2nd level indirect blocks in 4th level indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_2nd_indirect_rows</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill first row of 3rd level indirect blocks */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_3rd_indirect_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill all direct block rows in 2nd row third level indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill first row (except one) of 2nd level indirect blocks */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">-</span> <span class="hl num">1</span><span class="hl opt">;</span> u<span class="hl opt">++)</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_2nd_indirect</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
            TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert large object, to force creation of indirect block and</span>
<span class="hl com">     * range of skipped (indirect) blocks that are too small to hold the large</span>
<span class="hl com">     * object</span>
<span class="hl com">     */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> num_first_indirect_rows <span class="hl opt">-</span> <span class="hl num">1</span><span class="hl opt">) +</span> <span class="hl num">1</span><span class="hl opt">;</span>
<span class="hl ppc">#ifdef QAK</span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;obj_size = %Zu</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">,</span> obj_size<span class="hl opt">);</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> num_first_indirect_rows<span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">20</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert object to fill space in (large) block created */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> num_first_indirect_rows<span class="hl opt">) -</span> obj_size<span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">20</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill rows skipped over in 2nd level indirect block's direct blocks</span>
<span class="hl com">     * (and rows of next 2nd level indirect block's direct blocks)</span>
<span class="hl com">     */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> num_first_indirect_rows<span class="hl opt">;</span> u<span class="hl opt">++) {</span>
        <span class="hl com">/* Direct block rows in skipped 2nd level indirect block */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> u<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
            TEST_ERROR

        <span class="hl com">/* Direct block row in current 2nd level indirect block */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> u<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
            TEST_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end for */</span>

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Add one more object, to create another &quot;large&quot; block */</span>
    obj_size <span class="hl opt">=</span> SMALL_OBJ_SIZE1<span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> num_first_indirect_rows<span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR


    <span class="hl com">/* Perform common file &amp; heap close operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">close_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> tparam<span class="hl opt">,</span> file<span class="hl opt">,</span> f<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">,</span> empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Free resources */</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_fill_1st_row_3rd_direct_fill_2nd_direct_less_one_wrap_start_block_add_skipped() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_fill_3rd_direct_fill_direct_skip_start_block_add_skipped</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test filling all direct blocks in root indirect block and all</span>
<span class="hl com"> *              direct blocks in 2nd level indirect blocks, fill all direct</span>
<span class="hl com"> *              blocks and indirect blocks in 3rd level indirect block, then</span>
<span class="hl com"> *              fill all direct blocks in 4th level indirect block, then</span>
<span class="hl com"> *              insert object that is too large to hold in first row of 2nd</span>
<span class="hl com"> *              level indirect blocks of 4th level indirect block, then</span>
<span class="hl com"> *              backfill all skipped direct blocks &amp; extend.</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Saturday, April 15, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_fill_3rd_direct_fill_direct_skip_start_block_add_skipped</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    fheap_heap_ids_t keep_ids<span class="hl opt">;</span>          <span class="hl com">/* Structure to retain heap IDs */</span>
    <span class="hl kwb">unsigned</span>    num_first_indirect_rows<span class="hl opt">;</span>        <span class="hl com">/* Number of rows (of direct blocks) in each of the first indirect blocks */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>             <span class="hl com">/* Size of a file with an empty heap */</span>
    <span class="hl kwb">size_t</span>      obj_size<span class="hl opt">;</span>               <span class="hl com">/* Size of object */</span>
    <span class="hl kwb">size_t</span>      fill_size<span class="hl opt">;</span>              <span class="hl com">/* Size of objects for &quot;bulk&quot; filled blocks */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>
    <span class="hl kwb">const char</span> <span class="hl opt">*</span>base_desc <span class="hl opt">=</span> <span class="hl str">&quot;filling direct blocks, filling 2nd level indirect blocks, filling 3rd level indirect blocks, fill 4th level indirect block's direct blocks, and skip first row of 2nd indirect blocks of 4th level indirect block, then backfill and extend, then remove all objects %s&quot;</span><span class="hl opt">;</span>       <span class="hl com">/* Test description */</span>
    <span class="hl kwb">unsigned</span>    u<span class="hl opt">,</span> v<span class="hl opt">;</span>                   <span class="hl com">/* Local index variables */</span>

    <span class="hl com">/* Perform common test initialization operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">begin_test</span><span class="hl opt">(</span>tparam<span class="hl opt">,</span> base_desc<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">, &amp;</span>fill_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Perform common file &amp; heap open operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">open_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">,</span> tparam<span class="hl opt">, &amp;</span>file<span class="hl opt">, &amp;</span>f<span class="hl opt">, &amp;</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR


    <span class="hl com">/* Retrieve info about heap */</span>
    num_first_indirect_rows <span class="hl opt">=</span> <span class="hl kwd">IBLOCK_MAX_DROWS</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">);</span>

    <span class="hl com">/* Fill direct blocks in root indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_root_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill all rows of 2nd level indirect blocks */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_2nd_indirect_rows</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill all rows of 3rd level indirect blocks */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_3rd_indirect_rows</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill all direct block rows in fourth level indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert large object, to force creation of indirect block and</span>
<span class="hl com">     * range of skipped (indirect) blocks that are too small to hold the large</span>
<span class="hl com">     * object</span>
<span class="hl com">     */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> num_first_indirect_rows <span class="hl opt">-</span> <span class="hl num">1</span><span class="hl opt">) +</span> <span class="hl num">1</span><span class="hl opt">;</span>
<span class="hl ppc">#ifdef QAK</span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;obj_size = %Zu</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">,</span> obj_size<span class="hl opt">);</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> num_first_indirect_rows<span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">20</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert object to fill space in (large) block created */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> num_first_indirect_rows<span class="hl opt">) -</span> obj_size<span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">20</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill rows skipped over in (first 4th level indirect block's) 2nd level</span>
<span class="hl com">     *  indirect block's direct blocks</span>
<span class="hl com">     *  (and second row of 2nd level indirect block's direct blocks)</span>
<span class="hl com">     */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> num_first_indirect_rows<span class="hl opt">;</span> u<span class="hl opt">++) {</span>
        <span class="hl com">/* Direct block rows in 2nd level indirect blocks */</span>
        <span class="hl kwa">for</span><span class="hl opt">(</span>v <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> v <span class="hl opt">&lt;</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span> v<span class="hl opt">++)</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> u<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
                TEST_ERROR

        <span class="hl com">/* Direct block row in 2nd level indirect block */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> u<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
            TEST_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end for */</span>

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Add one more object, to create another &quot;large&quot; block */</span>
    obj_size <span class="hl opt">=</span> SMALL_OBJ_SIZE1<span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> num_first_indirect_rows<span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR


    <span class="hl com">/* Perform common file &amp; heap close operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">close_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> tparam<span class="hl opt">,</span> file<span class="hl opt">,</span> f<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">,</span> empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Free resources */</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_fill_3rd_direct_fill_direct_skip_start_block_add_skipped() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_fill_3rd_direct_fill_2nd_direct_fill_direct_skip_3rd_indirect_start_block_add_skipped</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test filling all direct blocks in root indirect block and all</span>
<span class="hl com"> *              direct blocks in 2nd level indirect blocks, fill all direct</span>
<span class="hl com"> *              blocks and indirect blocks in 3rd level indirect block, then</span>
<span class="hl com"> *              fill all direct blocks and 2nd level indirect blocks in 4th</span>
<span class="hl com"> *              level indirect block, then</span>
<span class="hl com"> *              insert object that is too large to hold in first row of 2nd</span>
<span class="hl com"> *              level indirect blocks of 4th level indirect block's first</span>
<span class="hl com"> *              3rd level indirect block, then</span>
<span class="hl com"> *              backfill all skipped direct blocks &amp; extend.</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, April 17, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_fill_3rd_direct_fill_2nd_direct_fill_direct_skip_3rd_indirect_start_block_add_skipped</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    fheap_heap_ids_t keep_ids<span class="hl opt">;</span>          <span class="hl com">/* Structure to retain heap IDs */</span>
    <span class="hl kwb">unsigned</span>    num_first_indirect_rows<span class="hl opt">;</span>        <span class="hl com">/* Number of rows (of direct blocks) in each of the first indirect blocks */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>             <span class="hl com">/* Size of a file with an empty heap */</span>
    <span class="hl kwb">size_t</span>      obj_size<span class="hl opt">;</span>               <span class="hl com">/* Size of object */</span>
    <span class="hl kwb">size_t</span>      fill_size<span class="hl opt">;</span>              <span class="hl com">/* Size of objects for &quot;bulk&quot; filled blocks */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>
    <span class="hl kwb">const char</span> <span class="hl opt">*</span>base_desc <span class="hl opt">=</span> <span class="hl str">&quot;filling direct blocks, filling 2nd level indirect blocks, filling 3rd level indirect blocks, fill 4th level indirect block's direct, 2nd level indirect blocks and 3rd level direct block, and skip first row of 2nd indirect blocks of 4th level indirect block's 3rd level indirect block, then backfill and extend, then remove all objects %s&quot;</span><span class="hl opt">;</span>       <span class="hl com">/* Test description */</span>
    <span class="hl kwb">unsigned</span>    u<span class="hl opt">,</span> v<span class="hl opt">;</span>                   <span class="hl com">/* Local index variables */</span>

    <span class="hl com">/* Perform common test initialization operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">begin_test</span><span class="hl opt">(</span>tparam<span class="hl opt">,</span> base_desc<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">, &amp;</span>fill_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Perform common file &amp; heap open operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">open_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">,</span> tparam<span class="hl opt">, &amp;</span>file<span class="hl opt">, &amp;</span>f<span class="hl opt">, &amp;</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR


    <span class="hl com">/* Retrieve info about heap */</span>
    num_first_indirect_rows <span class="hl opt">=</span> <span class="hl kwd">IBLOCK_MAX_DROWS</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">);</span>

    <span class="hl com">/* Fill direct blocks in root indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_root_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill all rows of 2nd level indirect blocks */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_2nd_indirect_rows</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill all rows of 3rd level indirect blocks */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_3rd_indirect_rows</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill all direct block rows in fourth level indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill all rows of 2nd level indirect blocks in fourth level indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_2nd_indirect_rows</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill all direct block rows in fourth level indirect block's 3rd level indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert large object, to force creation of indirect block and</span>
<span class="hl com">     * range of skipped (indirect) blocks that are too small to hold the large</span>
<span class="hl com">     * object</span>
<span class="hl com">     */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> num_first_indirect_rows <span class="hl opt">-</span> <span class="hl num">1</span><span class="hl opt">) +</span> <span class="hl num">1</span><span class="hl opt">;</span>
<span class="hl ppc">#ifdef QAK</span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;obj_size = %Zu</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">,</span> obj_size<span class="hl opt">);</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> num_first_indirect_rows<span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">20</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert object to fill space in (large) block created */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> num_first_indirect_rows<span class="hl opt">) -</span> obj_size<span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">20</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill rows skipped over in (first 4th level indirect block's first 3rd</span>
<span class="hl com">     *  level block's) 2nd level indirect block's direct blocks</span>
<span class="hl com">     *  (and rows of 2nd 3rd level indirect block's direct blocks)</span>
<span class="hl com">     */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> num_first_indirect_rows<span class="hl opt">;</span> u<span class="hl opt">++) {</span>
        <span class="hl com">/* Direct block rows in 2nd level indirect blocks */</span>
        <span class="hl kwa">for</span><span class="hl opt">(</span>v <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> v <span class="hl opt">&lt;</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span> v<span class="hl opt">++)</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> u<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
                TEST_ERROR

        <span class="hl com">/* Direct block row in 3rd level indirect block */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> u<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
            TEST_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end for */</span>

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Add one more object, to create another &quot;large&quot; block */</span>
    obj_size <span class="hl opt">=</span> SMALL_OBJ_SIZE1<span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> num_first_indirect_rows<span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR


    <span class="hl com">/* Perform common file &amp; heap close operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">close_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> tparam<span class="hl opt">,</span> file<span class="hl opt">,</span> f<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">,</span> empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Free resources */</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_fill_3rd_direct_fill_2nd_direct_fill_direct_skip_3rd_indirect_start_block_add_skipped() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_fill_3rd_direct_fill_2nd_direct_fill_direct_skip_3rd_indirect_two_rows_start_block_add_skipped</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test filling all direct blocks in root indirect block and all</span>
<span class="hl com"> *              direct blocks in 2nd level indirect blocks, fill all direct</span>
<span class="hl com"> *              blocks and indirect blocks in 3rd level indirect block, fill all</span>
<span class="hl com"> *              direct &amp; indirect blocks in first row of 4th level indirect</span>
<span class="hl com"> *              blocks, then fill all direct blocks in first row of 3rd level</span>
<span class="hl com"> *              indirect blocks in 4th level indirect block, fill direct blocks</span>
<span class="hl com"> *              in first block of 2nd row of 3rd level indirect blocks in 4th</span>
<span class="hl com"> *              level indirect block, then insert object insert object that is</span>
<span class="hl com"> *              too large to hold in first row of 2nd level indirect blocks of</span>
<span class="hl com"> *              3rd level indirect block (in 4th level indirect block), then</span>
<span class="hl com"> *              backfill all skipped direct blocks &amp; extend.</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, April 17, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_fill_3rd_direct_fill_2nd_direct_fill_direct_skip_3rd_indirect_two_rows_start_block_add_skipped</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    fheap_heap_ids_t keep_ids<span class="hl opt">;</span>          <span class="hl com">/* Structure to retain heap IDs */</span>
    <span class="hl kwb">unsigned</span>    num_first_indirect_rows<span class="hl opt">;</span>        <span class="hl com">/* Number of rows (of direct blocks) in each of the first indirect blocks */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>             <span class="hl com">/* Size of a file with an empty heap */</span>
    <span class="hl kwb">size_t</span>      obj_size<span class="hl opt">;</span>               <span class="hl com">/* Size of object */</span>
    <span class="hl kwb">size_t</span>      fill_size<span class="hl opt">;</span>              <span class="hl com">/* Size of objects for &quot;bulk&quot; filled blocks */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>
    <span class="hl kwb">const char</span> <span class="hl opt">*</span>base_desc <span class="hl opt">=</span> <span class="hl str">&quot;filling direct blocks, filling 2nd level indirect blocks, filling 3rd level indirect blocks, fill first row of 4th level indirect blocks, fill 2nd row 4th level indirect block's direct, 2nd level indirect blocks, first row of 3rd level indirect blocks, 3rd level direct block in 2nd row, and skip first row of 2nd indirect blocks of 4th level indirect block's 3rd level indirect block, then backfill and extend, then remove all objects %s&quot;</span><span class="hl opt">;</span>       <span class="hl com">/* Test description */</span>
    <span class="hl kwb">unsigned</span>    u<span class="hl opt">,</span> v<span class="hl opt">;</span>                   <span class="hl com">/* Local index variables */</span>

    <span class="hl com">/* Perform common test initialization operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">begin_test</span><span class="hl opt">(</span>tparam<span class="hl opt">,</span> base_desc<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">, &amp;</span>fill_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Perform common file &amp; heap open operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">open_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">,</span> tparam<span class="hl opt">, &amp;</span>file<span class="hl opt">, &amp;</span>f<span class="hl opt">, &amp;</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR


    <span class="hl com">/* Retrieve info about heap */</span>
    num_first_indirect_rows <span class="hl opt">=</span> <span class="hl kwd">IBLOCK_MAX_DROWS</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">);</span>

    <span class="hl com">/* Fill direct blocks in root indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_root_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill all rows of 2nd level indirect blocks */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_2nd_indirect_rows</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill all rows of 3rd level indirect blocks */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_3rd_indirect_rows</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill first row of 4th level indirect blocks */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_4th_indirect_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Account for root indirect block doubling # of rows again */</span>
    <span class="hl com">/* (From 16 rows to the max. # of rows: 22) */</span>
    <span class="hl com">/* (Note: this is tied to the particular doubling table/heap creation parameters) */</span>
    <span class="hl opt">{</span>
        <span class="hl kwb">unsigned</span> max_root_rows<span class="hl opt">;</span>     <span class="hl com">/* Maximum # of rows in root indirect block */</span>
        <span class="hl kwb">unsigned</span> row<span class="hl opt">;</span>               <span class="hl com">/* Row in heap */</span>

        <span class="hl com">/* Get some information for the heap */</span>
        max_root_rows <span class="hl opt">=</span> <span class="hl kwd">HEAP_MAX_ROOT_ROWS</span><span class="hl opt">(</span>fh<span class="hl opt">);</span>

        <span class="hl com">/* Increase heap size &amp; free space */</span>
        <span class="hl kwa">for</span><span class="hl opt">(</span>row <span class="hl opt">=</span> <span class="hl num">16</span><span class="hl opt">;</span> row <span class="hl opt">&lt;</span> max_root_rows<span class="hl opt">;</span> row<span class="hl opt">++) {</span>
            state<span class="hl opt">.</span>man_size <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> row<span class="hl opt">);</span>
            state<span class="hl opt">.</span>man_free_space <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> row<span class="hl opt">);</span>
        <span class="hl opt">}</span> <span class="hl com">/* end for */</span>
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill all direct block rows in 2nd row 4th level indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill all rows of 2nd level indirect blocks in 2nd row 4th level indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_2nd_indirect_rows</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill first row of 3rd level indirect blocks in 2nd row 4th level indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_3rd_indirect_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill all direct block rows in 4th level indirect block's 2nd row of 3rd level indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert large object, to force creation of indirect block and</span>
<span class="hl com">     * range of skipped (indirect) blocks that are too small to hold the large</span>
<span class="hl com">     * object</span>
<span class="hl com">     */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> num_first_indirect_rows <span class="hl opt">-</span> <span class="hl num">1</span><span class="hl opt">) +</span> <span class="hl num">1</span><span class="hl opt">;</span>
<span class="hl ppc">#ifdef QAK</span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;obj_size = %Zu</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">,</span> obj_size<span class="hl opt">);</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> num_first_indirect_rows<span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">20</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert object to fill space in (large) block created */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> num_first_indirect_rows<span class="hl opt">) -</span> obj_size<span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">20</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill rows skipped over in (first block in 2nd row  4th level indirect</span>
<span class="hl com">     *  block's first 3rd level block's) 2nd level indirect block's direct</span>
<span class="hl com">     * blocks (and rows of 2nd 3rd level indirect block's direct blocks)</span>
<span class="hl com">     */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> num_first_indirect_rows<span class="hl opt">;</span> u<span class="hl opt">++) {</span>
        <span class="hl com">/* Direct block rows in 2nd level indirect blocks */</span>
        <span class="hl kwa">for</span><span class="hl opt">(</span>v <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> v <span class="hl opt">&lt;</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span> v<span class="hl opt">++)</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> u<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
                TEST_ERROR

        <span class="hl com">/* Direct block row in 3rd level indirect block */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> u<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
            TEST_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end for */</span>

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Add one more object, to create another &quot;large&quot; block */</span>
    obj_size <span class="hl opt">=</span> SMALL_OBJ_SIZE1<span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> num_first_indirect_rows<span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR


    <span class="hl com">/* Perform common file &amp; heap close operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">close_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> tparam<span class="hl opt">,</span> file<span class="hl opt">,</span> f<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">,</span> empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Free resources */</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_fill_3rd_direct_fill_2nd_direct_fill_direct_skip_3rd_indirect_two_rows_start_block_add_skipped() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_fill_3rd_direct_fill_2nd_direct_fill_direct_skip_3rd_indirect_wrap_start_block_add_skipped</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test filling all direct blocks in root indirect block and all</span>
<span class="hl com"> *              direct blocks in 2nd level indirect blocks, fill all direct</span>
<span class="hl com"> *              blocks and indirect blocks in 3rd level indirect block, fill all</span>
<span class="hl com"> *              direct &amp; indirect blocks in 4th level indirect</span>
<span class="hl com"> *              block, then fill all direct blocks in first row of 3rd</span>
<span class="hl com"> *              level indirect blocks in 4th level indirect block except</span>
<span class="hl com"> *              the last (3rd level indirect block) in 4th level indirect block,</span>
<span class="hl com"> *              fill direct blocks in last 3rd level indirect block, then</span>
<span class="hl com"> *              insert object insert object that is too large to hold in first</span>
<span class="hl com"> *              row of 2nd level indirect blocks of 3rd level indirect block</span>
<span class="hl com"> *              (in 4th level indirect block) (forcing the use of the next</span>
<span class="hl com"> *              4th level block), then backfill all skipped direct blocks &amp;</span>
<span class="hl com"> *              extend.</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, April 17, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_fill_3rd_direct_fill_2nd_direct_fill_direct_skip_3rd_indirect_wrap_start_block_add_skipped</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    fheap_heap_ids_t keep_ids<span class="hl opt">;</span>          <span class="hl com">/* Structure to retain heap IDs */</span>
    <span class="hl kwb">unsigned</span>    num_first_indirect_rows<span class="hl opt">;</span>        <span class="hl com">/* Number of rows (of direct blocks) in each of the first indirect blocks */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>             <span class="hl com">/* Size of a file with an empty heap */</span>
    <span class="hl kwb">size_t</span>      obj_size<span class="hl opt">;</span>               <span class="hl com">/* Size of object */</span>
    <span class="hl kwb">size_t</span>      fill_size<span class="hl opt">;</span>              <span class="hl com">/* Size of objects for &quot;bulk&quot; filled blocks */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>
    <span class="hl kwb">const char</span> <span class="hl opt">*</span>base_desc <span class="hl opt">=</span> <span class="hl str">&quot;filling direct blocks, filling 2nd level indirect blocks, filling 3rd level indirect blocks, fill first row of 3rd level indirect blocks in 4th level indirect block except last 3rd level block, fill direct blocks in 3rd level block, and skip row of 2nd indirect blocks of 4th level indirect block's 3rd level indirect block, then backfill and extend, then remove all objects %s&quot;</span><span class="hl opt">;</span>       <span class="hl com">/* Test description */</span>
    <span class="hl kwb">unsigned</span>    u<span class="hl opt">,</span> v<span class="hl opt">;</span>                   <span class="hl com">/* Local index variables */</span>

    <span class="hl com">/* Perform common test initialization operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">begin_test</span><span class="hl opt">(</span>tparam<span class="hl opt">,</span> base_desc<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">, &amp;</span>fill_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Perform common file &amp; heap open operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">open_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">,</span> tparam<span class="hl opt">, &amp;</span>file<span class="hl opt">, &amp;</span>f<span class="hl opt">, &amp;</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR


    <span class="hl com">/* Retrieve info about heap */</span>
    num_first_indirect_rows <span class="hl opt">=</span> <span class="hl kwd">IBLOCK_MAX_DROWS</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">);</span>

    <span class="hl com">/* Fill direct blocks in root indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_root_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill all rows of 2nd level indirect blocks */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_2nd_indirect_rows</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill all rows of 3rd level indirect blocks */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_3rd_indirect_rows</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill all direct block rows in 4th level indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill all rows of 2nd level indirect blocks in 4th level indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_2nd_indirect_rows</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill first row (except one) of 3rd level indirect blocks in 4th level indirect block */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">-</span> <span class="hl num">1</span><span class="hl opt">;</span> u<span class="hl opt">++) {</span>
        <span class="hl com">/* Fill all direct block rows in 3rd level indirect block */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
            TEST_ERROR

        <span class="hl com">/* Fill row of 2nd level indirect blocks in 3rd level indirect block */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_2nd_indirect_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
            TEST_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end for */</span>

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill all direct block rows in 4th level indirect block's last 3rd level indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert large object, to force creation of indirect block and</span>
<span class="hl com">     * range of skipped (indirect) blocks that are too small to hold the large</span>
<span class="hl com">     * object</span>
<span class="hl com">     */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> num_first_indirect_rows <span class="hl opt">-</span> <span class="hl num">1</span><span class="hl opt">) +</span> <span class="hl num">1</span><span class="hl opt">;</span>
<span class="hl ppc">#ifdef QAK</span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;obj_size = %Zu</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">,</span> obj_size<span class="hl opt">);</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> num_first_indirect_rows<span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">20</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert object to fill space in (large) block created */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> num_first_indirect_rows<span class="hl opt">) -</span> obj_size<span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">20</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill rows skipped over in (4th level indirect block's first 3rd level</span>
<span class="hl com">     * block's) 2nd level indirect block's direct blocks (and rows of next 4th</span>
<span class="hl com">     * level indirect block's direct blocks)</span>
<span class="hl com">     */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> num_first_indirect_rows<span class="hl opt">;</span> u<span class="hl opt">++) {</span>
        <span class="hl com">/* Direct block rows in 2nd level indirect blocks */</span>
        <span class="hl kwa">for</span><span class="hl opt">(</span>v <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> v <span class="hl opt">&lt;</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span> v<span class="hl opt">++)</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> u<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
                TEST_ERROR

        <span class="hl com">/* Direct block row in 4th level indirect block */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> u<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
            TEST_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end for */</span>

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Add one more object, to create another &quot;large&quot; block */</span>
    obj_size <span class="hl opt">=</span> SMALL_OBJ_SIZE1<span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> num_first_indirect_rows<span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR


    <span class="hl com">/* Perform common file &amp; heap close operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">close_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> tparam<span class="hl opt">,</span> file<span class="hl opt">,</span> f<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">,</span> empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Free resources */</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_fill_3rd_direct_fill_2nd_direct_fill_direct_skip_3rd_indirect_wrap_start_block_add_skipped() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_fill_4th_direct_less_one_fill_2nd_direct_fill_direct_skip_3rd_indirect_wrap_start_block_add_skipped</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test filling all direct blocks in root indirect block and all</span>
<span class="hl com"> *              direct blocks in 2nd level indirect blocks, fill all direct</span>
<span class="hl com"> *              blocks and indirect blocks in 3rd level indirect block, fill all</span>
<span class="hl com"> *              direct &amp; indirect blocks in first row of 4th level indirect</span>
<span class="hl com"> *              blocks, except last one, then fill all direct blocks in first</span>
<span class="hl com"> *              row of 3rd level indirect blocks in 4th level indirect block</span>
<span class="hl com"> *              except the last (3rd level indirect block) in 4th level</span>
<span class="hl com"> *              indirect block, fill direct blocks in last 3rd level indirect</span>
<span class="hl com"> *              block, then insert object insert object that is too large to</span>
<span class="hl com"> *              hold in row of 2nd level indirect blocks in 3rd level indirect</span>
<span class="hl com"> *              block (in 4th level indirect block) (forcing the use of the</span>
<span class="hl com"> *              next row of 4th level blocks), then backfill all skipped direct</span>
<span class="hl com"> *              blocks &amp; extend.</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, April 17, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_fill_4th_direct_less_one_fill_2nd_direct_fill_direct_skip_3rd_indirect_wrap_start_block_add_skipped</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    fheap_heap_ids_t keep_ids<span class="hl opt">;</span>          <span class="hl com">/* Structure to retain heap IDs */</span>
    <span class="hl kwb">unsigned</span>    num_first_indirect_rows<span class="hl opt">;</span>        <span class="hl com">/* Number of rows (of direct blocks) in each of the first indirect blocks */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>             <span class="hl com">/* Size of a file with an empty heap */</span>
    <span class="hl kwb">size_t</span>      obj_size<span class="hl opt">;</span>               <span class="hl com">/* Size of object */</span>
    <span class="hl kwb">size_t</span>      fill_size<span class="hl opt">;</span>              <span class="hl com">/* Size of objects for &quot;bulk&quot; filled blocks */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>
    <span class="hl kwb">const char</span> <span class="hl opt">*</span>base_desc <span class="hl opt">=</span> <span class="hl str">&quot;filling direct blocks, filling 2nd level indirect blocks, filling 3rd level indirect blocks, fill first row of 4th level indirect blocks, except last one, fill first row of 3rd level indirect blocks in last 4th level indirect block except last 3rd level block, fill direct blocks in 3rd level block, and skip row of 2nd indirect blocks of 4th level indirect block's 3rd level indirect block, then backfill and extend, then remove all objects %s&quot;</span><span class="hl opt">;</span>       <span class="hl com">/* Test description */</span>
    <span class="hl kwb">unsigned</span>    u<span class="hl opt">,</span> v<span class="hl opt">;</span>                   <span class="hl com">/* Local index variables */</span>

    <span class="hl com">/* Perform common test initialization operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">begin_test</span><span class="hl opt">(</span>tparam<span class="hl opt">,</span> base_desc<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">, &amp;</span>fill_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Perform common file &amp; heap open operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">open_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">,</span> tparam<span class="hl opt">, &amp;</span>file<span class="hl opt">, &amp;</span>f<span class="hl opt">, &amp;</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR


    <span class="hl com">/* Retrieve info about heap */</span>
    num_first_indirect_rows <span class="hl opt">=</span> <span class="hl kwd">IBLOCK_MAX_DROWS</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">);</span>

    <span class="hl com">/* Fill direct blocks in root indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_root_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill all rows of 2nd level indirect blocks */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_2nd_indirect_rows</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill all rows of 3rd level indirect blocks */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_3rd_indirect_rows</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill first row (except one) of 4th level indirect blocks */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">-</span> <span class="hl num">1</span><span class="hl opt">;</span> u<span class="hl opt">++) {</span>
        <span class="hl com">/* Fill all direct block rows in 4th level indirect block */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
            TEST_ERROR

        <span class="hl com">/* Fill all rows of 2nd level indirect blocks in 4th level indirect block */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_2nd_indirect_rows</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
            TEST_ERROR

        <span class="hl com">/* Fill row of 3rd level indirect blocks in 4th level indirect block */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_3rd_indirect_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
            TEST_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end for */</span>

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill all direct block rows in 4th level indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill all rows of 2nd level indirect blocks in 4th level indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_2nd_indirect_rows</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill row (except one) of 3rd level indirect blocks in 4th level indirect block */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">-</span> <span class="hl num">1</span><span class="hl opt">;</span> u<span class="hl opt">++) {</span>
        <span class="hl com">/* Fill all direct block rows in 3rd level indirect block */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
            TEST_ERROR

        <span class="hl com">/* Fill row of 2nd level indirect blocks in 3rd level indirect block */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_2nd_indirect_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
            TEST_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end for */</span>

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill all direct block rows in 4th level indirect block's last 3rd level indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Account for root indirect block doubling # of rows again */</span>
    <span class="hl com">/* (From 16 rows to the max. # of rows: 22) */</span>
    <span class="hl com">/* (Note: this is tied to the particular doubling table/heap creation parameters) */</span>
    <span class="hl opt">{</span>
        <span class="hl kwb">unsigned</span> max_root_rows<span class="hl opt">;</span>     <span class="hl com">/* Maximum # of rows in root indirect block */</span>
        <span class="hl kwb">unsigned</span> row<span class="hl opt">;</span>               <span class="hl com">/* Row in heap */</span>

        <span class="hl com">/* Get some information for the heap */</span>
        max_root_rows <span class="hl opt">=</span> <span class="hl kwd">HEAP_MAX_ROOT_ROWS</span><span class="hl opt">(</span>fh<span class="hl opt">);</span>

        <span class="hl com">/* Increase heap size &amp; free space */</span>
        <span class="hl kwa">for</span><span class="hl opt">(</span>row <span class="hl opt">=</span> <span class="hl num">16</span><span class="hl opt">;</span> row <span class="hl opt">&lt;</span> max_root_rows<span class="hl opt">;</span> row<span class="hl opt">++) {</span>
            state<span class="hl opt">.</span>man_size <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> row<span class="hl opt">);</span>
            state<span class="hl opt">.</span>man_free_space <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> row<span class="hl opt">);</span>
        <span class="hl opt">}</span> <span class="hl com">/* end for */</span>
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert large object, to force creation of indirect block and</span>
<span class="hl com">     * range of skipped (indirect) blocks that are too small to hold the large</span>
<span class="hl com">     * object</span>
<span class="hl com">     */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> num_first_indirect_rows <span class="hl opt">-</span> <span class="hl num">1</span><span class="hl opt">) +</span> <span class="hl num">1</span><span class="hl opt">;</span>
<span class="hl ppc">#ifdef QAK</span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;obj_size = %Zu</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">,</span> obj_size<span class="hl opt">);</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> num_first_indirect_rows<span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">20</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert object to fill space in (large) block created */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> num_first_indirect_rows<span class="hl opt">) -</span> obj_size<span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">20</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill rows skipped over in (4th level indirect block's first 3rd level</span>
<span class="hl com">     * block's) 2nd level indirect block's direct blocks (and rows of next 4th</span>
<span class="hl com">     * level indirect block's direct blocks)</span>
<span class="hl com">     */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> num_first_indirect_rows<span class="hl opt">;</span> u<span class="hl opt">++) {</span>
        <span class="hl com">/* Direct block rows in 2nd level indirect blocks */</span>
        <span class="hl kwa">for</span><span class="hl opt">(</span>v <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> v <span class="hl opt">&lt;</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span> v<span class="hl opt">++)</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> u<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
                TEST_ERROR

        <span class="hl com">/* Direct block row in 4th level indirect block */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_row</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> u<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
            TEST_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end for */</span>

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Add one more object, to create another &quot;large&quot; block */</span>
    obj_size <span class="hl opt">=</span> SMALL_OBJ_SIZE1<span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> num_first_indirect_rows<span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR


    <span class="hl com">/* Perform common file &amp; heap close operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">close_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> tparam<span class="hl opt">,</span> file<span class="hl opt">,</span> f<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">,</span> empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Free resources */</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_fill_4th_direct_less_one_fill_2nd_direct_fill_direct_skip_3rd_indirect_wrap_start_block_add_skipped() */</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>

<span class="hl ppc">#ifndef QAK</span>

<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_frag_simple</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test inserting objects small enough to fit into first row of</span>
<span class="hl com"> *              direct blocks, but not to share a block with another object,</span>
<span class="hl com"> *              until start-block-size * 2 blocks are reached.  Then, go back</span>
<span class="hl com"> *              and fill in the space in the blocks skipped.</span>
<span class="hl com"> *</span>
<span class="hl com"> *              Then, remove all the objects, in various ways</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, July 24, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_frag_simple</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    fheap_heap_ids_t keep_ids<span class="hl opt">;</span>          <span class="hl com">/* Structure to retain heap IDs */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>             <span class="hl com">/* Size of a file with an empty heap */</span>
    <span class="hl kwb">size_t</span>      obj_size<span class="hl opt">;</span>               <span class="hl com">/* Size of object */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>
    <span class="hl kwb">const char</span> <span class="hl opt">*</span>base_desc <span class="hl opt">=</span> <span class="hl str">&quot;fragmenting small blocks, then backfill and extend, then remove all objects %s&quot;</span><span class="hl opt">;</span>       <span class="hl com">/* Test description */</span>
    <span class="hl kwb">unsigned</span>    u<span class="hl opt">;</span>                      <span class="hl com">/* Local index variables */</span>

    <span class="hl com">/* Perform common test initialization operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">begin_test</span><span class="hl opt">(</span>tparam<span class="hl opt">,</span> base_desc<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">,</span> NULL<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Perform common file &amp; heap open operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">open_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">,</span> tparam<span class="hl opt">, &amp;</span>file<span class="hl opt">, &amp;</span>f<span class="hl opt">, &amp;</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR


    <span class="hl com">/* Insert objects small enough to fit into initial blocks, but not to</span>
<span class="hl com">     * share them with other objects of the same size, until the next larger</span>
<span class="hl com">     * block size is reached.</span>
<span class="hl com">     */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">) /</span> <span class="hl num">2</span><span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">=</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span> u<span class="hl opt">++) {</span>
        state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
            TEST_ERROR
        <span class="hl kwa">if</span><span class="hl opt">(</span>u <span class="hl opt">==</span> <span class="hl num">0</span><span class="hl opt">) {</span>
            state<span class="hl opt">.</span>man_size <span class="hl opt">=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
            state<span class="hl opt">.</span>man_free_space <span class="hl opt">+= (</span>cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">-</span> <span class="hl num">1</span><span class="hl opt">) *</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
        <span class="hl opt">}</span> <span class="hl com">/* end if */</span>
    <span class="hl opt">}</span> <span class="hl com">/* end for */</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">) *</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">) *</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span> u<span class="hl opt">++) {</span>
        state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
            TEST_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end for */</span>

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* (Account for doubling root indirect block for rows 3-4 */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> <span class="hl num">2</span><span class="hl opt">;</span> u<span class="hl opt">++) {</span>
        state<span class="hl opt">.</span>man_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> u <span class="hl opt">+</span> <span class="hl num">2</span><span class="hl opt">) *</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span>
        state<span class="hl opt">.</span>man_free_space <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> u <span class="hl opt">+</span> <span class="hl num">2</span><span class="hl opt">) *</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span>
    <span class="hl opt">}</span> <span class="hl com">/* end for */</span>

    <span class="hl com">/* Add one more object, to create a 2 * start_block_size block */</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">2</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Go back and fill in direct blocks of initial block size (which have large free space in them) */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">) -</span> obj_size<span class="hl opt">;</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span> u<span class="hl opt">++)</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">20</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
            TEST_ERROR
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span> u<span class="hl opt">++)</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">20</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
            TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill in 2 * start_block_size block */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">2</span><span class="hl opt">) - ((</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">) /</span> <span class="hl num">2</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">20</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR


    <span class="hl com">/* Perform common file &amp; heap close operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">close_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> tparam<span class="hl opt">,</span> file<span class="hl opt">,</span> f<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">,</span> empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Free resources */</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_frag_simple() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_frag_direct</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test inserting small object to fit into each direct block</span>
<span class="hl com"> *              in root block, but not to share a block with another object,</span>
<span class="hl com"> *              Then, go back and fill in the space in the blocks skipped.</span>
<span class="hl com"> *</span>
<span class="hl com"> *              Then, go back and remove all objects</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Tuesday, July 25, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_frag_direct</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    fheap_heap_ids_t keep_ids<span class="hl opt">;</span>          <span class="hl com">/* Structure to retain heap IDs */</span>
    <span class="hl kwb">unsigned</span>    root_direct_rows<span class="hl opt">;</span>       <span class="hl com">/* Number of rows in root indirect block */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>             <span class="hl com">/* Size of a file with an empty heap */</span>
    <span class="hl kwb">size_t</span>      obj_size<span class="hl opt">;</span>               <span class="hl com">/* Size of object */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>
    <span class="hl kwb">const char</span> <span class="hl opt">*</span>base_desc <span class="hl opt">=</span> <span class="hl str">&quot;fragmenting direct blocks, then backfill and extend, then remove all objects %s&quot;</span><span class="hl opt">;</span>       <span class="hl com">/* Test description */</span>
    <span class="hl kwb">unsigned</span>    u<span class="hl opt">,</span> v<span class="hl opt">;</span>                   <span class="hl com">/* Local index variables */</span>

    <span class="hl com">/* Perform common test initialization operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">begin_test</span><span class="hl opt">(</span>tparam<span class="hl opt">,</span> base_desc<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">,</span> NULL<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Perform common file &amp; heap open operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">open_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">,</span> tparam<span class="hl opt">, &amp;</span>file<span class="hl opt">, &amp;</span>f<span class="hl opt">, &amp;</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR


    <span class="hl com">/* Retrieve # of direct rows in root indirect block */</span>
    root_direct_rows <span class="hl opt">=</span> <span class="hl kwd">H5HF_get_dtable_max_drows_test</span><span class="hl opt">(</span>fh<span class="hl opt">);</span>

    <span class="hl com">/* Insert objects small enough to fit into each direct block, but not to</span>
<span class="hl com">     * share them with other objects of the same size.</span>
<span class="hl com">     */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">) /</span> <span class="hl num">2</span><span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">=</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    <span class="hl com">/* First row */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span> u<span class="hl opt">++) {</span>
        state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
            TEST_ERROR
        <span class="hl kwa">if</span><span class="hl opt">(</span>u <span class="hl opt">==</span> <span class="hl num">0</span><span class="hl opt">) {</span>
            state<span class="hl opt">.</span>man_size <span class="hl opt">=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
            state<span class="hl opt">.</span>man_free_space <span class="hl opt">+= (</span>cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">-</span> <span class="hl num">1</span><span class="hl opt">) *</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
        <span class="hl opt">}</span> <span class="hl com">/* end if */</span>
    <span class="hl opt">}</span> <span class="hl com">/* end for */</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">) *</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">) *</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span>
    <span class="hl com">/* Second row */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span> u<span class="hl opt">++) {</span>
        state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
            TEST_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end for */</span>

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* (Account for doubling root indirect block for rows 3-4 */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> <span class="hl num">2</span><span class="hl opt">;</span> u<span class="hl opt">++) {</span>
        state<span class="hl opt">.</span>man_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> u <span class="hl opt">+</span> <span class="hl num">2</span><span class="hl opt">) *</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span>
        state<span class="hl opt">.</span>man_free_space <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> u <span class="hl opt">+</span> <span class="hl num">2</span><span class="hl opt">) *</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span>
    <span class="hl opt">}</span> <span class="hl com">/* end for */</span>

    <span class="hl com">/* Rows 3-4 */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> <span class="hl num">2</span><span class="hl opt">;</span> u<span class="hl opt">++) {</span>
        obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> u <span class="hl opt">+</span> <span class="hl num">2</span><span class="hl opt">) /</span> <span class="hl num">2</span><span class="hl opt">;</span>
        <span class="hl kwa">for</span><span class="hl opt">(</span>v <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> v <span class="hl opt">&lt;</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span> v<span class="hl opt">++) {</span>
            state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> u <span class="hl opt">+</span> <span class="hl num">2</span><span class="hl opt">);</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
                TEST_ERROR
        <span class="hl opt">}</span> <span class="hl com">/* end for */</span>
    <span class="hl opt">}</span> <span class="hl com">/* end for */</span>

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* (Account for doubling root indirect block for rows 5-8 */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> <span class="hl num">4</span><span class="hl opt">;</span> u<span class="hl opt">++) {</span>
        state<span class="hl opt">.</span>man_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> u <span class="hl opt">+</span> <span class="hl num">4</span><span class="hl opt">) *</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span>
        state<span class="hl opt">.</span>man_free_space <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> u <span class="hl opt">+</span> <span class="hl num">4</span><span class="hl opt">) *</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span>
    <span class="hl opt">}</span> <span class="hl com">/* end for */</span>

    <span class="hl com">/* Rows 5-8 */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> <span class="hl num">4</span><span class="hl opt">;</span> u<span class="hl opt">++) {</span>
        obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> u <span class="hl opt">+</span> <span class="hl num">4</span><span class="hl opt">) /</span> <span class="hl num">2</span><span class="hl opt">;</span>
        <span class="hl kwa">for</span><span class="hl opt">(</span>v <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> v <span class="hl opt">&lt;</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span> v<span class="hl opt">++) {</span>
            state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> u <span class="hl opt">+</span> <span class="hl num">4</span><span class="hl opt">);</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
                TEST_ERROR
        <span class="hl opt">}</span> <span class="hl com">/* end for */</span>
    <span class="hl opt">}</span> <span class="hl com">/* end for */</span>

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* (Account for doubling root indirect block for rows 9-16 */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> <span class="hl num">8</span><span class="hl opt">;</span> u<span class="hl opt">++) {</span>
        state<span class="hl opt">.</span>man_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> u <span class="hl opt">+</span> <span class="hl num">8</span><span class="hl opt">) *</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span>
        state<span class="hl opt">.</span>man_free_space <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> u <span class="hl opt">+</span> <span class="hl num">8</span><span class="hl opt">) *</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span>
    <span class="hl opt">}</span> <span class="hl com">/* end for */</span>

    <span class="hl com">/* Row 9 (last direct block row) */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">8</span><span class="hl opt">) /</span> <span class="hl num">2</span><span class="hl opt">;</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>v <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> v <span class="hl opt">&lt;</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span> v<span class="hl opt">++) {</span>
        state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">8</span><span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
            TEST_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end for */</span>

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Go back and backfill all root block's direct blocks */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> root_direct_rows<span class="hl opt">;</span> u<span class="hl opt">++) {</span>
        obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> u<span class="hl opt">) - ((</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> u<span class="hl opt">) /</span> <span class="hl num">2</span><span class="hl opt">);</span>
        <span class="hl kwa">for</span><span class="hl opt">(</span>v <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> v <span class="hl opt">&lt;</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span> v<span class="hl opt">++)</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">20</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
                TEST_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end for */</span>


    <span class="hl com">/* Perform common file &amp; heap close operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">close_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> tparam<span class="hl opt">,</span> file<span class="hl opt">,</span> f<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">,</span> empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Free resources */</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_frag_direct() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_frag_2nd_direct</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test filling all direct blocks in root indirect block, then</span>
<span class="hl com"> *              inserting small object to fit into each direct block</span>
<span class="hl com"> *              in 2nd level indirect block, but not to share a block with</span>
<span class="hl com"> *              another object.</span>
<span class="hl com"> *              Then, go back and fill in the space in the blocks skipped.</span>
<span class="hl com"> *</span>
<span class="hl com"> *              Then, go back and remove all the objects</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Tuesday, July 25, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_frag_2nd_direct</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    fheap_heap_ids_t keep_ids<span class="hl opt">;</span>          <span class="hl com">/* Structure to retain heap IDs */</span>
    <span class="hl kwb">unsigned</span>    num_first_indirect_rows<span class="hl opt">;</span>        <span class="hl com">/* Number of rows (of direct blocks) in each of the first indirect blocks */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>             <span class="hl com">/* Size of a file with an empty heap */</span>
    <span class="hl kwb">size_t</span>      obj_size<span class="hl opt">;</span>               <span class="hl com">/* Size of object */</span>
    <span class="hl kwb">size_t</span>      fill_size<span class="hl opt">;</span>              <span class="hl com">/* Size of objects for &quot;bulk&quot; filled blocks */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>
    <span class="hl kwb">const char</span> <span class="hl opt">*</span>base_desc <span class="hl opt">=</span> <span class="hl str">&quot;fill root direct blocks, then fragment 2nd level indirect block's direct blocks, then backfill and extend, then remove all objects %s&quot;</span><span class="hl opt">;</span>       <span class="hl com">/* Test description */</span>
    <span class="hl kwb">unsigned</span>    u<span class="hl opt">,</span> v<span class="hl opt">;</span>                   <span class="hl com">/* Local index variables */</span>

    <span class="hl com">/* Perform common test initialization operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">begin_test</span><span class="hl opt">(</span>tparam<span class="hl opt">,</span> base_desc<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">, &amp;</span>fill_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Perform common file &amp; heap open operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">open_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">,</span> tparam<span class="hl opt">, &amp;</span>file<span class="hl opt">, &amp;</span>f<span class="hl opt">, &amp;</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR


    <span class="hl com">/* Compute # of bits used in first row */</span>
    num_first_indirect_rows <span class="hl opt">=</span> <span class="hl kwd">IBLOCK_MAX_DROWS</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl ppc">#ifdef QAK</span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;num_first_indirect_rows = %u</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">,</span> num_first_indirect_rows<span class="hl opt">);</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>

    <span class="hl com">/* Fill direct blocks in root indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_root_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert objects small enough to fit into each direct block, but not to</span>
<span class="hl com">     * share them with other objects of the same size.</span>
<span class="hl com">     */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> num_first_indirect_rows<span class="hl opt">;</span> u<span class="hl opt">++) {</span>
        obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> u<span class="hl opt">) /</span> <span class="hl num">2</span><span class="hl opt">;</span>
        <span class="hl kwa">for</span><span class="hl opt">(</span>v <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> v <span class="hl opt">&lt;</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span> v<span class="hl opt">++) {</span>
            state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> u<span class="hl opt">);</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
                TEST_ERROR
        <span class="hl opt">}</span> <span class="hl com">/* end for */</span>
    <span class="hl opt">}</span> <span class="hl com">/* end for */</span>

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Go back and backfill all 2nd level indirect block's direct blocks */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> num_first_indirect_rows<span class="hl opt">;</span> u<span class="hl opt">++) {</span>
        obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> u<span class="hl opt">) - ((</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> u<span class="hl opt">) /</span> <span class="hl num">2</span><span class="hl opt">);</span>
        <span class="hl kwa">for</span><span class="hl opt">(</span>v <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> v <span class="hl opt">&lt;</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span> v<span class="hl opt">++)</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">20</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
                TEST_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end for */</span>


    <span class="hl com">/* Perform common file &amp; heap close operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">close_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> tparam<span class="hl opt">,</span> file<span class="hl opt">,</span> f<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">,</span> empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Free resources */</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_frag_2nd_direct() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_man_frag_3rd_direct</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test filling all direct blocks in root indirect block and</span>
<span class="hl com"> *              all 2nd level indirect blocks, then</span>
<span class="hl com"> *              inserting small object to fit into each direct block</span>
<span class="hl com"> *              in 3rd level indirect block, but not to share a block with</span>
<span class="hl com"> *              another object.</span>
<span class="hl com"> *              Then, go back and fill in the space in the blocks skipped.</span>
<span class="hl com"> *</span>
<span class="hl com"> *              Then, go back and remove all objects</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Tuesday, July 25, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_man_frag_3rd_direct</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    fheap_heap_ids_t keep_ids<span class="hl opt">;</span>          <span class="hl com">/* Structure to retain heap IDs */</span>
    <span class="hl kwb">unsigned</span>    root_direct_rows<span class="hl opt">;</span>       <span class="hl com">/* Number of rows in root indirect block */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>             <span class="hl com">/* Size of a file with an empty heap */</span>
    <span class="hl kwb">size_t</span>      obj_size<span class="hl opt">;</span>               <span class="hl com">/* Size of object */</span>
    <span class="hl kwb">size_t</span>      fill_size<span class="hl opt">;</span>              <span class="hl com">/* Size of objects for &quot;bulk&quot; filled blocks */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>
    <span class="hl kwb">const char</span> <span class="hl opt">*</span>base_desc <span class="hl opt">=</span> <span class="hl str">&quot;fill root direct blocks and 2nd level indirect blocks, then fragment 3rd level indirect block's direct blocks, then backfill and extend, then remove all objects %s&quot;</span><span class="hl opt">;</span>       <span class="hl com">/* Test description */</span>
    <span class="hl kwb">unsigned</span>    u<span class="hl opt">,</span> v<span class="hl opt">;</span>                   <span class="hl com">/* Local index variables */</span>

    <span class="hl com">/* Perform common test initialization operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">begin_test</span><span class="hl opt">(</span>tparam<span class="hl opt">,</span> base_desc<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">, &amp;</span>fill_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Perform common file &amp; heap open operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">open_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">,</span> tparam<span class="hl opt">, &amp;</span>file<span class="hl opt">, &amp;</span>f<span class="hl opt">, &amp;</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR


    <span class="hl com">/* Compute # of direct rows in root indirect block */</span>
    root_direct_rows <span class="hl opt">=</span> <span class="hl kwd">DTABLE_MAX_DROWS</span><span class="hl opt">(</span>fh<span class="hl opt">);</span>

    <span class="hl com">/* Fill direct blocks in root indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_root_direct</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Fill all rows of 2nd level indirect blocks in root indirect block */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">fill_all_2nd_indirect_rows</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fill_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert objects small enough to fit into each direct block, but not to</span>
<span class="hl com">     * share them with other objects of the same size.</span>
<span class="hl com">     */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> root_direct_rows<span class="hl opt">;</span> u<span class="hl opt">++) {</span>
        obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> u<span class="hl opt">) /</span> <span class="hl num">2</span><span class="hl opt">;</span>
        <span class="hl kwa">for</span><span class="hl opt">(</span>v <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> v <span class="hl opt">&lt;</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span> v<span class="hl opt">++) {</span>
            state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> u<span class="hl opt">);</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">10</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
                TEST_ERROR
        <span class="hl opt">}</span> <span class="hl com">/* end for */</span>
    <span class="hl opt">}</span> <span class="hl com">/* end for */</span>

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Go back and backfill all 3rd level indirect block's direct blocks */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> root_direct_rows<span class="hl opt">;</span> u<span class="hl opt">++) {</span>
        obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> u<span class="hl opt">) - ((</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> u<span class="hl opt">) /</span> <span class="hl num">2</span><span class="hl opt">);</span>
        <span class="hl kwa">for</span><span class="hl opt">(</span>v <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> v <span class="hl opt">&lt;</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width<span class="hl opt">;</span> v<span class="hl opt">++)</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">20</span><span class="hl opt">,</span> obj_size<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
                TEST_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end for */</span>


    <span class="hl com">/* Perform common file &amp; heap close operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">close_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> tparam<span class="hl opt">,</span> file<span class="hl opt">,</span> f<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">,</span> empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Free resources */</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_man_frag_3rd_direct() */</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>

<span class="hl ppc">#ifndef QAK</span>

<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_huge_insert_one</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test inserting one huge object in the heap</span>
<span class="hl com"> *</span>
<span class="hl com"> *              Then, remove all the objects, in various ways</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, August  7, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_huge_insert_one</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    fheap_heap_ids_t keep_ids<span class="hl opt">;</span>          <span class="hl com">/* Structure to retain heap IDs */</span>
    <span class="hl kwb">size_t</span>      id_len<span class="hl opt">;</span>                 <span class="hl com">/* Size of fractal heap IDs */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>             <span class="hl com">/* Size of a file with an empty heap */</span>
    h5_stat_size_t       file_size<span class="hl opt">;</span>              <span class="hl com">/* Size of file currently */</span>
    <span class="hl kwb">unsigned char</span> <span class="hl opt">*</span>heap_id <span class="hl opt">=</span> NULL<span class="hl opt">;</span>      <span class="hl com">/* Heap ID for object */</span>
    <span class="hl kwb">size_t</span>      obj_size<span class="hl opt">;</span>               <span class="hl com">/* Size of object */</span>
    <span class="hl kwb">size_t</span>      robj_size<span class="hl opt">;</span>              <span class="hl com">/* Size of object read */</span>
    <span class="hl kwb">unsigned char</span> obj_type<span class="hl opt">;</span>             <span class="hl com">/* Type of storage for object */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>
    <span class="hl kwb">const char</span> <span class="hl opt">*</span>base_desc <span class="hl opt">=</span> <span class="hl str">&quot;insert one huge object, then remove %s&quot;</span><span class="hl opt">;</span>       <span class="hl com">/* Test description */</span>

    <span class="hl com">/* Perform common test initialization operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">begin_test</span><span class="hl opt">(</span>tparam<span class="hl opt">,</span> base_desc<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">,</span> NULL<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Perform common file &amp; heap open operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">open_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">,</span> tparam<span class="hl opt">, &amp;</span>file<span class="hl opt">, &amp;</span>f<span class="hl opt">, &amp;</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Allocate heap ID(s) */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>heap_id <span class="hl opt">= (</span><span class="hl kwb">unsigned char</span> <span class="hl opt">*)</span><span class="hl kwd">H5MM_malloc</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>actual_id_len<span class="hl opt">)))</span>
        TEST_ERROR

    <span class="hl com">/* Make certain that 'huge' object's heap IDs are correct size */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">!=</span> tparam<span class="hl opt">-&gt;</span>actual_id_len<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert object too large for managed heap blocks */</span>
    obj_size <span class="hl opt">=</span> SMALL_STAND_SIZE <span class="hl opt">+</span> <span class="hl num">1</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_insert</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> obj_size<span class="hl opt">,</span> shared_wobj_g<span class="hl opt">,</span> heap_id<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_type_test</span><span class="hl opt">(</span>heap_id<span class="hl opt">, &amp;</span>obj_type<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>obj_type <span class="hl opt">!=</span> H5HF_ID_TYPE_HUGE<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check up on heap... */</span>
    state<span class="hl opt">.</span>huge_size <span class="hl opt">=</span> obj_size<span class="hl opt">;</span>
    state<span class="hl opt">.</span>huge_nobjs <span class="hl opt">=</span> <span class="hl num">1</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Read in huge object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_obj_len</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id<span class="hl opt">, &amp;</span>robj_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>obj_size <span class="hl opt">!=</span> robj_size<span class="hl opt">)</span>
        TEST_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(</span>shared_robj_g<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> obj_size<span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_read</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id<span class="hl opt">,</span> shared_robj_g<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">HDmemcmp</span><span class="hl opt">(</span>shared_wobj_g<span class="hl opt">,</span> shared_robj_g<span class="hl opt">,</span> obj_size<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Delete individual objects, if we won't be deleting the entire heap later */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>del_dir <span class="hl opt">!=</span> FHEAP_DEL_HEAP<span class="hl opt">) {</span>
        <span class="hl com">/* Remove object from heap */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR

        <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            TEST_ERROR

        <span class="hl com">/* Check up on heap... */</span>
        state<span class="hl opt">.</span>huge_size <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
        state<span class="hl opt">.</span>huge_nobjs <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
            TEST_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>


    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>

    <span class="hl com">/* Check for deleting the entire heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>del_dir <span class="hl opt">==</span> FHEAP_DEL_HEAP<span class="hl opt">) {</span>
        <span class="hl com">/* Delete heap */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_delete</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Get the size of the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file_size <span class="hl opt">=</span> <span class="hl kwd">h5_get_file_size</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR
<span class="hl ppc">#ifdef QAK</span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;file_size = %lu</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">, (</span><span class="hl kwb">unsigned long</span><span class="hl opt">)</span>file_size<span class="hl opt">);</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>

    <span class="hl com">/* Verify the file is correct size */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>file_size <span class="hl opt">!=</span> empty_size<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Free resources */</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>heap_id<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>heap_id<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_huge_insert_one() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_huge_insert_two</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test inserting two huge objects in the heap</span>
<span class="hl com"> *</span>
<span class="hl com"> *              Then, remove all the objects, in various ways</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Friday, August 11, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_huge_insert_two</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    fheap_heap_ids_t keep_ids<span class="hl opt">;</span>          <span class="hl com">/* Structure to retain heap IDs */</span>
    <span class="hl kwb">size_t</span>      id_len<span class="hl opt">;</span>                 <span class="hl com">/* Size of fractal heap IDs */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>             <span class="hl com">/* Size of a file with an empty heap */</span>
    h5_stat_size_t       file_size<span class="hl opt">;</span>              <span class="hl com">/* Size of file currently */</span>
    <span class="hl kwb">unsigned char</span> <span class="hl opt">*</span>heap_id <span class="hl opt">=</span> NULL<span class="hl opt">;</span>      <span class="hl com">/* Heap ID for first object */</span>
    <span class="hl kwb">unsigned char</span> <span class="hl opt">*</span>heap_id2 <span class="hl opt">=</span> NULL<span class="hl opt">;</span>     <span class="hl com">/* Heap ID for second object */</span>
    <span class="hl kwb">size_t</span>      obj_size<span class="hl opt">;</span>               <span class="hl com">/* Size of object */</span>
    <span class="hl kwb">size_t</span>      robj_size<span class="hl opt">;</span>              <span class="hl com">/* Size of object read */</span>
    <span class="hl kwb">unsigned char</span> obj_type<span class="hl opt">;</span>             <span class="hl com">/* Type of storage for object */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>
    <span class="hl kwb">const char</span> <span class="hl opt">*</span>base_desc <span class="hl opt">=</span> <span class="hl str">&quot;insert two huge objects, then remove %s&quot;</span><span class="hl opt">;</span>       <span class="hl com">/* Test description */</span>

    <span class="hl com">/* Perform common test initialization operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">begin_test</span><span class="hl opt">(</span>tparam<span class="hl opt">,</span> base_desc<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">,</span> NULL<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Perform common file &amp; heap open operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">open_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">,</span> tparam<span class="hl opt">, &amp;</span>file<span class="hl opt">, &amp;</span>f<span class="hl opt">, &amp;</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Allocate heap ID(s) */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>heap_id <span class="hl opt">= (</span><span class="hl kwb">unsigned char</span> <span class="hl opt">*)</span><span class="hl kwd">H5MM_malloc</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>actual_id_len<span class="hl opt">)))</span>
        TEST_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>heap_id2 <span class="hl opt">= (</span><span class="hl kwb">unsigned char</span> <span class="hl opt">*)</span><span class="hl kwd">H5MM_malloc</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>actual_id_len<span class="hl opt">)))</span>
        TEST_ERROR

    <span class="hl com">/* Make certain that 'huge' object's heap IDs are correct size */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">!=</span> tparam<span class="hl opt">-&gt;</span>actual_id_len<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert object too large for managed heap blocks */</span>
    obj_size <span class="hl opt">=</span> SMALL_STAND_SIZE <span class="hl opt">+</span> <span class="hl num">1</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_insert</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> obj_size<span class="hl opt">,</span> shared_wobj_g<span class="hl opt">,</span> heap_id<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_type_test</span><span class="hl opt">(</span>heap_id<span class="hl opt">, &amp;</span>obj_type<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>obj_type <span class="hl opt">!=</span> H5HF_ID_TYPE_HUGE<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check up on heap... */</span>
    state<span class="hl opt">.</span>huge_size <span class="hl opt">=</span> obj_size<span class="hl opt">;</span>
    state<span class="hl opt">.</span>huge_nobjs <span class="hl opt">=</span> <span class="hl num">1</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Read in huge object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_obj_len</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id<span class="hl opt">, &amp;</span>robj_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>obj_size <span class="hl opt">!=</span> robj_size<span class="hl opt">)</span>
        TEST_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(</span>shared_robj_g<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> obj_size<span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_read</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id<span class="hl opt">,</span> shared_robj_g<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">HDmemcmp</span><span class="hl opt">(</span>shared_wobj_g<span class="hl opt">,</span> shared_robj_g<span class="hl opt">,</span> obj_size<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Insert second object too large for managed heap blocks */</span>
    obj_size <span class="hl opt">=</span> SMALL_STAND_SIZE <span class="hl opt">+</span> <span class="hl num">1</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_insert</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> obj_size<span class="hl opt">,</span> shared_wobj_g<span class="hl opt">,</span> heap_id2<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_type_test</span><span class="hl opt">(</span>heap_id2<span class="hl opt">, &amp;</span>obj_type<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>obj_type <span class="hl opt">!=</span> H5HF_ID_TYPE_HUGE<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check up on heap... */</span>
    state<span class="hl opt">.</span>huge_size <span class="hl opt">+=</span> obj_size <span class="hl opt">;</span>
    state<span class="hl opt">.</span>huge_nobjs <span class="hl opt">=</span> <span class="hl num">2</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Read in second huge object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_obj_len</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id2<span class="hl opt">, &amp;</span>robj_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>obj_size <span class="hl opt">!=</span> robj_size<span class="hl opt">)</span>
        TEST_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(</span>shared_robj_g<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> obj_size<span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_read</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id2<span class="hl opt">,</span> shared_robj_g<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">HDmemcmp</span><span class="hl opt">(</span>shared_wobj_g<span class="hl opt">,</span> shared_robj_g<span class="hl opt">,</span> obj_size<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Delete individual objects, if we won't be deleting the entire heap later */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>del_dir <span class="hl opt">!=</span> FHEAP_DEL_HEAP<span class="hl opt">) {</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>del_dir <span class="hl opt">==</span> FHEAP_DEL_FORWARD<span class="hl opt">) {</span>
            <span class="hl com">/* Remove first object from heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                TEST_ERROR

            <span class="hl com">/* Check up on heap... */</span>
            state<span class="hl opt">.</span>huge_size <span class="hl opt">=</span> obj_size<span class="hl opt">;</span>
            state<span class="hl opt">.</span>huge_nobjs <span class="hl opt">=</span> <span class="hl num">1</span><span class="hl opt">;</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
                TEST_ERROR

            <span class="hl com">/* Remove second object from heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id2<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                TEST_ERROR

            <span class="hl com">/* Check up on heap... */</span>
            state<span class="hl opt">.</span>huge_size <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
            state<span class="hl opt">.</span>huge_nobjs <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
                TEST_ERROR
        <span class="hl opt">}</span> <span class="hl com">/* end if */</span>
        <span class="hl kwa">else</span> <span class="hl opt">{</span>
            <span class="hl com">/* Remove second object from heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id2<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                TEST_ERROR

            <span class="hl com">/* Check up on heap... */</span>
            state<span class="hl opt">.</span>huge_size <span class="hl opt">=</span> obj_size<span class="hl opt">;</span>
            state<span class="hl opt">.</span>huge_nobjs <span class="hl opt">=</span> <span class="hl num">1</span><span class="hl opt">;</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
                TEST_ERROR

            <span class="hl com">/* Remove first object from heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                TEST_ERROR

            <span class="hl com">/* Check up on heap... */</span>
            state<span class="hl opt">.</span>huge_size <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
            state<span class="hl opt">.</span>huge_nobjs <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
                TEST_ERROR
        <span class="hl opt">}</span> <span class="hl com">/* end else */</span>
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>


    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>

    <span class="hl com">/* Check for deleting the entire heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>del_dir <span class="hl opt">==</span> FHEAP_DEL_HEAP<span class="hl opt">) {</span>
        <span class="hl com">/* Delete heap */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_delete</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Get the size of the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file_size <span class="hl opt">=</span> <span class="hl kwd">h5_get_file_size</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR
<span class="hl ppc">#ifdef QAK</span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;file_size = %lu</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">, (</span><span class="hl kwb">unsigned long</span><span class="hl opt">)</span>file_size<span class="hl opt">);</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>

    <span class="hl com">/* Verify the file is correct size */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>file_size <span class="hl opt">!=</span> empty_size<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Free resources */</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>heap_id<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>heap_id2<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>heap_id<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>heap_id2<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_huge_insert_two() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_huge_insert_three</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test inserting three huge objects in the heap</span>
<span class="hl com"> *</span>
<span class="hl com"> *              Then, remove all the objects, in various ways</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Friday, August 11, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_huge_insert_three</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    fheap_heap_ids_t keep_ids<span class="hl opt">;</span>          <span class="hl com">/* Structure to retain heap IDs */</span>
    <span class="hl kwb">size_t</span>      id_len<span class="hl opt">;</span>                 <span class="hl com">/* Size of fractal heap IDs */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>             <span class="hl com">/* Size of a file with an empty heap */</span>
    h5_stat_size_t       file_size<span class="hl opt">;</span>              <span class="hl com">/* Size of file currently */</span>
    <span class="hl kwb">unsigned char</span> <span class="hl opt">*</span>heap_id <span class="hl opt">=</span> NULL<span class="hl opt">;</span>      <span class="hl com">/* Heap ID for first object */</span>
    <span class="hl kwb">unsigned char</span> <span class="hl opt">*</span>heap_id2 <span class="hl opt">=</span> NULL<span class="hl opt">;</span>     <span class="hl com">/* Heap ID for second object */</span>
    <span class="hl kwb">unsigned char</span> <span class="hl opt">*</span>heap_id3 <span class="hl opt">=</span> NULL<span class="hl opt">;</span>     <span class="hl com">/* Heap ID for third object */</span>
    <span class="hl kwb">size_t</span>      obj_size<span class="hl opt">;</span>               <span class="hl com">/* Size of object */</span>
    <span class="hl kwb">size_t</span>      robj_size<span class="hl opt">;</span>              <span class="hl com">/* Size of object read */</span>
    <span class="hl kwb">unsigned char</span> obj_type<span class="hl opt">;</span>             <span class="hl com">/* Type of storage for object */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>
    <span class="hl kwb">const char</span> <span class="hl opt">*</span>base_desc <span class="hl opt">=</span> <span class="hl str">&quot;insert three huge objects, then remove %s&quot;</span><span class="hl opt">;</span>       <span class="hl com">/* Test description */</span>

    <span class="hl com">/* Perform common test initialization operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">begin_test</span><span class="hl opt">(</span>tparam<span class="hl opt">,</span> base_desc<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">,</span> NULL<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Perform common file &amp; heap open operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">open_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">,</span> tparam<span class="hl opt">, &amp;</span>file<span class="hl opt">, &amp;</span>f<span class="hl opt">, &amp;</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Allocate heap ID(s) */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>heap_id <span class="hl opt">= (</span><span class="hl kwb">unsigned char</span> <span class="hl opt">*)</span><span class="hl kwd">H5MM_malloc</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>actual_id_len<span class="hl opt">)))</span>
        TEST_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>heap_id2 <span class="hl opt">= (</span><span class="hl kwb">unsigned char</span> <span class="hl opt">*)</span><span class="hl kwd">H5MM_malloc</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>actual_id_len<span class="hl opt">)))</span>
        TEST_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>heap_id3 <span class="hl opt">= (</span><span class="hl kwb">unsigned char</span> <span class="hl opt">*)</span><span class="hl kwd">H5MM_malloc</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>actual_id_len<span class="hl opt">)))</span>
        TEST_ERROR

    <span class="hl com">/* Make certain that 'huge' object's heap IDs are correct size */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">!=</span> tparam<span class="hl opt">-&gt;</span>actual_id_len<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert first object too large for managed heap blocks */</span>
    obj_size <span class="hl opt">=</span> SMALL_STAND_SIZE <span class="hl opt">+</span> <span class="hl num">1</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_insert</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> obj_size<span class="hl opt">,</span> shared_wobj_g<span class="hl opt">,</span> heap_id<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_type_test</span><span class="hl opt">(</span>heap_id<span class="hl opt">, &amp;</span>obj_type<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>obj_type <span class="hl opt">!=</span> H5HF_ID_TYPE_HUGE<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check up on heap... */</span>
    state<span class="hl opt">.</span>huge_size <span class="hl opt">=</span> obj_size<span class="hl opt">;</span>
    state<span class="hl opt">.</span>huge_nobjs <span class="hl opt">=</span> <span class="hl num">1</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Read in first huge object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_obj_len</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id<span class="hl opt">, &amp;</span>robj_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>obj_size <span class="hl opt">!=</span> robj_size<span class="hl opt">)</span>
        TEST_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(</span>shared_robj_g<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> obj_size<span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_read</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id<span class="hl opt">,</span> shared_robj_g<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">HDmemcmp</span><span class="hl opt">(</span>shared_wobj_g<span class="hl opt">,</span> shared_robj_g<span class="hl opt">,</span> obj_size<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Insert second object too large for managed heap blocks */</span>
    obj_size <span class="hl opt">=</span> SMALL_STAND_SIZE <span class="hl opt">+</span> <span class="hl num">2</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_insert</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> obj_size<span class="hl opt">,</span> shared_wobj_g<span class="hl opt">,</span> heap_id2<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_type_test</span><span class="hl opt">(</span>heap_id2<span class="hl opt">, &amp;</span>obj_type<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>obj_type <span class="hl opt">!=</span> H5HF_ID_TYPE_HUGE<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check up on heap... */</span>
    state<span class="hl opt">.</span>huge_size <span class="hl opt">+=</span> obj_size<span class="hl opt">;</span>
    state<span class="hl opt">.</span>huge_nobjs <span class="hl opt">=</span> <span class="hl num">2</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Read in second huge object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_obj_len</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id2<span class="hl opt">, &amp;</span>robj_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>obj_size <span class="hl opt">!=</span> robj_size<span class="hl opt">)</span>
        TEST_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(</span>shared_robj_g<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> obj_size<span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_read</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id2<span class="hl opt">,</span> shared_robj_g<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">HDmemcmp</span><span class="hl opt">(</span>shared_wobj_g<span class="hl opt">,</span> shared_robj_g<span class="hl opt">,</span> obj_size<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Insert third object too large for managed heap blocks */</span>
    obj_size <span class="hl opt">=</span> SMALL_STAND_SIZE <span class="hl opt">+</span> <span class="hl num">3</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_insert</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> obj_size<span class="hl opt">,</span> shared_wobj_g<span class="hl opt">,</span> heap_id3<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_type_test</span><span class="hl opt">(</span>heap_id3<span class="hl opt">, &amp;</span>obj_type<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>obj_type <span class="hl opt">!=</span> H5HF_ID_TYPE_HUGE<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check up on heap... */</span>
    state<span class="hl opt">.</span>huge_size <span class="hl opt">+=</span> obj_size<span class="hl opt">;</span>
    state<span class="hl opt">.</span>huge_nobjs <span class="hl opt">=</span> <span class="hl num">3</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Read in third huge object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_obj_len</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id3<span class="hl opt">, &amp;</span>robj_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>obj_size <span class="hl opt">!=</span> robj_size<span class="hl opt">)</span>
        TEST_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(</span>shared_robj_g<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> obj_size<span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_read</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id3<span class="hl opt">,</span> shared_robj_g<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">HDmemcmp</span><span class="hl opt">(</span>shared_wobj_g<span class="hl opt">,</span> shared_robj_g<span class="hl opt">,</span> obj_size<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Delete individual objects, if we won't be deleting the entire heap later */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>del_dir <span class="hl opt">!=</span> FHEAP_DEL_HEAP<span class="hl opt">) {</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>del_dir <span class="hl opt">==</span> FHEAP_DEL_FORWARD<span class="hl opt">) {</span>
            <span class="hl com">/* Remove first object from heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_obj_len</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id<span class="hl opt">, &amp;</span>robj_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                TEST_ERROR

            <span class="hl com">/* Check up on heap... */</span>
            state<span class="hl opt">.</span>huge_size <span class="hl opt">-=</span> robj_size<span class="hl opt">;</span>
            state<span class="hl opt">.</span>huge_nobjs<span class="hl opt">--;</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
                TEST_ERROR

            <span class="hl com">/* Remove second object from heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_obj_len</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id2<span class="hl opt">, &amp;</span>robj_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id2<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                TEST_ERROR

            <span class="hl com">/* Check up on heap... */</span>
            state<span class="hl opt">.</span>huge_size <span class="hl opt">-=</span> robj_size<span class="hl opt">;</span>
            state<span class="hl opt">.</span>huge_nobjs<span class="hl opt">--;</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
                TEST_ERROR

            <span class="hl com">/* Remove third object from heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_obj_len</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id3<span class="hl opt">, &amp;</span>robj_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id3<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                TEST_ERROR

            <span class="hl com">/* Check up on heap... */</span>
            state<span class="hl opt">.</span>huge_size <span class="hl opt">-=</span> robj_size<span class="hl opt">;</span>
            state<span class="hl opt">.</span>huge_nobjs<span class="hl opt">--;</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
                TEST_ERROR
        <span class="hl opt">}</span> <span class="hl com">/* end if */</span>
        <span class="hl kwa">else</span> <span class="hl opt">{</span>
            <span class="hl com">/* Remove third object from heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_obj_len</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id3<span class="hl opt">, &amp;</span>robj_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id3<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                TEST_ERROR

            <span class="hl com">/* Check up on heap... */</span>
            state<span class="hl opt">.</span>huge_size <span class="hl opt">-=</span> robj_size<span class="hl opt">;</span>
            state<span class="hl opt">.</span>huge_nobjs<span class="hl opt">--;</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
                TEST_ERROR

            <span class="hl com">/* Remove second object from heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_obj_len</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id2<span class="hl opt">, &amp;</span>robj_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id2<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                TEST_ERROR

            <span class="hl com">/* Check up on heap... */</span>
            state<span class="hl opt">.</span>huge_size <span class="hl opt">-=</span> robj_size<span class="hl opt">;</span>
            state<span class="hl opt">.</span>huge_nobjs<span class="hl opt">--;</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
                TEST_ERROR

            <span class="hl com">/* Remove first object from heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_obj_len</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id<span class="hl opt">, &amp;</span>robj_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                TEST_ERROR

            <span class="hl com">/* Check up on heap... */</span>
            state<span class="hl opt">.</span>huge_size <span class="hl opt">-=</span> robj_size<span class="hl opt">;</span>
            state<span class="hl opt">.</span>huge_nobjs<span class="hl opt">--;</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
                TEST_ERROR
        <span class="hl opt">}</span> <span class="hl com">/* end else */</span>
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>


    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>

    <span class="hl com">/* Check for deleting the entire heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>del_dir <span class="hl opt">==</span> FHEAP_DEL_HEAP<span class="hl opt">) {</span>
        <span class="hl com">/* Delete heap */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_delete</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Get the size of the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file_size <span class="hl opt">=</span> <span class="hl kwd">h5_get_file_size</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR
<span class="hl ppc">#ifdef QAK</span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;file_size = %lu</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">, (</span><span class="hl kwb">unsigned long</span><span class="hl opt">)</span>file_size<span class="hl opt">);</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>

    <span class="hl com">/* Verify the file is correct size */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>file_size <span class="hl opt">!=</span> empty_size<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Free resources */</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>heap_id<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>heap_id2<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>heap_id3<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>heap_id<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>heap_id2<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>heap_id3<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_huge_insert_three() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_huge_insert_mix</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test inserting a mix of 'normal' &amp; 'huge' objects in the heap</span>
<span class="hl com"> *</span>
<span class="hl com"> *              Then, remove all the objects, in various ways</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Friday, August 11, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_huge_insert_mix</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    fheap_heap_ids_t keep_ids<span class="hl opt">;</span>          <span class="hl com">/* Structure to retain heap IDs */</span>
    <span class="hl kwb">size_t</span>      id_len<span class="hl opt">;</span>                 <span class="hl com">/* Size of fractal heap IDs */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>             <span class="hl com">/* Size of a file with an empty heap */</span>
    h5_stat_size_t       file_size<span class="hl opt">;</span>              <span class="hl com">/* Size of file currently */</span>
    <span class="hl kwb">unsigned char</span> <span class="hl opt">*</span>heap_id <span class="hl opt">=</span> NULL<span class="hl opt">;</span>      <span class="hl com">/* Heap ID for first object */</span>
    <span class="hl kwb">unsigned char</span> <span class="hl opt">*</span>heap_id2 <span class="hl opt">=</span> NULL<span class="hl opt">;</span>     <span class="hl com">/* Heap ID for second object */</span>
    <span class="hl kwb">unsigned char</span> <span class="hl opt">*</span>heap_id3 <span class="hl opt">=</span> NULL<span class="hl opt">;</span>     <span class="hl com">/* Heap ID for third object */</span>
    <span class="hl kwb">unsigned char</span> <span class="hl opt">*</span>heap_id4 <span class="hl opt">=</span> NULL<span class="hl opt">;</span>     <span class="hl com">/* Heap ID for fourth object */</span>
    <span class="hl kwb">unsigned char</span> <span class="hl opt">*</span>heap_id5 <span class="hl opt">=</span> NULL<span class="hl opt">;</span>     <span class="hl com">/* Heap ID for fifth object */</span>
    <span class="hl kwb">size_t</span>      obj_size<span class="hl opt">;</span>               <span class="hl com">/* Size of object */</span>
    <span class="hl kwb">size_t</span>      robj_size<span class="hl opt">;</span>              <span class="hl com">/* Size of object read */</span>
    <span class="hl kwb">unsigned char</span> obj_type<span class="hl opt">;</span>             <span class="hl com">/* Type of storage for object */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>
    <span class="hl kwb">const char</span> <span class="hl opt">*</span>base_desc <span class="hl opt">=</span> <span class="hl str">&quot;insert mix of normal &amp; huge objects, then remove %s&quot;</span><span class="hl opt">;</span>       <span class="hl com">/* Test description */</span>

    <span class="hl com">/* Perform common test initialization operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">begin_test</span><span class="hl opt">(</span>tparam<span class="hl opt">,</span> base_desc<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">,</span> NULL<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Perform common file &amp; heap open operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">open_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">,</span> tparam<span class="hl opt">, &amp;</span>file<span class="hl opt">, &amp;</span>f<span class="hl opt">, &amp;</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Allocate heap ID(s) */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>heap_id <span class="hl opt">= (</span><span class="hl kwb">unsigned char</span> <span class="hl opt">*)</span><span class="hl kwd">H5MM_malloc</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>actual_id_len<span class="hl opt">)))</span>
        TEST_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>heap_id2 <span class="hl opt">= (</span><span class="hl kwb">unsigned char</span> <span class="hl opt">*)</span><span class="hl kwd">H5MM_malloc</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>actual_id_len<span class="hl opt">)))</span>
        TEST_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>heap_id3 <span class="hl opt">= (</span><span class="hl kwb">unsigned char</span> <span class="hl opt">*)</span><span class="hl kwd">H5MM_malloc</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>actual_id_len<span class="hl opt">)))</span>
        TEST_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>heap_id4 <span class="hl opt">= (</span><span class="hl kwb">unsigned char</span> <span class="hl opt">*)</span><span class="hl kwd">H5MM_malloc</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>actual_id_len<span class="hl opt">)))</span>
        TEST_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>heap_id5 <span class="hl opt">= (</span><span class="hl kwb">unsigned char</span> <span class="hl opt">*)</span><span class="hl kwd">H5MM_malloc</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>actual_id_len<span class="hl opt">)))</span>
        TEST_ERROR

    <span class="hl com">/* Make certain that 'huge' object's heap IDs are correct size */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">!=</span> tparam<span class="hl opt">-&gt;</span>actual_id_len<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert first object too large for managed heap blocks */</span>
    obj_size <span class="hl opt">=</span> SMALL_STAND_SIZE <span class="hl opt">+</span> <span class="hl num">1</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_insert</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> obj_size<span class="hl opt">,</span> shared_wobj_g<span class="hl opt">,</span> heap_id<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_type_test</span><span class="hl opt">(</span>heap_id<span class="hl opt">, &amp;</span>obj_type<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>obj_type <span class="hl opt">!=</span> H5HF_ID_TYPE_HUGE<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check up on heap... */</span>
    state<span class="hl opt">.</span>huge_size <span class="hl opt">+=</span> obj_size<span class="hl opt">;</span>
    state<span class="hl opt">.</span>huge_nobjs<span class="hl opt">++;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Read in first huge object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_obj_len</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id<span class="hl opt">, &amp;</span>robj_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>obj_size <span class="hl opt">!=</span> robj_size<span class="hl opt">)</span>
        TEST_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(</span>shared_robj_g<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> obj_size<span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_read</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id<span class="hl opt">,</span> shared_robj_g<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">HDmemcmp</span><span class="hl opt">(</span>shared_wobj_g<span class="hl opt">,</span> shared_robj_g<span class="hl opt">,</span> obj_size<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Insert second object too large for managed heap blocks */</span>
    obj_size <span class="hl opt">=</span> SMALL_STAND_SIZE <span class="hl opt">+</span> <span class="hl num">2</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_insert</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> obj_size<span class="hl opt">,</span> shared_wobj_g<span class="hl opt">,</span> heap_id2<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_type_test</span><span class="hl opt">(</span>heap_id2<span class="hl opt">, &amp;</span>obj_type<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>obj_type <span class="hl opt">!=</span> H5HF_ID_TYPE_HUGE<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check up on heap... */</span>
    state<span class="hl opt">.</span>huge_size <span class="hl opt">+=</span> obj_size<span class="hl opt">;</span>
    state<span class="hl opt">.</span>huge_nobjs<span class="hl opt">++;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Read in second huge object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_obj_len</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id2<span class="hl opt">, &amp;</span>robj_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>obj_size <span class="hl opt">!=</span> robj_size<span class="hl opt">)</span>
        TEST_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(</span>shared_robj_g<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> obj_size<span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_read</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id2<span class="hl opt">,</span> shared_robj_g<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">HDmemcmp</span><span class="hl opt">(</span>shared_wobj_g<span class="hl opt">,</span> shared_robj_g<span class="hl opt">,</span> obj_size<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Insert third object too large for managed heap blocks */</span>
    obj_size <span class="hl opt">=</span> SMALL_STAND_SIZE <span class="hl opt">+</span> <span class="hl num">3</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_insert</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> obj_size<span class="hl opt">,</span> shared_wobj_g<span class="hl opt">,</span> heap_id3<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_type_test</span><span class="hl opt">(</span>heap_id3<span class="hl opt">, &amp;</span>obj_type<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>obj_type <span class="hl opt">!=</span> H5HF_ID_TYPE_HUGE<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check up on heap... */</span>
    state<span class="hl opt">.</span>huge_size <span class="hl opt">+=</span> obj_size<span class="hl opt">;</span>
    state<span class="hl opt">.</span>huge_nobjs<span class="hl opt">++;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Read in third huge object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_obj_len</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id3<span class="hl opt">, &amp;</span>robj_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>obj_size <span class="hl opt">!=</span> robj_size<span class="hl opt">)</span>
        TEST_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(</span>shared_robj_g<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> obj_size<span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_read</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id3<span class="hl opt">,</span> shared_robj_g<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">HDmemcmp</span><span class="hl opt">(</span>shared_wobj_g<span class="hl opt">,</span> shared_robj_g<span class="hl opt">,</span> obj_size<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Insert fourth object small enough to fit into 'normal' heap blocks */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">) +</span> <span class="hl num">1</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_insert</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> obj_size<span class="hl opt">,</span> shared_wobj_g<span class="hl opt">,</span> heap_id4<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_type_test</span><span class="hl opt">(</span>heap_id4<span class="hl opt">, &amp;</span>obj_type<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>obj_type <span class="hl opt">!=</span> H5HF_ID_TYPE_MAN<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check up on heap... */</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">2</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">2</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">2</span><span class="hl opt">) -</span> obj_size<span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">+= (</span>cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">-</span> <span class="hl num">1</span><span class="hl opt">) *</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">2</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_nobjs<span class="hl opt">++;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Read in fourth ('normal') object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_obj_len</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id4<span class="hl opt">, &amp;</span>robj_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>obj_size <span class="hl opt">!=</span> robj_size<span class="hl opt">)</span>
        TEST_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(</span>shared_robj_g<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> obj_size<span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_read</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id4<span class="hl opt">,</span> shared_robj_g<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">HDmemcmp</span><span class="hl opt">(</span>shared_wobj_g<span class="hl opt">,</span> shared_robj_g<span class="hl opt">,</span> obj_size<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Insert fifth object small enough to fit into 'normal' heap blocks */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">3</span><span class="hl opt">) +</span> <span class="hl num">1</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_insert</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> obj_size<span class="hl opt">,</span> shared_wobj_g<span class="hl opt">,</span> heap_id5<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_type_test</span><span class="hl opt">(</span>heap_id5<span class="hl opt">, &amp;</span>obj_type<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>obj_type <span class="hl opt">!=</span> H5HF_ID_TYPE_MAN<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check up on heap... */</span>
    <span class="hl com">/* (account for doubling of root indirect block) */</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">3</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">4</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">5</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">4</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">3</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">4</span><span class="hl opt">) -</span> obj_size<span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">+= (</span>cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">-</span> <span class="hl num">1</span><span class="hl opt">) *</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">4</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">5</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_nobjs<span class="hl opt">++;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Read in fifth ('normal') object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_obj_len</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id5<span class="hl opt">, &amp;</span>robj_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>obj_size <span class="hl opt">!=</span> robj_size<span class="hl opt">)</span>
        TEST_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(</span>shared_robj_g<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> obj_size<span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_read</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id5<span class="hl opt">,</span> shared_robj_g<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">HDmemcmp</span><span class="hl opt">(</span>shared_wobj_g<span class="hl opt">,</span> shared_robj_g<span class="hl opt">,</span> obj_size<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Delete individual objects, if we won't be deleting the entire heap later */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>del_dir <span class="hl opt">!=</span> FHEAP_DEL_HEAP<span class="hl opt">) {</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>del_dir <span class="hl opt">==</span> FHEAP_DEL_FORWARD<span class="hl opt">) {</span>
            <span class="hl com">/* Remove first object from heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_obj_len</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id<span class="hl opt">, &amp;</span>robj_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                TEST_ERROR

            <span class="hl com">/* Check up on heap... */</span>
            state<span class="hl opt">.</span>huge_size <span class="hl opt">-=</span> robj_size<span class="hl opt">;</span>
            state<span class="hl opt">.</span>huge_nobjs<span class="hl opt">--;</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
                TEST_ERROR

            <span class="hl com">/* Remove second object from heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_obj_len</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id2<span class="hl opt">, &amp;</span>robj_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id2<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                TEST_ERROR

            <span class="hl com">/* Check up on heap... */</span>
            state<span class="hl opt">.</span>huge_size <span class="hl opt">-=</span> robj_size<span class="hl opt">;</span>
            state<span class="hl opt">.</span>huge_nobjs<span class="hl opt">--;</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
                TEST_ERROR

            <span class="hl com">/* Remove third object from heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_obj_len</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id3<span class="hl opt">, &amp;</span>robj_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id3<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                TEST_ERROR

            <span class="hl com">/* Check up on heap... */</span>
            state<span class="hl opt">.</span>huge_size <span class="hl opt">-=</span> robj_size<span class="hl opt">;</span>
            state<span class="hl opt">.</span>huge_nobjs<span class="hl opt">--;</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
                TEST_ERROR

            <span class="hl com">/* Remove fourth ('normal') object from heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id4<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                TEST_ERROR

            <span class="hl com">/* Remove fifth ('normal') object from heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id5<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                TEST_ERROR
        <span class="hl opt">}</span> <span class="hl com">/* end if */</span>
        <span class="hl kwa">else</span> <span class="hl opt">{</span>
            <span class="hl com">/* Remove fifth ('normal') object from heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id5<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                TEST_ERROR

            <span class="hl com">/* Remove fourth ('normal') object from heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id4<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                TEST_ERROR

            <span class="hl com">/* Reset 'managed' object statistics after they are all removed  */</span>
            state<span class="hl opt">.</span>man_nobjs <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
            state<span class="hl opt">.</span>man_size <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
            state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
            state<span class="hl opt">.</span>man_free_space <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>

            <span class="hl com">/* Remove third object from heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_obj_len</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id3<span class="hl opt">, &amp;</span>robj_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id3<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                TEST_ERROR

            <span class="hl com">/* Check up on heap... */</span>
            state<span class="hl opt">.</span>huge_size <span class="hl opt">-=</span> robj_size<span class="hl opt">;</span>
            state<span class="hl opt">.</span>huge_nobjs<span class="hl opt">--;</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
                TEST_ERROR

            <span class="hl com">/* Remove second object from heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_obj_len</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id2<span class="hl opt">, &amp;</span>robj_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id2<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                TEST_ERROR

            <span class="hl com">/* Check up on heap... */</span>
            state<span class="hl opt">.</span>huge_size <span class="hl opt">-=</span> robj_size<span class="hl opt">;</span>
            state<span class="hl opt">.</span>huge_nobjs<span class="hl opt">--;</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
                TEST_ERROR

            <span class="hl com">/* Remove first object from heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                TEST_ERROR
        <span class="hl opt">}</span> <span class="hl com">/* end else */</span>

        <span class="hl com">/* Check up on heap... */</span>
        <span class="hl kwd">HDmemset</span><span class="hl opt">(&amp;</span>state<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>fheap_heap_state_t<span class="hl opt">));</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
            TEST_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>


    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>

    <span class="hl com">/* Check for deleting the entire heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>del_dir <span class="hl opt">==</span> FHEAP_DEL_HEAP<span class="hl opt">) {</span>
        <span class="hl com">/* Delete heap */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_delete</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Get the size of the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file_size <span class="hl opt">=</span> <span class="hl kwd">h5_get_file_size</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR
<span class="hl ppc">#ifdef QAK</span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;file_size = %lu</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">, (</span><span class="hl kwb">unsigned long</span><span class="hl opt">)</span>file_size<span class="hl opt">);</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>

    <span class="hl com">/* Verify the file is correct size */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>file_size <span class="hl opt">!=</span> empty_size<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Free resources */</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>heap_id<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>heap_id2<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>heap_id3<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>heap_id4<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>heap_id5<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>heap_id<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>heap_id2<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>heap_id3<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>heap_id4<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>heap_id5<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_huge_insert_mix() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_filtered_huge</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test storing 'huge' object in a heap with I/O filters</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Tuesday, August 15, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_filtered_huge</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    H5HF_create_t tmp_cparam<span class="hl opt">;</span>           <span class="hl com">/* Local heap creation parameters */</span>
    fheap_heap_ids_t keep_ids<span class="hl opt">;</span>          <span class="hl com">/* Structure to retain heap IDs */</span>
    <span class="hl kwb">size_t</span>      id_len<span class="hl opt">;</span>                 <span class="hl com">/* Size of fractal heap IDs */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>             <span class="hl com">/* Size of a file with an empty heap */</span>
    h5_stat_size_t       file_size<span class="hl opt">;</span>              <span class="hl com">/* Size of file currently */</span>
    <span class="hl kwb">unsigned char</span> <span class="hl opt">*</span>heap_id <span class="hl opt">=</span> NULL<span class="hl opt">;</span>      <span class="hl com">/* Heap ID for object */</span>
    <span class="hl kwb">size_t</span>      obj_size<span class="hl opt">;</span>               <span class="hl com">/* Size of object */</span>
    <span class="hl kwb">size_t</span>      robj_size<span class="hl opt">;</span>              <span class="hl com">/* Size of object read */</span>
    <span class="hl kwb">unsigned char</span> obj_type<span class="hl opt">;</span>             <span class="hl com">/* Type of storage for object */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>
    <span class="hl kwb">unsigned</span>    deflate_level<span class="hl opt">;</span>          <span class="hl com">/* Deflation level */</span>
    <span class="hl kwb">unsigned</span>    old_actual_id_len <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>  <span class="hl com">/* Old actual ID length */</span>
    hbool_t     huge_ids_direct<span class="hl opt">;</span>        <span class="hl com">/* Are 'huge' objects directly acccessed? */</span>
    <span class="hl kwb">const char</span> <span class="hl opt">*</span>base_desc <span class="hl opt">=</span> <span class="hl str">&quot;insert 'huge' object into heap with I/O filters, then remove %s&quot;</span><span class="hl opt">;</span>       <span class="hl com">/* Test description */</span>

    <span class="hl com">/* Copy heap creation properties */</span>
    <span class="hl kwd">HDmemcpy</span><span class="hl opt">(&amp;</span>tmp_cparam<span class="hl opt">,</span> cparam<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>H5HF_create_t<span class="hl opt">));</span>

    <span class="hl com">/* Set an I/O filter for heap data */</span>
    deflate_level <span class="hl opt">=</span> <span class="hl num">6</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Z_append</span><span class="hl opt">(&amp;</span>tmp_cparam<span class="hl opt">.</span>pline<span class="hl opt">,</span> H5Z_FILTER_DEFLATE<span class="hl opt">,</span> H5Z_FLAG_OPTIONAL<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">1</span><span class="hl opt">, &amp;</span>deflate_level<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Adjust actual ID length, if asking for IDs that can directly access 'huge' objects */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>cparam<span class="hl opt">-&gt;</span>id_len <span class="hl opt">==</span> <span class="hl num">1</span><span class="hl opt">) {</span>
        old_actual_id_len <span class="hl opt">=</span> tparam<span class="hl opt">-&gt;</span>actual_id_len<span class="hl opt">;</span>
        tparam<span class="hl opt">-&gt;</span>actual_id_len <span class="hl opt">=</span> <span class="hl num">29</span><span class="hl opt">;</span>   <span class="hl com">/* 1 + 8 (file address size) + 8 (file length size) + 4 (filter mask length) + 8 (object length size) */</span>
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>

    <span class="hl com">/* Perform common file &amp; heap open operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">open_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>tmp_cparam<span class="hl opt">,</span> tparam<span class="hl opt">, &amp;</span>file<span class="hl opt">, &amp;</span>f<span class="hl opt">, &amp;</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Perform common test initialization operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">begin_test</span><span class="hl opt">(</span>tparam<span class="hl opt">,</span> base_desc<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">,</span> NULL<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR


    <span class="hl com">/* Allocate heap ID(s) */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>heap_id <span class="hl opt">= (</span><span class="hl kwb">unsigned char</span> <span class="hl opt">*)</span><span class="hl kwd">H5MM_malloc</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>actual_id_len<span class="hl opt">)))</span>
        TEST_ERROR

    <span class="hl com">/* Make certain that 'huge' object's heap IDs are correct form */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">!=</span> tparam<span class="hl opt">-&gt;</span>actual_id_len<span class="hl opt">)</span>
        TEST_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_huge_info_test</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> NULL<span class="hl opt">, &amp;</span>huge_ids_direct<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>cparam<span class="hl opt">-&gt;</span>id_len <span class="hl opt">==</span> <span class="hl num">1</span><span class="hl opt">) {</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>huge_ids_direct <span class="hl opt">!=</span> TRUE<span class="hl opt">)</span>
            TEST_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>
    <span class="hl kwa">else</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>actual_id_len <span class="hl opt">&gt;=</span> <span class="hl num">29</span><span class="hl opt">) {</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span>huge_ids_direct <span class="hl opt">!=</span> TRUE<span class="hl opt">)</span>
                TEST_ERROR
        <span class="hl opt">}</span> <span class="hl com">/* end if */</span>
        <span class="hl kwa">else</span> <span class="hl opt">{</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span>huge_ids_direct <span class="hl opt">!=</span> FALSE<span class="hl opt">)</span>
                TEST_ERROR
        <span class="hl opt">}</span> <span class="hl com">/* end else */</span>

    <span class="hl com">/* Insert object too large for managed heap blocks */</span>
    obj_size <span class="hl opt">=</span> SMALL_STAND_SIZE <span class="hl opt">+</span> <span class="hl num">1</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_insert</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> obj_size<span class="hl opt">,</span> shared_wobj_g<span class="hl opt">,</span> heap_id<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_type_test</span><span class="hl opt">(</span>heap_id<span class="hl opt">, &amp;</span>obj_type<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>obj_type <span class="hl opt">!=</span> H5HF_ID_TYPE_HUGE<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

<span class="hl com">/* QAK */</span>
<span class="hl ppc">#ifdef QAK</span>
    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Re-open the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fopen</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_RDONLY<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        STACK_ERROR

    <span class="hl com">/* Re-open the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_open</span><span class="hl opt">(</span>f<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">,</span> fh_addr<span class="hl opt">)))</span>
        FAIL_STACK_ERROR
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>
<span class="hl com">/* QAK */</span>

    <span class="hl com">/* Check up on heap... */</span>
    state<span class="hl opt">.</span>huge_size <span class="hl opt">=</span> obj_size<span class="hl opt">;</span>
    state<span class="hl opt">.</span>huge_nobjs <span class="hl opt">=</span> <span class="hl num">1</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Read in huge object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_obj_len</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id<span class="hl opt">, &amp;</span>robj_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>obj_size <span class="hl opt">!=</span> robj_size<span class="hl opt">)</span>
        TEST_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(</span>shared_robj_g<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> obj_size<span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_read</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id<span class="hl opt">,</span> shared_robj_g<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">HDmemcmp</span><span class="hl opt">(</span>shared_wobj_g<span class="hl opt">,</span> shared_robj_g<span class="hl opt">,</span> obj_size<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Delete individual objects, if we won't be deleting the entire heap later */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>del_dir <span class="hl opt">!=</span> FHEAP_DEL_HEAP<span class="hl opt">) {</span>
        <span class="hl com">/* Remove object from heap */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR

        <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            TEST_ERROR

        <span class="hl com">/* Check up on heap... */</span>
        state<span class="hl opt">.</span>huge_size <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
        state<span class="hl opt">.</span>huge_nobjs <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
            TEST_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>

    <span class="hl com">/* Check for deleting the entire heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>del_dir <span class="hl opt">==</span> FHEAP_DEL_HEAP<span class="hl opt">) {</span>
        <span class="hl com">/* Delete heap */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_delete</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Get the size of the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file_size <span class="hl opt">=</span> <span class="hl kwd">h5_get_file_size</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR
<span class="hl ppc">#ifdef QAK</span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;empty_size = %lu, file_size = %lu</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">, (</span><span class="hl kwb">unsigned long</span><span class="hl opt">)</span>empty_size<span class="hl opt">, (</span><span class="hl kwb">unsigned long</span><span class="hl opt">)</span>file_size<span class="hl opt">);</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>

    <span class="hl com">/* Verify the file is correct size */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>file_size <span class="hl opt">!=</span> empty_size<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Reset actual ID length, if asking for IDs that can directly access 'huge' objects */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>cparam<span class="hl opt">-&gt;</span>id_len <span class="hl opt">==</span> <span class="hl num">1</span><span class="hl opt">)</span>
        tparam<span class="hl opt">-&gt;</span>actual_id_len <span class="hl opt">=</span> old_actual_id_len<span class="hl opt">;</span>

    <span class="hl com">/* Free resources */</span>
    <span class="hl kwd">H5O_msg_reset</span><span class="hl opt">(</span>H5O_PLINE_ID<span class="hl opt">, &amp;</span>tmp_cparam<span class="hl opt">.</span>pline<span class="hl opt">);</span> <span class="hl com">/* Release the I/O pipeline filter information */</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>heap_id<span class="hl opt">);</span>

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>heap_id<span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_filtered_huge() */</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>

<span class="hl ppc">#ifndef QAK</span>

<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_tiny_insert_one</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test inserting one tiny object in the heap</span>
<span class="hl com"> *</span>
<span class="hl com"> *              Then, remove all the objects, in various ways</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, August 14, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_tiny_insert_one</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    fheap_heap_ids_t keep_ids<span class="hl opt">;</span>          <span class="hl com">/* Structure to retain heap IDs */</span>
    <span class="hl kwb">size_t</span>      id_len<span class="hl opt">;</span>                 <span class="hl com">/* Size of fractal heap IDs */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>             <span class="hl com">/* Size of a file with an empty heap */</span>
    h5_stat_size_t       file_size<span class="hl opt">;</span>              <span class="hl com">/* Size of file currently */</span>
    <span class="hl kwb">unsigned char</span> <span class="hl opt">*</span>heap_id <span class="hl opt">=</span> NULL<span class="hl opt">;</span>      <span class="hl com">/* Heap ID for object */</span>
    <span class="hl kwb">size_t</span>      obj_size<span class="hl opt">;</span>               <span class="hl com">/* Size of object */</span>
    <span class="hl kwb">size_t</span>      robj_size<span class="hl opt">;</span>              <span class="hl com">/* Size of object read */</span>
    <span class="hl kwb">unsigned char</span> obj_type<span class="hl opt">;</span>             <span class="hl com">/* Type of storage for object */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>
    <span class="hl kwb">const char</span> <span class="hl opt">*</span>base_desc <span class="hl opt">=</span> <span class="hl str">&quot;insert one tiny object, then remove %s&quot;</span><span class="hl opt">;</span>       <span class="hl com">/* Test description */</span>

    <span class="hl com">/* Perform common test initialization operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">begin_test</span><span class="hl opt">(</span>tparam<span class="hl opt">,</span> base_desc<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">,</span> NULL<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Perform common file &amp; heap open operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">open_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">,</span> tparam<span class="hl opt">, &amp;</span>file<span class="hl opt">, &amp;</span>f<span class="hl opt">, &amp;</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Allocate heap ID(s) */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>heap_id <span class="hl opt">= (</span><span class="hl kwb">unsigned char</span> <span class="hl opt">*)</span><span class="hl kwd">H5MM_malloc</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>actual_id_len<span class="hl opt">)))</span>
        TEST_ERROR

    <span class="hl com">/* Make certain that 'tiny' object's heap IDs are correct size */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">!=</span> tparam<span class="hl opt">-&gt;</span>actual_id_len<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert object small enough to encode in heap ID */</span>
    obj_size <span class="hl opt">=</span> tparam<span class="hl opt">-&gt;</span>actual_id_len <span class="hl opt">-</span> <span class="hl num">2</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_insert</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> obj_size<span class="hl opt">,</span> shared_wobj_g<span class="hl opt">,</span> heap_id<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_type_test</span><span class="hl opt">(</span>heap_id<span class="hl opt">, &amp;</span>obj_type<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>obj_type <span class="hl opt">!=</span> H5HF_ID_TYPE_TINY<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check up on heap... */</span>
    state<span class="hl opt">.</span>tiny_size <span class="hl opt">=</span> obj_size<span class="hl opt">;</span>
    state<span class="hl opt">.</span>tiny_nobjs <span class="hl opt">=</span> <span class="hl num">1</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Read in tiny object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_obj_len</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id<span class="hl opt">, &amp;</span>robj_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>obj_size <span class="hl opt">!=</span> robj_size<span class="hl opt">)</span>
        TEST_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(</span>shared_robj_g<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> obj_size<span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_read</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id<span class="hl opt">,</span> shared_robj_g<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">HDmemcmp</span><span class="hl opt">(</span>shared_wobj_g<span class="hl opt">,</span> shared_robj_g<span class="hl opt">,</span> obj_size<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Delete individual objects, if we won't be deleting the entire heap later */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>del_dir <span class="hl opt">!=</span> FHEAP_DEL_HEAP<span class="hl opt">) {</span>
        <span class="hl com">/* Remove object from heap */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR

        <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            TEST_ERROR

        <span class="hl com">/* Check up on heap... */</span>
        state<span class="hl opt">.</span>tiny_size <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
        state<span class="hl opt">.</span>tiny_nobjs <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
            TEST_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>


    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>

    <span class="hl com">/* Check for deleting the entire heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>del_dir <span class="hl opt">==</span> FHEAP_DEL_HEAP<span class="hl opt">) {</span>
        <span class="hl com">/* Delete heap */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_delete</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Get the size of the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file_size <span class="hl opt">=</span> <span class="hl kwd">h5_get_file_size</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR
<span class="hl ppc">#ifdef QAK</span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;file_size = %lu</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">, (</span><span class="hl kwb">unsigned long</span><span class="hl opt">)</span>file_size<span class="hl opt">);</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>

    <span class="hl com">/* Verify the file is correct size */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>file_size <span class="hl opt">!=</span> empty_size<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Free resources */</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>heap_id<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>heap_id<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_tiny_insert_one() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_tiny_insert_two</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test inserting two tiny objects in the heap</span>
<span class="hl com"> *</span>
<span class="hl com"> *              Then, remove all the objects, in various ways</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, August 14, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_tiny_insert_two</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    fheap_heap_ids_t keep_ids<span class="hl opt">;</span>          <span class="hl com">/* Structure to retain heap IDs */</span>
    <span class="hl kwb">size_t</span>      id_len<span class="hl opt">;</span>                 <span class="hl com">/* Size of fractal heap IDs */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>             <span class="hl com">/* Size of a file with an empty heap */</span>
    h5_stat_size_t       file_size<span class="hl opt">;</span>              <span class="hl com">/* Size of file currently */</span>
    <span class="hl kwb">unsigned char</span> <span class="hl opt">*</span>heap_id <span class="hl opt">=</span> NULL<span class="hl opt">;</span>      <span class="hl com">/* Heap ID for first object */</span>
    <span class="hl kwb">unsigned char</span> <span class="hl opt">*</span>heap_id2 <span class="hl opt">=</span> NULL<span class="hl opt">;</span>     <span class="hl com">/* Heap ID for second object */</span>
    <span class="hl kwb">size_t</span>      obj_size<span class="hl opt">;</span>               <span class="hl com">/* Size of object */</span>
    <span class="hl kwb">size_t</span>      robj_size<span class="hl opt">;</span>              <span class="hl com">/* Size of object read */</span>
    <span class="hl kwb">unsigned char</span> obj_type<span class="hl opt">;</span>             <span class="hl com">/* Type of storage for object */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>
    <span class="hl kwb">const char</span> <span class="hl opt">*</span>base_desc <span class="hl opt">=</span> <span class="hl str">&quot;insert two tiny objects, then remove %s&quot;</span><span class="hl opt">;</span>       <span class="hl com">/* Test description */</span>

    <span class="hl com">/* Perform common test initialization operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">begin_test</span><span class="hl opt">(</span>tparam<span class="hl opt">,</span> base_desc<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">,</span> NULL<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Perform common file &amp; heap open operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">open_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">,</span> tparam<span class="hl opt">, &amp;</span>file<span class="hl opt">, &amp;</span>f<span class="hl opt">, &amp;</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Allocate heap ID(s) */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>heap_id <span class="hl opt">= (</span><span class="hl kwb">unsigned char</span> <span class="hl opt">*)</span><span class="hl kwd">H5MM_malloc</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>actual_id_len<span class="hl opt">)))</span>
        TEST_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>heap_id2 <span class="hl opt">= (</span><span class="hl kwb">unsigned char</span> <span class="hl opt">*)</span><span class="hl kwd">H5MM_malloc</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>actual_id_len<span class="hl opt">)))</span>
        TEST_ERROR

    <span class="hl com">/* Make certain that 'tiny' object's heap IDs are correct size */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">!=</span> tparam<span class="hl opt">-&gt;</span>actual_id_len<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert object small enough to encode in heap ID */</span>
    obj_size <span class="hl opt">=</span> tparam<span class="hl opt">-&gt;</span>actual_id_len <span class="hl opt">-</span> <span class="hl num">2</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_insert</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> obj_size<span class="hl opt">,</span> shared_wobj_g<span class="hl opt">,</span> heap_id<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_type_test</span><span class="hl opt">(</span>heap_id<span class="hl opt">, &amp;</span>obj_type<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>obj_type <span class="hl opt">!=</span> H5HF_ID_TYPE_TINY<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check up on heap... */</span>
    state<span class="hl opt">.</span>tiny_size <span class="hl opt">=</span> obj_size<span class="hl opt">;</span>
    state<span class="hl opt">.</span>tiny_nobjs <span class="hl opt">=</span> <span class="hl num">1</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Read in tiny object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_obj_len</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id<span class="hl opt">, &amp;</span>robj_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>obj_size <span class="hl opt">!=</span> robj_size<span class="hl opt">)</span>
        TEST_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(</span>shared_robj_g<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> obj_size<span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_read</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id<span class="hl opt">,</span> shared_robj_g<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">HDmemcmp</span><span class="hl opt">(</span>shared_wobj_g<span class="hl opt">,</span> shared_robj_g<span class="hl opt">,</span> obj_size<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Insert second object small enough to encode in heap ID */</span>
    obj_size <span class="hl opt">=</span> tparam<span class="hl opt">-&gt;</span>actual_id_len <span class="hl opt">-</span> <span class="hl num">2</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_insert</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> obj_size<span class="hl opt">,</span> shared_wobj_g<span class="hl opt">,</span> heap_id2<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_type_test</span><span class="hl opt">(</span>heap_id2<span class="hl opt">, &amp;</span>obj_type<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>obj_type <span class="hl opt">!=</span> H5HF_ID_TYPE_TINY<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check up on heap... */</span>
    state<span class="hl opt">.</span>tiny_size <span class="hl opt">+=</span> obj_size <span class="hl opt">;</span>
    state<span class="hl opt">.</span>tiny_nobjs <span class="hl opt">=</span> <span class="hl num">2</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Read in second tiny object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_obj_len</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id2<span class="hl opt">, &amp;</span>robj_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>obj_size <span class="hl opt">!=</span> robj_size<span class="hl opt">)</span>
        TEST_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(</span>shared_robj_g<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> obj_size<span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_read</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id2<span class="hl opt">,</span> shared_robj_g<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">HDmemcmp</span><span class="hl opt">(</span>shared_wobj_g<span class="hl opt">,</span> shared_robj_g<span class="hl opt">,</span> obj_size<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Delete individual objects, if we won't be deleting the entire heap later */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>del_dir <span class="hl opt">!=</span> FHEAP_DEL_HEAP<span class="hl opt">) {</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>del_dir <span class="hl opt">==</span> FHEAP_DEL_FORWARD<span class="hl opt">) {</span>
            <span class="hl com">/* Remove first object from heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                TEST_ERROR

            <span class="hl com">/* Check up on heap... */</span>
            state<span class="hl opt">.</span>tiny_size <span class="hl opt">=</span> obj_size<span class="hl opt">;</span>
            state<span class="hl opt">.</span>tiny_nobjs <span class="hl opt">=</span> <span class="hl num">1</span><span class="hl opt">;</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
                TEST_ERROR

            <span class="hl com">/* Remove second object from heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id2<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                TEST_ERROR

            <span class="hl com">/* Check up on heap... */</span>
            state<span class="hl opt">.</span>tiny_size <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
            state<span class="hl opt">.</span>tiny_nobjs <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
                TEST_ERROR
        <span class="hl opt">}</span> <span class="hl com">/* end if */</span>
        <span class="hl kwa">else</span> <span class="hl opt">{</span>
            <span class="hl com">/* Remove second object from heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id2<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                TEST_ERROR

            <span class="hl com">/* Check up on heap... */</span>
            state<span class="hl opt">.</span>tiny_size <span class="hl opt">=</span> obj_size<span class="hl opt">;</span>
            state<span class="hl opt">.</span>tiny_nobjs <span class="hl opt">=</span> <span class="hl num">1</span><span class="hl opt">;</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
                TEST_ERROR

            <span class="hl com">/* Remove first object from heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                TEST_ERROR

            <span class="hl com">/* Check up on heap... */</span>
            state<span class="hl opt">.</span>tiny_size <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
            state<span class="hl opt">.</span>tiny_nobjs <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
                TEST_ERROR
        <span class="hl opt">}</span> <span class="hl com">/* end else */</span>
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>


    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>

    <span class="hl com">/* Check for deleting the entire heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>del_dir <span class="hl opt">==</span> FHEAP_DEL_HEAP<span class="hl opt">) {</span>
        <span class="hl com">/* Delete heap */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_delete</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Get the size of the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file_size <span class="hl opt">=</span> <span class="hl kwd">h5_get_file_size</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR
<span class="hl ppc">#ifdef QAK</span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;file_size = %lu</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">, (</span><span class="hl kwb">unsigned long</span><span class="hl opt">)</span>file_size<span class="hl opt">);</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>

    <span class="hl com">/* Verify the file is correct size */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>file_size <span class="hl opt">!=</span> empty_size<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Free resources */</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>heap_id<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>heap_id2<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>heap_id<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>heap_id2<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_tiny_insert_two() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_tiny_insert_mix</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test inserting a mix of 'normal', 'huge' &amp; 'tiny' objects in</span>
<span class="hl com"> *              the heap</span>
<span class="hl com"> *</span>
<span class="hl com"> *              Then, remove all the objects, in various ways</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, August 14, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_tiny_insert_mix</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    fheap_heap_ids_t keep_ids<span class="hl opt">;</span>          <span class="hl com">/* Structure to retain heap IDs */</span>
    <span class="hl kwb">size_t</span>      id_len<span class="hl opt">;</span>                 <span class="hl com">/* Size of fractal heap IDs */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>             <span class="hl com">/* Size of a file with an empty heap */</span>
    h5_stat_size_t       file_size<span class="hl opt">;</span>              <span class="hl com">/* Size of file currently */</span>
    <span class="hl kwb">unsigned char</span> <span class="hl opt">*</span>heap_id <span class="hl opt">=</span> NULL<span class="hl opt">;</span>      <span class="hl com">/* Heap ID for first object */</span>
    <span class="hl kwb">unsigned char</span> <span class="hl opt">*</span>heap_id2 <span class="hl opt">=</span> NULL<span class="hl opt">;</span>     <span class="hl com">/* Heap ID for second object */</span>
    <span class="hl kwb">unsigned char</span> <span class="hl opt">*</span>heap_id3 <span class="hl opt">=</span> NULL<span class="hl opt">;</span>     <span class="hl com">/* Heap ID for third object */</span>
    <span class="hl kwb">unsigned char</span> <span class="hl opt">*</span>heap_id4 <span class="hl opt">=</span> NULL<span class="hl opt">;</span>     <span class="hl com">/* Heap ID for fourth object */</span>
    <span class="hl kwb">unsigned char</span> <span class="hl opt">*</span>heap_id5 <span class="hl opt">=</span> NULL<span class="hl opt">;</span>     <span class="hl com">/* Heap ID for fifth object */</span>
    <span class="hl kwb">unsigned char</span> <span class="hl opt">*</span>heap_id6 <span class="hl opt">=</span> NULL<span class="hl opt">;</span>     <span class="hl com">/* Heap ID for sixth object */</span>
    <span class="hl kwb">unsigned char</span> <span class="hl opt">*</span>heap_id7 <span class="hl opt">=</span> NULL<span class="hl opt">;</span>     <span class="hl com">/* Heap ID for seventh object */</span>
    <span class="hl kwb">size_t</span>      obj_size<span class="hl opt">;</span>               <span class="hl com">/* Size of object */</span>
    <span class="hl kwb">size_t</span>      robj_size<span class="hl opt">;</span>              <span class="hl com">/* Size of object read */</span>
    <span class="hl kwb">unsigned char</span> obj_type<span class="hl opt">;</span>             <span class="hl com">/* Type of storage for object */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>
    <span class="hl kwb">const char</span> <span class="hl opt">*</span>base_desc <span class="hl opt">=</span> <span class="hl str">&quot;insert mix of normal, huge &amp; tiny objects, then remove %s&quot;</span><span class="hl opt">;</span>       <span class="hl com">/* Test description */</span>

    <span class="hl com">/* Perform common test initialization operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">begin_test</span><span class="hl opt">(</span>tparam<span class="hl opt">,</span> base_desc<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">,</span> NULL<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Perform common file &amp; heap open operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">open_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">,</span> tparam<span class="hl opt">, &amp;</span>file<span class="hl opt">, &amp;</span>f<span class="hl opt">, &amp;</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Allocate heap ID(s) */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>heap_id <span class="hl opt">= (</span><span class="hl kwb">unsigned char</span> <span class="hl opt">*)</span><span class="hl kwd">H5MM_malloc</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>actual_id_len<span class="hl opt">)))</span>
        TEST_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>heap_id2 <span class="hl opt">= (</span><span class="hl kwb">unsigned char</span> <span class="hl opt">*)</span><span class="hl kwd">H5MM_malloc</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>actual_id_len<span class="hl opt">)))</span>
        TEST_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>heap_id3 <span class="hl opt">= (</span><span class="hl kwb">unsigned char</span> <span class="hl opt">*)</span><span class="hl kwd">H5MM_malloc</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>actual_id_len<span class="hl opt">)))</span>
        TEST_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>heap_id4 <span class="hl opt">= (</span><span class="hl kwb">unsigned char</span> <span class="hl opt">*)</span><span class="hl kwd">H5MM_malloc</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>actual_id_len<span class="hl opt">)))</span>
        TEST_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>heap_id5 <span class="hl opt">= (</span><span class="hl kwb">unsigned char</span> <span class="hl opt">*)</span><span class="hl kwd">H5MM_malloc</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>actual_id_len<span class="hl opt">)))</span>
        TEST_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>heap_id6 <span class="hl opt">= (</span><span class="hl kwb">unsigned char</span> <span class="hl opt">*)</span><span class="hl kwd">H5MM_malloc</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>actual_id_len<span class="hl opt">)))</span>
        TEST_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>heap_id7 <span class="hl opt">= (</span><span class="hl kwb">unsigned char</span> <span class="hl opt">*)</span><span class="hl kwd">H5MM_malloc</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>actual_id_len<span class="hl opt">)))</span>
        TEST_ERROR

    <span class="hl com">/* Make certain that 'tiny' object's heap IDs are correct size */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">!=</span> tparam<span class="hl opt">-&gt;</span>actual_id_len<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert first object too large for managed heap blocks */</span>
    obj_size <span class="hl opt">=</span> SMALL_STAND_SIZE <span class="hl opt">+</span> <span class="hl num">1</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_insert</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> obj_size<span class="hl opt">,</span> shared_wobj_g<span class="hl opt">,</span> heap_id<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_type_test</span><span class="hl opt">(</span>heap_id<span class="hl opt">, &amp;</span>obj_type<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>obj_type <span class="hl opt">!=</span> H5HF_ID_TYPE_HUGE<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check up on heap... */</span>
    state<span class="hl opt">.</span>huge_size <span class="hl opt">+=</span> obj_size<span class="hl opt">;</span>
    state<span class="hl opt">.</span>huge_nobjs<span class="hl opt">++;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Read in first huge object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_obj_len</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id<span class="hl opt">, &amp;</span>robj_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>obj_size <span class="hl opt">!=</span> robj_size<span class="hl opt">)</span>
        TEST_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(</span>shared_robj_g<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> obj_size<span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_read</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id<span class="hl opt">,</span> shared_robj_g<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">HDmemcmp</span><span class="hl opt">(</span>shared_wobj_g<span class="hl opt">,</span> shared_robj_g<span class="hl opt">,</span> obj_size<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check 'op' functionality on first huge object */</span>
    <span class="hl kwd">HDmemset</span><span class="hl opt">(</span>shared_robj_g<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> obj_size<span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_op</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id<span class="hl opt">,</span> op_memcpy<span class="hl opt">,</span> shared_robj_g<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">HDmemcmp</span><span class="hl opt">(</span>shared_wobj_g<span class="hl opt">,</span> shared_robj_g<span class="hl opt">,</span> obj_size<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Insert second object too large for managed heap blocks */</span>
    obj_size <span class="hl opt">=</span> SMALL_STAND_SIZE <span class="hl opt">+</span> <span class="hl num">2</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_insert</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> obj_size<span class="hl opt">,</span> shared_wobj_g<span class="hl opt">,</span> heap_id2<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_type_test</span><span class="hl opt">(</span>heap_id2<span class="hl opt">, &amp;</span>obj_type<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>obj_type <span class="hl opt">!=</span> H5HF_ID_TYPE_HUGE<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check up on heap... */</span>
    state<span class="hl opt">.</span>huge_size <span class="hl opt">+=</span> obj_size<span class="hl opt">;</span>
    state<span class="hl opt">.</span>huge_nobjs<span class="hl opt">++;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Read in second huge object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_obj_len</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id2<span class="hl opt">, &amp;</span>robj_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>obj_size <span class="hl opt">!=</span> robj_size<span class="hl opt">)</span>
        TEST_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(</span>shared_robj_g<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> obj_size<span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_read</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id2<span class="hl opt">,</span> shared_robj_g<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">HDmemcmp</span><span class="hl opt">(</span>shared_wobj_g<span class="hl opt">,</span> shared_robj_g<span class="hl opt">,</span> obj_size<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check 'op' functionality on second huge object */</span>
    <span class="hl kwd">HDmemset</span><span class="hl opt">(</span>shared_robj_g<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> obj_size<span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_op</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id2<span class="hl opt">,</span> op_memcpy<span class="hl opt">,</span> shared_robj_g<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">HDmemcmp</span><span class="hl opt">(</span>shared_wobj_g<span class="hl opt">,</span> shared_robj_g<span class="hl opt">,</span> obj_size<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Insert third object too large for managed heap blocks */</span>
    obj_size <span class="hl opt">=</span> SMALL_STAND_SIZE <span class="hl opt">+</span> <span class="hl num">3</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_insert</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> obj_size<span class="hl opt">,</span> shared_wobj_g<span class="hl opt">,</span> heap_id3<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_type_test</span><span class="hl opt">(</span>heap_id3<span class="hl opt">, &amp;</span>obj_type<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>obj_type <span class="hl opt">!=</span> H5HF_ID_TYPE_HUGE<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check up on heap... */</span>
    state<span class="hl opt">.</span>huge_size <span class="hl opt">+=</span> obj_size<span class="hl opt">;</span>
    state<span class="hl opt">.</span>huge_nobjs<span class="hl opt">++;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Read in third huge object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_obj_len</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id3<span class="hl opt">, &amp;</span>robj_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>obj_size <span class="hl opt">!=</span> robj_size<span class="hl opt">)</span>
        TEST_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(</span>shared_robj_g<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> obj_size<span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_read</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id3<span class="hl opt">,</span> shared_robj_g<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">HDmemcmp</span><span class="hl opt">(</span>shared_wobj_g<span class="hl opt">,</span> shared_robj_g<span class="hl opt">,</span> obj_size<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check 'op' functionality on third huge object */</span>
    <span class="hl kwd">HDmemset</span><span class="hl opt">(</span>shared_robj_g<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> obj_size<span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_op</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id3<span class="hl opt">,</span> op_memcpy<span class="hl opt">,</span> shared_robj_g<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">HDmemcmp</span><span class="hl opt">(</span>shared_wobj_g<span class="hl opt">,</span> shared_robj_g<span class="hl opt">,</span> obj_size<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Insert fourth object small enough to fit into 'normal' heap blocks */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">) +</span> <span class="hl num">1</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_insert</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> obj_size<span class="hl opt">,</span> shared_wobj_g<span class="hl opt">,</span> heap_id4<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_type_test</span><span class="hl opt">(</span>heap_id4<span class="hl opt">, &amp;</span>obj_type<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>obj_type <span class="hl opt">!=</span> H5HF_ID_TYPE_MAN<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check up on heap... */</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">2</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">2</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">2</span><span class="hl opt">) -</span> obj_size<span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">+= (</span>cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">-</span> <span class="hl num">1</span><span class="hl opt">) *</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">2</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_nobjs<span class="hl opt">++;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Read in fourth ('normal') object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_obj_len</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id4<span class="hl opt">, &amp;</span>robj_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>obj_size <span class="hl opt">!=</span> robj_size<span class="hl opt">)</span>
        TEST_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(</span>shared_robj_g<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> obj_size<span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_read</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id4<span class="hl opt">,</span> shared_robj_g<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">HDmemcmp</span><span class="hl opt">(</span>shared_wobj_g<span class="hl opt">,</span> shared_robj_g<span class="hl opt">,</span> obj_size<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check 'op' functionality on fourth ('normal') object */</span>
    <span class="hl kwd">HDmemset</span><span class="hl opt">(</span>shared_robj_g<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> obj_size<span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_op</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id4<span class="hl opt">,</span> op_memcpy<span class="hl opt">,</span> shared_robj_g<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">HDmemcmp</span><span class="hl opt">(</span>shared_wobj_g<span class="hl opt">,</span> shared_robj_g<span class="hl opt">,</span> obj_size<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Insert fifth object small enough to fit into 'normal' heap blocks */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">3</span><span class="hl opt">) +</span> <span class="hl num">1</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_insert</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> obj_size<span class="hl opt">,</span> shared_wobj_g<span class="hl opt">,</span> heap_id5<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_type_test</span><span class="hl opt">(</span>heap_id5<span class="hl opt">, &amp;</span>obj_type<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>obj_type <span class="hl opt">!=</span> H5HF_ID_TYPE_MAN<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check up on heap... */</span>
    <span class="hl com">/* (account for doubling of root indirect block) */</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">3</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">4</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">5</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">4</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">3</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">+=</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">4</span><span class="hl opt">) -</span> obj_size<span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">+= (</span>cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">-</span> <span class="hl num">1</span><span class="hl opt">) *</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">4</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">+=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">5</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_nobjs<span class="hl opt">++;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Read in fifth ('normal') object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_obj_len</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id5<span class="hl opt">, &amp;</span>robj_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>obj_size <span class="hl opt">!=</span> robj_size<span class="hl opt">)</span>
        TEST_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(</span>shared_robj_g<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> obj_size<span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_read</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id5<span class="hl opt">,</span> shared_robj_g<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">HDmemcmp</span><span class="hl opt">(</span>shared_wobj_g<span class="hl opt">,</span> shared_robj_g<span class="hl opt">,</span> obj_size<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check 'op' functionality on fifth ('normal') object */</span>
    <span class="hl kwd">HDmemset</span><span class="hl opt">(</span>shared_robj_g<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> obj_size<span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_op</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id5<span class="hl opt">,</span> op_memcpy<span class="hl opt">,</span> shared_robj_g<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">HDmemcmp</span><span class="hl opt">(</span>shared_wobj_g<span class="hl opt">,</span> shared_robj_g<span class="hl opt">,</span> obj_size<span class="hl opt">))</span>
        TEST_ERROR


    <span class="hl com">/* Insert sixth object small enough to encode in heap ID */</span>
    obj_size <span class="hl opt">=</span> tparam<span class="hl opt">-&gt;</span>actual_id_len <span class="hl opt">-</span> <span class="hl num">2</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_insert</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> obj_size<span class="hl opt">,</span> shared_wobj_g<span class="hl opt">,</span> heap_id6<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_type_test</span><span class="hl opt">(</span>heap_id6<span class="hl opt">, &amp;</span>obj_type<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>obj_type <span class="hl opt">!=</span> H5HF_ID_TYPE_TINY<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check up on heap... */</span>
    state<span class="hl opt">.</span>tiny_size <span class="hl opt">=</span> obj_size<span class="hl opt">;</span>
    state<span class="hl opt">.</span>tiny_nobjs <span class="hl opt">=</span> <span class="hl num">1</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Read in tiny object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_obj_len</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id6<span class="hl opt">, &amp;</span>robj_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>obj_size <span class="hl opt">!=</span> robj_size<span class="hl opt">)</span>
        TEST_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(</span>shared_robj_g<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> obj_size<span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_read</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id6<span class="hl opt">,</span> shared_robj_g<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">HDmemcmp</span><span class="hl opt">(</span>shared_wobj_g<span class="hl opt">,</span> shared_robj_g<span class="hl opt">,</span> obj_size<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check 'op' functionality on sixth ('tiny') object */</span>
    <span class="hl kwd">HDmemset</span><span class="hl opt">(</span>shared_robj_g<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> obj_size<span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_op</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id6<span class="hl opt">,</span> op_memcpy<span class="hl opt">,</span> shared_robj_g<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">HDmemcmp</span><span class="hl opt">(</span>shared_wobj_g<span class="hl opt">,</span> shared_robj_g<span class="hl opt">,</span> obj_size<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Insert seventh object small enough to encode in heap ID */</span>
    obj_size <span class="hl opt">=</span> tparam<span class="hl opt">-&gt;</span>actual_id_len <span class="hl opt">-</span> <span class="hl num">2</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_insert</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> obj_size<span class="hl opt">,</span> shared_wobj_g<span class="hl opt">,</span> heap_id7<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_type_test</span><span class="hl opt">(</span>heap_id7<span class="hl opt">, &amp;</span>obj_type<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>obj_type <span class="hl opt">!=</span> H5HF_ID_TYPE_TINY<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check up on heap... */</span>
    state<span class="hl opt">.</span>tiny_size <span class="hl opt">+=</span> obj_size<span class="hl opt">;</span>
    state<span class="hl opt">.</span>tiny_nobjs<span class="hl opt">++;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Read in tiny object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_obj_len</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id7<span class="hl opt">, &amp;</span>robj_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>obj_size <span class="hl opt">!=</span> robj_size<span class="hl opt">)</span>
        TEST_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(</span>shared_robj_g<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> obj_size<span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_read</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id7<span class="hl opt">,</span> shared_robj_g<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">HDmemcmp</span><span class="hl opt">(</span>shared_wobj_g<span class="hl opt">,</span> shared_robj_g<span class="hl opt">,</span> obj_size<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Check 'op' functionality on seventh ('tiny') object */</span>
    <span class="hl kwd">HDmemset</span><span class="hl opt">(</span>shared_robj_g<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> obj_size<span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_op</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id7<span class="hl opt">,</span> op_memcpy<span class="hl opt">,</span> shared_robj_g<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">HDmemcmp</span><span class="hl opt">(</span>shared_wobj_g<span class="hl opt">,</span> shared_robj_g<span class="hl opt">,</span> obj_size<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Delete individual objects, if we won't be deleting the entire heap later */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>del_dir <span class="hl opt">!=</span> FHEAP_DEL_HEAP<span class="hl opt">) {</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>del_dir <span class="hl opt">==</span> FHEAP_DEL_FORWARD<span class="hl opt">) {</span>
            <span class="hl com">/* Remove first object from heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_obj_len</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id<span class="hl opt">, &amp;</span>robj_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                TEST_ERROR

            <span class="hl com">/* Check up on heap... */</span>
            state<span class="hl opt">.</span>huge_size <span class="hl opt">-=</span> robj_size<span class="hl opt">;</span>
            state<span class="hl opt">.</span>huge_nobjs<span class="hl opt">--;</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
                TEST_ERROR

            <span class="hl com">/* Remove second object from heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_obj_len</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id2<span class="hl opt">, &amp;</span>robj_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id2<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                TEST_ERROR

            <span class="hl com">/* Check up on heap... */</span>
            state<span class="hl opt">.</span>huge_size <span class="hl opt">-=</span> robj_size<span class="hl opt">;</span>
            state<span class="hl opt">.</span>huge_nobjs<span class="hl opt">--;</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
                TEST_ERROR

            <span class="hl com">/* Remove third object from heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_obj_len</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id3<span class="hl opt">, &amp;</span>robj_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id3<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                TEST_ERROR

            <span class="hl com">/* Check up on heap... */</span>
            state<span class="hl opt">.</span>huge_size <span class="hl opt">-=</span> robj_size<span class="hl opt">;</span>
            state<span class="hl opt">.</span>huge_nobjs<span class="hl opt">--;</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
                TEST_ERROR

            <span class="hl com">/* Remove fourth ('normal') object from heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id4<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                TEST_ERROR

            <span class="hl com">/* Remove fifth ('normal') object from heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id5<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                TEST_ERROR

            <span class="hl com">/* Reset 'managed' object statistics after they are all removed  */</span>
            state<span class="hl opt">.</span>man_nobjs <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
            state<span class="hl opt">.</span>man_size <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
            state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
            state<span class="hl opt">.</span>man_free_space <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>

            <span class="hl com">/* Remove sixth object from heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_obj_len</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id6<span class="hl opt">, &amp;</span>robj_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id6<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                TEST_ERROR

            <span class="hl com">/* Check up on heap... */</span>
            state<span class="hl opt">.</span>tiny_size <span class="hl opt">-=</span> robj_size<span class="hl opt">;</span>
            state<span class="hl opt">.</span>tiny_nobjs<span class="hl opt">--;</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
                TEST_ERROR

            <span class="hl com">/* Remove seventh object from heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id7<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                TEST_ERROR
        <span class="hl opt">}</span> <span class="hl com">/* end if */</span>
        <span class="hl kwa">else</span> <span class="hl opt">{</span>
            <span class="hl com">/* Remove seventh object from heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_obj_len</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id7<span class="hl opt">, &amp;</span>robj_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id7<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                TEST_ERROR

            <span class="hl com">/* Check up on heap... */</span>
            state<span class="hl opt">.</span>tiny_size <span class="hl opt">-=</span> robj_size<span class="hl opt">;</span>
            state<span class="hl opt">.</span>tiny_nobjs<span class="hl opt">--;</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
                TEST_ERROR

            <span class="hl com">/* Remove sixth object from heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_obj_len</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id6<span class="hl opt">, &amp;</span>robj_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id6<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                TEST_ERROR

            <span class="hl com">/* Check up on heap... */</span>
            state<span class="hl opt">.</span>tiny_size <span class="hl opt">-=</span> robj_size<span class="hl opt">;</span>
            state<span class="hl opt">.</span>tiny_nobjs<span class="hl opt">--;</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
                TEST_ERROR

            <span class="hl com">/* Remove fifth ('normal') object from heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id5<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                TEST_ERROR

            <span class="hl com">/* Remove fourth ('normal') object from heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id4<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                TEST_ERROR

            <span class="hl com">/* Reset 'managed' object statistics after they are all removed  */</span>
            state<span class="hl opt">.</span>man_nobjs <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
            state<span class="hl opt">.</span>man_size <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
            state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
            state<span class="hl opt">.</span>man_free_space <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>

            <span class="hl com">/* Remove third object from heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_obj_len</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id3<span class="hl opt">, &amp;</span>robj_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id3<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                TEST_ERROR

            <span class="hl com">/* Check up on heap... */</span>
            state<span class="hl opt">.</span>huge_size <span class="hl opt">-=</span> robj_size<span class="hl opt">;</span>
            state<span class="hl opt">.</span>huge_nobjs<span class="hl opt">--;</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
                TEST_ERROR

            <span class="hl com">/* Remove second object from heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_obj_len</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id2<span class="hl opt">, &amp;</span>robj_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id2<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                TEST_ERROR

            <span class="hl com">/* Check up on heap... */</span>
            state<span class="hl opt">.</span>huge_size <span class="hl opt">-=</span> robj_size<span class="hl opt">;</span>
            state<span class="hl opt">.</span>huge_nobjs<span class="hl opt">--;</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
                TEST_ERROR

            <span class="hl com">/* Remove first object from heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                TEST_ERROR
        <span class="hl opt">}</span> <span class="hl com">/* end else */</span>

        <span class="hl com">/* Check up on heap... */</span>
        <span class="hl kwd">HDmemset</span><span class="hl opt">(&amp;</span>state<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>fheap_heap_state_t<span class="hl opt">));</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
            TEST_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>


    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>

    <span class="hl com">/* Check for deleting the entire heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>del_dir <span class="hl opt">==</span> FHEAP_DEL_HEAP<span class="hl opt">) {</span>
        <span class="hl com">/* Delete heap */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_delete</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Get the size of the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file_size <span class="hl opt">=</span> <span class="hl kwd">h5_get_file_size</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR
<span class="hl ppc">#ifdef QAK</span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;file_size = %lu</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">, (</span><span class="hl kwb">unsigned long</span><span class="hl opt">)</span>file_size<span class="hl opt">);</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>

    <span class="hl com">/* Verify the file is correct size */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>file_size <span class="hl opt">!=</span> empty_size<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Free resources */</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>heap_id<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>heap_id2<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>heap_id3<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>heap_id4<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>heap_id5<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>heap_id6<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>heap_id7<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>heap_id<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>heap_id2<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>heap_id3<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>heap_id4<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>heap_id5<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>heap_id6<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>heap_id7<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_tiny_insert_mix() */</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK2 */</span><span class="hl ppc"></span>

<span class="hl ppc">#ifndef QAK</span>

<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_filtered_man_root_direct</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test storing one 'managed' object in a heap with I/O filters</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, August 14, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_filtered_man_root_direct</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    H5HF_create_t tmp_cparam<span class="hl opt">;</span>           <span class="hl com">/* Local heap creation parameters */</span>
    fheap_heap_ids_t keep_ids<span class="hl opt">;</span>          <span class="hl com">/* Structure to retain heap IDs */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>             <span class="hl com">/* Size of a file with an empty heap */</span>
<span class="hl ppc">#ifdef NOT_YET</span>
    h5_stat_size_t       file_size<span class="hl opt">;</span>              <span class="hl com">/* Size of file currently */</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* NOT_YET */</span><span class="hl ppc"></span>
    <span class="hl kwb">unsigned char</span> heap_id<span class="hl opt">[</span>HEAP_ID_LEN<span class="hl opt">];</span> <span class="hl com">/* Heap ID for object */</span>
    <span class="hl kwb">size_t</span>      obj_size<span class="hl opt">;</span>               <span class="hl com">/* Size of object */</span>
    <span class="hl kwb">size_t</span>      robj_size<span class="hl opt">;</span>              <span class="hl com">/* Size of object read */</span>
    <span class="hl kwb">unsigned char</span> obj_type<span class="hl opt">;</span>             <span class="hl com">/* Type of storage for object */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>
    <span class="hl kwb">unsigned</span>    deflate_level<span class="hl opt">;</span>          <span class="hl com">/* Deflation level */</span>
    <span class="hl kwb">const char</span> <span class="hl opt">*</span>base_desc <span class="hl opt">=</span> <span class="hl str">&quot;insert one 'managed' object into heap with I/O filters, then remove %s&quot;</span><span class="hl opt">;</span>       <span class="hl com">/* Test description */</span>

    <span class="hl com">/* Copy heap creation properties */</span>
    <span class="hl kwd">HDmemcpy</span><span class="hl opt">(&amp;</span>tmp_cparam<span class="hl opt">,</span> cparam<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>H5HF_create_t<span class="hl opt">));</span>

    <span class="hl com">/* Set an I/O filter for heap data */</span>
    deflate_level <span class="hl opt">=</span> <span class="hl num">6</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Z_append</span><span class="hl opt">(&amp;</span>tmp_cparam<span class="hl opt">.</span>pline<span class="hl opt">,</span> H5Z_FILTER_DEFLATE<span class="hl opt">,</span> H5Z_FLAG_OPTIONAL<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">1</span><span class="hl opt">, &amp;</span>deflate_level<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Perform common file &amp; heap open operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">open_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>tmp_cparam<span class="hl opt">,</span> tparam<span class="hl opt">, &amp;</span>file<span class="hl opt">, &amp;</span>f<span class="hl opt">, &amp;</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Perform common test initialization operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">begin_test</span><span class="hl opt">(</span>tparam<span class="hl opt">,</span> base_desc<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">,</span> NULL<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR


    <span class="hl com">/* Insert object small enough to fit into direct heap block */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">) /</span> <span class="hl num">2</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_insert</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> obj_size<span class="hl opt">,</span> shared_wobj_g<span class="hl opt">,</span> heap_id<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_type_test</span><span class="hl opt">(</span>heap_id<span class="hl opt">, &amp;</span>obj_type<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>obj_type <span class="hl opt">!=</span> H5HF_ID_TYPE_MAN<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Re-open the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fopen</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_RDWR<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Re-open the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_open</span><span class="hl opt">(</span>f<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">,</span> fh_addr<span class="hl opt">)))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Check up on heap... */</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">=</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">=</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">) -</span> obj_size<span class="hl opt">;</span>
    state<span class="hl opt">.</span>man_nobjs<span class="hl opt">++;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Read in ('normal') object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_obj_len</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id<span class="hl opt">, &amp;</span>robj_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>obj_size <span class="hl opt">!=</span> robj_size<span class="hl opt">)</span>
        TEST_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(</span>shared_robj_g<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> obj_size<span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_read</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id<span class="hl opt">,</span> shared_robj_g<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">HDmemcmp</span><span class="hl opt">(</span>shared_wobj_g<span class="hl opt">,</span> shared_robj_g<span class="hl opt">,</span> obj_size<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Delete individual objects, if we won't be deleting the entire heap later */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>del_dir <span class="hl opt">!=</span> FHEAP_DEL_HEAP<span class="hl opt">) {</span>
        <span class="hl com">/* Remove object from heap */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_obj_len</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id<span class="hl opt">, &amp;</span>robj_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR

        <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            TEST_ERROR

        <span class="hl com">/* Check up on heap... */</span>
        <span class="hl kwd">HDmemset</span><span class="hl opt">(&amp;</span>state<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>fheap_heap_state_t<span class="hl opt">));</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
            TEST_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>

    <span class="hl com">/* Check for deleting the entire heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>del_dir <span class="hl opt">==</span> FHEAP_DEL_HEAP<span class="hl opt">) {</span>
        <span class="hl com">/* Delete heap */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_delete</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

<span class="hl com">/* Needs file free space to be persistent */</span>
<span class="hl ppc">#ifdef NOT_YET</span>
    <span class="hl com">/* Get the size of the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file_size <span class="hl opt">=</span> <span class="hl kwd">h5_get_file_size</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR
<span class="hl ppc">#ifdef QAK</span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;empty_size = %lu, file_size = %lu</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">, (</span><span class="hl kwb">unsigned long</span><span class="hl opt">)</span>empty_size<span class="hl opt">, (</span><span class="hl kwb">unsigned long</span><span class="hl opt">)</span>file_size<span class="hl opt">);</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>

    <span class="hl com">/* Verify the file is correct size */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>file_size <span class="hl opt">!=</span> empty_size<span class="hl opt">)</span>
        TEST_ERROR
<span class="hl ppc">#endif</span> <span class="hl com">/* NOT_YET */</span><span class="hl ppc"></span>

    <span class="hl com">/* Free resources */</span>
    <span class="hl kwd">H5O_msg_reset</span><span class="hl opt">(</span>H5O_PLINE_ID<span class="hl opt">, &amp;</span>tmp_cparam<span class="hl opt">.</span>pline<span class="hl opt">);</span> <span class="hl com">/* Release the I/O pipeline filter information */</span>

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_filtered_man_root_direct() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_filtered_man_root_indirect</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test storing several objects in a 'managed heap with I/O filters</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Tuesday, October 24, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_filtered_man_root_indirect</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    H5HF_create_t tmp_cparam<span class="hl opt">;</span>           <span class="hl com">/* Local heap creation parameters */</span>
    fheap_heap_ids_t keep_ids<span class="hl opt">;</span>          <span class="hl com">/* Structure to retain heap IDs */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>             <span class="hl com">/* Size of a file with an empty heap */</span>
<span class="hl ppc">#ifdef NOT_YET</span>
    h5_stat_size_t       file_size<span class="hl opt">;</span>              <span class="hl com">/* Size of file currently */</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* NOT_YET */</span><span class="hl ppc"></span>
    <span class="hl kwb">unsigned char</span> heap_id1<span class="hl opt">[</span>HEAP_ID_LEN<span class="hl opt">];</span> <span class="hl com">/* Heap ID for object #1 */</span>
    <span class="hl kwb">unsigned char</span> heap_id2<span class="hl opt">[</span>HEAP_ID_LEN<span class="hl opt">];</span> <span class="hl com">/* Heap ID for object #2 */</span>
    <span class="hl kwb">size_t</span>      obj_size<span class="hl opt">;</span>               <span class="hl com">/* Size of object */</span>
    <span class="hl kwb">size_t</span>      robj_size<span class="hl opt">;</span>              <span class="hl com">/* Size of object read */</span>
    <span class="hl kwb">unsigned char</span> obj_type<span class="hl opt">;</span>             <span class="hl com">/* Type of storage for object */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>
    <span class="hl kwb">unsigned</span>    deflate_level<span class="hl opt">;</span>          <span class="hl com">/* Deflation level */</span>
    <span class="hl kwb">const char</span> <span class="hl opt">*</span>base_desc <span class="hl opt">=</span> <span class="hl str">&quot;insert two 'managed' objects into heap with I/O filters, then remove %s&quot;</span><span class="hl opt">;</span>       <span class="hl com">/* Test description */</span>

    <span class="hl com">/* Copy heap creation properties */</span>
    <span class="hl kwd">HDmemcpy</span><span class="hl opt">(&amp;</span>tmp_cparam<span class="hl opt">,</span> cparam<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>H5HF_create_t<span class="hl opt">));</span>

    <span class="hl com">/* Set an I/O filter for heap data */</span>
    deflate_level <span class="hl opt">=</span> <span class="hl num">6</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Z_append</span><span class="hl opt">(&amp;</span>tmp_cparam<span class="hl opt">.</span>pline<span class="hl opt">,</span> H5Z_FILTER_DEFLATE<span class="hl opt">,</span> H5Z_FLAG_OPTIONAL<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">1</span><span class="hl opt">, &amp;</span>deflate_level<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Perform common file &amp; heap open operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">open_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>tmp_cparam<span class="hl opt">,</span> tparam<span class="hl opt">, &amp;</span>file<span class="hl opt">, &amp;</span>f<span class="hl opt">, &amp;</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Perform common test initialization operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">begin_test</span><span class="hl opt">(</span>tparam<span class="hl opt">,</span> base_desc<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">,</span> NULL<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR


    <span class="hl com">/* Insert object #1, small enough to fit into direct heap block */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">) /</span> <span class="hl num">2</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_insert</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> obj_size<span class="hl opt">,</span> shared_wobj_g<span class="hl opt">,</span> heap_id1<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_type_test</span><span class="hl opt">(</span>heap_id1<span class="hl opt">, &amp;</span>obj_type<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>obj_type <span class="hl opt">!=</span> H5HF_ID_TYPE_MAN<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert object #2, small enough to fit into direct heap block */</span>
    obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">) /</span> <span class="hl num">2</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_insert</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> obj_size<span class="hl opt">,</span> shared_wobj_g<span class="hl opt">,</span> heap_id2<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_type_test</span><span class="hl opt">(</span>heap_id2<span class="hl opt">, &amp;</span>obj_type<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>obj_type <span class="hl opt">!=</span> H5HF_ID_TYPE_MAN<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Re-open the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fopen</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_RDWR<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Re-open the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_open</span><span class="hl opt">(</span>f<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">,</span> fh_addr<span class="hl opt">)))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Check up on heap... */</span>
    state<span class="hl opt">.</span>man_size <span class="hl opt">=</span> cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_alloc_size <span class="hl opt">=</span> <span class="hl num">2</span> <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_SIZE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_free_space <span class="hl opt">= (</span>cparam<span class="hl opt">-&gt;</span>managed<span class="hl opt">.</span>width <span class="hl opt">*</span> <span class="hl kwd">DBLOCK_FREE</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">)) - (</span>obj_size <span class="hl opt">*</span> <span class="hl num">2</span><span class="hl opt">);</span>
    state<span class="hl opt">.</span>man_nobjs <span class="hl opt">+=</span> <span class="hl num">2</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Read in ('normal') object #1 */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_obj_len</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id1<span class="hl opt">, &amp;</span>robj_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>obj_size <span class="hl opt">!=</span> robj_size<span class="hl opt">)</span>
        TEST_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(</span>shared_robj_g<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> obj_size<span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_read</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id1<span class="hl opt">,</span> shared_robj_g<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">HDmemcmp</span><span class="hl opt">(</span>shared_wobj_g<span class="hl opt">,</span> shared_robj_g<span class="hl opt">,</span> obj_size<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Read in ('normal') object #2 */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_obj_len</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id2<span class="hl opt">, &amp;</span>robj_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>obj_size <span class="hl opt">!=</span> robj_size<span class="hl opt">)</span>
        TEST_ERROR
    <span class="hl kwd">HDmemset</span><span class="hl opt">(</span>shared_robj_g<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> obj_size<span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_read</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id2<span class="hl opt">,</span> shared_robj_g<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">HDmemcmp</span><span class="hl opt">(</span>shared_wobj_g<span class="hl opt">,</span> shared_robj_g<span class="hl opt">,</span> obj_size<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Delete individual objects, if we won't be deleting the entire heap later */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>del_dir <span class="hl opt">!=</span> FHEAP_DEL_HEAP<span class="hl opt">) {</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>del_dir <span class="hl opt">==</span> FHEAP_DEL_FORWARD<span class="hl opt">) {</span>
            <span class="hl com">/* Remove object #1 from heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_obj_len</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id1<span class="hl opt">, &amp;</span>robj_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id1<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Close the fractal heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR
            fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>

            <span class="hl com">/* Close the file */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Re-open the file */</span>
            <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fopen</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_RDWR<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Get a pointer to the internal file object */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
            <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Re-open the heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_open</span><span class="hl opt">(</span>f<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">,</span> fh_addr<span class="hl opt">)))</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Remove object #2 from heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_obj_len</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id2<span class="hl opt">, &amp;</span>robj_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id2<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Check up on heap... */</span>
            <span class="hl kwd">HDmemset</span><span class="hl opt">(&amp;</span>state<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>fheap_heap_state_t<span class="hl opt">));</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
                TEST_ERROR

            <span class="hl com">/* Close the fractal heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR
            fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>

            <span class="hl com">/* Close the file */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Re-open the file */</span>
            <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fopen</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_RDWR<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Get a pointer to the internal file object */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
            <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Re-open the heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_open</span><span class="hl opt">(</span>f<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">,</span> fh_addr<span class="hl opt">)))</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Check up on heap... */</span>
            <span class="hl kwd">HDmemset</span><span class="hl opt">(&amp;</span>state<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>fheap_heap_state_t<span class="hl opt">));</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
                TEST_ERROR
        <span class="hl opt">}</span> <span class="hl com">/* end if */</span>
        <span class="hl kwa">else</span> <span class="hl opt">{</span>
            <span class="hl com">/* Remove object #2 from heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_obj_len</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id2<span class="hl opt">, &amp;</span>robj_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id2<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Close the fractal heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR
            fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>

            <span class="hl com">/* Close the file */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Re-open the file */</span>
            <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fopen</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_RDWR<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Get a pointer to the internal file object */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
            <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Re-open the heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_open</span><span class="hl opt">(</span>f<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">,</span> fh_addr<span class="hl opt">)))</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Remove object #1 from heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_obj_len</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id1<span class="hl opt">, &amp;</span>robj_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> heap_id1<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Check up on heap... */</span>
            <span class="hl kwd">HDmemset</span><span class="hl opt">(&amp;</span>state<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>fheap_heap_state_t<span class="hl opt">));</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
                TEST_ERROR

            <span class="hl com">/* Close the fractal heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR
            fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>

            <span class="hl com">/* Close the file */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Re-open the file */</span>
            <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fopen</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_RDWR<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Get a pointer to the internal file object */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
            <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Re-open the heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_open</span><span class="hl opt">(</span>f<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">,</span> fh_addr<span class="hl opt">)))</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Check up on heap... */</span>
            <span class="hl kwd">HDmemset</span><span class="hl opt">(&amp;</span>state<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>fheap_heap_state_t<span class="hl opt">));</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
                TEST_ERROR
        <span class="hl opt">}</span> <span class="hl com">/* end else */</span>
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>

    <span class="hl com">/* Check for deleting the entire heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>del_dir <span class="hl opt">==</span> FHEAP_DEL_HEAP<span class="hl opt">) {</span>
        <span class="hl com">/* Delete heap */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_delete</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

<span class="hl com">/* Needs file free space to be persistent */</span>
<span class="hl ppc">#ifdef NOT_YET</span>
    <span class="hl com">/* Get the size of the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file_size <span class="hl opt">=</span> <span class="hl kwd">h5_get_file_size</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR
<span class="hl ppc">#ifdef QAK</span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;empty_size = %lu, file_size = %lu</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">, (</span><span class="hl kwb">unsigned long</span><span class="hl opt">)</span>empty_size<span class="hl opt">, (</span><span class="hl kwb">unsigned long</span><span class="hl opt">)</span>file_size<span class="hl opt">);</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>

    <span class="hl com">/* Verify the file is correct size */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>file_size <span class="hl opt">!=</span> empty_size<span class="hl opt">)</span>
        TEST_ERROR
<span class="hl ppc">#endif</span> <span class="hl com">/* NOT_YET */</span><span class="hl ppc"></span>

    <span class="hl com">/* Free resources */</span>
    <span class="hl kwd">H5O_msg_reset</span><span class="hl opt">(</span>H5O_PLINE_ID<span class="hl opt">, &amp;</span>tmp_cparam<span class="hl opt">.</span>pline<span class="hl opt">);</span> <span class="hl com">/* Release the I/O pipeline filter information */</span>

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_filtered_man_root_indirect() */</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>

<span class="hl ppc">#ifndef QAK</span>

<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_random</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test inserting random sized objects into a heap, and read</span>
<span class="hl com"> *              them back.</span>
<span class="hl com"> *</span>
<span class="hl com"> *              Then, go back and remove all objects</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Tuesday, May  9, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_random</span><span class="hl opt">(</span>hsize_t size_limit<span class="hl opt">,</span> hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    H5HF_create_t tmp_cparam<span class="hl opt">;</span>           <span class="hl com">/* Local heap creation parameters */</span>
    <span class="hl kwb">size_t</span>      id_len<span class="hl opt">;</span>                 <span class="hl com">/* Size of fractal heap IDs */</span>
    fheap_heap_ids_t keep_ids<span class="hl opt">;</span>          <span class="hl com">/* Structure to retain heap IDs */</span>
    <span class="hl kwb">unsigned long</span> seed <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>             <span class="hl com">/* Random # seed */</span>
    hsize_t     total_obj_added<span class="hl opt">;</span>        <span class="hl com">/* Size of objects added */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>             <span class="hl com">/* Size of a file with an empty heap */</span>
    h5_stat_size_t       file_size<span class="hl opt">;</span>              <span class="hl com">/* Size of file currently */</span>
    <span class="hl kwb">size_t</span>      obj_size<span class="hl opt">;</span>               <span class="hl com">/* Size of object */</span>
    <span class="hl kwb">size_t</span>      obj_loc<span class="hl opt">;</span>                <span class="hl com">/* Location of object in buffer */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>
    <span class="hl kwb">size_t</span>      u<span class="hl opt">;</span>                      <span class="hl com">/* Local index variable */</span>

    <span class="hl com">/* Initialize the heap ID structure */</span>
    <span class="hl kwd">HDmemset</span><span class="hl opt">(&amp;</span>keep_ids<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>fheap_heap_ids_t<span class="hl opt">));</span>

    <span class="hl com">/* Copy heap creation properties */</span>
    <span class="hl kwd">HDmemcpy</span><span class="hl opt">(&amp;</span>tmp_cparam<span class="hl opt">,</span> cparam<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>H5HF_create_t<span class="hl opt">));</span>

    <span class="hl com">/* Check if we are compressing the blocks */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>comp <span class="hl opt">==</span> FHEAP_TEST_COMPRESS<span class="hl opt">) {</span>
        <span class="hl kwb">unsigned</span>    deflate_level<span class="hl opt">;</span>          <span class="hl com">/* Deflation level */</span>

        <span class="hl com">/* Set an I/O filter for heap data */</span>
        deflate_level <span class="hl opt">=</span> <span class="hl num">6</span><span class="hl opt">;</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Z_append</span><span class="hl opt">(&amp;</span>tmp_cparam<span class="hl opt">.</span>pline<span class="hl opt">,</span> H5Z_FILTER_DEFLATE<span class="hl opt">,</span> H5Z_FLAG_OPTIONAL<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">1</span><span class="hl opt">, &amp;</span>deflate_level<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>

    <span class="hl com">/* Perform common file &amp; heap open operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">open_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>tmp_cparam<span class="hl opt">,</span> tparam<span class="hl opt">, &amp;</span>file<span class="hl opt">, &amp;</span>f<span class="hl opt">, &amp;</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Get information about heap ID lengths */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">&gt;</span> MAX_HEAP_ID_LEN<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/*</span>
<span class="hl com">     * Display testing message</span>
<span class="hl com">     */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>del_dir <span class="hl opt">==</span> FHEAP_DEL_HEAP<span class="hl opt">) {</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>comp <span class="hl opt">==</span> FHEAP_TEST_COMPRESS<span class="hl opt">)</span>
            <span class="hl kwd">TESTING</span><span class="hl opt">(</span><span class="hl str">&quot;inserting random-sized objects in heap with compressed blocks, then remove all objects (all - deleting heap)&quot;</span><span class="hl opt">)</span>
        <span class="hl kwa">else</span>
            <span class="hl kwd">TESTING</span><span class="hl opt">(</span><span class="hl str">&quot;inserting random-sized objects, then remove all objects (all - deleting heap)&quot;</span><span class="hl opt">)</span>
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>
    <span class="hl kwa">else</span> <span class="hl opt">{</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>comp <span class="hl opt">==</span> FHEAP_TEST_COMPRESS<span class="hl opt">)</span>
            <span class="hl kwd">TESTING</span><span class="hl opt">(</span><span class="hl str">&quot;inserting random-sized objects in heap with compressed blocks, then remove all objects (all - random)&quot;</span><span class="hl opt">)</span>
        <span class="hl kwa">else</span>
            <span class="hl kwd">TESTING</span><span class="hl opt">(</span><span class="hl str">&quot;inserting random-sized objects, then remove all objects (all - random)&quot;</span><span class="hl opt">)</span>
    <span class="hl opt">}</span> <span class="hl com">/* end else */</span>

    <span class="hl com">/* Choose random # seed */</span>
    seed <span class="hl opt">= (</span><span class="hl kwb">unsigned long</span><span class="hl opt">)</span><span class="hl kwd">HDtime</span><span class="hl opt">(</span>NULL<span class="hl opt">);</span>
<span class="hl ppc">#ifdef QAK</span>
<span class="hl com">/* seed = (unsigned long)1156158635; */</span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;Random # seed was: %lu</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">,</span> seed<span class="hl opt">);</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>
    <span class="hl kwd">HDsrandom</span><span class="hl opt">((</span><span class="hl kwb">unsigned</span><span class="hl opt">)</span>seed<span class="hl opt">);</span>

    <span class="hl com">/* Loop over adding objects to the heap, until the size limit is reached */</span>
    total_obj_added <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
    <span class="hl kwa">while</span><span class="hl opt">(</span>total_obj_added <span class="hl opt">&lt;</span> size_limit<span class="hl opt">) {</span>
        <span class="hl com">/* Choose a random size of object (from 1 up to above standalone block size limit) */</span>
        obj_size <span class="hl opt">= (((</span><span class="hl kwb">uint32_t</span><span class="hl opt">)</span><span class="hl kwd">HDrandom</span><span class="hl opt">() % (</span>tmp_cparam<span class="hl opt">.</span>max_man_size <span class="hl opt">+</span> <span class="hl num">255</span><span class="hl opt">)) +</span> <span class="hl num">1</span><span class="hl opt">);</span>
        obj_loc <span class="hl opt">= (</span>tmp_cparam<span class="hl opt">.</span>max_man_size <span class="hl opt">+</span> <span class="hl num">255</span><span class="hl opt">) -</span> obj_size<span class="hl opt">;</span>

        <span class="hl com">/* Insert object */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> obj_loc<span class="hl opt">,</span> obj_size<span class="hl opt">,</span> NULL<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
            TEST_ERROR

        <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            TEST_ERROR

        <span class="hl com">/* Increment the amount of objects added */</span>
        total_obj_added <span class="hl opt">+=</span> obj_size<span class="hl opt">;</span>
    <span class="hl opt">}</span> <span class="hl com">/* end while */</span>
<span class="hl ppc">#ifdef QAK</span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;keep_ids.num_ids = %Zu, total_obj_added = %Hu, size_limit = %Hu</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">,</span> keep_ids<span class="hl opt">.</span>num_ids<span class="hl opt">,</span> total_obj_added<span class="hl opt">,</span> size_limit<span class="hl opt">);</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>

    <span class="hl com">/* Randomize the order of the IDs kept */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> keep_ids<span class="hl opt">.</span>num_ids<span class="hl opt">;</span> u<span class="hl opt">++) {</span>
        <span class="hl kwb">size_t</span> pos<span class="hl opt">;</span>             <span class="hl com">/* Position to swap with */</span>

        <span class="hl com">/* Choose a position to swap with */</span>
        <span class="hl com">/* (0 is current position) */</span>
        pos <span class="hl opt">= ((</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">HDrandom</span><span class="hl opt">() % (</span>keep_ids<span class="hl opt">.</span>num_ids <span class="hl opt">-</span> u<span class="hl opt">));</span>

        <span class="hl com">/* If we chose a different position, swap with it */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>pos <span class="hl opt">&gt;</span> <span class="hl num">0</span><span class="hl opt">) {</span>
            <span class="hl kwb">unsigned char</span> temp_id<span class="hl opt">[</span>MAX_HEAP_ID_LEN<span class="hl opt">];</span>         <span class="hl com">/* Temp. heap ID holder */</span>

            <span class="hl com">/* Swap current position with future position */</span>
            <span class="hl com">/* (just swap the heap ID, the len &amp; offset isn't used */</span>
            <span class="hl kwd">HDmemcpy</span><span class="hl opt">(</span>temp_id<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">[</span>u <span class="hl opt">*</span> id_len<span class="hl opt">],</span> id_len<span class="hl opt">);</span>
            <span class="hl kwd">HDmemcpy</span><span class="hl opt">(&amp;</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">[</span>u <span class="hl opt">*</span> id_len<span class="hl opt">], &amp;</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">[(</span>u <span class="hl opt">+</span> pos<span class="hl opt">) *</span> id_len<span class="hl opt">],</span> id_len<span class="hl opt">);</span>
            <span class="hl kwd">HDmemcpy</span><span class="hl opt">(&amp;</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">[(</span>u <span class="hl opt">+</span> pos<span class="hl opt">) *</span> id_len<span class="hl opt">],</span> temp_id<span class="hl opt">,</span> id_len<span class="hl opt">);</span>
        <span class="hl opt">}</span> <span class="hl com">/* end if */</span>
    <span class="hl opt">}</span> <span class="hl com">/* end for */</span>

    <span class="hl com">/* Delete individual objects, if we won't be deleting the entire heap later */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>del_dir <span class="hl opt">!=</span> FHEAP_DEL_HEAP<span class="hl opt">) {</span>
        <span class="hl com">/* Delete objects inserted */</span>
        <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> keep_ids<span class="hl opt">.</span>num_ids<span class="hl opt">;</span> u<span class="hl opt">++) {</span>
            <span class="hl com">/* Remove object from heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">[</span>id_len <span class="hl opt">*</span> u<span class="hl opt">]) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                TEST_ERROR
        <span class="hl opt">}</span> <span class="hl com">/* end for */</span>

        <span class="hl com">/* Check up on heap... */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
            TEST_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>

    <span class="hl com">/* Check for deleting the entire heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>del_dir <span class="hl opt">==</span> FHEAP_DEL_HEAP<span class="hl opt">) {</span>
        <span class="hl com">/* Delete heap */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_delete</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Get the size of the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file_size <span class="hl opt">=</span> <span class="hl kwd">h5_get_file_size</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR
<span class="hl ppc">#ifdef QAK</span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;file_size = %lu</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">, (</span><span class="hl kwb">unsigned long</span><span class="hl opt">)</span>file_size<span class="hl opt">);</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>

    <span class="hl com">/* Verify the file is correct size */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>file_size <span class="hl opt">!=</span> empty_size<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Free resources */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>comp <span class="hl opt">==</span> FHEAP_TEST_COMPRESS<span class="hl opt">)</span>
        <span class="hl kwd">H5O_msg_reset</span><span class="hl opt">(</span>H5O_PLINE_ID<span class="hl opt">, &amp;</span>tmp_cparam<span class="hl opt">.</span>pline<span class="hl opt">);</span> <span class="hl com">/* Release the I/O pipeline filter information */</span>

    <span class="hl com">/* Free resources */</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    <span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;Random # seed was: %lu</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">,</span> seed<span class="hl opt">);</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_random() */</span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_random_pow2</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test inserting random sized objects with a &quot;power of 2</span>
<span class="hl com"> *              distribution&quot; (which favors small objects) into a heap,</span>
<span class="hl com"> *              and read them back.</span>
<span class="hl com"> *</span>
<span class="hl com"> *              Then, go back and remove all objects</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, May 15, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_random_pow2</span><span class="hl opt">(</span>hsize_t size_limit<span class="hl opt">,</span> hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    H5HF_create_t tmp_cparam<span class="hl opt">;</span>           <span class="hl com">/* Local heap creation parameters */</span>
    <span class="hl kwb">size_t</span>      id_len<span class="hl opt">;</span>                 <span class="hl com">/* Size of fractal heap IDs */</span>
    fheap_heap_ids_t keep_ids<span class="hl opt">;</span>          <span class="hl com">/* Structure to retain heap IDs */</span>
    <span class="hl kwb">unsigned long</span> seed <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>             <span class="hl com">/* Random # seed */</span>
    hsize_t     total_obj_added<span class="hl opt">;</span>        <span class="hl com">/* Size of objects added */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>             <span class="hl com">/* Size of a file with an empty heap */</span>
    h5_stat_size_t       file_size<span class="hl opt">;</span>              <span class="hl com">/* Size of file currently */</span>
    <span class="hl kwb">size_t</span>      obj_size<span class="hl opt">;</span>               <span class="hl com">/* Size of object */</span>
    <span class="hl kwb">size_t</span>      obj_loc<span class="hl opt">;</span>                <span class="hl com">/* Location of object in buffer */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>
    <span class="hl kwb">size_t</span>      u<span class="hl opt">;</span>                      <span class="hl com">/* Local index variable */</span>

    <span class="hl com">/* Initialize the heap ID structure */</span>
    <span class="hl kwd">HDmemset</span><span class="hl opt">(&amp;</span>keep_ids<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>fheap_heap_ids_t<span class="hl opt">));</span>

    <span class="hl com">/* Copy heap creation properties */</span>
    <span class="hl kwd">HDmemcpy</span><span class="hl opt">(&amp;</span>tmp_cparam<span class="hl opt">,</span> cparam<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>H5HF_create_t<span class="hl opt">));</span>

    <span class="hl com">/* Check if we are compressing the blocks */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>comp <span class="hl opt">==</span> FHEAP_TEST_COMPRESS<span class="hl opt">) {</span>
        <span class="hl kwb">unsigned</span>    deflate_level<span class="hl opt">;</span>          <span class="hl com">/* Deflation level */</span>

        <span class="hl com">/* Set an I/O filter for heap data */</span>
        deflate_level <span class="hl opt">=</span> <span class="hl num">6</span><span class="hl opt">;</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Z_append</span><span class="hl opt">(&amp;</span>tmp_cparam<span class="hl opt">.</span>pline<span class="hl opt">,</span> H5Z_FILTER_DEFLATE<span class="hl opt">,</span> H5Z_FLAG_OPTIONAL<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">1</span><span class="hl opt">, &amp;</span>deflate_level<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>

    <span class="hl com">/* Perform common file &amp; heap open operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">open_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>tmp_cparam<span class="hl opt">,</span> tparam<span class="hl opt">, &amp;</span>file<span class="hl opt">, &amp;</span>f<span class="hl opt">, &amp;</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Get information about heap ID lengths */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">&gt;</span> MAX_HEAP_ID_LEN<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/*</span>
<span class="hl com">     * Display testing message</span>
<span class="hl com">     */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>del_dir <span class="hl opt">==</span> FHEAP_DEL_HEAP<span class="hl opt">) {</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>comp <span class="hl opt">==</span> FHEAP_TEST_COMPRESS<span class="hl opt">)</span>
            <span class="hl kwd">TESTING</span><span class="hl opt">(</span><span class="hl str">&quot;inserting random-sized objects with power of 2 distribution in heap with compressed blocks, then remove all objects (all - deleting heap)&quot;</span><span class="hl opt">)</span>
        <span class="hl kwa">else</span>
            <span class="hl kwd">TESTING</span><span class="hl opt">(</span><span class="hl str">&quot;inserting random-sized objects with power of 2 distribution, then remove all objects (all - deleting heap)&quot;</span><span class="hl opt">)</span>
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>
    <span class="hl kwa">else</span> <span class="hl opt">{</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>comp <span class="hl opt">==</span> FHEAP_TEST_COMPRESS<span class="hl opt">)</span>
            <span class="hl kwd">TESTING</span><span class="hl opt">(</span><span class="hl str">&quot;inserting random-sized objects with power of 2 distribution in heap with compressed blocks, then remove all objects (all - random)&quot;</span><span class="hl opt">)</span>
        <span class="hl kwa">else</span>
            <span class="hl kwd">TESTING</span><span class="hl opt">(</span><span class="hl str">&quot;inserting random-sized objects with power of 2 distribution, then remove all objects (all - random)&quot;</span><span class="hl opt">)</span>
    <span class="hl opt">}</span> <span class="hl com">/* end else */</span>

    <span class="hl com">/* Choose random # seed */</span>
    seed <span class="hl opt">= (</span><span class="hl kwb">unsigned long</span><span class="hl opt">)</span><span class="hl kwd">HDtime</span><span class="hl opt">(</span>NULL<span class="hl opt">);</span>
<span class="hl ppc">#ifdef QAK</span>
<span class="hl com">/* seed = (unsigned long)1155181717; */</span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;Random # seed was: %lu</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">,</span> seed<span class="hl opt">);</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>
    <span class="hl kwd">HDsrandom</span><span class="hl opt">((</span><span class="hl kwb">unsigned</span><span class="hl opt">)</span>seed<span class="hl opt">);</span>

    <span class="hl com">/* Loop over adding objects to the heap, until the size limit is reached */</span>
    total_obj_added <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
    <span class="hl kwa">while</span><span class="hl opt">(</span>total_obj_added <span class="hl opt">&lt;</span> size_limit<span class="hl opt">) {</span>
        <span class="hl kwb">unsigned</span> size_range <span class="hl opt">= (</span>tmp_cparam<span class="hl opt">.</span>managed<span class="hl opt">.</span>start_block_size <span class="hl opt">/</span> <span class="hl num">8</span><span class="hl opt">);</span>       <span class="hl com">/* Object size range */</span>

        <span class="hl com">/* Determine the size of the range for this object */</span>
        <span class="hl com">/* (50% of the objects inserted will use the initial size range,</span>
<span class="hl com">         *      25% of the objects will be twice as large, 12.5% will be</span>
<span class="hl com">         *      four times larger, etc.)</span>
<span class="hl com">         */</span>
        <span class="hl kwa">while</span><span class="hl opt">(</span><span class="hl kwd">HDrandom</span><span class="hl opt">() &lt; (</span>RAND_MAX <span class="hl opt">/</span> <span class="hl num">2</span><span class="hl opt">) &amp;&amp;</span> size_range <span class="hl opt">&lt;</span> tmp_cparam<span class="hl opt">.</span>max_man_size<span class="hl opt">)</span>
            size_range <span class="hl opt">*=</span> <span class="hl num">2</span><span class="hl opt">;</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>size_range <span class="hl opt">&gt; (</span>tmp_cparam<span class="hl opt">.</span>max_man_size <span class="hl opt">+</span> <span class="hl num">255</span><span class="hl opt">))</span>
            size_range <span class="hl opt">=</span> tmp_cparam<span class="hl opt">.</span>max_man_size <span class="hl opt">+</span> <span class="hl num">255</span><span class="hl opt">;</span>

        <span class="hl com">/* Choose a random size of object (from 1 up to stand alone block size) */</span>
        obj_size <span class="hl opt">= (((</span><span class="hl kwb">unsigned</span><span class="hl opt">)</span><span class="hl kwd">HDrandom</span><span class="hl opt">() % (</span>size_range <span class="hl opt">-</span> <span class="hl num">1</span><span class="hl opt">)) +</span> <span class="hl num">1</span><span class="hl opt">);</span>
        obj_loc <span class="hl opt">= (</span>tmp_cparam<span class="hl opt">.</span>max_man_size <span class="hl opt">+</span> <span class="hl num">255</span><span class="hl opt">) -</span> obj_size<span class="hl opt">;</span>

        <span class="hl com">/* Insert object */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> obj_loc<span class="hl opt">,</span> obj_size<span class="hl opt">,</span> NULL<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
            TEST_ERROR

        <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            TEST_ERROR

        <span class="hl com">/* Increment the amount of objects added */</span>
        total_obj_added <span class="hl opt">+=</span> obj_size<span class="hl opt">;</span>
    <span class="hl opt">}</span> <span class="hl com">/* end while */</span>
<span class="hl ppc">#ifdef QAK</span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;keep_ids.num_ids = %Zu, total_obj_added = %Hu, size_limit = %Hu</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">,</span> keep_ids<span class="hl opt">.</span>num_ids<span class="hl opt">,</span> total_obj_added<span class="hl opt">,</span> size_limit<span class="hl opt">);</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>

    <span class="hl com">/* Randomize the order of the IDs kept */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> keep_ids<span class="hl opt">.</span>num_ids<span class="hl opt">;</span> u<span class="hl opt">++) {</span>
        <span class="hl kwb">size_t</span> pos<span class="hl opt">;</span>             <span class="hl com">/* Position to swap with */</span>

        <span class="hl com">/* Choose a position to swap with */</span>
        <span class="hl com">/* (0 is current position) */</span>
        pos <span class="hl opt">= ((</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl kwd">HDrandom</span><span class="hl opt">() % (</span>keep_ids<span class="hl opt">.</span>num_ids <span class="hl opt">-</span> u<span class="hl opt">));</span>

        <span class="hl com">/* If we chose a different position, swap with it */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>pos <span class="hl opt">&gt;</span> <span class="hl num">0</span><span class="hl opt">) {</span>
            <span class="hl kwb">unsigned char</span> temp_id<span class="hl opt">[</span>MAX_HEAP_ID_LEN<span class="hl opt">];</span>         <span class="hl com">/* Temp. heap ID holder */</span>

            <span class="hl com">/* Swap current position with future position */</span>
            <span class="hl com">/* (just swap the heap ID, the len &amp; offset isn't used */</span>
            <span class="hl kwd">HDmemcpy</span><span class="hl opt">(</span>temp_id<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">[</span>u <span class="hl opt">*</span> id_len<span class="hl opt">],</span> id_len<span class="hl opt">);</span>
            <span class="hl kwd">HDmemcpy</span><span class="hl opt">(&amp;</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">[</span>u <span class="hl opt">*</span> id_len<span class="hl opt">], &amp;</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">[(</span>u <span class="hl opt">+</span> pos<span class="hl opt">) *</span> id_len<span class="hl opt">],</span> id_len<span class="hl opt">);</span>
            <span class="hl kwd">HDmemcpy</span><span class="hl opt">(&amp;</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">[(</span>u <span class="hl opt">+</span> pos<span class="hl opt">) *</span> id_len<span class="hl opt">],</span> temp_id<span class="hl opt">,</span> id_len<span class="hl opt">);</span>
        <span class="hl opt">}</span> <span class="hl com">/* end if */</span>
    <span class="hl opt">}</span> <span class="hl com">/* end for */</span>

    <span class="hl com">/* Delete individual objects, if we won't be deleting the entire heap later */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>del_dir <span class="hl opt">!=</span> FHEAP_DEL_HEAP<span class="hl opt">) {</span>
        <span class="hl com">/* Delete objects inserted */</span>
        <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> keep_ids<span class="hl opt">.</span>num_ids<span class="hl opt">;</span> u<span class="hl opt">++) {</span>
            <span class="hl com">/* Remove object from heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">[</span>id_len <span class="hl opt">*</span> u<span class="hl opt">]) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                FAIL_STACK_ERROR

            <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
                TEST_ERROR
        <span class="hl opt">}</span> <span class="hl com">/* end for */</span>

        <span class="hl com">/* Check up on heap... */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">check_stats</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>state<span class="hl opt">))</span>
            TEST_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>

    <span class="hl com">/* Check for deleting the entire heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>del_dir <span class="hl opt">==</span> FHEAP_DEL_HEAP<span class="hl opt">) {</span>
        <span class="hl com">/* Delete heap */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_delete</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> fh_addr<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Get the size of the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file_size <span class="hl opt">=</span> <span class="hl kwd">h5_get_file_size</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR
<span class="hl ppc">#ifdef QAK</span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;empty_size = %lu</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">, (</span><span class="hl kwb">unsigned long</span><span class="hl opt">)</span>empty_size<span class="hl opt">);</span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;file_size = %lu</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">, (</span><span class="hl kwb">unsigned long</span><span class="hl opt">)</span>file_size<span class="hl opt">);</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>

    <span class="hl com">/* Verify the file is correct size */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>file_size <span class="hl opt">!=</span> empty_size<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Free resources */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>comp <span class="hl opt">==</span> FHEAP_TEST_COMPRESS<span class="hl opt">)</span>
        <span class="hl kwd">H5O_msg_reset</span><span class="hl opt">(</span>H5O_PLINE_ID<span class="hl opt">, &amp;</span>tmp_cparam<span class="hl opt">.</span>pline<span class="hl opt">);</span> <span class="hl com">/* Release the I/O pipeline filter information */</span>

    <span class="hl com">/* Free resources */</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    <span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;Random # seed was: %lu</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">,</span> seed<span class="hl opt">);</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_random_pow2() */</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>

<span class="hl ppc">#ifndef QAK</span>

<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_write</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test inserting objects, then changing the value for them.</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Monday, December 18, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl com">/* Custom filter used to verify that the filters are actually called and do not</span>
<span class="hl com"> * just silently fail */</span>
<span class="hl kwb">static</span> hbool_t test_write_filter_called<span class="hl opt">;</span>
<span class="hl kwb">static size_t</span> <span class="hl kwd">test_write_filter</span><span class="hl opt">(</span><span class="hl kwb">unsigned int</span> UNUSED flags<span class="hl opt">,</span> <span class="hl kwb">size_t</span> UNUSED cd_nelmts<span class="hl opt">,</span>
    <span class="hl kwb">const unsigned int</span> UNUSED cd_values<span class="hl opt">[],</span> <span class="hl kwb">size_t</span> nbytes<span class="hl opt">,</span> <span class="hl kwb">size_t</span> UNUSED <span class="hl opt">*</span>buf_size<span class="hl opt">,</span>
    <span class="hl kwb">void</span> UNUSED <span class="hl opt">**</span>buf<span class="hl opt">)</span>
<span class="hl opt">{</span>
    test_write_filter_called <span class="hl opt">=</span> TRUE<span class="hl opt">;</span>

    <span class="hl kwa">return</span> nbytes<span class="hl opt">;</span>
<span class="hl opt">}</span> <span class="hl com">/* end link_filter_filter */</span>

<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_write</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    H5HF_create_t tmp_cparam<span class="hl opt">;</span>           <span class="hl com">/* Local heap creation parameters */</span>
    <span class="hl kwb">size_t</span>      id_len<span class="hl opt">;</span>                 <span class="hl com">/* Size of fractal heap IDs */</span>
    <span class="hl kwb">unsigned char</span> tiny_heap_id<span class="hl opt">[</span>HEAP_ID_LEN<span class="hl opt">];</span> <span class="hl com">/* Heap ID for 'tiny' object */</span>
    <span class="hl kwb">unsigned char</span> huge_heap_id<span class="hl opt">[</span>HEAP_ID_LEN<span class="hl opt">];</span> <span class="hl com">/* Heap ID for 'huge' object */</span>
    hbool_t     id_changed <span class="hl opt">=</span> FALSE<span class="hl opt">;</span>     <span class="hl com">/* Whether the heap ID changed */</span>
    <span class="hl kwb">unsigned char</span> <span class="hl opt">*</span>rewrite_obj <span class="hl opt">=</span> NULL<span class="hl opt">;</span>  <span class="hl com">/* Pointer to re-write buffer for objects */</span>
    fheap_heap_ids_t keep_ids<span class="hl opt">;</span>          <span class="hl com">/* Structure to retain heap IDs */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>             <span class="hl com">/* Size of a file with an empty heap */</span>
    <span class="hl kwb">size_t</span>      obj_size<span class="hl opt">;</span>               <span class="hl com">/* Size of object */</span>
    <span class="hl kwb">size_t</span>      obj_loc<span class="hl opt">;</span>                <span class="hl com">/* Location of object in buffer */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>
    <span class="hl kwb">unsigned</span>    u<span class="hl opt">;</span>                      <span class="hl com">/* Local index variable */</span>
    herr_t      ret<span class="hl opt">;</span>                    <span class="hl com">/* Generic return value */</span>

    <span class="hl com">/*</span>
<span class="hl com">     * Display testing message</span>
<span class="hl com">     */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>comp <span class="hl opt">==</span> FHEAP_TEST_COMPRESS<span class="hl opt">)</span>
        <span class="hl kwd">TESTING</span><span class="hl opt">(</span><span class="hl str">&quot;writing objects in heap with compressed blocks&quot;</span><span class="hl opt">)</span>
    <span class="hl kwa">else</span>
        <span class="hl kwd">TESTING</span><span class="hl opt">(</span><span class="hl str">&quot;writing objects in heap&quot;</span><span class="hl opt">)</span>

    <span class="hl com">/* Initialize the heap ID structure */</span>
    <span class="hl kwd">HDmemset</span><span class="hl opt">(&amp;</span>keep_ids<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>fheap_heap_ids_t<span class="hl opt">));</span>

    <span class="hl com">/* Copy heap creation properties */</span>
    <span class="hl kwd">HDmemcpy</span><span class="hl opt">(&amp;</span>tmp_cparam<span class="hl opt">,</span> cparam<span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>H5HF_create_t<span class="hl opt">));</span>

    <span class="hl com">/* Check if we are compressing the blocks */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>comp <span class="hl opt">==</span> FHEAP_TEST_COMPRESS<span class="hl opt">) {</span>
        H5Z_class2_t filter_class<span class="hl opt">;</span>          <span class="hl com">/* Custom filter */</span>
        <span class="hl kwb">unsigned</span>    deflate_level<span class="hl opt">;</span>          <span class="hl com">/* Deflation level */</span>

        <span class="hl com">/* Set an I/O filter for heap data */</span>
        deflate_level <span class="hl opt">=</span> <span class="hl num">6</span><span class="hl opt">;</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Z_append</span><span class="hl opt">(&amp;</span>tmp_cparam<span class="hl opt">.</span>pline<span class="hl opt">,</span> H5Z_FILTER_DEFLATE<span class="hl opt">,</span> H5Z_FLAG_OPTIONAL<span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">1</span><span class="hl opt">, &amp;</span>deflate_level<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR

        <span class="hl com">/* Register and append custom filter */</span>
        filter_class<span class="hl opt">.</span>version <span class="hl opt">=</span> H5Z_CLASS_T_VERS<span class="hl opt">;</span>
        filter_class<span class="hl opt">.</span>id <span class="hl opt">=</span> H5Z_FILTER_RESERVED <span class="hl opt">+</span> <span class="hl num">43</span><span class="hl opt">;</span>
        filter_class<span class="hl opt">.</span>encoder_present <span class="hl opt">=</span> TRUE<span class="hl opt">;</span>
        filter_class<span class="hl opt">.</span>decoder_present <span class="hl opt">=</span> TRUE<span class="hl opt">;</span>
        filter_class<span class="hl opt">.</span>name <span class="hl opt">=</span> <span class="hl str">&quot;custom_fheap_filter&quot;</span><span class="hl opt">;</span>
        filter_class<span class="hl opt">.</span>can_apply <span class="hl opt">=</span> NULL<span class="hl opt">;</span>
        filter_class<span class="hl opt">.</span>set_local <span class="hl opt">=</span> NULL<span class="hl opt">;</span>
        filter_class<span class="hl opt">.</span>filter <span class="hl opt">=</span> test_write_filter<span class="hl opt">;</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Zregister</span><span class="hl opt">(&amp;</span>filter_class<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span> TEST_ERROR
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Z_append</span><span class="hl opt">(&amp;</span>tmp_cparam<span class="hl opt">.</span>pline<span class="hl opt">,</span> H5Z_FILTER_RESERVED <span class="hl opt">+</span> <span class="hl num">43</span><span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">, (</span><span class="hl kwb">size_t</span><span class="hl opt">)</span><span class="hl num">0</span><span class="hl opt">,</span> NULL<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR
        test_write_filter_called <span class="hl opt">=</span> FALSE<span class="hl opt">;</span>
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>

    <span class="hl com">/* Perform common file &amp; heap open operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">open_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>tmp_cparam<span class="hl opt">,</span> tparam<span class="hl opt">, &amp;</span>file<span class="hl opt">, &amp;</span>f<span class="hl opt">, &amp;</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Get information about heap ID lengths */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">&gt;</span> MAX_HEAP_ID_LEN<span class="hl opt">)</span>
        TEST_ERROR


    <span class="hl com">/* Create 'tiny' and 'huge' objects */</span>
    obj_size <span class="hl opt">=</span> id_len <span class="hl opt">/</span> <span class="hl num">2</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_insert</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> obj_size<span class="hl opt">,</span> shared_wobj_g<span class="hl opt">,</span> tiny_heap_id<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    obj_size <span class="hl opt">=</span> tmp_cparam<span class="hl opt">.</span>max_man_size <span class="hl opt">+</span> <span class="hl num">1</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_insert</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> obj_size<span class="hl opt">,</span> shared_wobj_g<span class="hl opt">,</span> huge_heap_id<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Verify that writing to 'huge' objects works for un-filtered heaps */</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        ret <span class="hl opt">=</span> <span class="hl kwd">H5HF_write</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> huge_heap_id<span class="hl opt">, &amp;</span>id_changed<span class="hl opt">,</span> shared_wobj_g<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwd">HDassert</span><span class="hl opt">(!</span>id_changed<span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>comp <span class="hl opt">==</span> FHEAP_TEST_COMPRESS<span class="hl opt">) {</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>ret <span class="hl opt">&gt;=</span> <span class="hl num">0</span><span class="hl opt">)</span>
            TEST_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>
    <span class="hl kwa">else</span> <span class="hl opt">{</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>ret <span class="hl opt">&lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR
    <span class="hl opt">}</span> <span class="hl com">/* end else */</span>

    <span class="hl com">/* Verify that writing to 'tiny' objects return failure (for now) */</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        ret <span class="hl opt">=</span> <span class="hl kwd">H5HF_write</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> tiny_heap_id<span class="hl opt">, &amp;</span>id_changed<span class="hl opt">,</span> shared_wobj_g<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwd">HDassert</span><span class="hl opt">(!</span>id_changed<span class="hl opt">);</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>ret <span class="hl opt">&gt;=</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Verify that the custom filter has been applied for the huge object (if</span>
<span class="hl com">     * applicable) */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>comp <span class="hl opt">==</span> FHEAP_TEST_COMPRESS<span class="hl opt">) {</span>
        <span class="hl kwa">if</span><span class="hl opt">(!</span>test_write_filter_called<span class="hl opt">)</span> TEST_ERROR
        test_write_filter_called <span class="hl opt">=</span> FALSE<span class="hl opt">;</span>
    <span class="hl opt">}</span> <span class="hl com">/* end if */</span>


    <span class="hl com">/* Re-open the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fopen</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_RDWR<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Re-open the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_open</span><span class="hl opt">(</span>f<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">,</span> fh_addr<span class="hl opt">)))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Initialize data to overwrite with */</span>
    rewrite_obj <span class="hl opt">= (</span><span class="hl kwb">unsigned char</span> <span class="hl opt">*)</span><span class="hl kwd">H5MM_malloc</span><span class="hl opt">(</span>shared_obj_size_g<span class="hl opt">);</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> shared_obj_size_g<span class="hl opt">;</span> u<span class="hl opt">++)</span>
        rewrite_obj<span class="hl opt">[</span>u<span class="hl opt">] = (</span><span class="hl kwb">unsigned char</span><span class="hl opt">)(</span>shared_wobj_g<span class="hl opt">[</span>u<span class="hl opt">] *</span> <span class="hl num">2</span><span class="hl opt">);</span>

    <span class="hl com">/* Insert different sized objects, but stay out of &quot;tiny&quot; and &quot;huge&quot; zones */</span>
    obj_size <span class="hl opt">=</span> <span class="hl num">20</span><span class="hl opt">;</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> <span class="hl num">40</span><span class="hl opt">;</span> u<span class="hl opt">++) {</span>
        obj_loc <span class="hl opt">=</span> u<span class="hl opt">;</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> obj_loc<span class="hl opt">,</span> obj_size<span class="hl opt">,</span> NULL<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
            TEST_ERROR

        <span class="hl com">/* Check for closing &amp; re-opening the heap */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">reopen_heap</span><span class="hl opt">(</span>f<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>fh<span class="hl opt">,</span> fh_addr<span class="hl opt">,</span> tparam<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            TEST_ERROR

        <span class="hl com">/* Overwrite data just written */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_write</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">[</span>id_len <span class="hl opt">*</span> u<span class="hl opt">], &amp;</span>id_changed<span class="hl opt">,</span> rewrite_obj<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR
        <span class="hl kwd">HDassert</span><span class="hl opt">(!</span>id_changed<span class="hl opt">);</span>

        <span class="hl com">/* Read data back in */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_read</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">[</span>id_len <span class="hl opt">*</span> u<span class="hl opt">],</span> shared_robj_g<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR

        <span class="hl com">/* Compare data read in */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">HDmemcmp</span><span class="hl opt">(</span>rewrite_obj<span class="hl opt">,</span> shared_robj_g<span class="hl opt">,</span> obj_size<span class="hl opt">))</span>
            TEST_ERROR

        <span class="hl com">/* Change size of data to write */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>u <span class="hl opt">&lt;</span> <span class="hl num">20</span><span class="hl opt">)</span>
            obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)(</span>obj_size <span class="hl opt">*</span> <span class="hl num">1.3</span><span class="hl opt">);</span>
        <span class="hl kwa">else</span>
            obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)(</span>obj_size <span class="hl opt">/</span> <span class="hl num">1.3</span><span class="hl opt">);</span>
    <span class="hl opt">}</span> <span class="hl com">/* end for */</span>

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Verify that the custom filter has been applied to the managed objects (if</span>
<span class="hl com">     * applicable) */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>comp <span class="hl opt">==</span> FHEAP_TEST_COMPRESS<span class="hl opt">)</span>
        <span class="hl kwa">if</span><span class="hl opt">(!</span>test_write_filter_called<span class="hl opt">)</span> TEST_ERROR


    <span class="hl com">/* Re-open the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fopen</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_RDONLY<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Re-open the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_open</span><span class="hl opt">(</span>f<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">,</span> fh_addr<span class="hl opt">)))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Verify changed objects */</span>
    obj_size <span class="hl opt">=</span> <span class="hl num">20</span><span class="hl opt">;</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> <span class="hl num">40</span><span class="hl opt">;</span> u<span class="hl opt">++) {</span>
        <span class="hl com">/* Read data back in */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_read</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">[</span>id_len <span class="hl opt">*</span> u<span class="hl opt">],</span> shared_robj_g<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
            FAIL_STACK_ERROR

        <span class="hl com">/* Compare data read in */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">HDmemcmp</span><span class="hl opt">(</span>rewrite_obj<span class="hl opt">,</span> shared_robj_g<span class="hl opt">,</span> obj_size<span class="hl opt">))</span>
            TEST_ERROR

        <span class="hl com">/* Change size of data to write */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>u <span class="hl opt">&lt;</span> <span class="hl num">20</span><span class="hl opt">)</span>
            obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)(</span>obj_size <span class="hl opt">*</span> <span class="hl num">1.3</span><span class="hl opt">);</span>
        <span class="hl kwa">else</span>
            obj_size <span class="hl opt">= (</span><span class="hl kwb">size_t</span><span class="hl opt">)(</span>obj_size <span class="hl opt">/</span> <span class="hl num">1.3</span><span class="hl opt">);</span>
    <span class="hl opt">}</span> <span class="hl com">/* end for */</span>

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Free resources */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">-&gt;</span>comp <span class="hl opt">==</span> FHEAP_TEST_COMPRESS<span class="hl opt">)</span>
        <span class="hl kwd">H5O_msg_reset</span><span class="hl opt">(</span>H5O_PLINE_ID<span class="hl opt">, &amp;</span>tmp_cparam<span class="hl opt">.</span>pline<span class="hl opt">);</span> <span class="hl com">/* Release the I/O pipeline filter information */</span>

    <span class="hl com">/* Free resources */</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>rewrite_obj<span class="hl opt">);</span>

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>rewrite_obj<span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_write() */</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>

<span class="hl ppc">#ifndef QAK</span>

<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	test_bug1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test inserting several objects, then deleting one and</span>
<span class="hl com"> *              re-inserting an object, along with opening and closing</span>
<span class="hl com"> *              the file.</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:	0</span>
<span class="hl com"> *		Failure:	1</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Tuesday, November 28, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">static unsigned</span>
<span class="hl kwd">test_bug1</span><span class="hl opt">(</span>hid_t fapl<span class="hl opt">,</span> H5HF_create_t <span class="hl opt">*</span>cparam<span class="hl opt">,</span> fheap_test_param_t <span class="hl opt">*</span>tparam<span class="hl opt">)</span>
<span class="hl opt">{</span>
    hid_t	file <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File ID */</span>
    hid_t       dxpl <span class="hl opt">=</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">;</span>     <span class="hl com">/* DXPL to use */</span>
    <span class="hl kwb">char</span>	filename<span class="hl opt">[</span>FHEAP_FILENAME_LEN<span class="hl opt">];</span>         <span class="hl com">/* Filename to use */</span>
    H5F_t	<span class="hl opt">*</span>f <span class="hl opt">=</span> NULL<span class="hl opt">;</span>              <span class="hl com">/* Internal file object pointer */</span>
    H5HF_t      <span class="hl opt">*</span>fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>             <span class="hl com">/* Fractal heap wrapper */</span>
    haddr_t     fh_addr<span class="hl opt">;</span>                <span class="hl com">/* Address of fractal heap */</span>
    <span class="hl kwb">size_t</span>      id_len<span class="hl opt">;</span>                 <span class="hl com">/* Size of fractal heap IDs */</span>
    fheap_heap_ids_t keep_ids<span class="hl opt">;</span>          <span class="hl com">/* Structure to retain heap IDs */</span>
    h5_stat_size_t       empty_size<span class="hl opt">;</span>             <span class="hl com">/* Size of a file with an empty heap */</span>
    <span class="hl kwb">size_t</span>      obj_size<span class="hl opt">;</span>               <span class="hl com">/* Size of object */</span>
    <span class="hl kwb">size_t</span>      obj_loc<span class="hl opt">;</span>                <span class="hl com">/* Location of object in buffer */</span>
    fheap_heap_state_t state<span class="hl opt">;</span>           <span class="hl com">/* State of fractal heap */</span>

    <span class="hl com">/*</span>
<span class="hl com">     * Display testing message</span>
<span class="hl com">     */</span>
    <span class="hl kwd">TESTING</span><span class="hl opt">(</span><span class="hl str">&quot;bug1: inserting several objects &amp; removing one, then re-inserting&quot;</span><span class="hl opt">)</span>

    <span class="hl com">/* Initialize the heap ID structure */</span>
    <span class="hl kwd">HDmemset</span><span class="hl opt">(&amp;</span>keep_ids<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>fheap_heap_ids_t<span class="hl opt">));</span>

    <span class="hl com">/* Perform common file &amp; heap open operations */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">open_heap</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> fapl<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> cparam<span class="hl opt">,</span> tparam<span class="hl opt">, &amp;</span>file<span class="hl opt">, &amp;</span>f<span class="hl opt">, &amp;</span>fh<span class="hl opt">, &amp;</span>fh_addr<span class="hl opt">, &amp;</span>state<span class="hl opt">, &amp;</span>empty_size<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Get information about heap ID lengths */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_get_id_len</span><span class="hl opt">(</span>fh<span class="hl opt">, &amp;</span>id_len<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    <span class="hl kwa">if</span><span class="hl opt">(</span>id_len <span class="hl opt">&gt;</span> MAX_HEAP_ID_LEN<span class="hl opt">)</span>
        TEST_ERROR

    <span class="hl com">/* Insert objects */</span>
    obj_size <span class="hl opt">=</span> <span class="hl num">44</span><span class="hl opt">;</span>
    obj_loc <span class="hl opt">=</span> <span class="hl num">1</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> obj_loc<span class="hl opt">,</span> obj_size<span class="hl opt">,</span> NULL<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    obj_size <span class="hl opt">=</span> <span class="hl num">484</span><span class="hl opt">;</span>
    obj_loc <span class="hl opt">=</span> <span class="hl num">2</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> obj_loc<span class="hl opt">,</span> obj_size<span class="hl opt">,</span> NULL<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    obj_size <span class="hl opt">=</span> <span class="hl num">168</span><span class="hl opt">;</span>
    obj_loc <span class="hl opt">=</span> <span class="hl num">3</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> obj_loc<span class="hl opt">,</span> obj_size<span class="hl opt">,</span> NULL<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    obj_size <span class="hl opt">=</span> <span class="hl num">96</span><span class="hl opt">;</span>
    obj_loc <span class="hl opt">=</span> <span class="hl num">4</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> obj_loc<span class="hl opt">,</span> obj_size<span class="hl opt">,</span> NULL<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    obj_size <span class="hl opt">=</span> <span class="hl num">568</span><span class="hl opt">;</span>
    obj_loc <span class="hl opt">=</span> <span class="hl num">5</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> obj_loc<span class="hl opt">,</span> obj_size<span class="hl opt">,</span> NULL<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    obj_size <span class="hl opt">=</span> <span class="hl num">568</span><span class="hl opt">;</span>
    obj_loc <span class="hl opt">=</span> <span class="hl num">6</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> obj_loc<span class="hl opt">,</span> obj_size<span class="hl opt">,</span> NULL<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR



    <span class="hl com">/* Re-open the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fopen</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_RDWR<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Re-open the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_open</span><span class="hl opt">(</span>f<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">,</span> fh_addr<span class="hl opt">)))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Remove one of the objects */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_remove</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">[</span>id_len <span class="hl opt">*</span> <span class="hl num">4</span><span class="hl opt">]) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR


    <span class="hl com">/* Re-open the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">((</span>file <span class="hl opt">=</span> <span class="hl kwd">H5Fopen</span><span class="hl opt">(</span>filename<span class="hl opt">,</span> H5F_ACC_RDWR<span class="hl opt">,</span> fapl<span class="hl opt">)) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Get a pointer to the internal file object */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>f <span class="hl opt">= (</span>H5F_t <span class="hl opt">*)</span><span class="hl kwd">H5I_object</span><span class="hl opt">(</span>file<span class="hl opt">)))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Ignore metadata tags in the file's cache */</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwd">H5AC_ignore_tags</span><span class="hl opt">(</span>f<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Re-open the heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>NULL <span class="hl opt">== (</span>fh <span class="hl opt">=</span> <span class="hl kwd">H5HF_open</span><span class="hl opt">(</span>f<span class="hl opt">,</span> H5P_DATASET_XFER_DEFAULT<span class="hl opt">,</span> fh_addr<span class="hl opt">)))</span>
        FAIL_STACK_ERROR

    <span class="hl com">/* Insert another object */</span>
    obj_size <span class="hl opt">=</span> <span class="hl num">208</span><span class="hl opt">;</span>
    obj_loc <span class="hl opt">=</span> <span class="hl num">6</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">add_obj</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">,</span> obj_loc<span class="hl opt">,</span> obj_size<span class="hl opt">,</span> NULL<span class="hl opt">, &amp;</span>keep_ids<span class="hl opt">))</span>
        TEST_ERROR

    <span class="hl com">/* Close the fractal heap */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR
    fh <span class="hl opt">=</span> NULL<span class="hl opt">;</span>

    <span class="hl com">/* Close the file */</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span><span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">) &lt;</span> <span class="hl num">0</span><span class="hl opt">)</span>
        FAIL_STACK_ERROR


    <span class="hl com">/* Free resources */</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>

    <span class="hl com">/* All tests passed */</span>
    <span class="hl kwd">PASSED</span><span class="hl opt">()</span>

    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">);</span>

error<span class="hl opt">:</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>ids<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>lens<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>keep_ids<span class="hl opt">.</span>offs<span class="hl opt">);</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>fh<span class="hl opt">)</span>
            <span class="hl kwd">H5HF_close</span><span class="hl opt">(</span>fh<span class="hl opt">,</span> dxpl<span class="hl opt">);</span>
	<span class="hl kwd">H5Fclose</span><span class="hl opt">(</span>file<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span> <span class="hl com">/* test_bug1() */</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>


<span class="hl com">/*-------------------------------------------------------------------------</span>
<span class="hl com"> * Function:	main</span>
<span class="hl com"> *</span>
<span class="hl com"> * Purpose:	Test the fractal heap code</span>
<span class="hl com"> *</span>
<span class="hl com"> * Return:	Success:</span>
<span class="hl com"> *</span>
<span class="hl com"> *		Failure:</span>
<span class="hl com"> *</span>
<span class="hl com"> * Programmer:	Quincey Koziol</span>
<span class="hl com"> *              Friday, February 24, 2006</span>
<span class="hl com"> *</span>
<span class="hl com"> *-------------------------------------------------------------------------</span>
<span class="hl com"> */</span>
<span class="hl kwb">int</span>
<span class="hl kwd">main</span><span class="hl opt">(</span><span class="hl kwb">void</span><span class="hl opt">)</span>
<span class="hl opt">{</span>
    fheap_test_param_t tparam<span class="hl opt">;</span>          <span class="hl com">/* Testing parameters */</span>
    H5HF_create_t small_cparam<span class="hl opt">;</span>         <span class="hl com">/* Creation parameters for &quot;small&quot; heap */</span>
    H5HF_create_t large_cparam<span class="hl opt">;</span>         <span class="hl com">/* Creation parameters for &quot;large&quot; heap */</span>
    hid_t	fapl <span class="hl opt">= -</span><span class="hl num">1</span><span class="hl opt">;</span>              <span class="hl com">/* File access property list for data files */</span>
    fheap_test_type_t curr_test<span class="hl opt">;</span>        <span class="hl com">/* Current test being worked on */</span>
    <span class="hl kwb">unsigned</span>    u<span class="hl opt">;</span>                      <span class="hl com">/* Local index variable */</span>
    <span class="hl kwb">unsigned</span>	nerrors <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>            <span class="hl com">/* Cumulative error count */</span>
    <span class="hl kwb">int</span>		ExpressMode<span class="hl opt">;</span>            <span class="hl com">/* Express testing level */</span>

    <span class="hl com">/* Reset library */</span>
    <span class="hl kwd">h5_reset</span><span class="hl opt">();</span>
    fapl <span class="hl opt">=</span> <span class="hl kwd">h5_fileaccess</span><span class="hl opt">();</span>
    ExpressMode <span class="hl opt">=</span> <span class="hl kwd">GetTestExpress</span><span class="hl opt">();</span>
    <span class="hl kwa">if</span><span class="hl opt">(</span>ExpressMode <span class="hl opt">&gt;</span> <span class="hl num">1</span><span class="hl opt">)</span>
	<span class="hl kwd">printf</span><span class="hl opt">(</span><span class="hl str">&quot;***Express test mode on.  Some tests may be skipped</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">);</span>

    <span class="hl com">/* Initialize heap creation parameters */</span>
    <span class="hl kwd">init_small_cparam</span><span class="hl opt">(&amp;</span>small_cparam<span class="hl opt">);</span>
    <span class="hl kwd">init_large_cparam</span><span class="hl opt">(&amp;</span>large_cparam<span class="hl opt">);</span>

    <span class="hl com">/* Allocate space for the shared objects */</span>
    shared_obj_size_g <span class="hl opt">=</span> large_cparam<span class="hl opt">.</span>max_man_size <span class="hl opt">+</span> <span class="hl num">256</span><span class="hl opt">;</span>
    shared_wobj_g <span class="hl opt">= (</span><span class="hl kwb">unsigned char</span> <span class="hl opt">*)</span><span class="hl kwd">H5MM_malloc</span><span class="hl opt">(</span>shared_obj_size_g<span class="hl opt">);</span>
    shared_robj_g <span class="hl opt">= (</span><span class="hl kwb">unsigned char</span> <span class="hl opt">*)</span><span class="hl kwd">H5MM_malloc</span><span class="hl opt">(</span>shared_obj_size_g<span class="hl opt">);</span>

    <span class="hl com">/* Initialize the shared write buffer for objects */</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>u <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> u <span class="hl opt">&lt;</span> shared_obj_size_g<span class="hl opt">;</span> u<span class="hl opt">++)</span>
        shared_wobj_g<span class="hl opt">[</span>u<span class="hl opt">] = (</span><span class="hl kwb">unsigned char</span><span class="hl opt">)</span>u<span class="hl opt">;</span>

    <span class="hl com">/* Iterate over the testing parameters */</span>
<span class="hl ppc">#ifndef QAK</span>
    <span class="hl kwa">for</span><span class="hl opt">(</span>curr_test <span class="hl opt">=</span> FHEAP_TEST_NORMAL<span class="hl opt">;</span> curr_test <span class="hl opt">&lt;</span> FHEAP_TEST_NTESTS<span class="hl opt">;</span> curr_test<span class="hl opt">++) {</span>
<span class="hl ppc">#else</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;Uncomment test loop!</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">);</span>
curr_test <span class="hl opt">=</span> FHEAP_TEST_NORMAL<span class="hl opt">;</span>
<span class="hl com">/* curr_test = FHEAP_TEST_REOPEN; */</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>
        <span class="hl com">/* Clear the testing parameters */</span>
        <span class="hl kwd">HDmemset</span><span class="hl opt">(&amp;</span>tparam<span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwa">sizeof</span><span class="hl opt">(</span>fheap_test_param_t<span class="hl opt">));</span>
        tparam<span class="hl opt">.</span>actual_id_len <span class="hl opt">=</span> HEAP_ID_LEN<span class="hl opt">;</span>

        <span class="hl com">/* Set appropriate testing parameters for each test */</span>
        <span class="hl kwa">switch</span><span class="hl opt">(</span>curr_test<span class="hl opt">) {</span>
            <span class="hl com">/* &quot;Normal&quot; testing parameters */</span>
            <span class="hl kwa">case</span> FHEAP_TEST_NORMAL<span class="hl opt">:</span>
                <span class="hl kwd">puts</span><span class="hl opt">(</span><span class="hl str">&quot;Testing with normal parameters&quot;</span><span class="hl opt">);</span>
                <span class="hl kwa">break</span><span class="hl opt">;</span>

            <span class="hl com">/* &quot;Re-open heap&quot; testing parameters */</span>
            <span class="hl kwa">case</span> FHEAP_TEST_REOPEN<span class="hl opt">:</span>
                <span class="hl kwd">puts</span><span class="hl opt">(</span><span class="hl str">&quot;Testing with reopen heap flag set&quot;</span><span class="hl opt">);</span>
                tparam<span class="hl opt">.</span>reopen_heap <span class="hl opt">=</span> FHEAP_TEST_REOPEN<span class="hl opt">;</span>
                <span class="hl kwa">break</span><span class="hl opt">;</span>

            <span class="hl com">/* An unknown test? */</span>
            <span class="hl kwa">case</span> FHEAP_TEST_NTESTS<span class="hl opt">:</span>
            <span class="hl kwa">default</span><span class="hl opt">:</span>
                <span class="hl kwa">goto</span> error<span class="hl opt">;</span>
        <span class="hl opt">}</span> <span class="hl com">/* end switch */</span>

        <span class="hl com">/* Test fractal heap creation */</span>
<span class="hl ppc">#ifndef QAK</span>
        nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_create</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
        nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_reopen</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
        nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_open_twice</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
        nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_delete_open</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
        nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_id_limits</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">);</span>
        nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_filtered_create</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">);</span>
        nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_size</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">);</span>
<span class="hl ppc">#ifndef H5_CANNOT_OPEN_TWICE</span>
        nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_reopen_hdr</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">);</span>
<span class="hl ppc">#endif</span> <span class="hl com">/*H5_CANNOT_OPEN_TWICE*/</span><span class="hl ppc"></span>
<span class="hl ppc">#else</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;Uncomment tests!</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">);</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>

<span class="hl ppc">#ifndef QAK2</span>
<span class="hl ppc">#ifndef QAK</span>
        <span class="hl opt">{</span>
        fheap_test_fill_t fill<span class="hl opt">;</span>        <span class="hl com">/* Size of objects to fill heap blocks with */</span>

<span class="hl ppc">#ifndef QAK2</span>
        <span class="hl com">/* Filling with different sized objects */</span>
        <span class="hl kwa">for</span><span class="hl opt">(</span>fill <span class="hl opt">=</span> FHEAP_TEST_FILL_LARGE<span class="hl opt">;</span> fill <span class="hl opt">&lt;</span> FHEAP_TEST_FILL_N<span class="hl opt">;</span> fill<span class="hl opt">++) {</span>
<span class="hl ppc">#else</span> <span class="hl com">/* QAK2 */</span><span class="hl ppc"></span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;Uncomment test loop!</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">);</span>
fill <span class="hl opt">=</span> FHEAP_TEST_FILL_LARGE<span class="hl opt">;</span>
<span class="hl com">/* fill = FHEAP_TEST_FILL_SINGLE; */</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK2 */</span><span class="hl ppc"></span>
            tparam<span class="hl opt">.</span>fill <span class="hl opt">=</span> fill<span class="hl opt">;</span>

            <span class="hl com">/* Set appropriate testing parameters for each test */</span>
            <span class="hl kwa">switch</span><span class="hl opt">(</span>fill<span class="hl opt">) {</span>
                <span class="hl com">/* &quot;Bulk fill&quot; heap blocks with 'large' objects */</span>
                <span class="hl kwa">case</span> FHEAP_TEST_FILL_LARGE<span class="hl opt">:</span>
                    <span class="hl kwd">puts</span><span class="hl opt">(</span><span class="hl str">&quot;Bulk-filling blocks w/large objects&quot;</span><span class="hl opt">);</span>
                    <span class="hl kwa">break</span><span class="hl opt">;</span>

                <span class="hl com">/* &quot;Bulk fill&quot; heap blocks with 'single' objects */</span>
                <span class="hl kwa">case</span> FHEAP_TEST_FILL_SINGLE<span class="hl opt">:</span>
                    <span class="hl kwd">puts</span><span class="hl opt">(</span><span class="hl str">&quot;Bulk-filling blocks w/single object&quot;</span><span class="hl opt">);</span>
                    <span class="hl kwa">break</span><span class="hl opt">;</span>

                <span class="hl com">/* An unknown test? */</span>
                <span class="hl kwa">case</span> FHEAP_TEST_FILL_N<span class="hl opt">:</span>
                <span class="hl kwa">default</span><span class="hl opt">:</span>
                    <span class="hl kwa">goto</span> error<span class="hl opt">;</span>
            <span class="hl opt">}</span> <span class="hl com">/* end switch */</span>

            <span class="hl com">/*</span>
<span class="hl com">             * Test fractal heap managed object insertion</span>
<span class="hl com">             */</span>

<span class="hl ppc">#ifndef QAK</span>
            <span class="hl com">/* &quot;Weird&quot; sized objects */</span>
            nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_insert_weird</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
<span class="hl ppc">#else</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;Uncomment tests!</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">);</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>

<span class="hl ppc">#ifdef ALL_INSERT_TESTS</span>
            <span class="hl com">/* &quot;Standard&quot; sized objects, building from simple to complex heaps */</span>
            nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_insert_first</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
            nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_insert_second</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
            nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_insert_root_mult</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
            nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_insert_force_indirect</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
            nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_insert_fill_second</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
            nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_insert_third_direct</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
            nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_fill_first_row</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
            nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_start_second_row</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
            nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_fill_second_row</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
            nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_start_third_row</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
            nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_fill_fourth_row</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
            nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_fill_all_root_direct</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
            nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_first_recursive_indirect</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
            nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_second_direct_recursive_indirect</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
            nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_fill_first_recursive_indirect</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
            nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_second_recursive_indirect</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
            nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_fill_second_recursive_indirect</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
            nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_fill_recursive_indirect_row</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
            nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_start_2nd_recursive_indirect</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
            nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_recursive_indirect_two_deep</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
            nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_start_3rd_recursive_indirect</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
            nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_fill_first_3rd_recursive_indirect</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
            nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_fill_3rd_recursive_indirect_row</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
            nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_fill_all_3rd_recursive_indirect</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
            nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_start_4th_recursive_indirect</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
            nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_fill_first_4th_recursive_indirect</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
            nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_fill_4th_recursive_indirect_row</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
            nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_fill_all_4th_recursive_indirect</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* ALL_INSERT_TESTS */</span><span class="hl ppc"></span>
            <span class="hl com">/* If this test fails, uncomment the tests above, which build up to this</span>
<span class="hl com">             * level of complexity gradually. -QAK</span>
<span class="hl com">             */</span>
<span class="hl ppc">#ifndef QAK</span>
            <span class="hl kwa">if</span><span class="hl opt">(</span>ExpressMode <span class="hl opt">&gt;</span> <span class="hl num">1</span><span class="hl opt">)</span>
                <span class="hl kwd">printf</span><span class="hl opt">(</span><span class="hl str">&quot;***Express test mode on.  test_man_start_5th_recursive_indirect is skipped</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">);</span>
            <span class="hl kwa">else</span>
                nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_start_5th_recursive_indirect</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
<span class="hl ppc">#else</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;Uncomment tests!</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">);</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>

            <span class="hl com">/*</span>
<span class="hl com">             * Test fractal heap object deletion</span>
<span class="hl com">             */</span>
            <span class="hl com">/* Simple removal */</span>
<span class="hl ppc">#ifndef QAK</span>
            nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_remove_bogus</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
            nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_remove_one</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
            nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_remove_two</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
            nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_remove_one_larger</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
            tparam<span class="hl opt">.</span>del_dir <span class="hl opt">=</span> FHEAP_DEL_FORWARD<span class="hl opt">;</span>
            nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_remove_two_larger</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
            tparam<span class="hl opt">.</span>del_dir <span class="hl opt">=</span> FHEAP_DEL_REVERSE<span class="hl opt">;</span>
            nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_remove_two_larger</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
            tparam<span class="hl opt">.</span>del_dir <span class="hl opt">=</span> FHEAP_DEL_FORWARD<span class="hl opt">;</span>
            nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_remove_three_larger</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
            tparam<span class="hl opt">.</span>del_dir <span class="hl opt">=</span> FHEAP_DEL_REVERSE<span class="hl opt">;</span>
            nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_remove_three_larger</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>

            <span class="hl com">/* Incremental insert &amp; removal */</span>
            tparam<span class="hl opt">.</span>del_dir <span class="hl opt">=</span> FHEAP_DEL_FORWARD<span class="hl opt">;</span>
            nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_incr_insert_remove</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
<span class="hl ppc">#else</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;Uncomment tests!</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">);</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>

<span class="hl ppc">#ifndef QAK</span>
<span class="hl ppc">#ifndef QAK2</span>
            <span class="hl opt">{</span>
            fheap_test_del_dir_t del_dir<span class="hl opt">;</span>        <span class="hl com">/* Deletion direction */</span>
            fheap_test_del_drain_t drain_half<span class="hl opt">;</span>   <span class="hl com">/* Deletion draining */</span>

            <span class="hl com">/* More complex removal patterns */</span>
            <span class="hl kwa">for</span><span class="hl opt">(</span>del_dir <span class="hl opt">=</span> FHEAP_DEL_FORWARD<span class="hl opt">;</span> del_dir <span class="hl opt">&lt;</span> FHEAP_DEL_NDIRS<span class="hl opt">;</span> del_dir<span class="hl opt">++) {</span>
                tparam<span class="hl opt">.</span>del_dir <span class="hl opt">=</span> del_dir<span class="hl opt">;</span>
                <span class="hl kwa">for</span><span class="hl opt">(</span>drain_half <span class="hl opt">=</span> FHEAP_DEL_DRAIN_ALL<span class="hl opt">;</span> drain_half <span class="hl opt">&lt;</span> FHEAP_DEL_DRAIN_N<span class="hl opt">;</span> drain_half<span class="hl opt">++) {</span>
                    tparam<span class="hl opt">.</span>drain_half <span class="hl opt">=</span> drain_half<span class="hl opt">;</span>
<span class="hl ppc">#else</span> <span class="hl com">/* QAK2 */</span><span class="hl ppc"></span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;Uncomment test loops!</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">);</span>
<span class="hl com">/* tparam.del_dir = FHEAP_DEL_FORWARD; */</span>
<span class="hl com">/* tparam.del_dir = FHEAP_DEL_REVERSE; */</span>
tparam<span class="hl opt">.</span>del_dir <span class="hl opt">=</span> FHEAP_DEL_HEAP<span class="hl opt">;</span>
tparam<span class="hl opt">.</span>drain_half <span class="hl opt">=</span> FHEAP_DEL_DRAIN_ALL<span class="hl opt">;</span>
<span class="hl com">/* tparam.drain_half = FHEAP_DEL_DRAIN_HALF; */</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK2 */</span><span class="hl ppc"></span>
                    <span class="hl com">/* Don't need to test deletion directions when deleting entire heap */</span>
                    <span class="hl kwa">if</span><span class="hl opt">(</span>tparam<span class="hl opt">.</span>del_dir <span class="hl opt">==</span> FHEAP_DEL_HEAP <span class="hl opt">&amp;&amp;</span> tparam<span class="hl opt">.</span>drain_half <span class="hl opt">&gt;</span> FHEAP_DEL_DRAIN_ALL<span class="hl opt">)</span>
                        <span class="hl kwa">break</span><span class="hl opt">;</span>

<span class="hl ppc">#ifndef QAK</span>
                    <span class="hl com">/* Simple insertion patterns */</span>
                    nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_remove_root_direct</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
                    nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_remove_two_direct</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
                    nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_remove_first_row</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
                    nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_remove_first_two_rows</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
                    nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_remove_first_four_rows</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
                    <span class="hl kwa">if</span><span class="hl opt">(</span>ExpressMode <span class="hl opt">&gt;</span> <span class="hl num">1</span><span class="hl opt">)</span>
                        <span class="hl kwd">printf</span><span class="hl opt">(</span><span class="hl str">&quot;***Express test mode on.  Some tests skipped</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">);</span>
                    <span class="hl kwa">else</span> <span class="hl opt">{</span>
                        nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_remove_all_root_direct</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
                        nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_remove_2nd_indirect</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
                        nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_remove_3rd_indirect</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
                    <span class="hl opt">}</span> <span class="hl com">/* end else */</span>
<span class="hl ppc">#else</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;Uncomment tests!</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">);</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>

<span class="hl ppc">#ifndef QAK</span>
                    <span class="hl com">/* Skip blocks insertion */</span>
                    <span class="hl com">/* (covers insertion &amp; deletion of skipped blocks) */</span>
                    nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_skip_start_block</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
                    nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_skip_start_block_add_back</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
                    nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_skip_start_block_add_skipped</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
                    nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_skip_2nd_block</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
                    nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_skip_2nd_block_add_skipped</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
                    nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_fill_one_partial_skip_2nd_block_add_skipped</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
                    nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_fill_row_skip_add_skipped</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
                    nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_skip_direct_skip_indirect_two_rows_add_skipped</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
                    nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_fill_direct_skip_indirect_start_block_add_skipped</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
                    nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_fill_direct_skip_2nd_indirect_start_block_add_skipped</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
                    nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_fill_2nd_direct_less_one_wrap_start_block_add_skipped</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
                    nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_fill_direct_skip_2nd_indirect_skip_2nd_block_add_skipped</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
                    nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_fill_direct_skip_indirect_two_rows_add_skipped</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
                    nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_fill_direct_skip_indirect_two_rows_skip_indirect_row_add_skipped</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
                    nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_fill_2nd_direct_skip_start_block_add_skipped</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
                    nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_fill_2nd_direct_skip_2nd_indirect_start_block_add_skipped</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
                    nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_fill_2nd_direct_fill_direct_skip_3rd_indirect_start_block_add_skipped</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
                    nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_fill_2nd_direct_fill_direct_skip2_3rd_indirect_start_block_add_skipped</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
                    nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_fill_3rd_direct_less_one_fill_direct_wrap_start_block_add_skipped</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
                    nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_fill_1st_row_3rd_direct_fill_2nd_direct_less_one_wrap_start_block_add_skipped</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
                    <span class="hl kwa">if</span><span class="hl opt">(</span>ExpressMode <span class="hl opt">&gt;</span> <span class="hl num">1</span><span class="hl opt">)</span>
                        <span class="hl kwd">printf</span><span class="hl opt">(</span><span class="hl str">&quot;***Express test mode on.  Some tests skipped</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">);</span>
                    <span class="hl kwa">else</span> <span class="hl opt">{</span>
                        nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_fill_3rd_direct_fill_direct_skip_start_block_add_skipped</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
                        nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_fill_3rd_direct_fill_2nd_direct_fill_direct_skip_3rd_indirect_start_block_add_skipped</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
                        nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_fill_3rd_direct_fill_2nd_direct_fill_direct_skip_3rd_indirect_two_rows_start_block_add_skipped</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
                        nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_fill_3rd_direct_fill_2nd_direct_fill_direct_skip_3rd_indirect_wrap_start_block_add_skipped</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
                        nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_fill_4th_direct_less_one_fill_2nd_direct_fill_direct_skip_3rd_indirect_wrap_start_block_add_skipped</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
                    <span class="hl opt">}</span> <span class="hl com">/* end else */</span>
<span class="hl ppc">#else</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;Uncomment tests!</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">);</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>

<span class="hl ppc">#ifndef QAK</span>
                    <span class="hl com">/* Fragmented insertion patterns */</span>
                    <span class="hl com">/* (covers insertion &amp; deletion of fragmented blocks) */</span>
                    nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_frag_simple</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
                    nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_frag_direct</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
                    nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_frag_2nd_direct</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
                    nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_man_frag_3rd_direct</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
<span class="hl ppc">#else</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>
    <span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;Uncomment tests!</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">);</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>
<span class="hl ppc">#ifndef QAK2</span>
                <span class="hl opt">}</span> <span class="hl com">/* end for */</span>
            <span class="hl opt">}</span> <span class="hl com">/* end for */</span>

            <span class="hl com">/* Reset deletion drain parameter */</span>
            tparam<span class="hl opt">.</span>drain_half <span class="hl opt">=</span> FHEAP_DEL_DRAIN_ALL<span class="hl opt">;</span>

            <span class="hl opt">}</span> <span class="hl com">/* end block */</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK2 */</span><span class="hl ppc"></span>
<span class="hl ppc">#else</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;Uncomment tests!</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">);</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>
<span class="hl ppc">#ifndef QAK2</span>
            <span class="hl opt">}</span> <span class="hl com">/* end for */</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK2 */</span><span class="hl ppc"></span>
        <span class="hl opt">}</span> <span class="hl com">/* end block */</span>
<span class="hl ppc">#else</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;Uncomment tests!</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">);</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>

        <span class="hl com">/*</span>
<span class="hl com">         * Test fractal heap 'huge' &amp; 'tiny' object insertion &amp; deletion</span>
<span class="hl com">         */</span>
<span class="hl ppc">#ifndef QAK</span>
        <span class="hl opt">{</span>
        fheap_test_del_dir_t del_dir<span class="hl opt">;</span>   <span class="hl com">/* Deletion direction */</span>
        <span class="hl kwb">unsigned</span> id_len<span class="hl opt">;</span>                <span class="hl com">/* Length of heap IDs */</span>

        <span class="hl com">/* Test &quot;normal&quot; &amp; &quot;direct&quot; storage of 'huge' &amp; 'tiny' heap IDs */</span>
        <span class="hl kwa">for</span><span class="hl opt">(</span>id_len <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> id_len <span class="hl opt">&lt;</span> <span class="hl num">3</span><span class="hl opt">;</span> id_len<span class="hl opt">++) {</span>
            <span class="hl com">/* Set the ID length for this test */</span>
            small_cparam<span class="hl opt">.</span>id_len <span class="hl opt">= (</span><span class="hl kwb">uint16_t</span><span class="hl opt">)</span>id_len<span class="hl opt">;</span>

            <span class="hl com">/* Print information about each test */</span>
            <span class="hl kwa">switch</span><span class="hl opt">(</span>id_len<span class="hl opt">) {</span>
                <span class="hl com">/* Use &quot;normal&quot; form for 'huge' object's heap IDs */</span>
                <span class="hl kwa">case</span> <span class="hl num">0</span><span class="hl opt">:</span>
                    <span class="hl kwd">puts</span><span class="hl opt">(</span><span class="hl str">&quot;Using 'normal' heap ID format for 'huge' objects&quot;</span><span class="hl opt">);</span>
                    <span class="hl kwa">break</span><span class="hl opt">;</span>

                <span class="hl com">/* Use &quot;direct&quot; form for 'huge' object's heap IDs */</span>
                <span class="hl kwa">case</span> <span class="hl num">1</span><span class="hl opt">:</span>
                    <span class="hl kwd">puts</span><span class="hl opt">(</span><span class="hl str">&quot;Using 'direct' heap ID format for 'huge' objects&quot;</span><span class="hl opt">);</span>

                    <span class="hl com">/* Adjust actual length of heap IDs for directly storing 'huge' object's file offset &amp; length in heap ID */</span>
                    tparam<span class="hl opt">.</span>actual_id_len <span class="hl opt">=</span> <span class="hl num">17</span><span class="hl opt">;</span>   <span class="hl com">/* 1 + 8 (file address size) + 8 (file length size) */</span>
                    <span class="hl kwa">break</span><span class="hl opt">;</span>

                <span class="hl com">/* Use &quot;direct&quot; storage for 'huge' objects and larger IDs for 'tiny' objects */</span>
                <span class="hl kwa">case</span> <span class="hl num">2</span><span class="hl opt">:</span>
                    small_cparam<span class="hl opt">.</span>id_len <span class="hl opt">=</span> <span class="hl num">37</span><span class="hl opt">;</span>
                    <span class="hl kwd">puts</span><span class="hl opt">(</span><span class="hl str">&quot;Using 'direct' heap ID format for 'huge' objects and larger IDs for 'tiny' objects&quot;</span><span class="hl opt">);</span>
                    tparam<span class="hl opt">.</span>actual_id_len <span class="hl opt">=</span> <span class="hl num">37</span><span class="hl opt">;</span>
                    <span class="hl kwa">break</span><span class="hl opt">;</span>

                <span class="hl com">/* An unknown test? */</span>
                <span class="hl kwa">default</span><span class="hl opt">:</span>
                    <span class="hl kwa">goto</span> error<span class="hl opt">;</span>
            <span class="hl opt">}</span> <span class="hl com">/* end switch */</span>

            <span class="hl com">/* Try several different methods of deleting objects */</span>
            <span class="hl kwa">for</span><span class="hl opt">(</span>del_dir <span class="hl opt">=</span> FHEAP_DEL_FORWARD<span class="hl opt">;</span> del_dir <span class="hl opt">&lt;</span> FHEAP_DEL_NDIRS<span class="hl opt">;</span> del_dir<span class="hl opt">++) {</span>
                tparam<span class="hl opt">.</span>del_dir <span class="hl opt">=</span> del_dir<span class="hl opt">;</span>

                <span class="hl com">/* Test 'huge' object insert &amp; delete */</span>
<span class="hl ppc">#ifndef QAK</span>
                nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_huge_insert_one</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
                nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_huge_insert_two</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
                nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_huge_insert_three</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
                nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_huge_insert_mix</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
                nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_filtered_huge</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
<span class="hl ppc">#else</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;Uncomment tests!</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">);</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>

<span class="hl ppc">#ifndef QAK</span>
                <span class="hl com">/* Test 'tiny' object insert &amp; delete */</span>
                nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_tiny_insert_one</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
                nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_tiny_insert_two</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
                nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_tiny_insert_mix</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
<span class="hl ppc">#else</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;Uncomment tests!</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">);</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>
            <span class="hl opt">}</span> <span class="hl com">/* end for */</span>
        <span class="hl opt">}</span> <span class="hl com">/* end for */</span>

        <span class="hl com">/* Reset the &quot;normal&quot; heap ID lengths */</span>
        small_cparam<span class="hl opt">.</span>id_len <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
        tparam<span class="hl opt">.</span>actual_id_len <span class="hl opt">=</span> HEAP_ID_LEN<span class="hl opt">;</span>
        <span class="hl opt">}</span> <span class="hl com">/* end block */</span>
<span class="hl ppc">#else</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;Uncomment tests!</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">);</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>
<span class="hl ppc">#else</span> <span class="hl com">/* QAK2 */</span><span class="hl ppc"></span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;Uncomment tests!</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">);</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK2 */</span><span class="hl ppc"></span>

        <span class="hl com">/* Test I/O filter support */</span>

<span class="hl ppc">#ifndef QAK</span>
        <span class="hl com">/* Try several different methods of deleting objects */</span>
        <span class="hl opt">{</span>
        fheap_test_del_dir_t del_dir<span class="hl opt">;</span>   <span class="hl com">/* Deletion direction */</span>

        <span class="hl kwa">for</span><span class="hl opt">(</span>del_dir <span class="hl opt">=</span> FHEAP_DEL_FORWARD<span class="hl opt">;</span> del_dir <span class="hl opt">&lt;</span> FHEAP_DEL_NDIRS<span class="hl opt">;</span> del_dir<span class="hl opt">++) {</span>
            tparam<span class="hl opt">.</span>del_dir <span class="hl opt">=</span> del_dir<span class="hl opt">;</span>

            <span class="hl com">/* Controlled tests */</span>
<span class="hl com">/* XXX: Re-enable file size checks in these tests, after the file has persistent free space tracking working */</span>
            nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_filtered_man_root_direct</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
            nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_filtered_man_root_indirect</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>

            <span class="hl com">/* Random tests, with compressed blocks */</span>
            tparam<span class="hl opt">.</span>comp <span class="hl opt">=</span> FHEAP_TEST_COMPRESS<span class="hl opt">;</span>
            nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_random</span><span class="hl opt">((</span>curr_test <span class="hl opt">==</span> FHEAP_TEST_NORMAL ? <span class="hl opt">(</span>hsize_t<span class="hl opt">)(</span><span class="hl num">50</span><span class="hl opt">*</span><span class="hl num">1000</span><span class="hl opt">*</span><span class="hl num">1000</span><span class="hl opt">) : (</span>hsize_t<span class="hl opt">)(</span><span class="hl num">25</span><span class="hl opt">*</span><span class="hl num">1000</span><span class="hl opt">*</span><span class="hl num">1000</span><span class="hl opt">)),</span> fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
            nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_random_pow2</span><span class="hl opt">((</span>curr_test <span class="hl opt">==</span> FHEAP_TEST_NORMAL ? <span class="hl opt">(</span>hsize_t<span class="hl opt">)(</span><span class="hl num">50</span><span class="hl opt">*</span><span class="hl num">1000</span><span class="hl opt">*</span><span class="hl num">1000</span><span class="hl opt">) : (</span>hsize_t<span class="hl opt">)(</span><span class="hl num">2</span><span class="hl opt">*</span><span class="hl num">1000</span><span class="hl opt">*</span><span class="hl num">1000</span><span class="hl opt">)),</span> fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>

            <span class="hl com">/* Reset block compression */</span>
            tparam<span class="hl opt">.</span>comp <span class="hl opt">=</span> FHEAP_TEST_NO_COMPRESS<span class="hl opt">;</span>
        <span class="hl opt">}</span> <span class="hl com">/* end for */</span>
        <span class="hl opt">}</span> <span class="hl com">/* end block */</span>
<span class="hl ppc">#else</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;Uncomment tests!</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">);</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>

<span class="hl ppc">#ifndef QAK</span>
        <span class="hl com">/* Random object insertion &amp; deletion */</span>
        <span class="hl kwa">if</span><span class="hl opt">(</span>ExpressMode <span class="hl opt">&gt;</span> <span class="hl num">1</span><span class="hl opt">)</span>
            <span class="hl kwd">printf</span><span class="hl opt">(</span><span class="hl str">&quot;***Express test mode on.  Some tests skipped</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">);</span>
        <span class="hl kwa">else</span> <span class="hl opt">{</span>
<span class="hl ppc">#ifndef QAK</span>
            <span class="hl com">/* Random tests using &quot;small&quot; heap creation parameters */</span>
            <span class="hl kwd">puts</span><span class="hl opt">(</span><span class="hl str">&quot;Using 'small' heap creation parameters&quot;</span><span class="hl opt">);</span>

            <span class="hl com">/* (reduce size of tests when re-opening each time) */</span>
<span class="hl com">/* XXX: Try to speed things up enough that these tests don't have to be reduced when re-opening */</span>
            tparam<span class="hl opt">.</span>del_dir <span class="hl opt">=</span> FHEAP_DEL_FORWARD<span class="hl opt">;</span>
            nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_random</span><span class="hl opt">((</span>curr_test <span class="hl opt">==</span> FHEAP_TEST_NORMAL ? <span class="hl opt">(</span>hsize_t<span class="hl opt">)(</span><span class="hl num">100</span><span class="hl opt">*</span><span class="hl num">1000</span><span class="hl opt">*</span><span class="hl num">1000</span><span class="hl opt">) : (</span>hsize_t<span class="hl opt">)(</span><span class="hl num">50</span><span class="hl opt">*</span><span class="hl num">1000</span><span class="hl opt">*</span><span class="hl num">1000</span><span class="hl opt">)),</span> fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
            nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_random_pow2</span><span class="hl opt">((</span>curr_test <span class="hl opt">==</span> FHEAP_TEST_NORMAL ? <span class="hl opt">(</span>hsize_t<span class="hl opt">)(</span><span class="hl num">100</span><span class="hl opt">*</span><span class="hl num">1000</span><span class="hl opt">*</span><span class="hl num">1000</span><span class="hl opt">) : (</span>hsize_t<span class="hl opt">)(</span><span class="hl num">4</span><span class="hl opt">*</span><span class="hl num">1000</span><span class="hl opt">*</span><span class="hl num">1000</span><span class="hl opt">)),</span> fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>

            tparam<span class="hl opt">.</span>del_dir <span class="hl opt">=</span> FHEAP_DEL_HEAP<span class="hl opt">;</span>
            nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_random</span><span class="hl opt">((</span>curr_test <span class="hl opt">==</span> FHEAP_TEST_NORMAL ? <span class="hl opt">(</span>hsize_t<span class="hl opt">)(</span><span class="hl num">100</span><span class="hl opt">*</span><span class="hl num">1000</span><span class="hl opt">*</span><span class="hl num">1000</span><span class="hl opt">) : (</span>hsize_t<span class="hl opt">)(</span><span class="hl num">50</span><span class="hl opt">*</span><span class="hl num">1000</span><span class="hl opt">*</span><span class="hl num">1000</span><span class="hl opt">)),</span> fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
            nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_random_pow2</span><span class="hl opt">((</span>curr_test <span class="hl opt">==</span> FHEAP_TEST_NORMAL ? <span class="hl opt">(</span>hsize_t<span class="hl opt">)(</span><span class="hl num">100</span><span class="hl opt">*</span><span class="hl num">1000</span><span class="hl opt">*</span><span class="hl num">1000</span><span class="hl opt">) : (</span>hsize_t<span class="hl opt">)(</span><span class="hl num">4</span><span class="hl opt">*</span><span class="hl num">1000</span><span class="hl opt">*</span><span class="hl num">1000</span><span class="hl opt">)),</span> fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
<span class="hl ppc">#else</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;Uncomment tests!</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">);</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>

<span class="hl ppc">#ifndef QAK</span>
            <span class="hl com">/* Random tests using &quot;large&quot; heap creation parameters */</span>
            <span class="hl kwd">puts</span><span class="hl opt">(</span><span class="hl str">&quot;Using 'large' heap creation parameters&quot;</span><span class="hl opt">);</span>
            tparam<span class="hl opt">.</span>actual_id_len <span class="hl opt">=</span> LARGE_HEAP_ID_LEN<span class="hl opt">;</span>

            <span class="hl com">/* (reduce size of tests when re-opening each time) */</span>
<span class="hl com">/* XXX: Try to speed things up enough that these tests don't have to be reduced when re-opening */</span>
            tparam<span class="hl opt">.</span>del_dir <span class="hl opt">=</span> FHEAP_DEL_FORWARD<span class="hl opt">;</span>
            nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_random</span><span class="hl opt">((</span>curr_test <span class="hl opt">==</span> FHEAP_TEST_NORMAL ? <span class="hl opt">(</span>hsize_t<span class="hl opt">)(</span><span class="hl num">100</span><span class="hl opt">*</span><span class="hl num">1000</span><span class="hl opt">*</span><span class="hl num">1000</span><span class="hl opt">) : (</span>hsize_t<span class="hl opt">)(</span><span class="hl num">50</span><span class="hl opt">*</span><span class="hl num">1000</span><span class="hl opt">*</span><span class="hl num">1000</span><span class="hl opt">)),</span> fapl<span class="hl opt">, &amp;</span>large_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
            nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_random_pow2</span><span class="hl opt">((</span>curr_test <span class="hl opt">==</span> FHEAP_TEST_NORMAL ? <span class="hl opt">(</span>hsize_t<span class="hl opt">)(</span><span class="hl num">100</span><span class="hl opt">*</span><span class="hl num">1000</span><span class="hl opt">*</span><span class="hl num">1000</span><span class="hl opt">) : (</span>hsize_t<span class="hl opt">)(</span><span class="hl num">4</span><span class="hl opt">*</span><span class="hl num">1000</span><span class="hl opt">*</span><span class="hl num">1000</span><span class="hl opt">)),</span> fapl<span class="hl opt">, &amp;</span>large_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>

            tparam<span class="hl opt">.</span>del_dir <span class="hl opt">=</span> FHEAP_DEL_HEAP<span class="hl opt">;</span>
            nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_random</span><span class="hl opt">((</span>curr_test <span class="hl opt">==</span> FHEAP_TEST_NORMAL ? <span class="hl opt">(</span>hsize_t<span class="hl opt">)(</span><span class="hl num">100</span><span class="hl opt">*</span><span class="hl num">1000</span><span class="hl opt">*</span><span class="hl num">1000</span><span class="hl opt">) : (</span>hsize_t<span class="hl opt">)(</span><span class="hl num">50</span><span class="hl opt">*</span><span class="hl num">1000</span><span class="hl opt">*</span><span class="hl num">1000</span><span class="hl opt">)),</span> fapl<span class="hl opt">, &amp;</span>large_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
            nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_random_pow2</span><span class="hl opt">((</span>curr_test <span class="hl opt">==</span> FHEAP_TEST_NORMAL ? <span class="hl opt">(</span>hsize_t<span class="hl opt">)(</span><span class="hl num">100</span><span class="hl opt">*</span><span class="hl num">1000</span><span class="hl opt">*</span><span class="hl num">1000</span><span class="hl opt">) : (</span>hsize_t<span class="hl opt">)(</span><span class="hl num">4</span><span class="hl opt">*</span><span class="hl num">1000</span><span class="hl opt">*</span><span class="hl num">1000</span><span class="hl opt">)),</span> fapl<span class="hl opt">, &amp;</span>large_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
<span class="hl ppc">#else</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;Uncomment tests!</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">);</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>

            <span class="hl com">/* Reset the &quot;normal&quot; heap ID length */</span>
            tparam<span class="hl opt">.</span>actual_id_len <span class="hl opt">=</span> SMALL_HEAP_ID_LEN<span class="hl opt">;</span>
        <span class="hl opt">}</span> <span class="hl com">/* end else */</span>
<span class="hl ppc">#else</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;Uncomment tests!</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">);</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>

<span class="hl ppc">#ifndef QAK</span>
        <span class="hl com">/* Test object writing support */</span>

        <span class="hl com">/* Basic object writing */</span>
        nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_write</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>

        <span class="hl com">/* Writing objects in heap with filters */</span>
        tparam<span class="hl opt">.</span>comp <span class="hl opt">=</span> FHEAP_TEST_COMPRESS<span class="hl opt">;</span>
        nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_write</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>

        <span class="hl com">/* Reset block compression */</span>
        tparam<span class="hl opt">.</span>comp <span class="hl opt">=</span> FHEAP_TEST_NO_COMPRESS<span class="hl opt">;</span>
<span class="hl ppc">#else</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;Uncomment tests!</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">);</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>
<span class="hl ppc">#ifndef QAK</span>
    <span class="hl opt">}</span> <span class="hl com">/* end for */</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>

    <span class="hl com">/* Tests that address specific bugs */</span>
<span class="hl ppc">#ifndef QAK</span>
    nerrors <span class="hl opt">+=</span> <span class="hl kwd">test_bug1</span><span class="hl opt">(</span>fapl<span class="hl opt">, &amp;</span>small_cparam<span class="hl opt">, &amp;</span>tparam<span class="hl opt">);</span>
<span class="hl ppc">#else</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;Uncomment tests!</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">);</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>

    <span class="hl com">/* Verify symbol table messages are cached */</span>
    nerrors <span class="hl opt">+= (</span><span class="hl kwd">h5_verify_cached_stabs</span><span class="hl opt">(</span>FILENAME<span class="hl opt">,</span> fapl<span class="hl opt">) &lt;</span> <span class="hl num">0</span> ? <span class="hl num">1</span> <span class="hl opt">:</span> <span class="hl num">0</span><span class="hl opt">);</span>

    <span class="hl kwa">if</span><span class="hl opt">(</span>nerrors<span class="hl opt">)</span>
        <span class="hl kwa">goto</span> error<span class="hl opt">;</span>
    <span class="hl kwd">puts</span><span class="hl opt">(</span><span class="hl str">&quot;All fractal heap tests passed.&quot;</span><span class="hl opt">);</span>

    <span class="hl com">/* Release space for the shared objects */</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>shared_wobj_g<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>shared_robj_g<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>shared_ids_g<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>shared_lens_g<span class="hl opt">);</span>
    <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>shared_offs_g<span class="hl opt">);</span>

    <span class="hl com">/* Clean up file used */</span>
<span class="hl ppc">#ifndef QAK</span>
    <span class="hl kwd">h5_cleanup</span><span class="hl opt">(</span>FILENAME<span class="hl opt">,</span> fapl<span class="hl opt">);</span>
<span class="hl ppc">#else</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>
<span class="hl kwd">HDfprintf</span><span class="hl opt">(</span>stderr<span class="hl opt">,</span> <span class="hl str">&quot;Uncomment cleanup!</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">);</span>
<span class="hl ppc">#endif</span> <span class="hl com">/* QAK */</span><span class="hl ppc"></span>

    <span class="hl kwa">return</span> <span class="hl num">0</span><span class="hl opt">;</span>

error<span class="hl opt">:</span>
    <span class="hl kwd">puts</span><span class="hl opt">(</span><span class="hl str">&quot;*** TESTS FAILED ***&quot;</span><span class="hl opt">);</span>
    H5E_BEGIN_TRY <span class="hl opt">{</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>shared_wobj_g<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>shared_robj_g<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>shared_ids_g<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>shared_lens_g<span class="hl opt">);</span>
        <span class="hl kwd">H5MM_xfree</span><span class="hl opt">(</span>shared_offs_g<span class="hl opt">);</span>
	<span class="hl kwd">H5Pclose</span><span class="hl opt">(</span>fapl<span class="hl opt">);</span>
    <span class="hl opt">}</span> H5E_END_TRY<span class="hl opt">;</span>
    <span class="hl kwa">return</span> <span class="hl num">1</span><span class="hl opt">;</span>
<span class="hl opt">}</span> <span class="hl com">/* end main() */</span>

</code></pre></td></tr></table>
</div> <!-- class=content -->
<div class='footer'>generated by <a href='http://git.zx2c4.com/cgit/about/'>cgit v0.12</a> at 2025-01-31 13:15:24 (GMT)</div>
</div> <!-- id=cgit -->
</body>
</html>