Copy disabled (too large)
Download .txt
Showing preview only (35,944K chars total). Download the full file to get everything.
Repository: Xharlie/DISN
Branch: master
Commit: 461130dca700
Files: 2358
Total size: 43.8 MB
Directory structure:
gitextract_568vs1vs/
├── .gitignore
├── README.md
├── cam_est/
│ ├── model_cam.py
│ ├── model_cam_old.py
│ └── train_sdf_cam.py
├── data/
│ ├── data_sdf_h5_queue.py
│ ├── data_sdf_h5_queue_mask_imgh5_cammat.py
│ └── filelists/
│ ├── 02691156_test.lst
│ ├── 02691156_train.lst
│ ├── 02828884_test.lst
│ ├── 02828884_train.lst
│ ├── 02933112_test.lst
│ ├── 02933112_train.lst
│ ├── 02958343_test.lst
│ ├── 02958343_train.lst
│ ├── 03001627_test.lst
│ ├── 03001627_train.lst
│ ├── 03211117_test.lst
│ ├── 03211117_train.lst
│ ├── 03636649_test.lst
│ ├── 03636649_train.lst
│ ├── 03691459_test.lst
│ ├── 03691459_train.lst
│ ├── 04090263_test.lst
│ ├── 04090263_train.lst
│ ├── 04256520_test.lst
│ ├── 04256520_train.lst
│ ├── 04379243_test.lst
│ ├── 04379243_train.lst
│ ├── 04401088_test.lst
│ ├── 04401088_train.lst
│ ├── 04530566_test.lst
│ └── 04530566_train.lst
├── demo/
│ ├── demo.py
│ └── result.obj
├── isosurface/
│ ├── LIB_PATH
│ ├── computeDistanceField
│ ├── computeMarchingCubes
│ ├── displayDistanceField
│ ├── libtcmalloc.so.4
│ ├── model_normalized.obj.n.dist
│ └── tbb/
│ ├── pstl2018_20180822oss/
│ │ ├── CHANGES
│ │ ├── CMakeLists.txt
│ │ ├── ParallelSTLConfig.cmake.in
│ │ ├── bin/
│ │ │ ├── pstlvars.csh
│ │ │ └── pstlvars.sh
│ │ ├── build/
│ │ │ ├── CMakeCache.txt
│ │ │ └── CMakeFiles/
│ │ │ ├── 3.12.0/
│ │ │ │ ├── CMakeCXXCompiler.cmake
│ │ │ │ ├── CMakeSystem.cmake
│ │ │ │ └── CompilerIdCXX/
│ │ │ │ ├── CMakeCXXCompilerId.cpp
│ │ │ │ └── a.out
│ │ │ ├── CMakeOutput.log
│ │ │ ├── cmake.check_cache
│ │ │ └── feature_tests.cxx
│ │ ├── doc/
│ │ │ └── Release_Notes.txt
│ │ ├── examples/
│ │ │ ├── convex_hull/
│ │ │ │ ├── Makefile
│ │ │ │ ├── convex_hull.cpp
│ │ │ │ ├── readme.html
│ │ │ │ └── utils.h
│ │ │ ├── dot_product/
│ │ │ │ ├── Makefile
│ │ │ │ ├── dot_product.cpp
│ │ │ │ └── readme.html
│ │ │ └── gamma_correction/
│ │ │ ├── Makefile
│ │ │ ├── gamma_correction.cpp
│ │ │ ├── readme.html
│ │ │ ├── utils.cpp
│ │ │ └── utils.h
│ │ └── include/
│ │ └── pstl/
│ │ ├── algorithm
│ │ ├── execution
│ │ ├── internal/
│ │ │ ├── algorithm_impl.h
│ │ │ ├── bricks_impl.h
│ │ │ ├── execution_defs.h
│ │ │ ├── execution_impl.h
│ │ │ ├── glue_algorithm_defs.h
│ │ │ ├── glue_algorithm_impl.h
│ │ │ ├── glue_execution_defs.h
│ │ │ ├── glue_memory_defs.h
│ │ │ ├── glue_memory_impl.h
│ │ │ ├── glue_numeric_defs.h
│ │ │ ├── glue_numeric_impl.h
│ │ │ ├── memory_impl.h
│ │ │ ├── numeric_impl.h
│ │ │ ├── parallel_backend.h
│ │ │ ├── parallel_backend_tbb.h
│ │ │ ├── parallel_backend_utils.h
│ │ │ ├── parallel_impl.h
│ │ │ ├── pstl_config.h
│ │ │ ├── unseq_backend_simd.h
│ │ │ └── utils.h
│ │ ├── iterators.h
│ │ ├── memory
│ │ └── numeric
│ ├── tbb-2018_U6/
│ │ ├── .gitattributes
│ │ ├── .gitignore
│ │ ├── CHANGES
│ │ ├── LICENSE
│ │ ├── Makefile
│ │ ├── README
│ │ ├── README.md
│ │ ├── build/
│ │ │ ├── AIX.gcc.inc
│ │ │ ├── AIX.inc
│ │ │ ├── FreeBSD.clang.inc
│ │ │ ├── FreeBSD.gcc.inc
│ │ │ ├── FreeBSD.inc
│ │ │ ├── Makefile.rml
│ │ │ ├── Makefile.tbb
│ │ │ ├── Makefile.tbbmalloc
│ │ │ ├── Makefile.tbbproxy
│ │ │ ├── Makefile.test
│ │ │ ├── SunOS.gcc.inc
│ │ │ ├── SunOS.inc
│ │ │ ├── SunOS.suncc.inc
│ │ │ ├── android.clang.inc
│ │ │ ├── android.gcc.inc
│ │ │ ├── android.icc.inc
│ │ │ ├── android.inc
│ │ │ ├── android.linux.inc
│ │ │ ├── android.linux.launcher.sh
│ │ │ ├── android.macos.inc
│ │ │ ├── android.windows.inc
│ │ │ ├── big_iron.inc
│ │ │ ├── build.py
│ │ │ ├── codecov.txt
│ │ │ ├── common.inc
│ │ │ ├── common_rules.inc
│ │ │ ├── detect.js
│ │ │ ├── generate_tbbvars.bat
│ │ │ ├── generate_tbbvars.sh
│ │ │ ├── index.html
│ │ │ ├── ios.clang.inc
│ │ │ ├── ios.macos.inc
│ │ │ ├── linux.clang.inc
│ │ │ ├── linux.gcc.inc
│ │ │ ├── linux.icc.inc
│ │ │ ├── linux.inc
│ │ │ ├── linux.pathcc.inc
│ │ │ ├── linux.xl.inc
│ │ │ ├── macos.clang.inc
│ │ │ ├── macos.gcc.inc
│ │ │ ├── macos.icc.inc
│ │ │ ├── macos.inc
│ │ │ ├── mic.icc.inc
│ │ │ ├── mic.linux.inc
│ │ │ ├── mic.linux.launcher.sh
│ │ │ ├── mic.offload.inc
│ │ │ ├── suncc.map.pause
│ │ │ ├── test_launcher.bat
│ │ │ ├── test_launcher.sh
│ │ │ ├── version_info_aix.sh
│ │ │ ├── version_info_android.sh
│ │ │ ├── version_info_linux.sh
│ │ │ ├── version_info_macos.sh
│ │ │ ├── version_info_sunos.sh
│ │ │ ├── version_info_windows.js
│ │ │ ├── vs2013/
│ │ │ │ ├── index.html
│ │ │ │ ├── makefile.sln
│ │ │ │ ├── tbb.vcxproj
│ │ │ │ ├── tbbmalloc.vcxproj
│ │ │ │ ├── tbbmalloc_proxy.vcxproj
│ │ │ │ └── version_string.ver
│ │ │ ├── windows.cl.inc
│ │ │ ├── windows.gcc.inc
│ │ │ ├── windows.icl.inc
│ │ │ └── windows.inc
│ │ ├── cmake/
│ │ │ ├── README.rst
│ │ │ ├── TBBBuild.cmake
│ │ │ ├── TBBGet.cmake
│ │ │ ├── TBBMakeConfig.cmake
│ │ │ ├── tbb_config_generator.cmake
│ │ │ └── templates/
│ │ │ ├── TBBConfig.cmake.in
│ │ │ ├── TBBConfigForSource.cmake.in
│ │ │ └── TBBConfigVersion.cmake.in
│ │ ├── doc/
│ │ │ ├── Release_Notes.txt
│ │ │ └── html/
│ │ │ ├── a00002.html
│ │ │ ├── a00004.html
│ │ │ ├── a00006.html
│ │ │ ├── a00008.html
│ │ │ ├── a00010.html
│ │ │ ├── a00012.html
│ │ │ ├── a00014.html
│ │ │ ├── a00016.html
│ │ │ ├── a00017.html
│ │ │ ├── a00018.html
│ │ │ ├── a00019.html
│ │ │ ├── a00020.html
│ │ │ ├── a00021.html
│ │ │ ├── a00022.html
│ │ │ ├── a00023.html
│ │ │ ├── a00024.html
│ │ │ ├── a00025.html
│ │ │ ├── a00026.html
│ │ │ ├── a00027.html
│ │ │ ├── a00028.html
│ │ │ ├── a00029.html
│ │ │ ├── a00030.html
│ │ │ ├── a00031.html
│ │ │ ├── a00032.html
│ │ │ ├── a00033.html
│ │ │ ├── a00034.html
│ │ │ ├── a00035.html
│ │ │ ├── a00036.html
│ │ │ ├── a00037.html
│ │ │ ├── a00038.html
│ │ │ ├── a00039.html
│ │ │ ├── a00040.html
│ │ │ ├── a00041.html
│ │ │ ├── a00042.html
│ │ │ ├── a00043.html
│ │ │ ├── a00044.html
│ │ │ ├── a00045.html
│ │ │ ├── a00046.html
│ │ │ ├── a00047.html
│ │ │ ├── a00048.html
│ │ │ ├── a00049.html
│ │ │ ├── a00050.html
│ │ │ ├── a00051.html
│ │ │ ├── a00052.html
│ │ │ ├── a00053.html
│ │ │ ├── a00054.html
│ │ │ ├── a00055.html
│ │ │ ├── a00056.html
│ │ │ ├── a00057.html
│ │ │ ├── a00058.html
│ │ │ ├── a00059.html
│ │ │ ├── a00060.html
│ │ │ ├── a00061.html
│ │ │ ├── a00062.html
│ │ │ ├── a00063.html
│ │ │ ├── a00064.html
│ │ │ ├── a00065.html
│ │ │ ├── a00066.html
│ │ │ ├── a00067.html
│ │ │ ├── a00068.html
│ │ │ ├── a00069.html
│ │ │ ├── a00070.html
│ │ │ ├── a00071.html
│ │ │ ├── a00072.html
│ │ │ ├── a00073.html
│ │ │ ├── a00074.html
│ │ │ ├── a00075.html
│ │ │ ├── a00076.html
│ │ │ ├── a00077.html
│ │ │ ├── a00078.html
│ │ │ ├── a00079.html
│ │ │ ├── a00080.html
│ │ │ ├── a00081.html
│ │ │ ├── a00082.html
│ │ │ ├── a00083.html
│ │ │ ├── a00084.html
│ │ │ ├── a00085.html
│ │ │ ├── a00086.html
│ │ │ ├── a00087.html
│ │ │ ├── a00088.html
│ │ │ ├── a00089.html
│ │ │ ├── a00090.html
│ │ │ ├── a00091.html
│ │ │ ├── a00092.html
│ │ │ ├── a00093.html
│ │ │ ├── a00094.html
│ │ │ ├── a00095.html
│ │ │ ├── a00096.html
│ │ │ ├── a00097.html
│ │ │ ├── a00098.html
│ │ │ ├── a00099.html
│ │ │ ├── a00100.html
│ │ │ ├── a00101.html
│ │ │ ├── a00102.html
│ │ │ ├── a00103.html
│ │ │ ├── a00104.html
│ │ │ ├── a00105.html
│ │ │ ├── a00106.html
│ │ │ ├── a00107.html
│ │ │ ├── a00108.html
│ │ │ ├── a00109.html
│ │ │ ├── a00110.html
│ │ │ ├── a00111.html
│ │ │ ├── a00112.html
│ │ │ ├── a00113.html
│ │ │ ├── a00114.html
│ │ │ ├── a00115.html
│ │ │ ├── a00116.html
│ │ │ ├── a00117.html
│ │ │ ├── a00118.html
│ │ │ ├── a00119.html
│ │ │ ├── a00120.html
│ │ │ ├── a00121.html
│ │ │ ├── a00122.html
│ │ │ ├── a00123.html
│ │ │ ├── a00124.html
│ │ │ ├── a00125.html
│ │ │ ├── a00126.html
│ │ │ ├── a00127.html
│ │ │ ├── a00128.html
│ │ │ ├── a00129.html
│ │ │ ├── a00130.html
│ │ │ ├── a00131.html
│ │ │ ├── a00132.html
│ │ │ ├── a00133.html
│ │ │ ├── a00134.html
│ │ │ ├── a00135.html
│ │ │ ├── a00136.html
│ │ │ ├── a00137.html
│ │ │ ├── a00138.html
│ │ │ ├── a00139.html
│ │ │ ├── a00140.html
│ │ │ ├── a00141.html
│ │ │ ├── a00142.html
│ │ │ ├── a00143.html
│ │ │ ├── a00144.html
│ │ │ ├── a00145.html
│ │ │ ├── a00146.html
│ │ │ ├── a00147.html
│ │ │ ├── a00148.html
│ │ │ ├── a00149.html
│ │ │ ├── a00150.html
│ │ │ ├── a00151.html
│ │ │ ├── a00152.html
│ │ │ ├── a00153.html
│ │ │ ├── a00154.html
│ │ │ ├── a00155.html
│ │ │ ├── a00156.html
│ │ │ ├── a00157.html
│ │ │ ├── a00158.html
│ │ │ ├── a00159.html
│ │ │ ├── a00160.html
│ │ │ ├── a00161.html
│ │ │ ├── a00162.html
│ │ │ ├── a00163.html
│ │ │ ├── a00164.html
│ │ │ ├── a00165.html
│ │ │ ├── a00166.html
│ │ │ ├── a00167.html
│ │ │ ├── a00168.html
│ │ │ ├── a00169.html
│ │ │ ├── a00170.html
│ │ │ ├── a00171.html
│ │ │ ├── a00172.html
│ │ │ ├── a00173.html
│ │ │ ├── a00174.html
│ │ │ ├── a00175.html
│ │ │ ├── a00176.html
│ │ │ ├── a00177.html
│ │ │ ├── a00178.html
│ │ │ ├── a00179.html
│ │ │ ├── a00180.html
│ │ │ ├── a00181.html
│ │ │ ├── a00182.html
│ │ │ ├── a00183.html
│ │ │ ├── a00184.html
│ │ │ ├── a00203.html
│ │ │ ├── a00208.html
│ │ │ ├── a00227.html
│ │ │ ├── a00246.html
│ │ │ ├── a00249.html
│ │ │ ├── a00271.html
│ │ │ ├── a00272.html
│ │ │ ├── a00273.html
│ │ │ ├── a00274.html
│ │ │ ├── a00275.html
│ │ │ ├── a00276.html
│ │ │ ├── a00278.html
│ │ │ ├── a00279.html
│ │ │ ├── a00280.html
│ │ │ ├── a00281.html
│ │ │ ├── a00282.html
│ │ │ ├── a00283.html
│ │ │ ├── a00284.html
│ │ │ ├── a00285.html
│ │ │ ├── a00286.html
│ │ │ ├── a00287.html
│ │ │ ├── a00288.html
│ │ │ ├── a00289.html
│ │ │ ├── a00290.html
│ │ │ ├── a00291.html
│ │ │ ├── a00292.html
│ │ │ ├── a00293.html
│ │ │ ├── a00294.html
│ │ │ ├── a00295.html
│ │ │ ├── a00296.html
│ │ │ ├── a00297.html
│ │ │ ├── a00298.html
│ │ │ ├── a00299.html
│ │ │ ├── a00300.html
│ │ │ ├── a00301.html
│ │ │ ├── a00302.html
│ │ │ ├── a00303.html
│ │ │ ├── a00304.html
│ │ │ ├── a00305.html
│ │ │ ├── a00306.html
│ │ │ ├── a00307.html
│ │ │ ├── a00308.html
│ │ │ ├── a00309.html
│ │ │ ├── a00310.html
│ │ │ ├── a00311.html
│ │ │ ├── a00312.html
│ │ │ ├── a00313.html
│ │ │ ├── a00314.html
│ │ │ ├── a00315.html
│ │ │ ├── a00316.html
│ │ │ ├── a00317.html
│ │ │ ├── a00318.html
│ │ │ ├── a00319.html
│ │ │ ├── a00320.html
│ │ │ ├── a00321.html
│ │ │ ├── a00322.html
│ │ │ ├── a00323.html
│ │ │ ├── a00324.html
│ │ │ ├── a00325.html
│ │ │ ├── a00326.html
│ │ │ ├── a00327.html
│ │ │ ├── a00328.html
│ │ │ ├── a00329.html
│ │ │ ├── a00330.html
│ │ │ ├── a00331.html
│ │ │ ├── a00332.html
│ │ │ ├── a00333.html
│ │ │ ├── a00334.html
│ │ │ ├── a00335.html
│ │ │ ├── a00336.html
│ │ │ ├── a00337.html
│ │ │ ├── a00338.html
│ │ │ ├── a00339.html
│ │ │ ├── a00340.html
│ │ │ ├── a00341.html
│ │ │ ├── a00342.html
│ │ │ ├── a00343.html
│ │ │ ├── a00344.html
│ │ │ ├── a00345.html
│ │ │ ├── a00346.html
│ │ │ ├── a00347.html
│ │ │ ├── a00348.html
│ │ │ ├── a00349.html
│ │ │ ├── a00350.html
│ │ │ ├── a00351.html
│ │ │ ├── a00352.html
│ │ │ ├── a00353.html
│ │ │ ├── a00354.html
│ │ │ ├── a00355.html
│ │ │ ├── a00356.html
│ │ │ ├── a00357.html
│ │ │ ├── a00358.html
│ │ │ ├── a00359.html
│ │ │ ├── a00360.html
│ │ │ ├── a00361.html
│ │ │ ├── a00362.html
│ │ │ ├── a00363.html
│ │ │ ├── a00364.html
│ │ │ ├── a00365.html
│ │ │ ├── a00366.html
│ │ │ ├── a00367.html
│ │ │ ├── a00368.html
│ │ │ ├── a00369.html
│ │ │ ├── a00370.html
│ │ │ ├── a00371.html
│ │ │ ├── a00372.html
│ │ │ ├── a00373.html
│ │ │ ├── a00374.html
│ │ │ ├── a00375.html
│ │ │ ├── a00376.html
│ │ │ ├── a00377.html
│ │ │ ├── a00378.html
│ │ │ ├── a00379.html
│ │ │ ├── a00380.html
│ │ │ ├── a00381.html
│ │ │ ├── a00382.html
│ │ │ ├── a00383.html
│ │ │ ├── a00384.html
│ │ │ ├── a00385.html
│ │ │ ├── a00386.html
│ │ │ ├── a00387.html
│ │ │ ├── a00388.html
│ │ │ ├── a00389.html
│ │ │ ├── a00390.html
│ │ │ ├── a00391.html
│ │ │ ├── a00392.html
│ │ │ ├── a00393.html
│ │ │ ├── a00394.html
│ │ │ ├── a00395.html
│ │ │ ├── a00396.html
│ │ │ ├── a00397.html
│ │ │ ├── a00398.html
│ │ │ ├── a00399.html
│ │ │ ├── a00400.html
│ │ │ ├── a00401.html
│ │ │ ├── a00402.html
│ │ │ ├── a00403.html
│ │ │ ├── a00404.html
│ │ │ ├── a00405.html
│ │ │ ├── a00406.html
│ │ │ ├── a00407.html
│ │ │ ├── a00408.html
│ │ │ ├── a00409.html
│ │ │ ├── a00410.html
│ │ │ ├── a00411.html
│ │ │ ├── a00412.html
│ │ │ ├── a00413.html
│ │ │ ├── a00414.html
│ │ │ ├── a00415.html
│ │ │ ├── a00416.html
│ │ │ ├── a00417.html
│ │ │ ├── a00418.html
│ │ │ ├── a00419.html
│ │ │ ├── a00420.html
│ │ │ ├── a00421.html
│ │ │ ├── a00422.html
│ │ │ ├── a00423.html
│ │ │ ├── a00424.html
│ │ │ ├── a00425.html
│ │ │ ├── a00426.html
│ │ │ ├── a00427.html
│ │ │ ├── a00428.html
│ │ │ ├── a00429.html
│ │ │ ├── a00430.html
│ │ │ ├── annotated.html
│ │ │ ├── classes.html
│ │ │ ├── dir_525f2cc589630bacbdc3bb450847427e.html
│ │ │ ├── dir_63fb2cc293d133785b96e521fa051167.html
│ │ │ ├── dir_87119f26c7695cbc270003e99bc7f49f.html
│ │ │ ├── dir_b9976680b2be72d2d0b8fca1c31202a2.html
│ │ │ ├── doxygen.css
│ │ │ ├── dynsections.js
│ │ │ ├── files.html
│ │ │ ├── functions.html
│ │ │ ├── functions_0x62.html
│ │ │ ├── functions_0x63.html
│ │ │ ├── functions_0x64.html
│ │ │ ├── functions_0x65.html
│ │ │ ├── functions_0x66.html
│ │ │ ├── functions_0x67.html
│ │ │ ├── functions_0x68.html
│ │ │ ├── functions_0x69.html
│ │ │ ├── functions_0x6a.html
│ │ │ ├── functions_0x6c.html
│ │ │ ├── functions_0x6d.html
│ │ │ ├── functions_0x6e.html
│ │ │ ├── functions_0x6f.html
│ │ │ ├── functions_0x70.html
│ │ │ ├── functions_0x71.html
│ │ │ ├── functions_0x72.html
│ │ │ ├── functions_0x73.html
│ │ │ ├── functions_0x74.html
│ │ │ ├── functions_0x75.html
│ │ │ ├── functions_0x76.html
│ │ │ ├── functions_0x77.html
│ │ │ ├── functions_0x7e.html
│ │ │ ├── functions_enum.html
│ │ │ ├── functions_eval.html
│ │ │ ├── functions_func.html
│ │ │ ├── functions_func_0x62.html
│ │ │ ├── functions_func_0x63.html
│ │ │ ├── functions_func_0x64.html
│ │ │ ├── functions_func_0x65.html
│ │ │ ├── functions_func_0x66.html
│ │ │ ├── functions_func_0x67.html
│ │ │ ├── functions_func_0x68.html
│ │ │ ├── functions_func_0x69.html
│ │ │ ├── functions_func_0x6a.html
│ │ │ ├── functions_func_0x6c.html
│ │ │ ├── functions_func_0x6d.html
│ │ │ ├── functions_func_0x6e.html
│ │ │ ├── functions_func_0x6f.html
│ │ │ ├── functions_func_0x70.html
│ │ │ ├── functions_func_0x71.html
│ │ │ ├── functions_func_0x72.html
│ │ │ ├── functions_func_0x73.html
│ │ │ ├── functions_func_0x74.html
│ │ │ ├── functions_func_0x75.html
│ │ │ ├── functions_func_0x77.html
│ │ │ ├── functions_func_0x7e.html
│ │ │ ├── functions_rela.html
│ │ │ ├── functions_type.html
│ │ │ ├── functions_vars.html
│ │ │ ├── globals.html
│ │ │ ├── globals_func.html
│ │ │ ├── hierarchy.html
│ │ │ ├── index.html
│ │ │ ├── jquery.js
│ │ │ ├── modules.html
│ │ │ ├── namespacemembers.html
│ │ │ ├── namespacemembers_enum.html
│ │ │ ├── namespacemembers_eval.html
│ │ │ ├── namespacemembers_func.html
│ │ │ ├── namespacemembers_type.html
│ │ │ ├── namespaces.html
│ │ │ ├── pages.html
│ │ │ └── tabs.css
│ │ ├── examples/
│ │ │ ├── GettingStarted/
│ │ │ │ ├── index.html
│ │ │ │ └── sub_string_finder/
│ │ │ │ ├── Makefile
│ │ │ │ ├── Makefile.windows
│ │ │ │ ├── msvs/
│ │ │ │ │ ├── sub_string_finder.sln
│ │ │ │ │ ├── sub_string_finder.vcxproj
│ │ │ │ │ ├── sub_string_finder_extended.vcxproj
│ │ │ │ │ └── sub_string_finder_pretty.vcxproj
│ │ │ │ ├── readme.html
│ │ │ │ ├── sub_string_finder
│ │ │ │ ├── sub_string_finder.cpp
│ │ │ │ ├── sub_string_finder_extended
│ │ │ │ ├── sub_string_finder_extended.cpp
│ │ │ │ ├── sub_string_finder_pretty
│ │ │ │ ├── sub_string_finder_pretty.cpp
│ │ │ │ └── xcode/
│ │ │ │ └── sub_string_finder.xcodeproj/
│ │ │ │ └── project.pbxproj
│ │ │ ├── Makefile
│ │ │ ├── common/
│ │ │ │ ├── copy_libraries.bat
│ │ │ │ ├── examples-common.inc
│ │ │ │ ├── gui/
│ │ │ │ │ ├── Makefile.gmake
│ │ │ │ │ ├── Makefile.win
│ │ │ │ │ ├── convideo.cpp
│ │ │ │ │ ├── d2dvideo.cpp
│ │ │ │ │ ├── dxcheck.bat
│ │ │ │ │ ├── gdivideo.cpp
│ │ │ │ │ ├── macvideo.cpp
│ │ │ │ │ ├── video.h
│ │ │ │ │ ├── winvideo.h
│ │ │ │ │ ├── xcode/
│ │ │ │ │ │ └── tbbExample/
│ │ │ │ │ │ ├── OpenGLView.h
│ │ │ │ │ │ ├── OpenGLView.m
│ │ │ │ │ │ ├── PkgInfo
│ │ │ │ │ │ ├── en.lproj/
│ │ │ │ │ │ │ ├── InfoPlist.strings
│ │ │ │ │ │ │ ├── MainMenu.nib
│ │ │ │ │ │ │ └── MainMenu.xib
│ │ │ │ │ │ ├── iOS.storyboard
│ │ │ │ │ │ ├── main.m
│ │ │ │ │ │ ├── tbbAppDelegate.h
│ │ │ │ │ │ ├── tbbAppDelegate.m
│ │ │ │ │ │ ├── tbbExample-Info.ios.plist
│ │ │ │ │ │ ├── tbbExample-Info.plist
│ │ │ │ │ │ └── tbbExample-Prefix.pch
│ │ │ │ │ └── xvideo.cpp
│ │ │ │ ├── index.html
│ │ │ │ ├── toolset.props
│ │ │ │ └── utility/
│ │ │ │ ├── fast_random.h
│ │ │ │ └── utility.h
│ │ │ ├── concurrent_hash_map/
│ │ │ │ ├── count_strings/
│ │ │ │ │ ├── Makefile
│ │ │ │ │ ├── Makefile.windows
│ │ │ │ │ ├── count_strings
│ │ │ │ │ ├── count_strings.cpp
│ │ │ │ │ ├── msvs/
│ │ │ │ │ │ ├── count_strings.sln
│ │ │ │ │ │ └── count_strings.vcxproj
│ │ │ │ │ ├── readme.html
│ │ │ │ │ └── xcode/
│ │ │ │ │ └── count_strings.xcodeproj/
│ │ │ │ │ └── project.pbxproj
│ │ │ │ └── index.html
│ │ │ ├── concurrent_priority_queue/
│ │ │ │ ├── index.html
│ │ │ │ └── shortpath/
│ │ │ │ ├── Makefile
│ │ │ │ ├── Makefile.windows
│ │ │ │ ├── msvs/
│ │ │ │ │ ├── shortpath.sln
│ │ │ │ │ └── shortpath.vcxproj
│ │ │ │ ├── readme.html
│ │ │ │ ├── shortpath
│ │ │ │ ├── shortpath.cpp
│ │ │ │ └── xcode/
│ │ │ │ └── shortpath.xcodeproj/
│ │ │ │ └── project.pbxproj
│ │ │ ├── graph/
│ │ │ │ ├── binpack/
│ │ │ │ │ ├── Makefile
│ │ │ │ │ ├── Makefile.windows
│ │ │ │ │ ├── binpack
│ │ │ │ │ ├── binpack.cpp
│ │ │ │ │ ├── msvs/
│ │ │ │ │ │ ├── binpack.sln
│ │ │ │ │ │ └── binpack.vcxproj
│ │ │ │ │ ├── readme.html
│ │ │ │ │ └── xcode/
│ │ │ │ │ └── binpack.xcodeproj/
│ │ │ │ │ └── project.pbxproj
│ │ │ │ ├── cholesky/
│ │ │ │ │ ├── Makefile
│ │ │ │ │ ├── Makefile.windows
│ │ │ │ │ ├── cholesky.cpp
│ │ │ │ │ ├── init.cpp
│ │ │ │ │ ├── msvs/
│ │ │ │ │ │ ├── cholesky.sln
│ │ │ │ │ │ └── cholesky.vcxproj
│ │ │ │ │ ├── readme.html
│ │ │ │ │ └── xcode/
│ │ │ │ │ └── cholesky.xcodeproj/
│ │ │ │ │ └── project.pbxproj
│ │ │ │ ├── dining_philosophers/
│ │ │ │ │ ├── Makefile
│ │ │ │ │ ├── Makefile.windows
│ │ │ │ │ ├── dining_philosophers
│ │ │ │ │ ├── dining_philosophers.cpp
│ │ │ │ │ ├── msvs/
│ │ │ │ │ │ ├── dining_philosophers.sln
│ │ │ │ │ │ └── dining_philosophers.vcxproj
│ │ │ │ │ ├── readme.html
│ │ │ │ │ └── xcode/
│ │ │ │ │ └── dining_philosophers.xcodeproj/
│ │ │ │ │ └── project.pbxproj
│ │ │ │ ├── fgbzip2/
│ │ │ │ │ ├── Makefile
│ │ │ │ │ ├── Makefile.windows
│ │ │ │ │ ├── blocksort.cpp
│ │ │ │ │ ├── bzlib.cpp
│ │ │ │ │ ├── bzlib.h
│ │ │ │ │ ├── bzlib_private.h
│ │ │ │ │ ├── compress.cpp
│ │ │ │ │ ├── crctable.cpp
│ │ │ │ │ ├── decompress.cpp
│ │ │ │ │ ├── fgbzip2
│ │ │ │ │ ├── fgbzip2.cpp
│ │ │ │ │ ├── huffman.cpp
│ │ │ │ │ ├── msvs/
│ │ │ │ │ │ ├── fgbzip2.sln
│ │ │ │ │ │ └── fgbzip2.vcxproj
│ │ │ │ │ ├── randtable.cpp
│ │ │ │ │ ├── readme.html
│ │ │ │ │ └── xcode/
│ │ │ │ │ └── fgbzip2.xcodeproj/
│ │ │ │ │ └── project.pbxproj
│ │ │ │ ├── index.html
│ │ │ │ ├── logic_sim/
│ │ │ │ │ ├── D_latch.h
│ │ │ │ │ ├── Makefile
│ │ │ │ │ ├── Makefile.windows
│ │ │ │ │ ├── basics.h
│ │ │ │ │ ├── four_bit_adder.h
│ │ │ │ │ ├── msvs/
│ │ │ │ │ │ ├── logic_sim.sln
│ │ │ │ │ │ └── logic_sim.vcxproj
│ │ │ │ │ ├── one_bit_adder.h
│ │ │ │ │ ├── readme.html
│ │ │ │ │ ├── test_all
│ │ │ │ │ ├── test_all.cpp
│ │ │ │ │ └── two_bit_adder.h
│ │ │ │ ├── matmult/
│ │ │ │ │ ├── Makefile
│ │ │ │ │ ├── Makefile.windows
│ │ │ │ │ ├── matmult
│ │ │ │ │ ├── matmult.cpp
│ │ │ │ │ ├── msvs/
│ │ │ │ │ │ ├── matmult.sln
│ │ │ │ │ │ └── matmult.vcxproj
│ │ │ │ │ └── readme.html
│ │ │ │ ├── som/
│ │ │ │ │ ├── Makefile
│ │ │ │ │ ├── Makefile.windows
│ │ │ │ │ ├── msvs/
│ │ │ │ │ │ ├── som.sln
│ │ │ │ │ │ └── som.vcxproj
│ │ │ │ │ ├── readme.html
│ │ │ │ │ ├── som.cpp
│ │ │ │ │ ├── som.h
│ │ │ │ │ ├── som_graph.cpp
│ │ │ │ │ └── xcode/
│ │ │ │ │ └── som.xcodeproj/
│ │ │ │ │ └── project.pbxproj
│ │ │ │ └── stereo/
│ │ │ │ ├── Makefile
│ │ │ │ ├── Makefile.windows
│ │ │ │ ├── imageEffects.cl
│ │ │ │ ├── lodepng.cpp
│ │ │ │ ├── lodepng.h
│ │ │ │ ├── msvs/
│ │ │ │ │ ├── stereo.sln
│ │ │ │ │ └── stereo.vcxproj
│ │ │ │ ├── readme.html
│ │ │ │ ├── stereo.cpp
│ │ │ │ ├── utils.h
│ │ │ │ └── xcode/
│ │ │ │ └── stereo.xcodeproj/
│ │ │ │ └── project.pbxproj
│ │ │ ├── index.html
│ │ │ ├── parallel_do/
│ │ │ │ ├── index.html
│ │ │ │ └── parallel_preorder/
│ │ │ │ ├── Graph.cpp
│ │ │ │ ├── Graph.h
│ │ │ │ ├── Makefile
│ │ │ │ ├── Makefile.windows
│ │ │ │ ├── Matrix.h
│ │ │ │ ├── main.cpp
│ │ │ │ ├── msvs/
│ │ │ │ │ ├── parallel_preorder.sln
│ │ │ │ │ └── parallel_preorder.vcxproj
│ │ │ │ ├── parallel_preorder
│ │ │ │ ├── parallel_preorder.cpp
│ │ │ │ ├── readme.html
│ │ │ │ └── xcode/
│ │ │ │ └── parallel_preorder.xcodeproj/
│ │ │ │ └── project.pbxproj
│ │ │ ├── parallel_for/
│ │ │ │ ├── game_of_life/
│ │ │ │ │ ├── Makefile
│ │ │ │ │ ├── Makefile.windows
│ │ │ │ │ ├── game_of_life
│ │ │ │ │ ├── msvs/
│ │ │ │ │ │ ├── Game_of_life.sln
│ │ │ │ │ │ ├── Game_of_life.vcxproj
│ │ │ │ │ │ ├── app.rc
│ │ │ │ │ │ └── resource.h
│ │ │ │ │ ├── readme.html
│ │ │ │ │ ├── src/
│ │ │ │ │ │ ├── AssemblyInfo.cpp
│ │ │ │ │ │ ├── Board.h
│ │ │ │ │ │ ├── Evolution.cpp
│ │ │ │ │ │ ├── Evolution.h
│ │ │ │ │ │ ├── Form1.h
│ │ │ │ │ │ ├── Game_of_life.cpp
│ │ │ │ │ │ └── Update_state.cpp
│ │ │ │ │ └── xcode/
│ │ │ │ │ └── game_of_life.xcodeproj/
│ │ │ │ │ └── project.pbxproj
│ │ │ │ ├── index.html
│ │ │ │ ├── polygon_overlay/
│ │ │ │ │ ├── Makefile
│ │ │ │ │ ├── Makefile.windows
│ │ │ │ │ ├── msvs/
│ │ │ │ │ │ ├── polygon_overlay.sln
│ │ │ │ │ │ ├── pover.rc
│ │ │ │ │ │ ├── pover.vcxproj
│ │ │ │ │ │ └── resource.h
│ │ │ │ │ ├── polymain.cpp
│ │ │ │ │ ├── polymain.h
│ │ │ │ │ ├── polyover.cpp
│ │ │ │ │ ├── polyover.h
│ │ │ │ │ ├── pover
│ │ │ │ │ ├── pover_global.h
│ │ │ │ │ ├── pover_video.cpp
│ │ │ │ │ ├── pover_video.h
│ │ │ │ │ ├── readme.html
│ │ │ │ │ ├── rpolygon.h
│ │ │ │ │ └── xcode/
│ │ │ │ │ └── polygon_overlay.xcodeproj/
│ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ └── xcshareddata/
│ │ │ │ │ └── xcschemes/
│ │ │ │ │ ├── tbbExample.ios.xcscheme
│ │ │ │ │ └── tbbExample.xcscheme
│ │ │ │ ├── seismic/
│ │ │ │ │ ├── Makefile
│ │ │ │ │ ├── Makefile.windows
│ │ │ │ │ ├── main.cpp
│ │ │ │ │ ├── msvs/
│ │ │ │ │ │ ├── SeismicSimulation.rc
│ │ │ │ │ │ ├── SeismicSimulation.vcxproj
│ │ │ │ │ │ ├── resource.h
│ │ │ │ │ │ └── seismic.sln
│ │ │ │ │ ├── readme.html
│ │ │ │ │ ├── seismic
│ │ │ │ │ ├── seismic_video.cpp
│ │ │ │ │ ├── seismic_video.h
│ │ │ │ │ ├── universe.cpp
│ │ │ │ │ ├── universe.h
│ │ │ │ │ └── xcode/
│ │ │ │ │ └── seismic.xcodeproj/
│ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ └── xcshareddata/
│ │ │ │ │ └── xcschemes/
│ │ │ │ │ ├── tbbExample.ios.xcscheme
│ │ │ │ │ └── tbbExample.xcscheme
│ │ │ │ └── tachyon/
│ │ │ │ ├── Makefile
│ │ │ │ ├── Makefile.windows
│ │ │ │ ├── msvs/
│ │ │ │ │ ├── gui.rc
│ │ │ │ │ ├── resource.h
│ │ │ │ │ ├── tachyon.serial.vcxproj
│ │ │ │ │ ├── tachyon.sln
│ │ │ │ │ ├── tachyon.tbb.vcxproj
│ │ │ │ │ ├── tachyon.tbb1d.vcxproj
│ │ │ │ │ ├── tachyon.vcxproj
│ │ │ │ │ └── win8ui/
│ │ │ │ │ ├── App.xaml
│ │ │ │ │ ├── App.xaml.cpp
│ │ │ │ │ ├── App.xaml.h
│ │ │ │ │ ├── Common/
│ │ │ │ │ │ └── StandardStyles.xaml
│ │ │ │ │ ├── DirectXBase.cpp
│ │ │ │ │ ├── DirectXBase.h
│ │ │ │ │ ├── DirectXPage.xaml
│ │ │ │ │ ├── DirectXPage.xaml.cpp
│ │ │ │ │ ├── DirectXPage.xaml.h
│ │ │ │ │ ├── Package.appxmanifest
│ │ │ │ │ ├── copy_libraries_and_assets.bat
│ │ │ │ │ ├── pch.h
│ │ │ │ │ ├── tbbTachyon.sln
│ │ │ │ │ ├── tbbTachyon.vcxproj
│ │ │ │ │ ├── tbbTachyon.vcxproj.filters
│ │ │ │ │ ├── tbbTachyonRenderer.cpp
│ │ │ │ │ └── tbbTachyonRenderer.h
│ │ │ │ ├── readme.html
│ │ │ │ ├── src/
│ │ │ │ │ ├── api.cpp
│ │ │ │ │ ├── api.h
│ │ │ │ │ ├── apigeom.cpp
│ │ │ │ │ ├── apitrigeom.cpp
│ │ │ │ │ ├── apitrigeom.h
│ │ │ │ │ ├── bndbox.cpp
│ │ │ │ │ ├── bndbox.h
│ │ │ │ │ ├── box.cpp
│ │ │ │ │ ├── box.h
│ │ │ │ │ ├── camera.cpp
│ │ │ │ │ ├── camera.h
│ │ │ │ │ ├── coordsys.cpp
│ │ │ │ │ ├── coordsys.h
│ │ │ │ │ ├── cylinder.cpp
│ │ │ │ │ ├── cylinder.h
│ │ │ │ │ ├── extvol.cpp
│ │ │ │ │ ├── extvol.h
│ │ │ │ │ ├── global.cpp
│ │ │ │ │ ├── global.h
│ │ │ │ │ ├── grid.cpp
│ │ │ │ │ ├── grid.h
│ │ │ │ │ ├── imageio.cpp
│ │ │ │ │ ├── imageio.h
│ │ │ │ │ ├── imap.cpp
│ │ │ │ │ ├── imap.h
│ │ │ │ │ ├── intersect.cpp
│ │ │ │ │ ├── intersect.h
│ │ │ │ │ ├── jpeg.cpp
│ │ │ │ │ ├── jpeg.h
│ │ │ │ │ ├── light.cpp
│ │ │ │ │ ├── light.h
│ │ │ │ │ ├── machine.h
│ │ │ │ │ ├── macros.h
│ │ │ │ │ ├── main.cpp
│ │ │ │ │ ├── objbound.cpp
│ │ │ │ │ ├── objbound.h
│ │ │ │ │ ├── parse.cpp
│ │ │ │ │ ├── parse.h
│ │ │ │ │ ├── plane.cpp
│ │ │ │ │ ├── plane.h
│ │ │ │ │ ├── ppm.cpp
│ │ │ │ │ ├── ppm.h
│ │ │ │ │ ├── pthread.cpp
│ │ │ │ │ ├── pthread_w.h
│ │ │ │ │ ├── quadric.cpp
│ │ │ │ │ ├── quadric.h
│ │ │ │ │ ├── render.cpp
│ │ │ │ │ ├── render.h
│ │ │ │ │ ├── ring.cpp
│ │ │ │ │ ├── ring.h
│ │ │ │ │ ├── shade.cpp
│ │ │ │ │ ├── shade.h
│ │ │ │ │ ├── sphere.cpp
│ │ │ │ │ ├── sphere.h
│ │ │ │ │ ├── tachyon_video.cpp
│ │ │ │ │ ├── tachyon_video.h
│ │ │ │ │ ├── texture.cpp
│ │ │ │ │ ├── texture.h
│ │ │ │ │ ├── tgafile.cpp
│ │ │ │ │ ├── tgafile.h
│ │ │ │ │ ├── trace.h
│ │ │ │ │ ├── trace.serial.cpp
│ │ │ │ │ ├── trace.simple.cpp
│ │ │ │ │ ├── trace.tbb.cpp
│ │ │ │ │ ├── trace.tbb1d.cpp
│ │ │ │ │ ├── trace_rest.cpp
│ │ │ │ │ ├── triangle.cpp
│ │ │ │ │ ├── triangle.h
│ │ │ │ │ ├── types.h
│ │ │ │ │ ├── ui.cpp
│ │ │ │ │ ├── ui.h
│ │ │ │ │ ├── util.cpp
│ │ │ │ │ ├── util.h
│ │ │ │ │ ├── vector.cpp
│ │ │ │ │ ├── vector.h
│ │ │ │ │ ├── vol.cpp
│ │ │ │ │ └── vol.h
│ │ │ │ ├── tachyon.serial
│ │ │ │ ├── tachyon.tbb
│ │ │ │ ├── tachyon.tbb1d
│ │ │ │ └── xcode/
│ │ │ │ └── tachyon.xcodeproj/
│ │ │ │ ├── project.pbxproj
│ │ │ │ └── xcshareddata/
│ │ │ │ └── xcschemes/
│ │ │ │ ├── tachyon.serial.xcscheme
│ │ │ │ ├── tachyon.tbb.ios.xcscheme
│ │ │ │ ├── tachyon.tbb.xcscheme
│ │ │ │ └── tachyon.tbb1d.xcscheme
│ │ │ ├── parallel_reduce/
│ │ │ │ ├── convex_hull/
│ │ │ │ │ ├── Makefile
│ │ │ │ │ ├── Makefile.windows
│ │ │ │ │ ├── convex_hull.h
│ │ │ │ │ ├── convex_hull_bench
│ │ │ │ │ ├── convex_hull_bench.cpp
│ │ │ │ │ ├── convex_hull_sample
│ │ │ │ │ ├── convex_hull_sample.cpp
│ │ │ │ │ ├── msvs/
│ │ │ │ │ │ ├── convex_hull.sln
│ │ │ │ │ │ ├── convex_hull_benchmark.vcxproj
│ │ │ │ │ │ └── convex_hull_sample.vcxproj
│ │ │ │ │ ├── readme.html
│ │ │ │ │ └── xcode/
│ │ │ │ │ └── convex_hull.xcodeproj/
│ │ │ │ │ └── project.pbxproj
│ │ │ │ ├── index.html
│ │ │ │ └── primes/
│ │ │ │ ├── Makefile
│ │ │ │ ├── Makefile.windows
│ │ │ │ ├── main.cpp
│ │ │ │ ├── msvs/
│ │ │ │ │ ├── primes.sln
│ │ │ │ │ └── primes.vcxproj
│ │ │ │ ├── primes
│ │ │ │ ├── primes.cpp
│ │ │ │ ├── primes.h
│ │ │ │ ├── readme.html
│ │ │ │ └── xcode/
│ │ │ │ └── primes.xcodeproj/
│ │ │ │ └── project.pbxproj
│ │ │ ├── pipeline/
│ │ │ │ ├── index.html
│ │ │ │ └── square/
│ │ │ │ ├── Makefile
│ │ │ │ ├── Makefile.windows
│ │ │ │ ├── gen_input.cpp
│ │ │ │ ├── input.txt
│ │ │ │ ├── msvs/
│ │ │ │ │ ├── square.sln
│ │ │ │ │ └── square.vcxproj
│ │ │ │ ├── output.txt
│ │ │ │ ├── readme.html
│ │ │ │ ├── square
│ │ │ │ ├── square.cpp
│ │ │ │ └── xcode/
│ │ │ │ └── square.xcodeproj/
│ │ │ │ └── project.pbxproj
│ │ │ ├── task/
│ │ │ │ ├── index.html
│ │ │ │ └── tree_sum/
│ │ │ │ ├── Makefile
│ │ │ │ ├── Makefile.windows
│ │ │ │ ├── OptimizedParallelSumTree.cpp
│ │ │ │ ├── SerialSumTree.cpp
│ │ │ │ ├── SimpleParallelSumTree.cpp
│ │ │ │ ├── TreeMaker.h
│ │ │ │ ├── common.h
│ │ │ │ ├── main.cpp
│ │ │ │ ├── msvs/
│ │ │ │ │ ├── tree_sum.sln
│ │ │ │ │ └── tree_sum.vcxproj
│ │ │ │ ├── readme.html
│ │ │ │ ├── tree_sum
│ │ │ │ └── xcode/
│ │ │ │ └── tree_sum.xcodeproj/
│ │ │ │ └── project.pbxproj
│ │ │ ├── task_arena/
│ │ │ │ ├── fractal/
│ │ │ │ │ ├── Fractal
│ │ │ │ │ ├── Makefile
│ │ │ │ │ ├── Makefile.windows
│ │ │ │ │ ├── fractal.cpp
│ │ │ │ │ ├── fractal.h
│ │ │ │ │ ├── fractal_video.h
│ │ │ │ │ ├── main.cpp
│ │ │ │ │ ├── msvs/
│ │ │ │ │ │ ├── fractal.sln
│ │ │ │ │ │ ├── fractal.vcxproj
│ │ │ │ │ │ ├── gui.rc
│ │ │ │ │ │ └── resource.h
│ │ │ │ │ ├── readme.html
│ │ │ │ │ └── xcode/
│ │ │ │ │ └── fractal.xcodeproj/
│ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ └── xcshareddata/
│ │ │ │ │ └── xcschemes/
│ │ │ │ │ ├── tbbExample.ios.xcscheme
│ │ │ │ │ └── tbbExample.xcscheme
│ │ │ │ └── index.html
│ │ │ ├── task_group/
│ │ │ │ ├── index.html
│ │ │ │ └── sudoku/
│ │ │ │ ├── Makefile
│ │ │ │ ├── Makefile.windows
│ │ │ │ ├── input1
│ │ │ │ ├── input2
│ │ │ │ ├── input3
│ │ │ │ ├── input4
│ │ │ │ ├── msvs/
│ │ │ │ │ ├── sudoku.sln
│ │ │ │ │ └── sudoku.vcxproj
│ │ │ │ ├── readme.html
│ │ │ │ ├── sudoku
│ │ │ │ ├── sudoku.cpp
│ │ │ │ └── xcode/
│ │ │ │ └── sudoku.xcodeproj/
│ │ │ │ └── project.pbxproj
│ │ │ └── test_all/
│ │ │ ├── fibonacci/
│ │ │ │ ├── Fibonacci.cpp
│ │ │ │ ├── Makefile
│ │ │ │ ├── Makefile.windows
│ │ │ │ ├── fibonacci
│ │ │ │ ├── msvs/
│ │ │ │ │ ├── fibonacci.sln
│ │ │ │ │ └── fibonacci.vcxproj
│ │ │ │ ├── readme.html
│ │ │ │ └── xcode/
│ │ │ │ └── fibonacci.xcodeproj/
│ │ │ │ └── project.pbxproj
│ │ │ └── index.html
│ │ ├── include/
│ │ │ ├── index.html
│ │ │ ├── serial/
│ │ │ │ └── tbb/
│ │ │ │ ├── parallel_for.h
│ │ │ │ └── tbb_annotate.h
│ │ │ └── tbb/
│ │ │ ├── aggregator.h
│ │ │ ├── aligned_space.h
│ │ │ ├── atomic.h
│ │ │ ├── blocked_range.h
│ │ │ ├── blocked_range2d.h
│ │ │ ├── blocked_range3d.h
│ │ │ ├── blocked_rangeNd.h
│ │ │ ├── cache_aligned_allocator.h
│ │ │ ├── combinable.h
│ │ │ ├── compat/
│ │ │ │ ├── condition_variable
│ │ │ │ ├── ppl.h
│ │ │ │ ├── thread
│ │ │ │ └── tuple
│ │ │ ├── concurrent_hash_map.h
│ │ │ ├── concurrent_lru_cache.h
│ │ │ ├── concurrent_priority_queue.h
│ │ │ ├── concurrent_queue.h
│ │ │ ├── concurrent_unordered_map.h
│ │ │ ├── concurrent_unordered_set.h
│ │ │ ├── concurrent_vector.h
│ │ │ ├── critical_section.h
│ │ │ ├── enumerable_thread_specific.h
│ │ │ ├── flow_graph.h
│ │ │ ├── flow_graph_abstractions.h
│ │ │ ├── flow_graph_opencl_node.h
│ │ │ ├── gfx_factory.h
│ │ │ ├── global_control.h
│ │ │ ├── index.html
│ │ │ ├── internal/
│ │ │ │ ├── _aggregator_impl.h
│ │ │ │ ├── _concurrent_queue_impl.h
│ │ │ │ ├── _concurrent_unordered_impl.h
│ │ │ │ ├── _flow_graph_async_msg_impl.h
│ │ │ │ ├── _flow_graph_body_impl.h
│ │ │ │ ├── _flow_graph_cache_impl.h
│ │ │ │ ├── _flow_graph_impl.h
│ │ │ │ ├── _flow_graph_indexer_impl.h
│ │ │ │ ├── _flow_graph_item_buffer_impl.h
│ │ │ │ ├── _flow_graph_join_impl.h
│ │ │ │ ├── _flow_graph_node_impl.h
│ │ │ │ ├── _flow_graph_streaming_node.h
│ │ │ │ ├── _flow_graph_tagged_buffer_impl.h
│ │ │ │ ├── _flow_graph_trace_impl.h
│ │ │ │ ├── _flow_graph_types_impl.h
│ │ │ │ ├── _mutex_padding.h
│ │ │ │ ├── _range_iterator.h
│ │ │ │ ├── _tbb_hash_compare_impl.h
│ │ │ │ ├── _tbb_strings.h
│ │ │ │ ├── _tbb_trace_impl.h
│ │ │ │ ├── _tbb_windef.h
│ │ │ │ ├── _template_helpers.h
│ │ │ │ ├── _x86_eliding_mutex_impl.h
│ │ │ │ └── _x86_rtm_rw_mutex_impl.h
│ │ │ ├── machine/
│ │ │ │ ├── gcc_arm.h
│ │ │ │ ├── gcc_generic.h
│ │ │ │ ├── gcc_ia32_common.h
│ │ │ │ ├── gcc_itsx.h
│ │ │ │ ├── ibm_aix51.h
│ │ │ │ ├── icc_generic.h
│ │ │ │ ├── linux_common.h
│ │ │ │ ├── linux_ia32.h
│ │ │ │ ├── linux_ia64.h
│ │ │ │ ├── linux_intel64.h
│ │ │ │ ├── mac_ppc.h
│ │ │ │ ├── macos_common.h
│ │ │ │ ├── mic_common.h
│ │ │ │ ├── msvc_armv7.h
│ │ │ │ ├── msvc_ia32_common.h
│ │ │ │ ├── sunos_sparc.h
│ │ │ │ ├── windows_api.h
│ │ │ │ ├── windows_ia32.h
│ │ │ │ └── windows_intel64.h
│ │ │ ├── memory_pool.h
│ │ │ ├── mutex.h
│ │ │ ├── null_mutex.h
│ │ │ ├── null_rw_mutex.h
│ │ │ ├── parallel_do.h
│ │ │ ├── parallel_for.h
│ │ │ ├── parallel_for_each.h
│ │ │ ├── parallel_invoke.h
│ │ │ ├── parallel_reduce.h
│ │ │ ├── parallel_scan.h
│ │ │ ├── parallel_sort.h
│ │ │ ├── parallel_while.h
│ │ │ ├── partitioner.h
│ │ │ ├── pipeline.h
│ │ │ ├── queuing_mutex.h
│ │ │ ├── queuing_rw_mutex.h
│ │ │ ├── reader_writer_lock.h
│ │ │ ├── recursive_mutex.h
│ │ │ ├── runtime_loader.h
│ │ │ ├── scalable_allocator.h
│ │ │ ├── spin_mutex.h
│ │ │ ├── spin_rw_mutex.h
│ │ │ ├── task.h
│ │ │ ├── task_arena.h
│ │ │ ├── task_group.h
│ │ │ ├── task_scheduler_init.h
│ │ │ ├── task_scheduler_observer.h
│ │ │ ├── tbb.h
│ │ │ ├── tbb_allocator.h
│ │ │ ├── tbb_config.h
│ │ │ ├── tbb_disable_exceptions.h
│ │ │ ├── tbb_exception.h
│ │ │ ├── tbb_machine.h
│ │ │ ├── tbb_profiling.h
│ │ │ ├── tbb_stddef.h
│ │ │ ├── tbb_thread.h
│ │ │ ├── tbbmalloc_proxy.h
│ │ │ └── tick_count.h
│ │ ├── index.html
│ │ ├── jni/
│ │ │ ├── Android.mk
│ │ │ └── Application.mk
│ │ ├── python/
│ │ │ ├── Makefile
│ │ │ ├── TBB.py
│ │ │ ├── index.html
│ │ │ ├── rml/
│ │ │ │ ├── Makefile
│ │ │ │ ├── ipc_server.cpp
│ │ │ │ ├── ipc_utils.cpp
│ │ │ │ └── ipc_utils.h
│ │ │ ├── setup.py
│ │ │ └── tbb/
│ │ │ ├── __init__.py
│ │ │ ├── __main__.py
│ │ │ ├── api.i
│ │ │ ├── pool.py
│ │ │ └── test.py
│ │ └── src/
│ │ ├── Makefile
│ │ ├── index.html
│ │ ├── old/
│ │ │ ├── concurrent_queue_v2.cpp
│ │ │ ├── concurrent_queue_v2.h
│ │ │ ├── concurrent_vector_v2.cpp
│ │ │ ├── concurrent_vector_v2.h
│ │ │ ├── spin_rw_mutex_v2.cpp
│ │ │ ├── spin_rw_mutex_v2.h
│ │ │ ├── task_v2.cpp
│ │ │ ├── test_concurrent_queue_v2.cpp
│ │ │ ├── test_concurrent_vector_v2.cpp
│ │ │ ├── test_mutex_v2.cpp
│ │ │ └── test_task_scheduler_observer_v3.cpp
│ │ ├── perf/
│ │ │ ├── coarse_grained_raii_lru_cache.h
│ │ │ ├── cpq_pdes.cpp
│ │ │ ├── fibonacci_impl_tbb.cpp
│ │ │ ├── perf.cpp
│ │ │ ├── perf.h
│ │ │ ├── perf_sched.cpp
│ │ │ ├── run_statistics.sh
│ │ │ ├── statistics.cpp
│ │ │ ├── statistics.h
│ │ │ ├── statistics_xml.h
│ │ │ ├── time_cpq_throughput_test.cpp
│ │ │ ├── time_fibonacci_cutoff.cpp
│ │ │ ├── time_framework.h
│ │ │ ├── time_hash_map.cpp
│ │ │ ├── time_hash_map_fill.cpp
│ │ │ ├── time_hash_map_fill.html
│ │ │ ├── time_locked_work.cpp
│ │ │ ├── time_lru_cache_throughput.cpp
│ │ │ ├── time_parallel_for_each.cpp
│ │ │ ├── time_sandbox.h
│ │ │ ├── time_split_node.cpp
│ │ │ └── time_vector.cpp
│ │ ├── rml/
│ │ │ ├── client/
│ │ │ │ ├── index.html
│ │ │ │ ├── library_assert.h
│ │ │ │ ├── omp_dynamic_link.cpp
│ │ │ │ ├── omp_dynamic_link.h
│ │ │ │ ├── rml_factory.h
│ │ │ │ ├── rml_omp.cpp
│ │ │ │ └── rml_tbb.cpp
│ │ │ ├── include/
│ │ │ │ ├── index.html
│ │ │ │ ├── rml_base.h
│ │ │ │ ├── rml_omp.h
│ │ │ │ └── rml_tbb.h
│ │ │ ├── index.html
│ │ │ ├── perfor/
│ │ │ │ ├── omp_nested.cpp
│ │ │ │ ├── omp_simple.cpp
│ │ │ │ ├── tbb_multi_omp.cpp
│ │ │ │ ├── tbb_simple.cpp
│ │ │ │ └── thread_level.h
│ │ │ ├── server/
│ │ │ │ ├── index.html
│ │ │ │ ├── irml.rc
│ │ │ │ ├── job_automaton.h
│ │ │ │ ├── lin-rml-export.def
│ │ │ │ ├── rml_server.cpp
│ │ │ │ ├── thread_monitor.h
│ │ │ │ ├── wait_counter.h
│ │ │ │ ├── win32-rml-export.def
│ │ │ │ └── win64-rml-export.def
│ │ │ └── test/
│ │ │ ├── rml_omp_stub.cpp
│ │ │ ├── test_job_automaton.cpp
│ │ │ ├── test_rml_mixed.cpp
│ │ │ ├── test_rml_omp.cpp
│ │ │ ├── test_rml_omp_c_linkage.c
│ │ │ ├── test_rml_tbb.cpp
│ │ │ ├── test_server.h
│ │ │ └── test_thread_monitor.cpp
│ │ ├── tbb/
│ │ │ ├── arena.cpp
│ │ │ ├── arena.h
│ │ │ ├── cache_aligned_allocator.cpp
│ │ │ ├── cilk-tbb-interop.h
│ │ │ ├── concurrent_hash_map.cpp
│ │ │ ├── concurrent_monitor.cpp
│ │ │ ├── concurrent_monitor.h
│ │ │ ├── concurrent_queue.cpp
│ │ │ ├── concurrent_vector.cpp
│ │ │ ├── condition_variable.cpp
│ │ │ ├── critical_section.cpp
│ │ │ ├── custom_scheduler.h
│ │ │ ├── dynamic_link.cpp
│ │ │ ├── dynamic_link.h
│ │ │ ├── governor.cpp
│ │ │ ├── governor.h
│ │ │ ├── ia32-masm/
│ │ │ │ ├── atomic_support.asm
│ │ │ │ ├── itsx.asm
│ │ │ │ └── lock_byte.asm
│ │ │ ├── ia64-gas/
│ │ │ │ ├── atomic_support.s
│ │ │ │ ├── ia64_misc.s
│ │ │ │ ├── lock_byte.s
│ │ │ │ ├── log2.s
│ │ │ │ └── pause.s
│ │ │ ├── ibm_aix51/
│ │ │ │ └── atomic_support.c
│ │ │ ├── index.html
│ │ │ ├── intel64-masm/
│ │ │ │ ├── atomic_support.asm
│ │ │ │ ├── intel64_misc.asm
│ │ │ │ └── itsx.asm
│ │ │ ├── intrusive_list.h
│ │ │ ├── itt_notify.cpp
│ │ │ ├── itt_notify.h
│ │ │ ├── lin32-tbb-export.def
│ │ │ ├── lin32-tbb-export.lst
│ │ │ ├── lin64-tbb-export.def
│ │ │ ├── lin64-tbb-export.lst
│ │ │ ├── lin64ipf-tbb-export.def
│ │ │ ├── lin64ipf-tbb-export.lst
│ │ │ ├── mac32-tbb-export.def
│ │ │ ├── mac32-tbb-export.lst
│ │ │ ├── mac64-tbb-export.def
│ │ │ ├── mac64-tbb-export.lst
│ │ │ ├── mailbox.h
│ │ │ ├── market.cpp
│ │ │ ├── market.h
│ │ │ ├── mutex.cpp
│ │ │ ├── observer_proxy.cpp
│ │ │ ├── observer_proxy.h
│ │ │ ├── pipeline.cpp
│ │ │ ├── private_server.cpp
│ │ │ ├── queuing_mutex.cpp
│ │ │ ├── queuing_rw_mutex.cpp
│ │ │ ├── reader_writer_lock.cpp
│ │ │ ├── recursive_mutex.cpp
│ │ │ ├── scheduler.cpp
│ │ │ ├── scheduler.h
│ │ │ ├── scheduler_common.h
│ │ │ ├── scheduler_utility.h
│ │ │ ├── semaphore.cpp
│ │ │ ├── semaphore.h
│ │ │ ├── spin_mutex.cpp
│ │ │ ├── spin_rw_mutex.cpp
│ │ │ ├── task.cpp
│ │ │ ├── task_group_context.cpp
│ │ │ ├── task_stream.h
│ │ │ ├── tbb_assert_impl.h
│ │ │ ├── tbb_main.cpp
│ │ │ ├── tbb_main.h
│ │ │ ├── tbb_misc.cpp
│ │ │ ├── tbb_misc.h
│ │ │ ├── tbb_misc_ex.cpp
│ │ │ ├── tbb_resource.rc
│ │ │ ├── tbb_statistics.cpp
│ │ │ ├── tbb_statistics.h
│ │ │ ├── tbb_thread.cpp
│ │ │ ├── tbb_version.h
│ │ │ ├── tls.h
│ │ │ ├── tools_api/
│ │ │ │ ├── disable_warnings.h
│ │ │ │ ├── ittnotify.h
│ │ │ │ ├── ittnotify_config.h
│ │ │ │ ├── ittnotify_static.c
│ │ │ │ ├── ittnotify_static.h
│ │ │ │ ├── ittnotify_types.h
│ │ │ │ └── legacy/
│ │ │ │ └── ittnotify.h
│ │ │ ├── win32-tbb-export.def
│ │ │ ├── win32-tbb-export.lst
│ │ │ ├── win64-gcc-tbb-export.def
│ │ │ ├── win64-gcc-tbb-export.lst
│ │ │ ├── win64-tbb-export.def
│ │ │ ├── win64-tbb-export.lst
│ │ │ ├── winrt-tbb-export.lst
│ │ │ └── x86_rtm_rw_mutex.cpp
│ │ ├── tbbmalloc/
│ │ │ ├── Customize.h
│ │ │ ├── MapMemory.h
│ │ │ ├── Statistics.h
│ │ │ ├── TypeDefinitions.h
│ │ │ ├── backend.cpp
│ │ │ ├── backref.cpp
│ │ │ ├── frontend.cpp
│ │ │ ├── index.html
│ │ │ ├── large_objects.cpp
│ │ │ ├── lin32-proxy-export.def
│ │ │ ├── lin32-tbbmalloc-export.def
│ │ │ ├── lin64-proxy-export.def
│ │ │ ├── lin64-tbbmalloc-export.def
│ │ │ ├── lin64ipf-proxy-export.def
│ │ │ ├── lin64ipf-tbbmalloc-export.def
│ │ │ ├── mac32-tbbmalloc-export.def
│ │ │ ├── mac64-tbbmalloc-export.def
│ │ │ ├── proxy.cpp
│ │ │ ├── proxy.h
│ │ │ ├── proxy_overload_osx.h
│ │ │ ├── shared_utils.h
│ │ │ ├── tbb_function_replacement.cpp
│ │ │ ├── tbb_function_replacement.h
│ │ │ ├── tbbmalloc.cpp
│ │ │ ├── tbbmalloc.rc
│ │ │ ├── tbbmalloc_internal.h
│ │ │ ├── tbbmalloc_internal_api.h
│ │ │ ├── win32-gcc-tbbmalloc-export.def
│ │ │ ├── win32-tbbmalloc-export.def
│ │ │ ├── win64-gcc-tbbmalloc-export.def
│ │ │ └── win64-tbbmalloc-export.def
│ │ ├── tbbproxy/
│ │ │ ├── tbbproxy-windows.asm
│ │ │ └── tbbproxy.cpp
│ │ └── test/
│ │ ├── harness.h
│ │ ├── harness_allocator.h
│ │ ├── harness_allocator_overload.h
│ │ ├── harness_assert.h
│ │ ├── harness_bad_expr.h
│ │ ├── harness_barrier.h
│ │ ├── harness_checktype.h
│ │ ├── harness_concurrency.h
│ │ ├── harness_concurrency_tracker.h
│ │ ├── harness_cpu.h
│ │ ├── harness_defs.h
│ │ ├── harness_dynamic_libs.h
│ │ ├── harness_eh.h
│ │ ├── harness_fp.h
│ │ ├── harness_graph.h
│ │ ├── harness_inject_scheduler.h
│ │ ├── harness_iterator.h
│ │ ├── harness_m128.h
│ │ ├── harness_memory.h
│ │ ├── harness_mic.h
│ │ ├── harness_preload.h
│ │ ├── harness_report.h
│ │ ├── harness_runtime_loader.h
│ │ ├── harness_state_trackable.h
│ │ ├── harness_task.h
│ │ ├── harness_tbb_independence.h
│ │ ├── harness_test_cases_framework.h
│ │ ├── harness_tls.h
│ │ ├── harness_tsx.h
│ │ ├── test_ScalableAllocator.cpp
│ │ ├── test_ScalableAllocator_STL.cpp
│ │ ├── test_aggregator.cpp
│ │ ├── test_aligned_space.cpp
│ │ ├── test_allocator.h
│ │ ├── test_allocator_STL.h
│ │ ├── test_assembly.cpp
│ │ ├── test_async_msg.cpp
│ │ ├── test_async_node.cpp
│ │ ├── test_atomic.cpp
│ │ ├── test_blocked_range.cpp
│ │ ├── test_blocked_range2d.cpp
│ │ ├── test_blocked_range3d.cpp
│ │ ├── test_blocked_rangeNd.cpp
│ │ ├── test_broadcast_node.cpp
│ │ ├── test_buffer_node.cpp
│ │ ├── test_cache_aligned_allocator.cpp
│ │ ├── test_cache_aligned_allocator_STL.cpp
│ │ ├── test_cilk_common.h
│ │ ├── test_cilk_dynamic_load.cpp
│ │ ├── test_cilk_interop.cpp
│ │ ├── test_combinable.cpp
│ │ ├── test_composite_node.cpp
│ │ ├── test_concurrent_hash_map.cpp
│ │ ├── test_concurrent_lru_cache.cpp
│ │ ├── test_concurrent_monitor.cpp
│ │ ├── test_concurrent_priority_queue.cpp
│ │ ├── test_concurrent_queue.cpp
│ │ ├── test_concurrent_queue_whitebox.cpp
│ │ ├── test_concurrent_unordered_common.h
│ │ ├── test_concurrent_unordered_map.cpp
│ │ ├── test_concurrent_unordered_set.cpp
│ │ ├── test_concurrent_vector.cpp
│ │ ├── test_condition_variable.h
│ │ ├── test_container_move_support.h
│ │ ├── test_continue_node.cpp
│ │ ├── test_critical_section.cpp
│ │ ├── test_dynamic_link.cpp
│ │ ├── test_eh_algorithms.cpp
│ │ ├── test_eh_flow_graph.cpp
│ │ ├── test_eh_tasks.cpp
│ │ ├── test_enumerable_thread_specific.cpp
│ │ ├── test_examples_common_utility.cpp
│ │ ├── test_fast_random.cpp
│ │ ├── test_flow_graph.cpp
│ │ ├── test_flow_graph_whitebox.cpp
│ │ ├── test_fp.cpp
│ │ ├── test_function_node.cpp
│ │ ├── test_gfx_factory.cpp
│ │ ├── test_global_control.cpp
│ │ ├── test_global_control_whitebox.cpp
│ │ ├── test_halt.cpp
│ │ ├── test_handle_perror.cpp
│ │ ├── test_hw_concurrency.cpp
│ │ ├── test_indexer_node.cpp
│ │ ├── test_initializer_list.h
│ │ ├── test_inits_loop.cpp
│ │ ├── test_intrusive_list.cpp
│ │ ├── test_ittnotify.cpp
│ │ ├── test_join_node.cpp
│ │ ├── test_join_node.h
│ │ ├── test_join_node_key_matching.cpp
│ │ ├── test_join_node_msg_key_matching.cpp
│ │ ├── test_lambda.cpp
│ │ ├── test_limiter_node.cpp
│ │ ├── test_malloc_atexit.cpp
│ │ ├── test_malloc_compliance.cpp
│ │ ├── test_malloc_init_shutdown.cpp
│ │ ├── test_malloc_lib_unload.cpp
│ │ ├── test_malloc_overload.cpp
│ │ ├── test_malloc_pools.cpp
│ │ ├── test_malloc_pure_c.c
│ │ ├── test_malloc_regression.cpp
│ │ ├── test_malloc_used_by_lib.cpp
│ │ ├── test_malloc_whitebox.cpp
│ │ ├── test_model_plugin.cpp
│ │ ├── test_multifunction_node.cpp
│ │ ├── test_mutex.cpp
│ │ ├── test_mutex_native_threads.cpp
│ │ ├── test_opencl_kernel_32.spir
│ │ ├── test_opencl_kernel_64.spir
│ │ ├── test_opencl_node.cl
│ │ ├── test_opencl_node.cpp
│ │ ├── test_opencl_precompiled_kernel_gpu_32.ir
│ │ ├── test_opencl_precompiled_kernel_gpu_64.ir
│ │ ├── test_openmp.cpp
│ │ ├── test_overwrite_node.cpp
│ │ ├── test_parallel_do.cpp
│ │ ├── test_parallel_for.cpp
│ │ ├── test_parallel_for_each.cpp
│ │ ├── test_parallel_for_vectorization.cpp
│ │ ├── test_parallel_invoke.cpp
│ │ ├── test_parallel_pipeline.cpp
│ │ ├── test_parallel_reduce.cpp
│ │ ├── test_parallel_scan.cpp
│ │ ├── test_parallel_sort.cpp
│ │ ├── test_parallel_while.cpp
│ │ ├── test_partitioner.h
│ │ ├── test_partitioner_whitebox.cpp
│ │ ├── test_partitioner_whitebox.h
│ │ ├── test_pipeline.cpp
│ │ ├── test_pipeline_with_tbf.cpp
│ │ ├── test_priority_queue_node.cpp
│ │ ├── test_queue_node.cpp
│ │ ├── test_range_based_for.h
│ │ ├── test_reader_writer_lock.cpp
│ │ ├── test_runtime_loader.cpp
│ │ ├── test_rwm_upgrade_downgrade.cpp
│ │ ├── test_semaphore.cpp
│ │ ├── test_sequencer_node.cpp
│ │ ├── test_source_node.cpp
│ │ ├── test_split_node.cpp
│ │ ├── test_static_assert.cpp
│ │ ├── test_std_thread.cpp
│ │ ├── test_streaming_node.cpp
│ │ ├── test_tagged_msg.cpp
│ │ ├── test_task.cpp
│ │ ├── test_task_arena.cpp
│ │ ├── test_task_assertions.cpp
│ │ ├── test_task_auto_init.cpp
│ │ ├── test_task_enqueue.cpp
│ │ ├── test_task_group.cpp
│ │ ├── test_task_leaks.cpp
│ │ ├── test_task_priority.cpp
│ │ ├── test_task_scheduler_init.cpp
│ │ ├── test_task_scheduler_observer.cpp
│ │ ├── test_task_steal_limit.cpp
│ │ ├── test_tbb_condition_variable.cpp
│ │ ├── test_tbb_fork.cpp
│ │ ├── test_tbb_header.cpp
│ │ ├── test_tbb_thread.cpp
│ │ ├── test_tbb_version.cpp
│ │ ├── test_thread.h
│ │ ├── test_tick_count.cpp
│ │ ├── test_tuple.cpp
│ │ ├── test_write_once_node.cpp
│ │ └── test_yield.cpp
│ └── tbb2018_20180822oss/
│ ├── CHANGES
│ ├── LICENSE
│ ├── README
│ ├── README.md
│ ├── bin/
│ │ ├── tbbvars.csh
│ │ └── tbbvars.sh
│ ├── cmake/
│ │ ├── README.rst
│ │ ├── TBBBuild.cmake
│ │ ├── TBBConfig.cmake
│ │ ├── TBBConfigVersion.cmake
│ │ ├── TBBGet.cmake
│ │ ├── TBBMakeConfig.cmake
│ │ ├── tbb_config_generator.cmake
│ │ └── templates/
│ │ ├── TBBConfig.cmake.in
│ │ ├── TBBConfigForSource.cmake.in
│ │ └── TBBConfigVersion.cmake.in
│ ├── doc/
│ │ ├── Release_Notes.txt
│ │ └── html/
│ │ ├── a00002.html
│ │ ├── a00004.html
│ │ ├── a00006.html
│ │ ├── a00008.html
│ │ ├── a00010.html
│ │ ├── a00012.html
│ │ ├── a00014.html
│ │ ├── a00016.html
│ │ ├── a00017.html
│ │ ├── a00018.html
│ │ ├── a00019.html
│ │ ├── a00020.html
│ │ ├── a00021.html
│ │ ├── a00022.html
│ │ ├── a00023.html
│ │ ├── a00024.html
│ │ ├── a00025.html
│ │ ├── a00026.html
│ │ ├── a00027.html
│ │ ├── a00028.html
│ │ ├── a00029.html
│ │ ├── a00030.html
│ │ ├── a00031.html
│ │ ├── a00032.html
│ │ ├── a00033.html
│ │ ├── a00034.html
│ │ ├── a00035.html
│ │ ├── a00036.html
│ │ ├── a00037.html
│ │ ├── a00038.html
│ │ ├── a00039.html
│ │ ├── a00040.html
│ │ ├── a00041.html
│ │ ├── a00042.html
│ │ ├── a00043.html
│ │ ├── a00044.html
│ │ ├── a00045.html
│ │ ├── a00046.html
│ │ ├── a00047.html
│ │ ├── a00048.html
│ │ ├── a00049.html
│ │ ├── a00050.html
│ │ ├── a00051.html
│ │ ├── a00052.html
│ │ ├── a00053.html
│ │ ├── a00054.html
│ │ ├── a00055.html
│ │ ├── a00056.html
│ │ ├── a00057.html
│ │ ├── a00058.html
│ │ ├── a00059.html
│ │ ├── a00060.html
│ │ ├── a00061.html
│ │ ├── a00062.html
│ │ ├── a00063.html
│ │ ├── a00064.html
│ │ ├── a00065.html
│ │ ├── a00066.html
│ │ ├── a00067.html
│ │ ├── a00068.html
│ │ ├── a00069.html
│ │ ├── a00070.html
│ │ ├── a00071.html
│ │ ├── a00072.html
│ │ ├── a00073.html
│ │ ├── a00074.html
│ │ ├── a00075.html
│ │ ├── a00076.html
│ │ ├── a00077.html
│ │ ├── a00078.html
│ │ ├── a00079.html
│ │ ├── a00080.html
│ │ ├── a00081.html
│ │ ├── a00082.html
│ │ ├── a00083.html
│ │ ├── a00084.html
│ │ ├── a00085.html
│ │ ├── a00086.html
│ │ ├── a00087.html
│ │ ├── a00088.html
│ │ ├── a00089.html
│ │ ├── a00090.html
│ │ ├── a00091.html
│ │ ├── a00092.html
│ │ ├── a00093.html
│ │ ├── a00094.html
│ │ ├── a00095.html
│ │ ├── a00096.html
│ │ ├── a00097.html
│ │ ├── a00098.html
│ │ ├── a00099.html
│ │ ├── a00100.html
│ │ ├── a00101.html
│ │ ├── a00102.html
│ │ ├── a00103.html
│ │ ├── a00104.html
│ │ ├── a00105.html
│ │ ├── a00106.html
│ │ ├── a00107.html
│ │ ├── a00108.html
│ │ ├── a00109.html
│ │ ├── a00110.html
│ │ ├── a00111.html
│ │ ├── a00112.html
│ │ ├── a00113.html
│ │ ├── a00114.html
│ │ ├── a00115.html
│ │ ├── a00116.html
│ │ ├── a00117.html
│ │ ├── a00118.html
│ │ ├── a00119.html
│ │ ├── a00120.html
│ │ ├── a00121.html
│ │ ├── a00122.html
│ │ ├── a00123.html
│ │ ├── a00124.html
│ │ ├── a00125.html
│ │ ├── a00126.html
│ │ ├── a00127.html
│ │ ├── a00128.html
│ │ ├── a00129.html
│ │ ├── a00130.html
│ │ ├── a00131.html
│ │ ├── a00132.html
│ │ ├── a00133.html
│ │ ├── a00134.html
│ │ ├── a00135.html
│ │ ├── a00136.html
│ │ ├── a00137.html
│ │ ├── a00138.html
│ │ ├── a00139.html
│ │ ├── a00140.html
│ │ ├── a00141.html
│ │ ├── a00142.html
│ │ ├── a00143.html
│ │ ├── a00144.html
│ │ ├── a00145.html
│ │ ├── a00146.html
│ │ ├── a00147.html
│ │ ├── a00148.html
│ │ ├── a00149.html
│ │ ├── a00150.html
│ │ ├── a00151.html
│ │ ├── a00152.html
│ │ ├── a00153.html
│ │ ├── a00154.html
│ │ ├── a00155.html
│ │ ├── a00156.html
│ │ ├── a00157.html
│ │ ├── a00158.html
│ │ ├── a00159.html
│ │ ├── a00160.html
│ │ ├── a00161.html
│ │ ├── a00162.html
│ │ ├── a00163.html
│ │ ├── a00164.html
│ │ ├── a00165.html
│ │ ├── a00166.html
│ │ ├── a00167.html
│ │ ├── a00168.html
│ │ ├── a00169.html
│ │ ├── a00170.html
│ │ ├── a00171.html
│ │ ├── a00172.html
│ │ ├── a00173.html
│ │ ├── a00174.html
│ │ ├── a00175.html
│ │ ├── a00176.html
│ │ ├── a00177.html
│ │ ├── a00178.html
│ │ ├── a00179.html
│ │ ├── a00180.html
│ │ ├── a00181.html
│ │ ├── a00182.html
│ │ ├── a00183.html
│ │ ├── a00184.html
│ │ ├── a00203.html
│ │ ├── a00208.html
│ │ ├── a00227.html
│ │ ├── a00246.html
│ │ ├── a00249.html
│ │ ├── a00271.html
│ │ ├── a00272.html
│ │ ├── a00273.html
│ │ ├── a00274.html
│ │ ├── a00275.html
│ │ ├── a00276.html
│ │ ├── a00278.html
│ │ ├── a00279.html
│ │ ├── a00280.html
│ │ ├── a00281.html
│ │ ├── a00282.html
│ │ ├── a00283.html
│ │ ├── a00284.html
│ │ ├── a00285.html
│ │ ├── a00286.html
│ │ ├── a00287.html
│ │ ├── a00288.html
│ │ ├── a00289.html
│ │ ├── a00290.html
│ │ ├── a00291.html
│ │ ├── a00292.html
│ │ ├── a00293.html
│ │ ├── a00294.html
│ │ ├── a00295.html
│ │ ├── a00296.html
│ │ ├── a00297.html
│ │ ├── a00298.html
│ │ ├── a00299.html
│ │ ├── a00300.html
│ │ ├── a00301.html
│ │ ├── a00302.html
│ │ ├── a00303.html
│ │ ├── a00304.html
│ │ ├── a00305.html
│ │ ├── a00306.html
│ │ ├── a00307.html
│ │ ├── a00308.html
│ │ ├── a00309.html
│ │ ├── a00310.html
│ │ ├── a00311.html
│ │ ├── a00312.html
│ │ ├── a00313.html
│ │ ├── a00314.html
│ │ ├── a00315.html
│ │ ├── a00316.html
│ │ ├── a00317.html
│ │ ├── a00318.html
│ │ ├── a00319.html
│ │ ├── a00320.html
│ │ ├── a00321.html
│ │ ├── a00322.html
│ │ ├── a00323.html
│ │ ├── a00324.html
│ │ ├── a00325.html
│ │ ├── a00326.html
│ │ ├── a00327.html
│ │ ├── a00328.html
│ │ ├── a00329.html
│ │ ├── a00330.html
│ │ ├── a00331.html
│ │ ├── a00332.html
│ │ ├── a00333.html
│ │ ├── a00334.html
│ │ ├── a00335.html
│ │ ├── a00336.html
│ │ ├── a00337.html
│ │ ├── a00338.html
│ │ ├── a00339.html
│ │ ├── a00340.html
│ │ ├── a00341.html
│ │ ├── a00342.html
│ │ ├── a00343.html
│ │ ├── a00344.html
│ │ ├── a00345.html
│ │ ├── a00346.html
│ │ ├── a00347.html
│ │ ├── a00348.html
│ │ ├── a00349.html
│ │ ├── a00350.html
│ │ ├── a00351.html
│ │ ├── a00352.html
│ │ ├── a00353.html
│ │ ├── a00354.html
│ │ ├── a00355.html
│ │ ├── a00356.html
│ │ ├── a00357.html
│ │ ├── a00358.html
│ │ ├── a00359.html
│ │ ├── a00360.html
│ │ ├── a00361.html
│ │ ├── a00362.html
│ │ ├── a00363.html
│ │ ├── a00364.html
│ │ ├── a00365.html
│ │ ├── a00366.html
│ │ ├── a00367.html
│ │ ├── a00368.html
│ │ ├── a00369.html
│ │ ├── a00370.html
│ │ ├── a00371.html
│ │ ├── a00372.html
│ │ ├── a00373.html
│ │ ├── a00374.html
│ │ ├── a00375.html
│ │ ├── a00376.html
│ │ ├── a00377.html
│ │ ├── a00378.html
│ │ ├── a00379.html
│ │ ├── a00380.html
│ │ ├── a00381.html
│ │ ├── a00382.html
│ │ ├── a00383.html
│ │ ├── a00384.html
│ │ ├── a00385.html
│ │ ├── a00386.html
│ │ ├── a00387.html
│ │ ├── a00388.html
│ │ ├── a00389.html
│ │ ├── a00390.html
│ │ ├── a00391.html
│ │ ├── a00392.html
│ │ ├── a00393.html
│ │ ├── a00394.html
│ │ ├── a00395.html
│ │ ├── a00396.html
│ │ ├── a00397.html
│ │ ├── a00398.html
│ │ ├── a00399.html
│ │ ├── a00400.html
│ │ ├── a00401.html
│ │ ├── a00402.html
│ │ ├── a00403.html
│ │ ├── a00404.html
│ │ ├── a00405.html
│ │ ├── a00406.html
│ │ ├── a00407.html
│ │ ├── a00408.html
│ │ ├── a00409.html
│ │ ├── a00410.html
│ │ ├── a00411.html
│ │ ├── a00412.html
│ │ ├── a00413.html
│ │ ├── a00414.html
│ │ ├── a00415.html
│ │ ├── a00416.html
│ │ ├── a00417.html
│ │ ├── a00418.html
│ │ ├── a00419.html
│ │ ├── a00420.html
│ │ ├── a00421.html
│ │ ├── a00422.html
│ │ ├── a00423.html
│ │ ├── a00424.html
│ │ ├── a00425.html
│ │ ├── a00426.html
│ │ ├── a00427.html
│ │ ├── a00428.html
│ │ ├── a00429.html
│ │ ├── a00430.html
│ │ ├── annotated.html
│ │ ├── classes.html
│ │ ├── dir_525f2cc589630bacbdc3bb450847427e.html
│ │ ├── dir_63fb2cc293d133785b96e521fa051167.html
│ │ ├── dir_87119f26c7695cbc270003e99bc7f49f.html
│ │ ├── dir_b9976680b2be72d2d0b8fca1c31202a2.html
│ │ ├── doxygen.css
│ │ ├── dynsections.js
│ │ ├── files.html
│ │ ├── functions.html
│ │ ├── functions_0x62.html
│ │ ├── functions_0x63.html
│ │ ├── functions_0x64.html
│ │ ├── functions_0x65.html
│ │ ├── functions_0x66.html
│ │ ├── functions_0x67.html
│ │ ├── functions_0x68.html
│ │ ├── functions_0x69.html
│ │ ├── functions_0x6a.html
│ │ ├── functions_0x6c.html
│ │ ├── functions_0x6d.html
│ │ ├── functions_0x6e.html
│ │ ├── functions_0x6f.html
│ │ ├── functions_0x70.html
│ │ ├── functions_0x71.html
│ │ ├── functions_0x72.html
│ │ ├── functions_0x73.html
│ │ ├── functions_0x74.html
│ │ ├── functions_0x75.html
│ │ ├── functions_0x76.html
│ │ ├── functions_0x77.html
│ │ ├── functions_0x7e.html
│ │ ├── functions_enum.html
│ │ ├── functions_eval.html
│ │ ├── functions_func.html
│ │ ├── functions_func_0x62.html
│ │ ├── functions_func_0x63.html
│ │ ├── functions_func_0x64.html
│ │ ├── functions_func_0x65.html
│ │ ├── functions_func_0x66.html
│ │ ├── functions_func_0x67.html
│ │ ├── functions_func_0x68.html
│ │ ├── functions_func_0x69.html
│ │ ├── functions_func_0x6a.html
│ │ ├── functions_func_0x6c.html
│ │ ├── functions_func_0x6d.html
│ │ ├── functions_func_0x6e.html
│ │ ├── functions_func_0x6f.html
│ │ ├── functions_func_0x70.html
│ │ ├── functions_func_0x71.html
│ │ ├── functions_func_0x72.html
│ │ ├── functions_func_0x73.html
│ │ ├── functions_func_0x74.html
│ │ ├── functions_func_0x75.html
│ │ ├── functions_func_0x77.html
│ │ ├── functions_func_0x7e.html
│ │ ├── functions_rela.html
│ │ ├── functions_type.html
│ │ ├── functions_vars.html
│ │ ├── globals.html
│ │ ├── globals_func.html
│ │ ├── hierarchy.html
│ │ ├── index.html
│ │ ├── jquery.js
│ │ ├── modules.html
│ │ ├── namespacemembers.html
│ │ ├── namespacemembers_enum.html
│ │ ├── namespacemembers_eval.html
│ │ ├── namespacemembers_func.html
│ │ ├── namespacemembers_type.html
│ │ ├── namespaces.html
│ │ ├── pages.html
│ │ └── tabs.css
│ ├── examples/
│ │ ├── GettingStarted/
│ │ │ ├── index.html
│ │ │ └── sub_string_finder/
│ │ │ ├── Makefile
│ │ │ ├── readme.html
│ │ │ ├── sub_string_finder.cpp
│ │ │ ├── sub_string_finder_extended.cpp
│ │ │ └── sub_string_finder_pretty.cpp
│ │ ├── common/
│ │ │ ├── examples-common.inc
│ │ │ ├── gui/
│ │ │ │ ├── Makefile.gmake
│ │ │ │ ├── Makefile.win
│ │ │ │ ├── convideo.cpp
│ │ │ │ ├── d2dvideo.cpp
│ │ │ │ ├── dxcheck.bat
│ │ │ │ ├── gdivideo.cpp
│ │ │ │ ├── macvideo.cpp
│ │ │ │ ├── video.h
│ │ │ │ ├── winvideo.h
│ │ │ │ └── xvideo.cpp
│ │ │ ├── index.html
│ │ │ └── utility/
│ │ │ ├── fast_random.h
│ │ │ └── utility.h
│ │ ├── concurrent_hash_map/
│ │ │ ├── count_strings/
│ │ │ │ ├── Makefile
│ │ │ │ ├── count_strings.cpp
│ │ │ │ └── readme.html
│ │ │ └── index.html
│ │ ├── concurrent_priority_queue/
│ │ │ ├── index.html
│ │ │ └── shortpath/
│ │ │ ├── Makefile
│ │ │ ├── readme.html
│ │ │ └── shortpath.cpp
│ │ ├── graph/
│ │ │ ├── binpack/
│ │ │ │ ├── Makefile
│ │ │ │ ├── binpack.cpp
│ │ │ │ └── readme.html
│ │ │ ├── cholesky/
│ │ │ │ ├── Makefile
│ │ │ │ ├── cholesky.cpp
│ │ │ │ ├── init.cpp
│ │ │ │ └── readme.html
│ │ │ ├── dining_philosophers/
│ │ │ │ ├── Makefile
│ │ │ │ ├── dining_philosophers.cpp
│ │ │ │ └── readme.html
│ │ │ ├── fgbzip2/
│ │ │ │ ├── Makefile
│ │ │ │ ├── blocksort.cpp
│ │ │ │ ├── bzlib.cpp
│ │ │ │ ├── bzlib.h
│ │ │ │ ├── bzlib_private.h
│ │ │ │ ├── compress.cpp
│ │ │ │ ├── crctable.cpp
│ │ │ │ ├── decompress.cpp
│ │ │ │ ├── fgbzip2.cpp
│ │ │ │ ├── huffman.cpp
│ │ │ │ ├── randtable.cpp
│ │ │ │ └── readme.html
│ │ │ ├── index.html
│ │ │ ├── logic_sim/
│ │ │ │ ├── D_latch.h
│ │ │ │ ├── Makefile
│ │ │ │ ├── basics.h
│ │ │ │ ├── four_bit_adder.h
│ │ │ │ ├── one_bit_adder.h
│ │ │ │ ├── readme.html
│ │ │ │ ├── test_all.cpp
│ │ │ │ └── two_bit_adder.h
│ │ │ ├── matmult/
│ │ │ │ ├── Makefile
│ │ │ │ ├── matmult.cpp
│ │ │ │ └── readme.html
│ │ │ ├── som/
│ │ │ │ ├── Makefile
│ │ │ │ ├── readme.html
│ │ │ │ ├── som.cpp
│ │ │ │ ├── som.h
│ │ │ │ └── som_graph.cpp
│ │ │ └── stereo/
│ │ │ ├── Makefile
│ │ │ ├── imageEffects.cl
│ │ │ ├── lodepng.cpp
│ │ │ ├── lodepng.h
│ │ │ ├── readme.html
│ │ │ ├── stereo.cpp
│ │ │ └── utils.h
│ │ ├── index.html
│ │ ├── parallel_do/
│ │ │ ├── index.html
│ │ │ └── parallel_preorder/
│ │ │ ├── Graph.cpp
│ │ │ ├── Graph.h
│ │ │ ├── Makefile
│ │ │ ├── Matrix.h
│ │ │ ├── main.cpp
│ │ │ ├── parallel_preorder.cpp
│ │ │ └── readme.html
│ │ ├── parallel_for/
│ │ │ ├── game_of_life/
│ │ │ │ ├── Makefile
│ │ │ │ ├── readme.html
│ │ │ │ └── src/
│ │ │ │ ├── AssemblyInfo.cpp
│ │ │ │ ├── Board.h
│ │ │ │ ├── Evolution.cpp
│ │ │ │ ├── Evolution.h
│ │ │ │ ├── Form1.h
│ │ │ │ ├── Game_of_life.cpp
│ │ │ │ └── Update_state.cpp
│ │ │ ├── index.html
│ │ │ ├── polygon_overlay/
│ │ │ │ ├── Makefile
│ │ │ │ ├── polymain.cpp
│ │ │ │ ├── polymain.h
│ │ │ │ ├── polyover.cpp
│ │ │ │ ├── polyover.h
│ │ │ │ ├── pover_global.h
│ │ │ │ ├── pover_video.cpp
│ │ │ │ ├── pover_video.h
│ │ │ │ ├── readme.html
│ │ │ │ └── rpolygon.h
│ │ │ ├── seismic/
│ │ │ │ ├── Makefile
│ │ │ │ ├── main.cpp
│ │ │ │ ├── readme.html
│ │ │ │ ├── seismic_video.cpp
│ │ │ │ ├── seismic_video.h
│ │ │ │ ├── universe.cpp
│ │ │ │ └── universe.h
│ │ │ └── tachyon/
│ │ │ ├── Makefile
│ │ │ ├── readme.html
│ │ │ └── src/
│ │ │ ├── api.cpp
│ │ │ ├── api.h
│ │ │ ├── apigeom.cpp
│ │ │ ├── apitrigeom.cpp
│ │ │ ├── apitrigeom.h
│ │ │ ├── bndbox.cpp
│ │ │ ├── bndbox.h
│ │ │ ├── box.cpp
│ │ │ ├── box.h
│ │ │ ├── camera.cpp
│ │ │ ├── camera.h
│ │ │ ├── coordsys.cpp
│ │ │ ├── coordsys.h
│ │ │ ├── cylinder.cpp
│ │ │ ├── cylinder.h
│ │ │ ├── extvol.cpp
│ │ │ ├── extvol.h
│ │ │ ├── global.cpp
│ │ │ ├── global.h
│ │ │ ├── grid.cpp
│ │ │ ├── grid.h
│ │ │ ├── imageio.cpp
│ │ │ ├── imageio.h
│ │ │ ├── imap.cpp
│ │ │ ├── imap.h
│ │ │ ├── intersect.cpp
│ │ │ ├── intersect.h
│ │ │ ├── jpeg.cpp
│ │ │ ├── jpeg.h
│ │ │ ├── light.cpp
│ │ │ ├── light.h
│ │ │ ├── machine.h
│ │ │ ├── macros.h
│ │ │ ├── main.cpp
│ │ │ ├── objbound.cpp
│ │ │ ├── objbound.h
│ │ │ ├── parse.cpp
│ │ │ ├── parse.h
│ │ │ ├── plane.cpp
│ │ │ ├── plane.h
│ │ │ ├── ppm.cpp
│ │ │ ├── ppm.h
│ │ │ ├── pthread.cpp
│ │ │ ├── pthread_w.h
│ │ │ ├── quadric.cpp
│ │ │ ├── quadric.h
│ │ │ ├── render.cpp
│ │ │ ├── render.h
│ │ │ ├── ring.cpp
│ │ │ ├── ring.h
│ │ │ ├── shade.cpp
│ │ │ ├── shade.h
│ │ │ ├── sphere.cpp
│ │ │ ├── sphere.h
│ │ │ ├── tachyon_video.cpp
│ │ │ ├── tachyon_video.h
│ │ │ ├── texture.cpp
│ │ │ ├── texture.h
│ │ │ ├── tgafile.cpp
│ │ │ ├── tgafile.h
│ │ │ ├── trace.h
│ │ │ ├── trace.serial.cpp
│ │ │ ├── trace.simple.cpp
│ │ │ ├── trace.tbb.cpp
│ │ │ ├── trace.tbb1d.cpp
│ │ │ ├── trace_rest.cpp
│ │ │ ├── triangle.cpp
│ │ │ ├── triangle.h
│ │ │ ├── types.h
│ │ │ ├── ui.cpp
│ │ │ ├── ui.h
│ │ │ ├── util.cpp
│ │ │ ├── util.h
│ │ │ ├── vector.cpp
│ │ │ ├── vector.h
│ │ │ ├── vol.cpp
│ │ │ └── vol.h
│ │ ├── parallel_reduce/
│ │ │ ├── convex_hull/
│ │ │ │ ├── Makefile
│ │ │ │ ├── convex_hull.h
│ │ │ │ ├── convex_hull_bench.cpp
│ │ │ │ ├── convex_hull_sample.cpp
│ │ │ │ └── readme.html
│ │ │ ├── index.html
│ │ │ └── primes/
│ │ │ ├── Makefile
│ │ │ ├── main.cpp
│ │ │ ├── primes.cpp
│ │ │ ├── primes.h
│ │ │ └── readme.html
│ │ ├── pipeline/
│ │ │ ├── index.html
│ │ │ └── square/
│ │ │ ├── Makefile
│ │ │ ├── gen_input.cpp
│ │ │ ├── readme.html
│ │ │ └── square.cpp
│ │ ├── task/
│ │ │ ├── index.html
│ │ │ └── tree_sum/
│ │ │ ├── Makefile
│ │ │ ├── OptimizedParallelSumTree.cpp
│ │ │ ├── SerialSumTree.cpp
│ │ │ ├── SimpleParallelSumTree.cpp
│ │ │ ├── TreeMaker.h
│ │ │ ├── common.h
│ │ │ ├── main.cpp
│ │ │ └── readme.html
│ │ ├── task_arena/
│ │ │ ├── fractal/
│ │ │ │ ├── Makefile
│ │ │ │ ├── fractal.cpp
│ │ │ │ ├── fractal.h
│ │ │ │ ├── fractal_video.h
│ │ │ │ ├── main.cpp
│ │ │ │ └── readme.html
│ │ │ └── index.html
│ │ ├── task_group/
│ │ │ ├── index.html
│ │ │ └── sudoku/
│ │ │ ├── Makefile
│ │ │ ├── input1
│ │ │ ├── input2
│ │ │ ├── input3
│ │ │ ├── input4
│ │ │ ├── readme.html
│ │ │ └── sudoku.cpp
│ │ └── test_all/
│ │ ├── fibonacci/
│ │ │ ├── Fibonacci.cpp
│ │ │ ├── Makefile
│ │ │ └── readme.html
│ │ └── index.html
│ ├── include/
│ │ ├── index.html
│ │ ├── serial/
│ │ │ └── tbb/
│ │ │ ├── parallel_for.h
│ │ │ └── tbb_annotate.h
│ │ └── tbb/
│ │ ├── aggregator.h
│ │ ├── aligned_space.h
│ │ ├── atomic.h
│ │ ├── blocked_range.h
│ │ ├── blocked_range2d.h
│ │ ├── blocked_range3d.h
│ │ ├── blocked_rangeNd.h
│ │ ├── cache_aligned_allocator.h
│ │ ├── combinable.h
│ │ ├── compat/
│ │ │ ├── condition_variable
│ │ │ ├── ppl.h
│ │ │ ├── thread
│ │ │ └── tuple
│ │ ├── concurrent_hash_map.h
│ │ ├── concurrent_lru_cache.h
│ │ ├── concurrent_priority_queue.h
│ │ ├── concurrent_queue.h
│ │ ├── concurrent_unordered_map.h
│ │ ├── concurrent_unordered_set.h
│ │ ├── concurrent_vector.h
│ │ ├── critical_section.h
│ │ ├── enumerable_thread_specific.h
│ │ ├── flow_graph.h
│ │ ├── flow_graph_abstractions.h
│ │ ├── flow_graph_opencl_node.h
│ │ ├── gfx_factory.h
│ │ ├── global_control.h
│ │ ├── index.html
│ │ ├── internal/
│ │ │ ├── _aggregator_impl.h
│ │ │ ├── _concurrent_queue_impl.h
│ │ │ ├── _concurrent_unordered_impl.h
│ │ │ ├── _flow_graph_async_msg_impl.h
│ │ │ ├── _flow_graph_body_impl.h
│ │ │ ├── _flow_graph_cache_impl.h
│ │ │ ├── _flow_graph_impl.h
│ │ │ ├── _flow_graph_indexer_impl.h
│ │ │ ├── _flow_graph_item_buffer_impl.h
│ │ │ ├── _flow_graph_join_impl.h
│ │ │ ├── _flow_graph_node_impl.h
│ │ │ ├── _flow_graph_streaming_node.h
│ │ │ ├── _flow_graph_tagged_buffer_impl.h
│ │ │ ├── _flow_graph_trace_impl.h
│ │ │ ├── _flow_graph_types_impl.h
│ │ │ ├── _mutex_padding.h
│ │ │ ├── _range_iterator.h
│ │ │ ├── _tbb_hash_compare_impl.h
│ │ │ ├── _tbb_strings.h
│ │ │ ├── _tbb_trace_impl.h
│ │ │ ├── _tbb_windef.h
│ │ │ ├── _template_helpers.h
│ │ │ ├── _x86_eliding_mutex_impl.h
│ │ │ └── _x86_rtm_rw_mutex_impl.h
│ │ ├── machine/
│ │ │ ├── gcc_arm.h
│ │ │ ├── gcc_generic.h
│ │ │ ├── gcc_ia32_common.h
│ │ │ ├── gcc_itsx.h
│ │ │ ├── ibm_aix51.h
│ │ │ ├── icc_generic.h
│ │ │ ├── linux_common.h
│ │ │ ├── linux_ia32.h
│ │ │ ├── linux_ia64.h
│ │ │ ├── linux_intel64.h
│ │ │ ├── mac_ppc.h
│ │ │ ├── macos_common.h
│ │ │ ├── mic_common.h
│ │ │ ├── msvc_armv7.h
│ │ │ ├── msvc_ia32_common.h
│ │ │ ├── sunos_sparc.h
│ │ │ ├── windows_api.h
│ │ │ ├── windows_ia32.h
│ │ │ └── windows_intel64.h
│ │ ├── memory_pool.h
│ │ ├── mutex.h
│ │ ├── null_mutex.h
│ │ ├── null_rw_mutex.h
│ │ ├── parallel_do.h
│ │ ├── parallel_for.h
│ │ ├── parallel_for_each.h
│ │ ├── parallel_invoke.h
│ │ ├── parallel_reduce.h
│ │ ├── parallel_scan.h
│ │ ├── parallel_sort.h
│ │ ├── parallel_while.h
│ │ ├── partitioner.h
│ │ ├── pipeline.h
│ │ ├── queuing_mutex.h
│ │ ├── queuing_rw_mutex.h
│ │ ├── reader_writer_lock.h
│ │ ├── recursive_mutex.h
│ │ ├── runtime_loader.h
│ │ ├── scalable_allocator.h
│ │ ├── spin_mutex.h
│ │ ├── spin_rw_mutex.h
│ │ ├── task.h
│ │ ├── task_arena.h
│ │ ├── task_group.h
│ │ ├── task_scheduler_init.h
│ │ ├── task_scheduler_observer.h
│ │ ├── tbb.h
│ │ ├── tbb_allocator.h
│ │ ├── tbb_config.h
│ │ ├── tbb_disable_exceptions.h
│ │ ├── tbb_exception.h
│ │ ├── tbb_machine.h
│ │ ├── tbb_profiling.h
│ │ ├── tbb_stddef.h
│ │ ├── tbb_thread.h
│ │ ├── tbbmalloc_proxy.h
│ │ └── tick_count.h
│ ├── index.html
│ ├── lib/
│ │ ├── ia32/
│ │ │ ├── gcc4.1/
│ │ │ │ ├── libtbb.so.2
│ │ │ │ ├── libtbb_debug.so.2
│ │ │ │ ├── libtbb_preview.so.2
│ │ │ │ ├── libtbb_preview_debug.so.2
│ │ │ │ ├── libtbbmalloc.so.2
│ │ │ │ ├── libtbbmalloc_debug.so.2
│ │ │ │ ├── libtbbmalloc_proxy.so.2
│ │ │ │ └── libtbbmalloc_proxy_debug.so.2
│ │ │ ├── gcc4.4/
│ │ │ │ ├── libtbb.so.2
│ │ │ │ ├── libtbb_debug.so.2
│ │ │ │ ├── libtbb_preview.so.2
│ │ │ │ ├── libtbb_preview_debug.so.2
│ │ │ │ ├── libtbbmalloc.so.2
│ │ │ │ ├── libtbbmalloc_debug.so.2
│ │ │ │ ├── libtbbmalloc_proxy.so.2
│ │ │ │ └── libtbbmalloc_proxy_debug.so.2
│ │ │ └── gcc4.7/
│ │ │ ├── libtbb.so.2
│ │ │ ├── libtbb_debug.so.2
│ │ │ ├── libtbb_preview.so.2
│ │ │ ├── libtbb_preview_debug.so.2
│ │ │ ├── libtbbmalloc.so.2
│ │ │ ├── libtbbmalloc_debug.so.2
│ │ │ ├── libtbbmalloc_proxy.so.2
│ │ │ └── libtbbmalloc_proxy_debug.so.2
│ │ └── intel64/
│ │ ├── gcc4.1/
│ │ │ ├── libtbb.so.2
│ │ │ ├── libtbb_debug.so.2
│ │ │ ├── libtbb_preview.so.2
│ │ │ ├── libtbb_preview_debug.so.2
│ │ │ ├── libtbbmalloc.so.2
│ │ │ ├── libtbbmalloc_debug.so.2
│ │ │ ├── libtbbmalloc_proxy.so.2
│ │ │ └── libtbbmalloc_proxy_debug.so.2
│ │ ├── gcc4.4/
│ │ │ ├── libtbb.so.2
│ │ │ ├── libtbb_debug.so.2
│ │ │ ├── libtbb_preview.so.2
│ │ │ ├── libtbb_preview_debug.so.2
│ │ │ ├── libtbbmalloc.so.2
│ │ │ ├── libtbbmalloc_debug.so.2
│ │ │ ├── libtbbmalloc_proxy.so.2
│ │ │ └── libtbbmalloc_proxy_debug.so.2
│ │ └── gcc4.7/
│ │ ├── libtbb.so.2
│ │ ├── libtbb_debug.so.2
│ │ ├── libtbb_preview.so.2
│ │ ├── libtbb_preview_debug.so.2
│ │ ├── libtbbmalloc.so.2
│ │ ├── libtbbmalloc_debug.so.2
│ │ ├── libtbbmalloc_proxy.so.2
│ │ └── libtbbmalloc_proxy_debug.so.2
│ └── python/
│ ├── Makefile
│ ├── TBB.py
│ ├── index.html
│ ├── rml/
│ │ ├── Makefile
│ │ ├── ipc_server.cpp
│ │ ├── ipc_utils.cpp
│ │ └── ipc_utils.h
│ ├── setup.py
│ └── tbb/
│ ├── __init__.py
│ ├── __main__.py
│ ├── api.i
│ ├── pool.py
│ └── test.py
├── models/
│ ├── CNN/
│ │ ├── __init__.py
│ │ ├── alexnet.py
│ │ ├── resnet.py
│ │ └── vgg.py
│ ├── deformnet.py
│ ├── model_normalization.py
│ ├── posenet.py
│ ├── posenet_old.py
│ ├── sdfnet.py
│ └── tf_ops/
│ ├── approxmatch/
│ │ ├── __init__.py
│ │ ├── tf_approxmatch.cpp
│ │ ├── tf_approxmatch.py
│ │ ├── tf_approxmatch_compile.sh
│ │ └── tf_approxmatch_g.cu
│ └── nn_distance/
│ ├── README.md
│ ├── __init__.py
│ ├── tf_nndistance.cpp
│ ├── tf_nndistance.py
│ ├── tf_nndistance_compile.sh
│ ├── tf_nndistance_cpu.py
│ └── tf_nndistance_g.cu
├── postprocessing/
│ └── clean_smallparts.py
├── preprocessing/
│ ├── create_file_lst.py
│ ├── create_img_h5.py
│ ├── create_img_h5_newrenderer.py
│ ├── create_point_sdf_fullgrid.py
│ ├── create_point_sdf_grid.py
│ └── info.json
├── test/
│ ├── command
│ ├── create_sdf.py
│ ├── test_cd_emd.py
│ ├── test_f_score.py
│ ├── test_iou.py
│ └── test_sdf_acc.py
├── train/
│ └── train_sdf.py
└── utils/
├── output_utils.py
├── part_color_mapping.json
└── tf_util.py
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
*.xml
*.pyc
.idea/
*.o
models/CNN/pretrained_model/
checkpoint/
log/
pnt_vis/
================================================
FILE: README.md
================================================
# DISN: Deep Implicit Surface Network for High-quality Single-view 3D Reconstruction <img src="images/Adobe-Logos.png" width=120px /><img src="images/USC-Logos.png" width=120px />
## (will incorporate latest updates)
* ### We just released a rendered [datasets](https://github.com/Xharlie/ShapenetRender_more_variation) of Shapenet with more view variations that contains RGB, albedo, depth and normal 2D images. Rendering scripts for both v1 and v2 are available.
Please cite our paper
[DISN: Deep Implicit Surface Network for High-quality Single-view 3D Reconstruction (NeurIPS 2019)](https://arxiv.org/abs/1905.10711)
```
@incollection{NIPS2019_8340,
title = {DISN: Deep Implicit Surface Network for High-quality Single-view 3D Reconstruction},
author = {Xu, Qiangeng and Wang, Weiyue and Ceylan, Duygu and Mech, Radomir and Neumann, Ulrich},
booktitle = {Advances in Neural Information Processing Systems 32},
editor = {H. Wallach and H. Larochelle and A. Beygelzimer and F. d\textquotesingle Alch\'{e}-Buc and E. Fox and R. Garnett},
pages = {492--502},
year = {2019},
publisher = {Curran Associates, Inc.},
url = {http://papers.nips.cc/paper/8340-disn-deep-implicit-surface-network-for-high-quality-single-view-3d-reconstruction.pdf}
}
```
Primary contact: [Qiangeng Xu*](https://xharlie.github.io/)
<img src="images/result.png" />
## System Requirements
* ### GPU: 1080Ti (Other models can consider decrease the batch size if overflow)
* ### system: Ubuntu 16.04 (if your linux version can support tensorflow 1.10, it's going to be ok)
* ### tensorflow 1.10(should be able to run with 1.11, 1.12,1.13)
```
pip install trimesh==2.37.20
```
## Installation
```
cd {DISN}
mkdir checkpoint
cd checkpoint
wget https://www.dropbox.com/s/2ts7qc9w4opl4w4/SDF_DISN.tar
### or google drive: https://drive.google.com/file/d/1PEXVxXflVqWNqinSMC-hFmFdlMyoMZ7i/view?usp=sharing
### or baidu yunpan: https://pan.baidu.com/s/1Zujo84JoTcTW5dUl0AvS_w extraction code: esy9
tar -xvzf SDF_DISN.tar
rm -rf SDF_DISN.tar
cd ..
mkdir cam_est/checkpoint
cd cam_est/checkpoint
wget https://www.dropbox.com/s/hyv4lcvpfu0au9e/cam_DISN.tar
### or google drive https://drive.google.com/file/d/1S5Gh_u1C9vDvksqXDn3CP6IqsnU0hKkj/view?usp=sharing
### or baidu yunpan: https://pan.baidu.com/s/1lEHmSHA1o5lrswp0TM50qA extraction code: gbb3
tar -xvzf cam_DISN.tar
rm -rf cam_DISN.tar
cd ../../
Install whatever libary(e.g. mkl) you don't have and change corresponding libary path in your system in isosurface/LIB_PATH
```
## Demo:
* --sdf_res control the resolution of the sampled sdf, default is 64, the larger, the more fine-grained, but slower.
```
cd {DISN}
source isosurface/LIB_PATH
nohup python -u demo/demo.py --cam_est --log_dir checkpoint/SDF_DISN --cam_log_dir cam_est/checkpoint/cam_DISN --img_feat_twostream --sdf_res 256 &> log/create_sdf.log &
```
The result is demo/result.obj.
if you have dependency problems such as your mkl lib, etc. Please install the corresponding dependencies and change the path in LIB_PATH. Everyone has his/her/their own environment setting so it's impossible to instruct this step without sitting besides you and your server.
## Data Preparation
* ### file location setup:
* under preprocessing/info.json, you can change the locations of your data: the neccessary dir for the main model are :
```
"raw_dirs_v1": {
"mesh_dir": "/ssd1/datasets/ShapeNet/ShapeNetCore.v1/",
"norm_mesh_dir": "/ssd1/datasets/ShapeNet/march_cube_objs_v1/",
"rendered_dir": "/ssd1/datasets/ShapeNet/ShapeNetRendering/",
"renderedh5_dir": "/ssd1/datasets/ShapeNet/ShapeNetRenderingh5_v1/",
"sdf_dir": "/ssd1/datasets/ShapeNet/SDF_v1/"
}
```
* ### Download ShapeNetCore.v1
download the dataset following the instruction of https://www.shapenet.org/account/ (about 30GB)
```
cd {your download dir}
wget http://shapenet.cs.stanford.edu/shapenet/obj-zip/ShapeNetCore.v1.zip
unzip ShapeNetCore.v1.zip -d {your mesh_dir}
```
* ### Prepare the SDF ground truth and the marching cube reconstructed ground truth models
Download our generated sdf tar.gz from [here](https://drive.google.com/file/d/1cHDickPLKLz3smQNpOGXD2W5mkXcy1nq/view?usp=sharing) then place it at your "sdf_dir" in json; and the marching cube reconstructed ground truth models from the sdf file from [here](https://drive.google.com/drive/folders/1QGhDW335L7ra31uw5U-0V7hB-viA0JXr?usp=sharing) then place it at your "norm_mesh_dir" in your json.
If you want to generate sdf files and the reconstructed models by yourself, please follow the command lines below (Please expect the script to run for several hours). This step used this paper [Vega: non-linear fem deformable object simulator](http://run.usc.edu/vega/SinSchroederBarbic2012.pdf). Please also cite it if you use our code to generate sdf files
```
mkdir log
cd {DISN}
source isosurface/LIB_PATH
nohup python -u preprocessing/create_point_sdf_grid.py --thread_num {recommend 9} --category {default 'all', but can be single category like 'chair'} &> log/create_sdf.log &
## SDF folder takes about 9.0G, marching cube obj folder takes about 245G
```
* ### Download and generate 2d image h5 files:
* #### download 2d image following 3DR2N2[https://github.com/chrischoy/3D-R2N2], please cite their paper if you use this image tar file:
```
wget http://cvgl.stanford.edu/data2/ShapeNetRendering.tgz
untar it to {your rendered_dir}
```
* #### run h5 file generation (about 26 GB) :
```
cd {DISN}
nohup python -u preprocessing/create_img_h5.py &> log/create_imgh5.log &
```
## Camera parameters estimation network
* ### train the camera parameters estimation network:
```
### train the camera poses of the original rendered image dataset.
nohup python -u cam_est/train_sdf_cam.py --log_dir cam_est/checkpoint/{your training checkpoint dir} --gpu 0 --loss_mode 3D --learning_rate 2e-5 &> log/cam_3D_all.log &
### train the camera poses of the adding 2 more DoF augmented on the rendered image dataset.
nohup python -u cam_est/train_sdf_cam.py --log_dir cam_est/checkpoint/{your training checkpoint dir} --gpu 2 --loss_mode 3D --learning_rate 1e-4 --shift --shift_weight 2 &> log/cam_3D_shift2_all.log &
* ### if use new rendered 2d dataset:
```
### train the camera poses of the new rendered image dataset.
nohup python -u cam_est/train_sdf_cam.py --log_dir cam_est/checkpoint/{your checkpoint dir} --gpu 0 --loss_mode 3D --learning_rate 1e-4 --src_h5_dir {your new rendered images' h5 directory} --img_h 224 --img_w 224 &> log/cam_3D_easy.log &
```
* ### create h5 file of image and estimated cam parameters:
```
### Create img_h5 to {renderedh5_dir_est} in your info.json, the default is only generate h5 of test images and cam parameters(about 5.3GB)
nohup python -u train_sdf_cam.py --img_h5_dir {renderedh5_dir_est} --create --restore_model checkpoint/cam_3D_all --log_dir checkpoint/{your training checkpoint dir} --gpu 0--loss_mode 3D --batch_size 24 &> log/create_cam_mixloss_all.log &
```
## SDF generation network:
* ### train the sdf generation with provided camera parameters:
if train from scratch, you can load official pretrained vgg_16 by setting --restore_modelcnn; or you can --restore_model to your checkpoint to continue the training):
* support flip the background color from black to white since most online images have white background(by using --backcolorwhite)
* if use flag --cam_est, the img_h5 is loaded from {renderedh5_dir_est} instead of {renderedh5_dir}, so that we can train the generation on the estimated camera parameters
```
nohup python -u train/train_sdf.py --gpu 0 --img_feat_twostream --restore_modelcnn ./models/CNN/pretrained_model/vgg_16.ckpt --log_dir checkpoint/{your training checkpoint dir} --category all --num_sample_points 2048 --batch_size 20 --learning_rate 0.0001 --cat_limit 36000 &> log/DISN_train_all.log &
```
* ### inference sdf and create mesh objects:
* will save objs in {your training checkpoint dir}/test_objs/{sdf_res+1}_{iso}
* will save objs in {your training checkpoint dir}/test_objs/{sdf_res+1}_{iso}
* if use estimated camera post, --cam_est, will save objs in {your training checkpoint dir}/test_objs/camest_{sdf_res+1}_{iso}
* if only create chair or a single category, --category {chair or a single category}
* --sdf_res control the resolution of the sampled sdf, default is 64, the larger, the more fine-grained, but slower.
```
source isosurface/LIB_PATH
#### use ground truth camera pose
nohup python -u test/create_sdf.py --img_feat_twostream --view_num 24 --sdf_res 64 --batch_size 1 --gpu 0 --sdf_res 64 --log_dir checkpoint/{your training checkpoint dir} --iso 0.00 --category all &> log/DISN_create_all.log &
#### use estimated camera pose
nohup python -u test/create_sdf.py --img_feat_twostream --view_num 24 --sdf_res 64 --batch_size 1 --gpu 3 --sdf_res 64 --log_dir checkpoint/{your training checkpoint dir} --iso 0.00 --category all --cam_est &> log/DISN_create_all_cam.log &
```
* ### clean small objects:
* #### if the model doens't converge well, you can clean flying parts that generated by mistakes
```
nohup python -u clean_smallparts.py --src_dir checkpoint/{your training checkpoint dir}/test_objs/65_0.0 --tar_dir checkpoint/{your training checkpoint dir}/test_objs/65_0.0 --thread_n 10 &> log/DISN_clean.log &
```
## Evaluation:
### please compile models/tf_ops/ approxmatch and nn_distance and cites "A Point Set Generation Network for 3D Object Reconstruction from a Single Image"
* ### Chamfer Distance and Earth Mover Distance:
* #### cal_dir specify which obj folder to be tested, e.g. if only test watercraft, --category watercraft
```
nohup python -u test/test_cd_emd.py --img_feat_twostream --view_num 24 --num_sample_points 2048 --gpu 0 --batch_size 24 --log_dir checkpoint/{your training checkpoint dir} --cal_dir checkpoint/{your training checkpoint dir}/test_objs/65_0.0 --category all &> log/DISN_cd_emd_all.log &
```
* ### F-Score caluculation:
* cal_dir specify which obj folder to be tested, e.g. if only test watercraft, --category watercraft
also the threshold of true can be set, here we use 2.5 for default:
```
nohup python -u test/test_f_score.py --img_feat_twostream --view_num 24 --num_sample_points 2048 --gpu 0 --batch_size 24 --log_dir checkpoint/{your training checkpoint dir} --cal_dir checkpoint/{your training checkpoint dir}/test_objs/65_0.0 --category all --truethreshold 2.5 &> log/DISN_fscore_2.5.log &
```
* ### IOU caluculation:
* cal_dir specify which obj folder to be tested, e.g. if only test watercraft, --category watercraft
* --dim specify the number of voxels along each 3D dimension.
```
nohup python -u test/test_iou.py --img_feat_twostream --view_num 24 --log_dir checkpoint/{your training checkpoint dir} --cal_dir checkpoint/{your training checkpoint dir}/test_objs/65_0.0 --category all --dim 110 &> DISN_iou_all.log &
```
================================================
FILE: cam_est/model_cam.py
================================================
import tensorflow as tf
import numpy as np
import os
import tensorflow.contrib.slim as slim
from tensorflow.contrib.slim.python.slim.nets import vgg
import sys
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
ROOT_DIR = os.path.dirname(BASE_DIR)
sys.path.append(os.path.join(ROOT_DIR))
sys.path.append(os.path.join(ROOT_DIR,'..'))
sys.path.append(os.path.join(ROOT_DIR, 'models'))
import posenet
def placeholder_inputs(batch_size, num_points, img_size, num_pc=2018, num_sample_pc = 2048*8, scope=''):
with tf.variable_scope(scope) as sc:
pc_pl = tf.placeholder(tf.float32, shape=(batch_size, num_pc, 3))
sample_pc_pl = tf.placeholder(tf.float32, shape=(batch_size, num_sample_pc, 3))
sample_pc_rot_pl = tf.placeholder(tf.float32, shape=(batch_size, num_sample_pc, 3))
imgs_pl = tf.placeholder(tf.float32, shape=(batch_size, img_size[0], img_size[1], 3))
sdf_value_pl = tf.placeholder(tf.float32, shape=(batch_size, num_sample_pc, 1))
sdf_sign_pl = tf.placeholder(tf.int32, shape=(batch_size, num_sample_pc))
trans_mat_pl = tf.placeholder(tf.float32, shape=(batch_size, 4, 3))
norm_params_pl = tf.placeholder(tf.float32, shape=(batch_size, 4))
regress_mat_pl = tf.placeholder(tf.float32, shape=(batch_size, 4, 3))
shifts_pl = tf.placeholder(tf.float32, shape=(batch_size, 2))
# camera intrinsic matrix
# np.array([[149.84375, 0., 68.5], [0., 149.84375, 68.5], [0., 0., 1.]], dtype=np.float32)
K = cal_K(img_size)#.T
K_pl = tf.constant(K)
K_pl = tf.expand_dims(K_pl, 0) # Convert to a len(yp) x 1 matrix.
K_pl = tf.tile(K_pl, [batch_size, 1, 1]) # Create multiple columns.
K_pl = tf.transpose(K_pl, perm=[0, 2, 1])
rot_mat_inv = np.array([[1., 0., 0., 0.],
[0., 0., 1., 0.],
[0., -1., 0., 0.],
[0., 0., 0., 1.]], dtype=np.float32)
rot_mat_inv_pl = tf.constant(rot_mat_inv)
rot_mat_inv_pl = tf.expand_dims(rot_mat_inv_pl, 0) # Convert to a len(yp) x 1 matrix.
rot_mat_inv_pl = tf.tile(rot_mat_inv_pl, [batch_size, 1, 1]) # Create multiple columns.
sdf = {}
sdf['pc'] = pc_pl
sdf['sample_pc'] = sample_pc_pl
sdf['sample_pc_rot'] = sample_pc_rot_pl
sdf['imgs'] = imgs_pl
sdf['sdf_value'] = sdf_value_pl
sdf['sdf_sign'] = sdf_sign_pl
sdf['trans_mat'] = trans_mat_pl
sdf['norm_params'] = norm_params_pl
sdf['regress_mat'] = regress_mat_pl
sdf['K'] = K_pl
sdf['rot_mat_inv'] = rot_mat_inv_pl
sdf['shifts'] = shifts_pl
return sdf
def cal_K(img_size):
F_MM = 35. # Focal length
SENSOR_SIZE_MM = 32.
PIXEL_ASPECT_RATIO = 1. # pixel_aspect_x / pixel_aspect_y
RESOLUTION_PCT = 100.
SKEW = 0.
# Calculate intrinsic matrix.
# 2 atan(35 / 2*32)
scale = RESOLUTION_PCT / 100
# print('scale', scale)
f_u = F_MM * img_size[1] * scale / SENSOR_SIZE_MM
f_v = F_MM * img_size[0] * scale * PIXEL_ASPECT_RATIO / SENSOR_SIZE_MM
# print('f_u', f_u, 'f_v', f_v)
u_0 = img_size[1] * scale / 2
v_0 = img_size[0] * scale / 2
K = np.matrix(((f_u, SKEW, u_0), (0, f_v, v_0), (0, 0, 1)), dtype=np.float32)
return K
def matrixize(xyz, batch_size):
padding = tf.eye(3, num_columns=4, batch_shape=[batch_size])
xyz1 = tf.expand_dims(tf.concat((xyz, tf.ones([batch_size, 1])), axis = 1), axis=1)
return tf.concat((padding,xyz1), axis=1)
def get_inverse_norm_matrix(norm_params, batch_size):
m = norm_params[:,3]
m_inv_padding = tf.multiply(tf.eye(3, num_columns=4, batch_shape=[batch_size]), m[:,tf.newaxis,tf.newaxis])
M_inv = tf.concat([m_inv_padding,
tf.concat([tf.zeros([batch_size, 1, 3]), tf.ones([batch_size, 1, 1])], axis= 2)], axis =1)
# M_inv =
# [[m, 0., 0., 0.],
# [0., m, 0., 0.],
# [0., 0., m, 0.],
# [0., 0., 0., 1.]]
#
T_inv_padding = tf.eye(3, num_columns=4, batch_shape=[batch_size])
xyz1 = tf.expand_dims(tf.concat((norm_params[:,:3], tf.ones([batch_size, 1])), axis=1), axis=1)
T_inv = tf.concat((T_inv_padding, xyz1), axis=1)
#
# T_inv =
# [[1.0, 0., 0., 0],
# [0., 1.0, 0., 0],
# [0., 0., 1.0, 0],
# [x., y., z., 1.]]
#
# print(M_inv.get_shape().as_list(), T_inv.get_shape().as_list())
return tf.matmul(M_inv, T_inv)
def get_model(ref_dict, num_point, is_training, bn=False, bn_decay=None, img_size = (137,137), wd=1e-5, FLAGS=None):
ref_img = ref_dict['imgs']
ref_pc = ref_dict['pc']
ref_sample_pc = ref_dict['sample_pc']
ref_sample_pc_rot = ref_dict['sample_pc_rot']
trans_mat = ref_dict['trans_mat']
K = ref_dict['K']
norm_params = ref_dict['norm_params']
rot_mat_inv = ref_dict['rot_mat_inv']
regress_mat = ref_dict['regress_mat']
gt_xyshift = ref_dict['shifts']
batch_size = ref_img.get_shape()[0].value
norm_mat_inv = get_inverse_norm_matrix(norm_params, batch_size)
# endpoints
end_points = {}
end_points['ref_pc'] = ref_pc
end_points['regress_mat'] = regress_mat
end_points['K'] = K
end_points['gt_xyshift'] = gt_xyshift
end_points['trans_mat'] = trans_mat
end_points['sample_pc'] = ref_sample_pc #* 10
# Image extract features
if ref_img.shape[1] != 224 or ref_img.shape[2] != 224:
ref_img = tf.image.resize_bilinear(ref_img, [224, 224])
else:
print("image size:", img_size)
end_points['ref_img'] = ref_img
# vgg.vgg_16.default_image_size = (224, 224)
with slim.arg_scope([slim.conv2d],
weights_regularizer=slim.l2_regularizer(wd)):
ref_feats_embedding, vgg_end_points = vgg.vgg_16(ref_img, num_classes=1024, is_training=False, scope='vgg_16', spatial_squeeze=False)
ref_feats_embedding_cnn = tf.squeeze(ref_feats_embedding, axis = [1,2])
end_points['embedding'] = ref_feats_embedding_cnn
print(vgg_end_points.keys())
with tf.variable_scope("cameraprediction") as scope:
if FLAGS.shift:
pred_rotation, pred_translation, pred_RT, pred_xyshift = posenet.get_cam_mat_shft(ref_feats_embedding_cnn, is_training, batch_size, bn, bn_decay, wd)
end_points['pred_rotation'] = pred_rotation
end_points['pred_translation'] = pred_translation
end_points['pred_RT'] = pred_RT
end_points['pred_xyshift'] = pred_xyshift
elif FLAGS.space_shift:
pred_rotation, pred_translation, pred_RT, predxyzshift = posenet.get_cam_mat_spaceshft(ref_feats_embedding_cnn, is_training, batch_size, bn, bn_decay, wd)
end_points['pred_rotation'] = pred_rotation
end_points['pred_translation'] = pred_translation
end_points['pred_RT'] = pred_RT
end_points['pred_xyshift'] = None
pred_xyshift = None
else:
pred_rotation, pred_translation, pred_RT = posenet.get_cam_mat(ref_feats_embedding_cnn, is_training, batch_size, bn, bn_decay, wd)
end_points['pred_rotation'] = pred_rotation
end_points['pred_translation'] = pred_translation
end_points['pred_RT'] = pred_RT
end_points['pred_xyshift'] = None
pred_xyshift = None
print('trans_mat', trans_mat.shape)
sample_img_points, gt_xy = get_img_points(ref_sample_pc, trans_mat, gt_xyshift, FLAGS, img_size=img_size)
end_points['sample_img_points'] = sample_img_points
end_points['gt_xy'] = gt_xy
# K, RT, rot_mat, W2O_mat, norm_mat, pred_transmat = inverse norm_mat * inverse W2O_mat * inverse rot_mat * pred_RT * K inverse
if FLAGS.space_shift:
pred_regress_mat = norm_mat_inv @ predxyzshift @ rot_mat_inv @ pred_RT
else:
pred_regress_mat = norm_mat_inv @ rot_mat_inv @ pred_RT
pred_trans_mat = pred_regress_mat @ K
pred_sample_img_points, pred_xy = get_img_points(ref_sample_pc, pred_trans_mat, pred_xyshift, FLAGS, img_size=img_size)
end_points['pred_sample_img_points'] = pred_sample_img_points
end_points['pred_trans_mat'] = pred_trans_mat
end_points['pred_regress_mat'] = pred_regress_mat
end_points['pred_xy'] = pred_xy
print("gt_xy, pred_xy", gt_xy.get_shape(), pred_xy.get_shape())
return end_points
def get_img_points(sample_pc, trans_mat_right, pred_xyshift, FLAGS, img_size = (137,137)):
# sample_pc B*N*3
size_lst = sample_pc.get_shape().as_list()
homo_pc = tf.concat((sample_pc, tf.ones((size_lst[0], size_lst[1], 1),dtype=np.float32)),axis= -1)
print("homo_pc.get_shape()", homo_pc.get_shape())
pc_xyz = tf.matmul(homo_pc, trans_mat_right)
print("pc_xyz.get_shape()", pc_xyz.get_shape()) # B * N * 3
pc_xy = tf.cast(tf.divide(pc_xyz[:,:,:2], tf.expand_dims(pc_xyz[:,:,2], axis = 2)), dtype=tf.float32)
if FLAGS.shift:
pc_xy = pc_xy + tf.tile(tf.expand_dims(pred_xyshift / 2 * FLAGS.img_h, axis=1), (1,FLAGS.num_points,1))
mintensor = tf.constant([0.0,0.0], dtype=tf.float32)
maxtensor = tf.constant([img_size[0]-1, img_size[1]-1], dtype=tf.float32)
return tf.minimum(maxtensor, tf.maximum(mintensor, pc_xy)), pc_xy
def get_loss(end_points, sdf_weight=10., regularization=True, FLAGS=None):
""" sigmoid loss+sdf value"""
sample_pc = end_points['sample_pc']
regress_mat = end_points['regress_mat']
pred_regress_mat = end_points['pred_regress_mat']
pred_RT = end_points['pred_RT']
sample_img_points = end_points['sample_img_points']
pred_sample_img_points = end_points['pred_sample_img_points']
pred_xy = end_points['pred_xy']
pred_xyshift = end_points['pred_xyshift']
gt_xyshift = end_points['gt_xyshift']
gt_xy = end_points['gt_xy']
pred_trans_mat = end_points['pred_trans_mat']
trans_mat = end_points['trans_mat']
loss = 0.
# K = end_points['K']
# pred_rotation = end_points['pred_rotation']
# pred_translation = end_points['pred_translation']
# trans_cam = end_points['trans_mat']
################
# Compute loss #
################
end_points['losses'] = {}
end_points['results'] = {}
########### camera loss
##point cloud rotation error
size_lst = sample_pc.get_shape().as_list()
homo_sample_pc = tf.concat((sample_pc, tf.ones((size_lst[0], size_lst[1], 1),dtype=np.float32)),axis= -1)
sub_3d = tf.matmul(homo_sample_pc, pred_regress_mat) - tf.matmul(homo_sample_pc, regress_mat)
rotpc_loss = tf.reduce_mean(tf.nn.l2_loss(sub_3d))
rot2d_loss = tf.reduce_mean(tf.nn.l2_loss(pred_xy - gt_xy)) / 10000.
rot2d_dist_all = tf.reduce_mean(tf.sqrt(tf.reduce_sum(tf.square(sample_img_points - pred_sample_img_points), axis = -1)), axis=1)
rot2d_dist = tf.reduce_mean(rot2d_dist_all)
rot3d_dist_all = tf.reduce_mean(tf.sqrt(tf.reduce_sum(tf.square(sub_3d), axis = -1)), axis=1)
rot3d_dist = tf.reduce_mean(rot3d_dist_all)
rotmatrix_loss = tf.reduce_mean((tf.square((pred_trans_mat-trans_mat))))
end_points['rot_homopc'] = tf.matmul(homo_sample_pc, regress_mat)
end_points['pred_rot_homopc'] = tf.matmul(homo_sample_pc, pred_regress_mat)
rotpc_loss = rotpc_loss #* 100
end_points['losses']['rotpc_loss'] = rotpc_loss
end_points['losses']['rot2d_loss'] = rot2d_loss
end_points['losses']['rot3d_dist'] = rot3d_dist
end_points['losses']['rot2d_dist'] = rot2d_dist
end_points['losses']['rotmatrix_loss'] = rotmatrix_loss
end_points['results']['rot2d_dist_all'] = rot2d_dist_all
end_points['results']['rot3d_dist_all'] = rot3d_dist_all
if FLAGS.loss_mode == "3D":
loss += rotpc_loss
elif FLAGS.loss_mode == "2D":
loss += rot2d_loss
elif FLAGS.loss_mode == "3DM":
loss += rotpc_loss + rotmatrix_loss * 0.3
elif FLAGS.loss_mode == "23D":
loss += (rotpc_loss + rot2d_loss * 0.1)
else:
loss += (rot2d_loss + rotpc_loss + rotmatrix_loss)
if FLAGS.shift:
shiftxy_loss = tf.reduce_mean(tf.nn.l2_loss(gt_xyshift - pred_xyshift))
end_points['losses']['shiftxy_loss'] = shiftxy_loss
loss+= shiftxy_loss * FLAGS.shift_weight
# ## rotation geodesic distance loss
# geodist = posenet.compute_geodesic_distance_from_two_matrices(pred_rotation, RT[:,:3,:])
# geodist_loss = tf.reduce_mean(tf.nn.l2_loss(geodist))
# geodist_loss = geodist_loss
# end_points['losses']['geodist_loss'] = geodist_loss
# loss += geodist_loss
# ## rotation mat loss
# rot_loss = tf.reduce_mean(tf.nn.l2_loss(pred_rotation - RT[:,:3,:]))
# rot_loss = 100 * rot_loss
# end_points['losses']['rot_loss'] = rot_loss
# loss += rot_loss
# ## rotation mat differencel loss
# rot_mat_diff = tf.matmul(pred_rotation, tf.transpose(RT[:,:3,:], perm=[0,2,1]))
# end_points['rot_mat_diff'] = rot_mat_diff
# rot_mat_diff -= tf.constant(np.eye(3), dtype=tf.float32)
# rot_mat_diff_loss = tf.reduce_mean(tf.nn.l2_loss(rot_mat_diff))
# rot_mat_diff_loss = 100 * rot_mat_diff_loss
# end_points['losses']['rot_mat_diff'] = rot_mat_diff_loss
# loss += rot_mat_diff_loss
# trans_loss = tf.reduce_mean(tf.abs(pred_translation - RT[:,3,:]))
# trans_loss = 100 * trans_loss
# end_points['losses']['trans_loss'] = trans_loss
# loss += trans_loss
# cam_loss = tf.reduce_mean(tf.abs(pred_RT - RT))
# cam_loss = 100 * cam_loss
# end_points['losses']['rot_loss'] = rot_loss
# end_points['losses']['cam_loss'] = cam_loss
# cam_loss = rot_mat_diff + trans_loss
# loss += cam_loss
# cam_loss = tf.reduce_mean(tf.abs(pred_cam - RT))
# end_points['losses']['cam_loss'] = cam_loss
# loss += cam_loss
# mat_diff = tf.matmul(pred_rotation, tf.transpose(pred_rotation, perm=[0,2,1]))
# mat_diff -= tf.constant(np.eye(3), dtype=tf.float32)
# mat_diff_loss = tf.nn.l2_loss(mat_diff)
# end_points['losses']['mat_diff_loss'] = mat_diff_loss
# loss += mat_diff_loss
############### weight decay
if regularization:
vgg_regularization_loss = tf.add_n(slim.losses.get_regularization_losses())
# decoder_regularization_loss = tf.add_n(tf.get_collection('regularizer'))
end_points['losses']['regularization'] = vgg_regularization_loss#(vgg_regularization_loss + decoder_regularization_loss)
loss += vgg_regularization_loss#(vgg_regularization_loss + decoder_regularization_loss)
end_points['losses']['overall_loss'] = loss
return loss, end_points
================================================
FILE: cam_est/model_cam_old.py
================================================
import tensorflow as tf
import numpy as np
import os
import tensorflow.contrib.slim as slim
from tensorflow.contrib.slim.python.slim.nets import vgg
import sys
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
ROOT_DIR = os.path.dirname(BASE_DIR)
sys.path.append(os.path.join(ROOT_DIR))
sys.path.append(os.path.join(ROOT_DIR,'..'))
sys.path.append(os.path.join(ROOT_DIR , 'models'))
import posenet_old as posenet
def placeholder_inputs(batch_size, num_points, img_size, num_pc=2018, num_sample_pc = 2048*8, scope=''):
with tf.variable_scope(scope) as sc:
pc_pl = tf.placeholder(tf.float32, shape=(batch_size, num_pc, 3))
sample_pc_pl = tf.placeholder(tf.float32, shape=(batch_size, num_sample_pc, 3))
sample_pc_rot_pl = tf.placeholder(tf.float32, shape=(batch_size, num_sample_pc, 3))
imgs_pl = tf.placeholder(tf.float32, shape=(batch_size, img_size[0], img_size[1], 3))
sdf_value_pl = tf.placeholder(tf.float32, shape=(batch_size, num_sample_pc, 1))
sdf_sign_pl = tf.placeholder(tf.int32, shape=(batch_size, num_sample_pc))
trans_mat_pl = tf.placeholder(tf.float32, shape=(batch_size, 4, 3))
RT_mat_pl = tf.placeholder(tf.float32, shape=(batch_size, 4, 3))
shifts_pl = tf.placeholder(tf.float32, shape=(batch_size, 2))
# camera intrinsic matrix
K = np.array([[149.84375, 0., 68.5],[0., 149.84375, 68.5],[0., 0., 1.]], dtype=np.float32)#.T
K_pl = tf.constant(K)
K_pl = tf.expand_dims(K_pl, 0) # Convert to a len(yp) x 1 matrix.
K_pl = tf.tile(K_pl, [batch_size, 1, 1]) # Create multiple columns.
sdf = {}
sdf['pc'] = pc_pl
sdf['sample_pc'] = sample_pc_pl
sdf['sample_pc_rot'] = sample_pc_rot_pl
sdf['imgs'] = imgs_pl
sdf['sdf_value'] = sdf_value_pl
sdf['sdf_sign'] = sdf_sign_pl
sdf['trans_mat'] = trans_mat_pl
sdf['RT'] = RT_mat_pl
sdf['K'] = K_pl
sdf['shifts'] = shifts_pl
return sdf
def get_model(ref_dict, num_point, is_training, bn=False, bn_decay=None, img_size = (137,137), wd=1e-5, FLAGS=None):
ref_img = ref_dict['imgs']
ref_pc = ref_dict['pc']
ref_sample_pc = ref_dict['sample_pc']
ref_sample_pc_rot = ref_dict['sample_pc_rot']
trans_mat = ref_dict['trans_mat']
K = ref_dict['K']
RT = ref_dict['RT']
gt_xyshift = ref_dict['shifts']
batch_size = ref_img.get_shape()[0].value
# endpoints
end_points = {}
end_points['ref_pc'] = ref_pc
end_points['RT'] = RT
end_points['K'] = K
end_points['gt_xyshift'] = gt_xyshift
end_points['trans_mat'] = trans_mat
end_points['sample_pc'] = ref_sample_pc #* 10
# Image extract features
if ref_img.shape[1] != 224 or ref_img.shape[2] != 224:
ref_img = tf.image.resize_bilinear(ref_img, [224, 224])
end_points['ref_img'] = ref_img
# vgg.vgg_16.default_image_size = (224, 224)
with slim.arg_scope([slim.conv2d],
weights_regularizer=slim.l2_regularizer(wd)):
ref_feats_embedding, vgg_end_points = vgg.vgg_16(ref_img, num_classes=1024, is_training=False, scope='vgg_16', spatial_squeeze=False)
ref_feats_embedding_cnn = tf.squeeze(ref_feats_embedding, axis = [1,2])
end_points['embedding'] = ref_feats_embedding_cnn
print(vgg_end_points.keys())
with tf.variable_scope("cameraprediction") as scope:
if FLAGS.shift:
pred_rotation, pred_translation, pred_RT, pred_xyshift = posenet.get_cam_mat_shft(ref_feats_embedding_cnn, is_training, batch_size, bn, bn_decay, wd)
end_points['pred_rotation'] = pred_rotation
end_points['pred_translation'] = pred_translation
end_points['pred_RT'] = pred_RT
end_points['pred_xyshift'] = pred_xyshift
else:
pred_rotation, pred_translation, pred_RT = posenet.get_cam_mat(ref_feats_embedding_cnn, is_training, batch_size, bn, bn_decay, wd)
end_points['pred_rotation'] = pred_rotation
end_points['pred_translation'] = pred_translation
end_points['pred_RT'] = pred_RT
end_points['pred_xyshift'] = None
pred_xyshift = None
print('trans_mat', trans_mat.shape)
sample_img_points, gt_xy = get_img_points(ref_sample_pc, trans_mat, gt_xyshift, FLAGS)
end_points['sample_img_points'] = sample_img_points
end_points['gt_xy'] = gt_xy
K_transpose = tf.transpose(K, perm=[0, 2, 1])
pred_trans_mat = tf.matmul(pred_RT, K_transpose)
pred_sample_img_points, pred_xy = get_img_points(ref_sample_pc, pred_trans_mat, pred_xyshift, FLAGS)
end_points['pred_sample_img_points'] = pred_sample_img_points
end_points['pred_trans_mat'] = pred_trans_mat
end_points['pred_xy'] = pred_xy
print("gt_xy, pred_xy", gt_xy.get_shape(), pred_xy.get_shape())
return end_points
def get_img_points(sample_pc, trans_mat_right, pred_xyshift, FLAGS):
# sample_pc B*N*3
size_lst = sample_pc.get_shape().as_list()
homo_pc = tf.concat((sample_pc, tf.ones((size_lst[0], size_lst[1], 1),dtype=np.float32)),axis= -1)
print("homo_pc.get_shape()", homo_pc.get_shape())
pc_xyz = tf.matmul(homo_pc, trans_mat_right)
print("pc_xyz.get_shape()", pc_xyz.get_shape()) # B * N * 3
pc_xy = tf.cast(tf.divide(pc_xyz[:,:,:2], tf.expand_dims(pc_xyz[:,:,2], axis = 2)), dtype=tf.float32)
if FLAGS.shift:
pc_xy = pc_xy + tf.tile(tf.expand_dims(pred_xyshift / 2 * FLAGS.img_h, axis=1), (1,FLAGS.num_points,1))
mintensor = tf.constant([0.0,0.0], dtype=tf.float32)
maxtensor = tf.constant([136.0,136.0], dtype=tf.float32)
return tf.minimum(maxtensor, tf.maximum(mintensor, pc_xy)), pc_xy
def get_loss(end_points, sdf_weight=10., regularization=True, FLAGS=None):
""" sigmoid loss+sdf value"""
sample_pc = end_points['sample_pc']
RT = end_points['RT']
pred_RT = end_points['pred_RT']
sample_img_points = end_points['sample_img_points']
pred_sample_img_points = end_points['pred_sample_img_points']
pred_xy = end_points['pred_xy']
pred_xyshift = end_points['pred_xyshift']
gt_xyshift = end_points['gt_xyshift']
gt_xy = end_points['gt_xy']
pred_trans_mat = end_points['pred_trans_mat']
trans_mat = end_points['trans_mat']
loss = 0.
# K = end_points['K']
# pred_rotation = end_points['pred_rotation']
# pred_translation = end_points['pred_translation']
# trans_cam = end_points['trans_mat']
################
# Compute loss #
################
end_points['losses'] = {}
end_points['results'] = {}
########### camera loss
##point cloud rotation error
size_lst = sample_pc.get_shape().as_list()
homo_sample_pc = tf.concat((sample_pc, tf.ones((size_lst[0], size_lst[1], 1),dtype=np.float32)),axis= -1)
sub_3d = tf.matmul(homo_sample_pc, pred_RT) - tf.matmul(homo_sample_pc, RT)
rotpc_loss = tf.reduce_mean(tf.nn.l2_loss(sub_3d))
rot2d_loss = tf.reduce_mean(tf.nn.l2_loss(pred_xy - gt_xy)) / 10000.
rot2d_dist_all = tf.reduce_mean(tf.sqrt(tf.reduce_sum(tf.square(sample_img_points - pred_sample_img_points), axis = -1)), axis=1)
rot2d_dist = tf.reduce_mean(rot2d_dist_all)
rot3d_dist_all = tf.reduce_mean(tf.sqrt(tf.reduce_sum(tf.square(sub_3d), axis = -1)), axis=1)
rot3d_dist = tf.reduce_mean(rot3d_dist_all)
rotmatrix_loss = tf.reduce_mean((tf.square((pred_trans_mat-trans_mat))))
end_points['rot_homopc'] = tf.matmul(homo_sample_pc, RT)
end_points['pred_rot_homopc'] = tf.matmul(homo_sample_pc, pred_RT)
rotpc_loss = rotpc_loss #* 100
end_points['losses']['rotpc_loss'] = rotpc_loss
end_points['losses']['rot2d_loss'] = rot2d_loss
end_points['losses']['rot3d_dist'] = rot3d_dist
end_points['losses']['rot2d_dist'] = rot2d_dist
end_points['losses']['rotmatrix_loss'] = rotmatrix_loss
end_points['results']['rot2d_dist_all'] = rot2d_dist_all
end_points['results']['rot3d_dist_all'] = rot3d_dist_all
if FLAGS.loss_mode == "3D":
loss += rotpc_loss
elif FLAGS.loss_mode == "2D":
loss += rot2d_loss
elif FLAGS.loss_mode == "3DM":
loss += rotpc_loss + rotmatrix_loss * 0.3
else:
loss += rot2d_loss + rotpc_loss + rotmatrix_loss
if FLAGS.shift:
shiftxy_loss = tf.reduce_mean(tf.nn.l2_loss(gt_xyshift - pred_xyshift))
end_points['losses']['shiftxy_loss'] = shiftxy_loss
loss+= shiftxy_loss * FLAGS.shift_weight
# ## rotation geodesic distance loss
# geodist = posenet.compute_geodesic_distance_from_two_matrices(pred_rotation, RT[:,:3,:])
# geodist_loss = tf.reduce_mean(tf.nn.l2_loss(geodist))
# geodist_loss = geodist_loss
# end_points['losses']['geodist_loss'] = geodist_loss
# loss += geodist_loss
# ## rotation mat loss
# rot_loss = tf.reduce_mean(tf.nn.l2_loss(pred_rotation - RT[:,:3,:]))
# rot_loss = 100 * rot_loss
# end_points['losses']['rot_loss'] = rot_loss
# loss += rot_loss
# ## rotation mat differencel loss
# rot_mat_diff = tf.matmul(pred_rotation, tf.transpose(RT[:,:3,:], perm=[0,2,1]))
# end_points['rot_mat_diff'] = rot_mat_diff
# rot_mat_diff -= tf.constant(np.eye(3), dtype=tf.float32)
# rot_mat_diff_loss = tf.reduce_mean(tf.nn.l2_loss(rot_mat_diff))
# rot_mat_diff_loss = 100 * rot_mat_diff_loss
# end_points['losses']['rot_mat_diff'] = rot_mat_diff_loss
# loss += rot_mat_diff_loss
# trans_loss = tf.reduce_mean(tf.abs(pred_translation - RT[:,3,:]))
# trans_loss = 100 * trans_loss
# end_points['losses']['trans_loss'] = trans_loss
# loss += trans_loss
# cam_loss = tf.reduce_mean(tf.abs(pred_RT - RT))
# cam_loss = 100 * cam_loss
# end_points['losses']['rot_loss'] = rot_loss
# end_points['losses']['cam_loss'] = cam_loss
# cam_loss = rot_mat_diff + trans_loss
# loss += cam_loss
# cam_loss = tf.reduce_mean(tf.abs(pred_cam - RT))
# end_points['losses']['cam_loss'] = cam_loss
# loss += cam_loss
# mat_diff = tf.matmul(pred_rotation, tf.transpose(pred_rotation, perm=[0,2,1]))
# mat_diff -= tf.constant(np.eye(3), dtype=tf.float32)
# mat_diff_loss = tf.nn.l2_loss(mat_diff)
# end_points['losses']['mat_diff_loss'] = mat_diff_loss
# loss += mat_diff_loss
############### weight decay
if regularization:
vgg_regularization_loss = tf.add_n(slim.losses.get_regularization_losses())
# decoder_regularization_loss = tf.add_n(tf.get_collection('regularizer'))
end_points['losses']['regularization'] = vgg_regularization_loss#(vgg_regularization_loss + decoder_regularization_loss)
loss += vgg_regularization_loss#(vgg_regularization_loss + decoder_regularization_loss)
end_points['losses']['overall_loss'] = loss
return loss, end_points
================================================
FILE: cam_est/train_sdf_cam.py
================================================
import argparse
import math
from datetime import datetime
import numpy as np
import random
import tensorflow as tf
import socket
import importlib
import os
import cv2
import sys
import h5py
import time
from tensorflow.contrib.framework.python.framework import checkpoint_utils
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
print(os.path.join(os.path.dirname(BASE_DIR), 'data'))
sys.path.append(BASE_DIR) # model
sys.path.append(os.path.join(BASE_DIR, 'models'))
sys.path.append(os.path.join(BASE_DIR, 'utils'))
sys.path.append(os.path.join(BASE_DIR, 'preprocessing'))
print(os.path.join(BASE_DIR, 'preprocessing'))
sys.path.append(os.path.join(BASE_DIR, 'data'))
print(os.path.join(BASE_DIR, 'data'))
import model_cam as model
import data_sdf_h5_queue_mask_imgh5_cammat as data
import create_file_lst
slim = tf.contrib.slim
lst_dir, cats, all_cats, raw_dirs = create_file_lst.get_all_info()
parser = argparse.ArgumentParser()
parser.add_argument('--gpu', type=str, default='2', help='GPU to use [default: GPU 0]')
parser.add_argument('--category', default="all", help='Which single class to train on [default: None]')
parser.add_argument('--log_dir', default='checkpoint/sdf_2d_twostream_cam_pcrot_all', help='Log dir [default: log]')
parser.add_argument('--num_points', type=int, default=1, help='Point Number [default: 2048]')
parser.add_argument('--num_sample_points', type=int, default=2048, help='Sample Point Number [default: 2048]')
parser.add_argument('--max_epoch', type=int, default=200, help='Epoch to run [default: 201]')
parser.add_argument('--batch_size', type=int, default=32, help='Batch Size during training [default: 32]')
parser.add_argument('--img_h', type=int, default=137, help='Image Height')
parser.add_argument('--img_w', type=int, default=137, help='Image Width')
parser.add_argument('--verbose_freq', type=int, default=100, help='verbose frequency')
parser.add_argument('--learning_rate', type=float, default=1e-4, help='Initial learning rate [default: 0.001]')
parser.add_argument('--momentum', type=float, default=0.9, help='Initial learning rate [default: 0.9]')
parser.add_argument('--optimizer', default='adam', help='adam or momentum [default: adam]')
parser.add_argument('--restore_model', default='', help='restore_model')
parser.add_argument('--restore_modelpn', default='', help='restore_model')#checkpoint/sdf_3dencoder_sdfbasic2/latest.ckpt
parser.add_argument('--restore_modelcnn', default='', help='restore_model')#../../models/CNN/pretrained_model/vgg_16.ckpt
parser.add_argument('--rotation', action='store_true', help='Disable random rotation during training.')
parser.add_argument('--sample', action='store_false', help='Disable sample during training.')
parser.add_argument('--img_feat', action='store_false', help='Disable sample during training.')
parser.add_argument('--splitvalid', action='store_true', help='Disable sample during training.')
parser.add_argument('--decay_step', type=int, default=200000, help='Decay step for lr decay [default: 200000]')
parser.add_argument('--decay_rate', type=float, default=0.9, help='Decay rate for lr decay [default: 0.7]')
parser.add_argument('--loss_mode', type=str, default="3D", help='loss on 3D points or 2D points')
parser.add_argument('--test', action="store_true")
parser.add_argument('--create', action="store_true")
parser.add_argument('--cat_limit', type=int, default=168000, help="balance each category, 1500 * 24 = 36000")
parser.add_argument('--img_h5_dir', type=str, default=raw_dirs["renderedh5_dir_est"], help="where to save img_h5")
parser.add_argument('--src_h5_dir', type=str, default=raw_dirs['renderedh5_dir'], help="where to read src img_h5")
parser.add_argument('--shift', action="store_true")
parser.add_argument('--shift_weight', type=float, default=0.5)
parser.add_argument('--space_shift', action="store_true")
parser.add_argument('--wd', type=float, default=2e-3, help='Decay rate for lr decay [default: 0.7]')
FLAGS = parser.parse_args()
EPOCH_CNT = 0
BATCH_SIZE = FLAGS.batch_size
NUM_POINTS = FLAGS.num_points
NUM_SAMPLE_POINTS = FLAGS.num_sample_points
MAX_EPOCH = FLAGS.max_epoch
BASE_LEARNING_RATE = FLAGS.learning_rate
GPU_INDEX = FLAGS.gpu
MOMENTUM = FLAGS.momentum
OPTIMIZER = FLAGS.optimizer
DECAY_STEP = FLAGS.decay_step
DECAY_RATE = FLAGS.decay_rate
PRETRAINED_MODEL_PATH = FLAGS.restore_model
PRETRAINED_CNN_MODEL_FILE = FLAGS.restore_modelcnn
PRETRAINED_PN_MODEL_FILE = FLAGS.restore_modelpn
LOG_DIR = FLAGS.log_dir
VV=False
os.environ["CUDA_VISIBLE_DEVICES"] = GPU_INDEX
if not os.path.exists(LOG_DIR): os.makedirs(LOG_DIR)
RESULT_PATH = os.path.join(LOG_DIR, 'train_results')
if not os.path.exists(RESULT_PATH): os.mkdir(RESULT_PATH)
VALID_RESULT_PATH = os.path.join(LOG_DIR, 'valid_results_'+str(time.time()))
TEST_RESULT_PATH = os.path.join(LOG_DIR, 'test_results_'+str(time.time()))
if not os.path.exists(VALID_RESULT_PATH): os.mkdir(VALID_RESULT_PATH)
if not os.path.exists(TEST_RESULT_PATH): os.mkdir(TEST_RESULT_PATH)
os.system('cp %s.py %s' % (os.path.splitext(model.__file__)[0], LOG_DIR))
os.system('cp %s.py %s' % (os.path.splitext(__file__)[0], LOG_DIR))
LOG_FOUT = open(os.path.join(LOG_DIR, 'log_train_%s.txt' % str(datetime.now())), 'w')
LOG_FOUT.write(str(FLAGS)+'\n')
BN_INIT_DECAY = 0.5
BN_DECAY_DECAY_RATE = 0.5
BN_DECAY_DECAY_STEP = float(DECAY_STEP)
BN_DECAY_CLIP = 0.99
IMG_SIZE = FLAGS.img_h
SDF_WEIGHT = 10.
HOSTNAME = socket.gethostname()
TRAIN_LISTINFO = []
TEST_LISTINFO = []
# "chair": "03001627",
# "bench": "02828884",
# "cabinet": "02933112",
# "car": "02958343",
# "airplane": "02691156",
# "display": "03211117",
# "lamp": "03636649",
# "speaker": "03691459",
# "rifle": "04090263",
# "sofa": "04256520",
# "table": "04379243",
# "phone": "04401088",
# "watercraft": "04530566"
CAT_LIST = ["02691156", "02828884", "02933112", "02958343", "03001627", "03211117", "03636649", "03691459", "04090263",
"04256520", "04379243", "04401088", "04530566"]
# CAT_LIST = ["03636649","04090263"]
cats_limit_train = {}
cats_limit_test = {}
cat_ids=[]
for value in CAT_LIST:
cat_ids.append(value)
cats_limit_train[value] = 0
cats_limit_test[value] = 0
for cat in CAT_LIST:
TRAIN_LST = lst_dir + '/%s_train.lst' % cat
with open(TRAIN_LST, 'r') as f:
lines = f.read().splitlines()
for line in lines:
for render in range(24):
cats_limit_train[cat] += 1
TRAIN_LISTINFO += [(cat, line.strip(), render)]
for cat in CAT_LIST:
VALID_LST = lst_dir + '/%s_test.lst' % cat
with open(VALID_LST, 'r') as f:
lines = f.read().splitlines()
for line in lines:
for render in range(24):
cats_limit_test[cat] += 1
TEST_LISTINFO += [(cat, line.strip(), render)]
info = {'rendered_dir': FLAGS.src_h5_dir,
'rendered_dir_v2': raw_dirs['renderedh5_dir_v2'],
'sdf_dir': raw_dirs['sdf_dir'],
'iso_value': 0.003}
TRAIN_DATASET = data.Pt_sdf_img(FLAGS, listinfo=TRAIN_LISTINFO, info=info, cats_limit=cats_limit_train)
VALID_DATASET = data.Pt_sdf_img(FLAGS, listinfo=TEST_LISTINFO, info=info, cats_limit=cats_limit_test)
def log_string(out_str):
LOG_FOUT.write(out_str+'\n')
LOG_FOUT.flush()
print(out_str)
def get_learning_rate(batch):
learning_rate = tf.train.exponential_decay(
BASE_LEARNING_RATE, # Base learning rate.
batch * BATCH_SIZE, # Current index into the dataset.
DECAY_STEP, # Decay step.
DECAY_RATE, # Decay rate.
staircase=True)
learning_rate = tf.maximum(learning_rate, 1e-6, name='lr') # CLIP THE LEARNING RATE!
return learning_rate
def get_bn_decay(batch):
bn_momentum = tf.train.exponential_decay(
BN_INIT_DECAY,
batch*BATCH_SIZE,
BN_DECAY_DECAY_STEP,
BN_DECAY_DECAY_RATE,
staircase=True)
bn_decay = tf.minimum(BN_DECAY_CLIP, 1 - bn_momentum)
return bn_decay
class NoStdStreams(object):
def __init__(self,stdout = None, stderr = None):
self.devnull = open(os.devnull,'w')
self._stdout = stdout or self.devnull or sys.stdout
self._stderr = stderr or self.devnull or sys.stderr
def __enter__(self):
self.old_stdout, self.old_stderr = sys.stdout, sys.stderr
self.old_stdout.flush(); self.old_stderr.flush()
sys.stdout, sys.stderr = self._stdout, self._stderr
def __exit__(self, exc_type, exc_value, traceback):
self._stdout.flush(); self._stderr.flush()
sys.stdout = self.old_stdout
sys.stderr = self.old_stderr
self.devnull.close()
def load_model(sess, LOAD_MODEL_FILE, prefixs, strict=False):
vars_in_pretrained_model = dict(checkpoint_utils.list_variables(LOAD_MODEL_FILE))
# print(vars_in_pretrained_model)
vars_in_defined_model = []
for var in tf.trainable_variables():
if isinstance(prefixs, list):
for prefix in prefixs:
if (var.op.name.startswith(prefix)) and (var.op.name in vars_in_pretrained_model.keys()) and ('logits' not in var.op.name):
if (list(var.shape) == vars_in_pretrained_model[var.op.name]):
vars_in_defined_model.append(var)
else:
if (var.op.name.startswith(prefixs)) and (var.op.name in vars_in_pretrained_model.keys()) and ('logits' not in var.op.name):
if (list(var.shape) == vars_in_pretrained_model[var.op.name]):
vars_in_defined_model.append(var)
print(vars_in_defined_model)
saver = tf.train.Saver(vars_in_defined_model)
try:
saver.restore(sess, LOAD_MODEL_FILE)
print( "Model loaded in file: %s" % (LOAD_MODEL_FILE))
except:
if strict:
print( "Fail to load modelfile: %s" % LOAD_MODEL_FILE)
return False
else:
print( "Fail loaded in file: %s" % (LOAD_MODEL_FILE))
return True
return True
def train():
log_string(LOG_DIR)
with tf.Graph().as_default():
with tf.device('/gpu:0'):
input_pls = model.placeholder_inputs(BATCH_SIZE, NUM_POINTS, (FLAGS.img_h, FLAGS.img_w), num_pc=NUM_POINTS, num_sample_pc=NUM_SAMPLE_POINTS, scope='inputs_pl')
is_training_pl = tf.placeholder(tf.bool, shape=())
print(is_training_pl)
# Note the global_step=batch parameter to minimize.
# That tells the optimizer to helpfully increment the 'batch' parameter for you every time it trains.
batch = tf.Variable(0, name='batch')
bn_decay = get_bn_decay(batch)
tf.summary.scalar('bn_decay', bn_decay)
print("--- Get model and loss")
# Get model and loss
end_points = model.get_model(input_pls, NUM_POINTS, is_training_pl, img_size = (FLAGS.img_h, FLAGS.img_w), bn=True, wd=FLAGS.wd, FLAGS=FLAGS)
loss, end_points = model.get_loss(end_points, sdf_weight=SDF_WEIGHT, FLAGS=FLAGS)
tf.summary.scalar('loss', loss)
print("--- Get training operator")
# Get training operator
learning_rate = get_learning_rate(batch)
tf.summary.scalar('learning_rate', learning_rate)
if OPTIMIZER == 'momentum':
optimizer = tf.train.MomentumOptimizer(learning_rate, momentum=MOMENTUM)
elif OPTIMIZER == 'adam':
optimizer = tf.train.AdamOptimizer(learning_rate)
# Create a session
config = tf.ConfigProto()
gpu_options = tf.GPUOptions()#per_process_gpu_memory_fraction=0.99)
config=tf.ConfigProto(gpu_options=gpu_options)
config.gpu_options.allow_growth = True
config.allow_soft_placement = True
config.log_device_placement = False
sess = tf.Session(config=config)
# sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
# Add summary writers
merged = tf.summary.merge_all()
train_writer = tf.summary.FileWriter(os.path.join(LOG_DIR, 'train'), sess.graph)
test_writer = tf.summary.FileWriter(os.path.join(LOG_DIR, 'test'), sess.graph)
##### all
update_variables = [x for x in tf.get_collection_ref(tf.GraphKeys.GLOBAL_VARIABLES)]
train_op = optimizer.minimize(loss, global_step=batch, var_list=update_variables)
# Init variables
init = tf.global_variables_initializer()
sess.run(init)
######### Loading Checkpoint ###############
# CNN(Pretrained from ImageNet)
if PRETRAINED_CNN_MODEL_FILE is not '':
if not load_model(sess, PRETRAINED_CNN_MODEL_FILE, 'vgg_16', strict=True):
return
if PRETRAINED_PN_MODEL_FILE is not '':
if not load_model(sess, PRETRAINED_PN_MODEL_FILE, ['refpc_reconstruction','sdfprediction'], strict=True):
return
# Overall
saver = tf.train.Saver([v for v in tf.get_collection_ref(tf.GraphKeys.GLOBAL_VARIABLES) if('lr' not in v.name) and ('batch' not in v.name)])
ckptstate = tf.train.get_checkpoint_state(PRETRAINED_MODEL_PATH)
if ckptstate is not None:
LOAD_MODEL_FILE = os.path.join(PRETRAINED_MODEL_PATH, os.path.basename(ckptstate.model_checkpoint_path))
try:
load_model(sess, LOAD_MODEL_FILE, ['vgg_16'], strict=True)
# load_model(sess, LOAD_MODEL_FILE, ['sdfprediction','vgg_16'], strict=True)
with NoStdStreams():
saver.restore(sess, LOAD_MODEL_FILE)
print( "Model loaded in file: %s" % LOAD_MODEL_FILE)
except:
print( "Fail to load overall modelfile: %s" % PRETRAINED_MODEL_PATH)
###########################################
ops = {'input_pls': input_pls,
'is_training_pl': is_training_pl,
'loss': loss,
'train_op': train_op,
'merged': merged,
'step': batch,
'end_points': end_points}
best_loss = 1e20
if FLAGS.test or FLAGS.create:
VALID_DATASET.start()
eval_one_epoch(sess, ops)
VALID_DATASET.shutdown()
else:
TRAIN_DATASET.start()
for epoch in range(MAX_EPOCH):
log_string('**** EPOCH %03d ****' % (epoch))
sys.stdout.flush()
# eval_one_epoch(sess, ops, test_writer)
train_one_epoch(sess, ops, train_writer, saver)
# epoch_loss = eval_one_epoch(sess, ops, test_writer)
# if epoch_loss < best_loss:
# best_loss = epoch_loss
# save_path = saver.save(sess, os.path.join(LOG_DIR, "best_model_epoch_%03d.ckpt"%(epoch)))
# log_string("Model saved in file: %s" % save_path)
# # Save the variables to disk.
# if epoch % 1 == 0:
# save_path = saver.save(sess, os.path.join(LOG_DIR, "model.ckpt"))
# log_string("Model saved in file: %s" % save_path)
TRAIN_DATASET.shutdown()
def pc_normalize(pc, centroid=None):
""" pc: NxC, return NxC """
l = pc.shape[0]
if centroid is None:
centroid = np.mean(pc, axis=0)
pc = pc - centroid
# m = np.max(pc, axis=0)
m = np.max(np.sqrt(np.sum(pc ** 2, axis=1)))
pc = pc / m
return pc
def train_one_epoch(sess, ops, train_writer, saver):
""" ops: dict mapping from string to tf ops """
is_training = True
# Shuffle train samples
num_batches = int(len(TRAIN_DATASET) / BATCH_SIZE)
print('num_batches', num_batches)
log_string(str(datetime.now()))
loss_all = 0.
losses = {}
for lossname in ops['end_points']['losses'].keys():
losses[lossname] = 0.
tic = time.time()
for batch_idx in range(num_batches):
start_idx = batch_idx * BATCH_SIZE
batch_data = TRAIN_DATASET.fetch()
feed_dict = {ops['is_training_pl']: is_training,
ops['input_pls']['sample_pc']: batch_data['sdf_pt'],
ops['input_pls']['trans_mat']: batch_data['trans_mat'],
ops['input_pls']['norm_params']: batch_data['norm_params'],
ops['input_pls']['regress_mat']: batch_data['regress_mat'],
ops['input_pls']['imgs']: batch_data['img'][:,:,:,:3],
ops['input_pls']['shifts']: batch_data['shifts']}
if FLAGS.rotation:
feed_dict[ops['input_pls']['sample_pc_rot']] = batch_data['sdf_pt_rot']
else:
feed_dict[ops['input_pls']['sample_pc_rot']] = batch_data['sdf_pt']
output_list = [ops['train_op'], ops['merged'], ops['step'], ops['loss'],
ops['end_points']['sample_img_points'], ops['end_points']['pred_sample_img_points'],
ops['end_points']['ref_img'], ops['end_points']['rot_homopc'], ops['end_points']['pred_rot_homopc']]
loss_list = []
for il, lossname in enumerate(losses.keys()):
loss_list += [ops['end_points']['losses'][lossname]]
outputs = sess.run(output_list + loss_list, feed_dict=feed_dict)
_, summary, step, loss_val, \
sample_img_points_val, pred_sample_img_points_val, ref_img_val, rot_homopc_val, pred_rot_homopc_val = outputs[:-len(losses)]
train_writer.add_summary(summary, step)
for il, lossname in enumerate(losses.keys()):
losses[lossname] += outputs[len(output_list)+il]
loss_all += losses['overall_loss']
save_freq = 1000
if (batch_idx + 1) % save_freq == 0:
save_path = saver.save(sess, os.path.join(LOG_DIR, "latest.ckpt"))
log_string("Model saved in file: %s" % save_path)
verbose_freq = FLAGS.verbose_freq
if (batch_idx) % verbose_freq == 0:
bid = 0
np.savetxt(os.path.join(VALID_RESULT_PATH, '%d_rot_homopc.xyz' % batch_idx), rot_homopc_val[bid,:,:])
np.savetxt(os.path.join(VALID_RESULT_PATH, '%d_pred_rot_homopc.xyz' % batch_idx), pred_rot_homopc_val[bid,:,:])
saveimg = (batch_data['img'][bid,:,:,:] * 255).astype(np.uint8)
samplept_img = sample_img_points_val[bid,...]
choice = np.random.randint(samplept_img.shape[0], size=10)
samplept_img = samplept_img[choice, ...]
pred_sample_img = pred_sample_img_points_val[bid, ...]
pred_sample_img = pred_sample_img[choice, ...]
for j in range(samplept_img.shape[0]):
x = int(samplept_img[j, 0])
y = int(samplept_img[j, 1])
cv2.circle(saveimg, (x, y), 3, (0, 255, 0, 255), -1)
for j in range(pred_sample_img.shape[0]):
x = int(pred_sample_img[j, 0])
y = int(pred_sample_img[j, 1])
cv2.circle(saveimg, (x, y), 3, (0, 0, 255, 255), -1)
cv2.imwrite(os.path.join(VALID_RESULT_PATH, '%s_%s_%s_comp.png' %
(
batch_data['cat_id'][bid], batch_data['obj_nm'][bid], batch_data['view_id'][bid])),
saveimg)
outstr = ' -- %03d / %03d -- ' % (batch_idx+1, num_batches)
for lossname in losses.keys():
outstr += '%s: %f, ' % (lossname, losses[lossname] / verbose_freq)
losses[lossname] = 0
outstr += 'time: %.02f, ' % (time.time() - tic)
tic = time.time()
log_string(outstr)
def eval_one_epoch(sess, ops):
""" ops: dict mapping from string to tf ops """
is_training = False
# Shuffle train samples
num_batches = int(len(VALID_DATASET)/BATCH_SIZE)
print('num_batches', num_batches)
print('len(VALID_DATASET)', len(VALID_DATASET))
pc3d_dist_lst = []
pc2d_dist_lst = []
losses = {}
for lossname in ops['end_points']['losses'].keys():
losses[lossname] = 0.
tic = time.time()
for batch_idx in range(num_batches):
batch_data = VALID_DATASET.fetch()
feed_dict = {ops['is_training_pl']: is_training,
ops['input_pls']['sample_pc']: batch_data['sdf_pt'],
ops['input_pls']['trans_mat']: batch_data['trans_mat'],
ops['input_pls']['norm_params']: batch_data['norm_params'],
ops['input_pls']['regress_mat']: batch_data['regress_mat'],
ops['input_pls']['imgs']: batch_data['img'][:,:,:,:3],
ops['input_pls']['shifts']: batch_data['shifts']}
if FLAGS.rotation:
feed_dict[ops['input_pls']['sample_pc_rot']] = batch_data['sdf_pt_rot']
else:
feed_dict[ops['input_pls']['sample_pc_rot']] = batch_data['sdf_pt']
output_list = [ops['loss'],
ops['end_points']['pred_trans_mat'],
ops['end_points']['pred_sample_img_points'],
ops['end_points']['sample_img_points'],
ops['end_points']['ref_img'],
ops['end_points']['rot_homopc'], ops['end_points']['pred_rot_homopc'],
ops['end_points']['results']['rot2d_dist_all'],
ops['end_points']['results']['rot3d_dist_all']]
loss_list = []
for il, lossname in enumerate(losses.keys()):
loss_list += [ops['end_points']['losses'][lossname]]
outputs = sess.run(output_list + loss_list, feed_dict=feed_dict)
loss_val, pred_trans_mat_val, pred_sample_img_points_val, sample_img_points_val, ref_img_val,\
rot_homopc_val, pred_rot_homopc_val, rot2d_dist_all_val, rot3d_dist_all_val = outputs[:-len(losses)]
for il, lossname in enumerate(losses.keys()):
if lossname == "rot2d_dist":
pc2d_dist_lst.append(outputs[len(output_list)+il])
elif lossname == "rot3d_dist":
pc3d_dist_lst.append(outputs[len(output_list)+il])
losses[lossname] += outputs[len(output_list)+il]
verbose_freq = FLAGS.verbose_freq
if (batch_idx) % verbose_freq == 0:
log_f_name = os.path.join(TEST_RESULT_PATH, "err_log.txt")
bids = range(BATCH_SIZE)
for bid in bids:
np.savetxt(os.path.join(TEST_RESULT_PATH, '%s_%s_%s_gt.xyz' %
(batch_data['cat_id'][bid], batch_data['obj_nm'][bid], batch_data['view_id'][bid])), rot_homopc_val[bid, :, :])
np.savetxt(os.path.join(TEST_RESULT_PATH, '%s_%s_%s_pred.xyz' %
(batch_data['cat_id'][bid], batch_data['obj_nm'][bid], batch_data['view_id'][bid])),
pred_rot_homopc_val[bid, :, :])
with open(log_f_name, "a") as logf:
logf.write("rot3d_dist: {}, rot2d_dist: {}, filename: {}_{}_{}_comp.png \n"
.format(rot3d_dist_all_val[bid], rot2d_dist_all_val[bid],
batch_data['cat_id'][bid], batch_data['obj_nm'][bid], batch_data['view_id'][bid]))
saveimg = (batch_data['img'][bid, :, :, :] * 255).astype(np.uint8)
# pred_saveimg = saveimg.copy()
samplept_img = sample_img_points_val[bid, ...]
choice = np.random.randint(samplept_img.shape[0], size=10)
samplept_img = samplept_img[choice, ...]
pred_sample_img = pred_sample_img_points_val[bid, ...][choice, ...]
for j in range(samplept_img.shape[0]):
x = int(samplept_img[j, 0])
y = int(samplept_img[j, 1])
cv2.circle(saveimg, (x, y), 3, (0, 255, 0, 255), -1)
for j in range(pred_sample_img.shape[0]):
x = int(pred_sample_img[j, 0])
y = int(pred_sample_img[j, 1])
cv2.circle(saveimg, (x, y), 3, (0, 0, 255, 255), -1)
cv2.imwrite(os.path.join(TEST_RESULT_PATH, '%s_%s_%s_comp.png' %
(batch_data['cat_id'][bid], batch_data['obj_nm'][bid], batch_data['view_id'][bid])), saveimg)
outstr = ' -- %03d / %03d -- ' % (batch_idx + 1, num_batches)
for lossname in losses.keys():
outstr += '%s: %f, ' % (lossname, losses[lossname] / verbose_freq)
losses[lossname] = 0
outstr += 'time: %.02f, ' % (time.time() - tic)
tic = time.time()
log_string(outstr)
if FLAGS.create:
create_img_h5(batch_data, pred_trans_mat_val)
pc2d_dist_lst = np.asarray(pc2d_dist_lst)
pc3d_dist_lst = np.asarray(pc3d_dist_lst)
print("avg 2d dist {}, max 2d dist {}, min 2d dist {}".
format(np.mean(pc2d_dist_lst), np.max(pc2d_dist_lst), np.min(pc2d_dist_lst)))
print("avg 3d dist {}, max 3d dist {}, min 3d dist {}".
format(np.mean(pc3d_dist_lst), np.max(pc3d_dist_lst), np.min(pc3d_dist_lst)))
return 1
def create_img_h5(batch_data, transmat):
# batch_data['pc'] = batch_pc
# batch_data['sdf_pt'] = batch_sdf_pt
# batch_data['sdf_pt_rot'] = batch_sdf_pt_rot
# batch_data['sdf_val'] = batch_sdf_val
# batch_data['norm_params'] = batch_norm_params
# batch_data['sdf_params'] = batch_sdf_params
# batch_data['img'] = batch_img
# # batch_data['img_mat'] = batch_img_mat
# # batch_data['img_pos'] = batch_img_pos
# batch_data['trans_mat'] = batch_trans_mat
# batch_data['cat_id'] = batch_cat_id
# batch_data['obj_nm'] = batch_obj_nm
# batch_data['view_id'] = batch_view_id
for i in range(BATCH_SIZE):
src_img_h5 = os.path.join(info['rendered_dir'], batch_data["cat_id"][i],
batch_data["obj_nm"][i], '{0:02d}'.format(batch_data['view_id'][i])+".h5")
print("src:", src_img_h5)
tar_img_dir = os.path.join(FLAGS.img_h5_dir, batch_data["cat_id"][i],
batch_data["obj_nm"][i])
os.makedirs(tar_img_dir,exist_ok=True)
tar_img_h5 = os.path.join(tar_img_dir,'{0:02d}'.format(batch_data['view_id'][i]) + ".h5")
print("tar:", tar_img_h5)
with h5py.File(src_img_h5, 'r') as h5_f:
obj_rot_mat = h5_f["obj_rot_mat"][:].astype(np.float32)
regress_mat = h5_f["regress_mat"][:].astype(np.float32)
img_arr = h5_f["img_arr"][:].astype(np.float32)
K = h5_f["K"][:].astype(np.float32)
RT = h5_f["RT"][:].astype(np.float32)
trans_mat_right = transmat[i,...]
print("transmat[i,...].shape", transmat[i,...].shape)
with h5py.File(tar_img_h5, 'w') as f1:
f1.create_dataset('img_arr', data=img_arr, compression='gzip',
dtype='uint8', compression_opts=4)
f1.create_dataset('trans_mat', data=trans_mat_right, compression='gzip',
dtype='float32', compression_opts=4)
f1.create_dataset('K', data=K, compression='gzip',
dtype='float32', compression_opts=4)
f1.create_dataset('RT', data=RT, compression='gzip',
dtype='float32', compression_opts=4)
f1.create_dataset('obj_rot_mat', data=obj_rot_mat, compression='gzip',
dtype='float32', compression_opts=4)
f1.create_dataset('regress_mat', data=regress_mat, compression='gzip',
dtype='float32', compression_opts=4)
print("write:", tar_img_h5)
def check_all_h5():
# ()
for info in TEST_LISTINFO:
cat, obj, view = info
src = os.path.join("/ssd1/datasets/ShapeNet/ShapeNetRenderingh5_v1",
cat, obj, "%02d.h5"%view)
print(src)
with h5py.File(src, 'r') as h5_f:
trans_mat = h5_f["trans_mat"][:].astype(np.float32)
if __name__ == "__main__":
try:
log_string('pid: %s'%(str(os.getpid())))
train()
LOG_FOUT.close()
except KeyboardInterrupt:
TRAIN_DATASET.shutdown()
# check_all_h5()
# nohup python -u cam_est/train_sdf_cam.py --test --restore_model /home/xharlie/dev/ProgressivePointSetGeneration/shapenet/sdf/cam/checkpoint/cam_mixloss_all_2.93 --log_dir /home/xharlie/dev/ProgressivePointSetGeneration/shapenet/sdf/cam/checkpoint/cam_mixloss_all_2.93 --gpu 0 --loss_mode 3DM --verbose_freq 1 &> log/test_cam_mixloss_all_2.93.log &
# nohup python -u cam_est/train_sdf_cam.py --test --batch_size 1 --restore_model /home/xharlie/dev/ProgressivePointSetGeneration/shapenet/sdf/cam/checkpoint/cam_mixloss_all_2.93 --log_dir /home/xharlie/dev/ProgressivePointSetGeneration/shapenet/sdf/cam/checkpoint/cam_mixloss_all_2.93 --gpu 0 --loss_mode 3DM --verbose_freq 1 &> log/test_cam_mixloss_3sample.log &
#
# nohup python -u cam_est/train_sdf_cam.py --restore_model checkpoint/cam_3D_shift_0.5 --log_dir checkpoint/cam_3D_shift_0.5 --gpu 0 --loss_mode 3D --learning_rate 1e-4 --shift --shift_weight 0.5 &> log/cam_3D_shift0.5_all.log &
#
# nohup python -u cam_est/train_sdf_cam.py --restore_model checkpoint/cam_3D_shift_0.5 --log_dir checkpoint/cam_3D_shift_1 --gpu 1 --loss_mode 3D --learning_rate 1e-4 --shift --shift_weight 1 &> log/cam_3D_shift1_all.log &
#
# nohup python -u cam_est/train_sdf_cam.py --restore_model checkpoint/cam_3D_shift_0.5 --log_dir checkpoint/cam_3D_shift_2 --gpu 2 --loss_mode 3D --learning_rate 1e-4 --shift --shift_weight 2 &> log/cam_3D_shift2_all.log &
#
# nohup python -u cam_est/train_sdf_cam.py --restore_model checkpoint/cam_3D_shift_0.5 --log_dir checkpoint/cam_3D_shift_5 --gpu 3 --loss_mode 3D --learning_rate 1e-4 --shift --shift_weight 5 &> log/cam_3D_shift5_all.log &
#
#
================================================
FILE: data/data_sdf_h5_queue.py
================================================
import numpy as np
import cv2
import random
import math
import os
import threading
import queue
import sys
import h5py
import copy
FETCH_BATCH_SIZE = 32
BATCH_SIZE = 32
HEIGHT = 192
WIDTH = 256
POINTCLOUDSIZE = 16384
OUTPUTPOINTS = 1024
REEBSIZE = 1024
def get_filelist(lst_dir, maxnverts, minsurbinvox, cats, cats_info, type):
for cat in cats:
cat_id = cats_info[cat]
inputlistfile = os.path.join(lst_dir, cat_id + type + ".lst")
with open(inputlistfile, 'r') as f:
lines = f.read().splitlines()
file_lst = [[cat_id, line.strip()] for line in lines]
return file_lst
class Pt_sdf_img(threading.Thread):
def __init__(self, FLAGS, listinfo=None, info=None, qsize=64, cats_limit=None, shuffle=True):
super(Pt_sdf_img, self).__init__()
self.queue = queue.Queue(qsize)
self.stopped = False
self.bno = 0
self.listinfo = listinfo
self.num_points = FLAGS.num_points
self.gen_num_pt = FLAGS.num_sample_points
self.batch_size = FLAGS.batch_size
self.img_dir = info['rendered_dir']
self.sdf_dir = info['sdf_dir']
self.cache = {} # from index to (point_set, cls, seg) tuple
self.cache_size = 60000
self.data_num = len(self.listinfo)
self.FLAGS = FLAGS
self.shuffle = shuffle
self.num_batches = int(self.data_num / self.FLAGS.batch_size)
self.cats_limit, self.epoch_amount = self.set_cat_limit(cats_limit)
self.data_order = list(range(len(listinfo)))
self.order = self.data_order
# def get_img_dir_old(self, cat_id, obj):
# img_dir = os.path.join(self.img_dir, cat_id, obj, "rendering")
#
# with open(img_dir + "/renderings.txt", 'r') as f:
# lines = f.read().splitlines()
# file_lst = [line.strip() for line in lines]
# return img_dir, file_lst
def set_cat_limit(self, cats_limit):
epoch_amount = 0
for cat, amount in cats_limit.items():
cats_limit[cat] = min(self.FLAGS.cat_limit, amount)
epoch_amount += cats_limit[cat]
print("epoch_amount ", epoch_amount)
print("cats_limit ", cats_limit)
return cats_limit, epoch_amount
def get_img_dir(self, cat_id, obj):
img_dir = os.path.join(self.img_dir, cat_id, obj)
return img_dir, None
def get_sdf_h5_filenm(self, cat_id, obj):
return os.path.join(self.sdf_dir, cat_id, obj, "ori_sample.h5")
def pc_normalize(self, pc, centroid=None):
""" pc: NxC, return NxC """
l = pc.shape[0]
if centroid is None:
centroid = np.mean(pc, axis=0)
pc = pc - centroid
# m = np.max(pc, axis=0)
m = np.max(np.sqrt(np.sum(pc ** 2, axis=1)))
pc = pc / m
return pc, centroid, m
def __len__(self):
return self.epoch_amount
def memory(self):
"""
Get node total memory and memory usage
"""
with open('/proc/meminfo', 'r') as mem:
ret = {}
tmp = 0
for i in mem:
sline = i.split()
if str(sline[0]) == 'MemTotal:':
ret['total'] = int(sline[1])
elif str(sline[0]) in ('MemFree:', 'Buffers:', 'Cached:'):
tmp += int(sline[1])
ret['free'] = tmp
ret['used'] = int(ret['total']) - int(ret['free'])
return ret
def getitem(self, index):
cat_id, obj, num = self.listinfo[index]
sdf_file = self.get_sdf_h5_filenm(cat_id, obj)
ori_pt, ori_sdf_val, sample_pt, sample_sdf_val, norm_params, sdf_params\
= self.get_sdf_h5(sdf_file, cat_id, obj)
img_dir, img_file_lst = self.get_img_dir(cat_id, obj)
return ori_pt, ori_sdf_val, sample_pt, sample_sdf_val, norm_params,\
sdf_params, img_dir, img_file_lst, cat_id, obj, num
def get_sdf_h5(self, sdf_h5_file, cat_id, obj):
h5_f = h5py.File(sdf_h5_file, 'r')
try:
if ('pc_sdf_original' in h5_f.keys()
and 'pc_sdf_sample' in h5_f.keys()
and 'norm_params' in h5_f.keys()):
ori_sdf = h5_f['pc_sdf_original'][:].astype(np.float32)
# sample_sdf = np.reshape(h5_f['pc_sdf_sample'][:],(ori_sdf.shape[0], -1 ,4)).astype(np.float32)
sample_sdf = h5_f['pc_sdf_sample'][:].astype(np.float32)
ori_pt = ori_sdf[:,:3]#, ori_sdf[:,3]
ori_sdf_val = None
if sample_sdf.shape[1] == 4:
sample_pt, sample_sdf_val = sample_sdf[:, :3], sample_sdf[:, 3]
else:
sample_pt, sample_sdf_val = None, sample_sdf[:, 0]
norm_params = h5_f['norm_params'][:]
sdf_params = h5_f['sdf_params'][:]
else:
raise Exception(cat_id, obj, "no sdf and sample")
finally:
h5_f.close()
return ori_pt, ori_sdf_val, sample_pt, sample_sdf_val, norm_params, sdf_params
def get_img_old(self, img_dir, num, file_lst):
params = np.loadtxt(img_dir + "/rendering_metadata.txt")
img_file = os.path.join(img_dir, file_lst[num])
# azimuth, elevation, in-plane rotation, distance, the field of view.
param = params[num, :].astype(np.float32)
cam_mat, cam_pos = self.camera_info(self.degree2rad(param))
img_arr = cv2.imread(img_file, cv2.IMREAD_UNCHANGED)[:,:,:3].astype(np.float32) / 255.
return img_arr, cam_mat, cam_pos
def get_img(self, img_dir, num):
img_h5 = os.path.join(img_dir, "%02d.h5"%num)
cam_mat, cam_pos, trans_mat, obj_rot_mat, regress_mat = None, None, None, None, None
with h5py.File(img_h5, 'r') as h5_f:
if self.FLAGS.img_feat_onestream or self.FLAGS.img_feat_twostream:
trans_mat = h5_f["trans_mat"][:].astype(np.float32)
obj_rot_mat = h5_f["obj_rot_mat"][:].astype(np.float32)
regress_mat = h5_f["regress_mat"][:].astype(np.float32)
else:
cam_mat, cam_pos = h5_f["cam_mat"][:].astype(np.float32), h5_f["cam_pos"][:].astype(np.float32)
if self.FLAGS.alpha:
img_arr = h5_f["img_arr"][:].astype(np.float32)
img_arr[:, :, :4] = img_arr[:,:,:4] / 255.
else:
img_raw = h5_f["img_arr"][:]
img_arr = img_raw[:, :, :3]
if self.FLAGS.augcolorfore or self.FLAGS.augcolorback:
r_aug = 60 * np.random.rand() - 30
g_aug = 60 * np.random.rand() - 30
b_aug = 60 * np.random.rand() - 30
if self.FLAGS.augcolorfore:
img_arr[img_raw[:, :, 3] != 0, 0] + r_aug
img_arr[img_raw[:, :, 3] != 0, 1] + g_aug
img_arr[img_raw[:, :, 3] != 0, 2] + b_aug
if self.FLAGS.backcolorwhite:
img_arr[img_raw[:, :, 3] == 0] = [255, 255, 255]
if self.FLAGS.augcolorback:
img_arr[img_raw[:, :, 3] == 0, 0] + r_aug
img_arr[img_raw[:, :, 3] == 0, 1] + g_aug
img_arr[img_raw[:, :, 3] == 0, 2] + b_aug
img_arr = np.clip(img_arr, 0, 255)
img_arr = img_arr.astype(np.float32) / 255.
return img_arr, cam_mat, cam_pos, trans_mat, obj_rot_mat, regress_mat
def degree2rad(self, params):
params[0] = np.deg2rad(params[0] + 180.0)
params[1] = np.deg2rad(params[1])
params[2] = np.deg2rad(params[2])
return params
def unit(self, v):
norm = np.linalg.norm(v)
if norm == 0:
return v
return v / norm
def camera_info(self, param):
az_mat = self.get_az(param[0])
el_mat = self.get_el(param[1])
inl_mat = self.get_inl(param[2])
cam_mat = np.transpose(np.matmul(np.matmul(inl_mat, el_mat), az_mat))
cam_pos = self.get_cam_pos(param)
return cam_mat, cam_pos
def get_cam_pos(self, param):
camX = 0
camY = 0
camZ = param[3]
cam_pos = np.array([camX, camY, camZ])
return -1 * cam_pos
def get_az(self, az):
cos = np.cos(az)
sin = np.sin(az)
mat = np.asarray([cos, 0.0, sin, 0.0, 1.0, 0.0, -1.0*sin, 0.0, cos], dtype=np.float32)
mat = np.reshape(mat, [3,3])
return mat
#
def get_el(self, el):
cos = np.cos(el)
sin = np.sin(el)
mat = np.asarray([1.0, 0.0, 0.0, 0.0, cos, -1.0*sin, 0.0, sin, cos], dtype=np.float32)
mat = np.reshape(mat, [3,3])
return mat
#
def get_inl(self, inl):
cos = np.cos(inl)
sin = np.sin(inl)
# zeros = np.zeros_like(inl)
# ones = np.ones_like(inl)
mat = np.asarray([cos, -1.0*sin, 0.0, sin, cos, 0.0, 0.0, 0.0, 1.0], dtype=np.float32)
mat = np.reshape(mat, [3,3])
return mat
def get_batch(self, index):
if index + self.batch_size > self.epoch_amount:
index = index + self.batch_size - self.epoch_amount
batch_pc = np.zeros((self.batch_size, self.num_points, 3)).astype(np.float32)
batch_sdf_pt = np.zeros((self.batch_size, self.gen_num_pt, 3)).astype(np.float32)
batch_sdf_pt_rot = np.zeros((self.batch_size, self.gen_num_pt, 3)).astype(np.float32)
batch_sdf_val = np.zeros((self.batch_size, self.gen_num_pt, 1)).astype(np.float32)
batch_norm_params = np.zeros((self.batch_size, 4)).astype(np.float32)
batch_sdf_params = np.zeros((self.batch_size, 6)).astype(np.float32)
if self.FLAGS.alpha:
batch_img = np.zeros((self.batch_size, self.FLAGS.img_h, self.FLAGS.img_w, 4), dtype=np.float32)
else:
batch_img = np.zeros((self.batch_size, self.FLAGS.img_h, self.FLAGS.img_w, 3), dtype=np.float32)
batch_regress_mat = np.zeros((self.batch_size, 4, 3), dtype=np.float32)
batch_trans_mat = np.zeros((self.batch_size, 4, 3), dtype=np.float32)
batch_cat_id = []
batch_obj_nm = []
batch_view_id = []
cnt = 0
for i in range(index, index + self.batch_size):
single_obj = self.getitem(self.order[i])
if single_obj == None:
raise Exception("single mesh is None!")
ori_pt, ori_sdf_val, sample_pt, sample_sdf_val, norm_params, sdf_params, img_dir, img_file_lst, cat_id, obj, num = single_obj
img, cam_mat, cam_pos, trans_mat, obj_rot_mat, regress_mat = self.get_img(img_dir, num)
if ori_pt is not None:
cf_ref_choice = np.random.randint(ori_pt.shape[0], size=self.num_points)
batch_pc[cnt, :, :] = ori_pt[cf_ref_choice, :]
if self.FLAGS.threedcnn:
batch_sdf_val[cnt, :, 0] = sample_sdf_val
else:
if self.gen_num_pt > sample_pt.shape[0]:
choice = np.random.randint(sample_pt.shape[0], size=self.gen_num_pt)
else:
choice = np.asarray(random.sample(range(sample_pt.shape[0]), self.gen_num_pt), dtype=np.int32)
batch_sdf_pt[cnt, ...] = sample_pt[choice, :]
batch_sdf_val[cnt, :, 0] = sample_sdf_val[choice]
if self.FLAGS.rot:
batch_sdf_pt_rot[cnt, ...] = np.dot(sample_pt[choice, :], obj_rot_mat)
else:
batch_sdf_pt_rot[cnt, ...] = sample_pt[choice, :]
batch_norm_params[cnt, ...] = norm_params
batch_sdf_params[cnt, ...] = sdf_params
else:
raise Exception("no verts or binvox")
# img, cam_mat, cam_pos = self.get_img_old(img_dir, num, img_file_lst)
batch_img[cnt, ...] = img.astype(np.float32)
batch_regress_mat[cnt, ...] = regress_mat
batch_trans_mat[cnt, ...] = trans_mat
batch_cat_id.append(cat_id)
batch_obj_nm.append(obj)
batch_view_id.append(num)
cnt += 1
batch_data = {}
batch_data['pc'] = batch_pc
batch_data['sdf_pt'] = batch_sdf_pt
batch_data['sdf_pt_rot'] = batch_sdf_pt_rot
batch_data['sdf_val'] = batch_sdf_val
batch_data['norm_params'] = batch_norm_params
batch_data['sdf_params'] = batch_sdf_params
batch_data['img'] = batch_img
batch_data['trans_mat'] = batch_trans_mat
batch_data['cat_id'] = batch_cat_id
batch_data['obj_nm'] = batch_obj_nm
batch_data['view_id'] = batch_view_id
return batch_data
def refill_data_order(self):
temp_order = copy.deepcopy(self.data_order)
cats_quota = {key: value for key, value in self.cats_limit.items()}
np.random.shuffle(temp_order)
pointer = 0
epoch_order=[]
while len(epoch_order) < self.epoch_amount:
cat_id, _, _ = self.listinfo[temp_order[pointer]]
if cats_quota[cat_id] > 0:
epoch_order.append(temp_order[pointer])
cats_quota[cat_id]-=1
pointer+=1
return epoch_order
def work(self, epoch, index):
if index == 0 and self.shuffle:
self.order = self.refill_data_order()
print("data order reordered!")
return self.get_batch(index)
def run(self):
while (self.bno // (self.num_batches* self.batch_size)) < self.FLAGS.max_epoch and not self.stopped:
self.queue.put(self.work(self.bno // (self.num_batches* self.batch_size),
self.bno % (self.num_batches * self.batch_size)))
self.bno += self.batch_size
def fetch(self):
if self.stopped:
return None
# else:
# print("queue length", self.queue.qsize())
return self.queue.get()
def shutdown(self):
self.stopped = True
while not self.queue.empty():
self.queue.get()
if __name__ == '__main__':
sys.path.append('../preprocessing/')
import create_file_lst as create
data = Pt_sdf_img(res=256, expr=1.5,
listinfo=[["03001627", "ff3581996365bdddc3bd24f986301745"],
["03001627", "ff3581996365bdddc3bd24f986301745"]],
info=create.get_all_info(), maxnverts=6000, maxntris=50000,
minsurbinvox=4096, num_points=2048, batch_size=2, normalize=False, norm_color=True)
batch1 = data.get_batch(0)
print(batch1.keys())
print(batch1["verts"].shape)
print(batch1["nverts"])
print(batch1["tris"].shape)
print(batch1["ntris"])
print(batch1["surfacebinvoxpc"].shape)
print(batch1["sdf"].shape)
print(batch1["sdf_params"])
print(batch1["img"].shape, batch1["img"][0, 64, 64, :])
print(batch1["img_cam"])
# (2048, 3)
cloud1 = batch1["surfacebinvoxpc"][0, ...]
trans1 = batch1["img_cam"][0, ...]
az1 = float(trans1[0] + 180) * math.pi / 180.0
el1 = float(trans1[1]) * math.pi / 180.0
in1 = float(trans1[2]) * math.pi / 180.0
transmatrix_az1 = [[math.cos(az1), 0, math.sin(az1)],
[0, 1, 0],
[-math.sin(az1), 0, math.cos(az1)]]
transmatrix_az1 = np.asarray(transmatrix_az1).astype(np.float32)
transmatrix_el1 = [[1, 0, 0],
[0, math.cos(el1), -math.sin(el1)],
[0, math.sin(el1), math.cos(el1)]]
transmatrix_el1 = np.asarray(transmatrix_el1).astype(np.float32)
transmatrix_in1 = [[math.cos(in1), -math.sin(in1), 0],
[math.sin(in1), math.cos(in1), 0],
[0, 0, 1]]
transmatrix_in1 = np.asarray(transmatrix_in1).astype(np.float32)
trans = np.matmul(np.matmul(transmatrix_in1, transmatrix_el1), transmatrix_az1)
translate1 = np.tile(np.expand_dims(np.asarray([-trans1[2], 0, 0]).astype(np.float32), axis=0), (2048, 1))
points = np.matmul(cloud1, trans.T)
np.savetxt("ff_rotate.xyz", points)
np.savetxt("ff.xyz", cloud1)
================================================
FILE: data/data_sdf_h5_queue_mask_imgh5_cammat.py
================================================
import numpy as np
import math
import os
import threading
import queue
import sys
import h5py
import copy
import random
import cv2
FETCH_BATCH_SIZE = 32
BATCH_SIZE = 32
HEIGHT = 192
WIDTH = 256
POINTCLOUDSIZE = 16384
OUTPUTPOINTS = 1024
REEBSIZE = 1024
def get_filelist(lst_dir, maxnverts, minsurbinvox, cats, cats_info, type):
for cat in cats:
cat_id = cats_info[cat]
inputlistfile = os.path.join(lst_dir, cat_id + type + ".lst")
with open(inputlistfile, 'r') as f:
lines = f.read().splitlines()
file_lst = [[cat_id, line.strip()] for line in lines]
return file_lst
class Pt_sdf_img(threading.Thread):
def __init__(self, FLAGS, listinfo=None, info=None, qsize=64, cats_limit=None):
super(Pt_sdf_img, self).__init__()
self.queue = queue.Queue(qsize)
self.stopped = False
self.bno = 0
self.listinfo = listinfo
self.num_points = FLAGS.num_points
self.gen_num_pt = FLAGS.num_sample_points
self.batch_size = FLAGS.batch_size
self.img_dir = info['rendered_dir']
self.img_dir_v2 = info['rendered_dir_v2']
self.sdf_dir = info['sdf_dir']
self.order = list(range(len(listinfo)))
self.cache = {} # from index to (point_set, cls, seg) tuple
self.cache_size = 60000
self.data_num = len(self.listinfo)
self.FLAGS = FLAGS
self.num_batches = int(self.data_num / self.FLAGS.batch_size)
self.fixaxismat = np.array([[-1., 0., 0.],[0., 0., 1],[ 0., -1., 0.]], dtype=np.float32)
self.CAM_ROT = np.array([[1.910685676922942e-15, 4.371138828673793e-08, 1.0],
[1.0, -4.371138828673793e-08, -0.0],
[4.371138828673793e-08, 1.0, -4.371138828673793e-08]], dtype=np.float32)
self.rot90z = np.array([[0, 1, 0],
[-1, 0,0],
[ 0,0,1]], dtype=np.float32)
self.rot90y = np.array([[0, 0, -1],
[ 0,1, 0],
[ 1,0,0]], dtype=np.float32)
self.tmp = np.array([0,0,0], dtype = np.float32)
self.count = 0
self.num_batches = int(self.data_num / self.FLAGS.batch_size)
self.cats_limit, self.epoch_amount = self.set_cat_limit(cats_limit)
self.data_order = list(range(len(listinfo)))
def set_cat_limit(self, cats_limit):
epoch_amount = 0
for cat, amount in cats_limit.items():
cats_limit[cat] = min(self.FLAGS.cat_limit, amount)
epoch_amount += cats_limit[cat]
print("epoch_amount ", epoch_amount)
print("cats_limit ", cats_limit)
return cats_limit, epoch_amount
def get_img_dir(self, cat_id, obj):
img_dir = os.path.join(self.img_dir, cat_id, obj)
img_dir_v2 = os.path.join(self.img_dir_v2, cat_id, obj, 'rendering')
return img_dir, img_dir_v2
# def get_h5_filenm(self, cat_id, obj):
# return os.path.join(self.mesh_dir, cat_id, obj + ".h5")
def get_sdf_h5_filenm(self, cat_id, obj):
return os.path.join(self.sdf_dir, cat_id, obj, "ori_sample.h5")
def pc_normalize(self, pc, centroid=None):
""" pc: NxC, return NxC """
l = pc.shape[0]
if centroid is None:
centroid = np.mean(pc, axis=0)
pc = pc - centroid
# m = np.max(pc, axis=0)
m = np.max(np.sqrt(np.sum(pc ** 2, axis=1)))
pc = pc / m
return pc, centroid, m
def __len__(self):
return self.epoch_amount
def memory(self):
"""
Get node total memory and memory usage
"""
with open('/proc/meminfo', 'r') as mem:
ret = {}
tmp = 0
for i in mem:
sline = i.split()
if str(sline[0]) == 'MemTotal:':
ret['total'] = int(sline[1])
elif str(sline[0]) in ('MemFree:', 'Buffers:', 'Cached:'):
tmp += int(sline[1])
ret['free'] = tmp
ret['used'] = int(ret['total']) - int(ret['free'])
return ret
def getitem(self, index):
cat_id, obj, num = self.listinfo[index]
sdf_file = self.get_sdf_h5_filenm(cat_id, obj)
ori_pt, ori_sdf_val, sample_pt, sample_sdf_val, norm_params, sdf_params\
= self.get_sdf_h5(sdf_file, cat_id, obj)
img_dir, img_dir_v2 = self.get_img_dir(cat_id, obj)
return ori_pt, ori_sdf_val, sample_pt, sample_sdf_val, norm_params,\
sdf_params, img_dir, img_dir_v2, cat_id, obj, num
def get_sdf_h5(self, sdf_h5_file, cat_id, obj):
h5_f = h5py.File(sdf_h5_file, 'r')
try:
if ('pc_sdf_original' in h5_f.keys()
and 'pc_sdf_sample' in h5_f.keys()
and 'norm_params' in h5_f.keys()):
ori_sdf = h5_f['pc_sdf_original'][:].astype(np.float32)
# sample_sdf = np.reshape(h5_f['pc_sdf_sample'][:],(ori_sdf.shape[0], -1 ,4)).astype(np.float32)
sample_sdf = h5_f['pc_sdf_sample'][:].astype(np.float32)
ori_pt = ori_sdf[:,:3]#, ori_sdf[:,3]
ori_sdf_val = None
sample_pt, sample_sdf_val = sample_sdf[:,:3], sample_sdf[:,3]
norm_params = h5_f['norm_params'][:]
sdf_params = h5_f['sdf_params'][:]
else:
raise Exception(cat_id, obj, "no sdf and sample")
finally:
h5_f.close()
return ori_pt, ori_sdf_val, sample_pt, sample_sdf_val, norm_params, sdf_params
def get_img_cam(self, img_dir, num):
params = np.loadtxt(img_dir + "/rendering_metadata.txt")
# img_file = os.path.join(img_dir, file_lst[num])
# azimuth, elevation, in-plane rotation, distance, the field of view.
param = params[num, :].astype(np.float32)
cam_mat, cam_pos = self.camera_info(self.degree2rad(param))
# img_arr = cv2.imread(img_file, cv2.IMREAD_UNCHANGED)[:,:,:3].astype(np.float32) / 255.
return cam_mat, cam_pos
def get_img(self, img_dir, num):
img_h5 = os.path.join(img_dir, "%02d.h5"%num)
cam_mat, cam_pos, trans_mat =None, None, None
with h5py.File(img_h5, 'r') as h5_f:
if self.FLAGS.img_feat:
trans_mat = h5_f["trans_mat"][:].astype(np.float32)
regress_mat = h5_f["regress_mat"][:].astype(np.float32)
K = h5_f["K"][:].astype(np.float32)
# self.tmp += RT[3,:]
# self.count += 1
# print (self.tmp / self.count)
# np.linalg.multi_dot([RT, rot_mat, norm_mat])
# f1.create_dataset('K', data=K, compression='gzip',
# dtype='float32', compression_opts=4)
# f1.create_dataset('RT', data=RT, compression='gzip',
# dtype='float32', compression_opts=4)
else:
cam_mat, cam_pos = h5_f["cam_mat"][:].astype(np.float32), h5_f["cam_pos"][:].astype(np.float32)
img_arr = h5_f["img_arr"][:][:,:,:4].astype(np.float32) / 255.
return img_arr, cam_mat, cam_pos, trans_mat, regress_mat
def degree2rad(self, params):
params[0] = np.deg2rad(params[0] + 180.0)
params[1] = np.deg2rad(params[1])
params[2] = np.deg2rad(params[2])
return params
def unit(self, v):
norm = np.linalg.norm(v)
if norm == 0:
return v
return v / norm
def camera_info(self, param):
az_mat = self.get_az(param[0])
el_mat = self.get_el(param[1])
inl_mat = self.get_inl(param[2])
cam_mat = np.transpose(np.matmul(np.matmul(inl_mat, el_mat), az_mat))
cam_pos = self.get_cam_pos(param)
return cam_mat, cam_pos
def get_cam_pos(self, param):
camX = 0
camY = 0
camZ = param[3]
cam_pos = np.array([camX, camY, camZ])
return -1 * cam_pos
def get_az(self, az):
cos = np.cos(az)
sin = np.sin(az)
mat = np.asarray([cos, 0.0, sin, 0.0, 1.0, 0.0, -1.0*sin, 0.0, cos], dtype=np.float32)
mat = np.reshape(mat, [3,3])
return mat
#
def get_el(self, el):
cos = np.cos(el)
sin = np.sin(el)
mat = np.asarray([1.0, 0.0, 0.0, 0.0, cos, -1.0*sin, 0.0, sin, cos], dtype=np.float32)
mat = np.reshape(mat, [3,3])
return mat
#
def get_inl(self, inl):
cos = np.cos(inl)
sin = np.sin(inl)
# zeros = np.zeros_like(inl)
# ones = np.ones_like(inl)
mat = np.asarray([cos, -1.0*sin, 0.0, sin, cos, 0.0, 0.0, 0.0, 1.0], dtype=np.float32)
mat = np.reshape(mat, [3,3])
return mat
def get_batch(self, index, istrain = True):
if index + self.batch_size > self.epoch_amount:
index = index + self.batch_size - self.epoch_amount
batch_pc = np.zeros((self.batch_size, self.num_points, 3)).astype(np.float32)
batch_sdf_pt = np.zeros((self.batch_size, self.gen_num_pt, 3)).astype(np.float32)
batch_sdf_pt_rot = np.zeros((self.batch_size, self.gen_num_pt, 3)).astype(np.float32)
batch_sdf_val = np.zeros((self.batch_size, self.gen_num_pt, 1)).astype(np.float32)
batch_norm_params = np.zeros((self.batch_size, 4)).astype(np.float32)
batch_sdf_params = np.zeros((self.batch_size, 6)).astype(np.float32)
batch_img = np.zeros((self.batch_size, self.FLAGS.img_h, self.FLAGS.img_w, 4), dtype=np.float32)
batch_img_mat = np.zeros((self.batch_size, 3, 3), dtype=np.float32)
batch_img_pos = np.zeros((self.batch_size, 3), dtype=np.float32)
batch_trans_mat = np.zeros((self.batch_size, 4, 3), dtype=np.float32)
batch_regress_mat = np.zeros((self.batch_size, 4, 3), dtype=np.float32)
batch_shifts = np.zeros((self.batch_size, 2), dtype=np.float32)
batch_cat_id = []
batch_obj_nm = []
batch_view_id = []
cnt = 0
for i in range(index, index + self.batch_size):
single_obj = self.getitem(self.order[i])
if single_obj == None:
raise Exception("single mesh is None!")
ori_pt, ori_sdf_val, sample_pt, sample_sdf_val, norm_params, sdf_params, img_dir, img_dir_v2, cat_id, obj, num = single_obj
img, cam_mat, cam_pos, trans_mat, regress_mat = self.get_img(img_dir, num)
if self.FLAGS.shift:
alpha_pixels = np.argwhere(img[:, :, 3] > 0.00)
y_shift_top = min(alpha_pixels[:, 0])
y_shift_down = self.FLAGS.img_h - max(alpha_pixels[:, 0])
x_shift_left = min(alpha_pixels[:,1])
x_shift_right = self.FLAGS.img_w - max(alpha_pixels[:,1])
y_shift = random.randrange(-y_shift_top * 0.7, y_shift_down * 0.7, 1)
x_shift = random.randrange(-x_shift_left * 0.7, x_shift_right * 0.7, 1)
# print(y_shift_top,y_shift_down,y_shift)
# print(x_shift_left,x_shift_right,x_shift)
img_new = np.zeros((self.FLAGS.img_h, self.FLAGS.img_w, 4), dtype=np.float32)
new_alpha_pixels = np.stack((alpha_pixels[:,0] + y_shift, alpha_pixels[:,1] + x_shift), axis=1)
img_new[new_alpha_pixels[:, 0], new_alpha_pixels[:, 1], :] = img[alpha_pixels[:, 0], alpha_pixels[:, 1], :]
# cv2.imwrite(os.path.join("/home/xharlie/dev/DISN_codebase/pnt_vis", 'org_%s_%d.png' % (img_dir.split("/")[-1],num)), np.asarray(img*255).astype(np.uint8))
# cv2.imwrite(os.path.join("/home/xharlie/dev/DISN_codebase/pnt_vis", 'shifted_%s_%d.png' % (img_dir.split("/")[-1],num)), np.asarray(img_new*255).astype(np.uint8))
# print(os.path.join("/home/xharlie/dev/DISN_codebase/pnt_vis", 'org_%s_%d.png' % (img_dir.split("/")[-1],num)))
# print(os.path.join("/home/xharlie/dev/DISN_codebase/pnt_vis", 'shifted_%s_%d.png' % (img_dir.split("/")[-1],num)))
if ori_pt is not None:
cf_ref_choice = np.random.randint(ori_pt.shape[0], size=self.num_points)
batch_pc[cnt, :, :] = ori_pt[cf_ref_choice, :]
# if self.FLAGS.threedcnn:
# batch_sdf_pt[cnt, ...] = sample_pt
# batch_sdf_val[cnt, :, 0] = sample_sdf_val
# else:
choice = np.random.randint(sample_pt.shape[0], size=self.gen_num_pt)
if self.FLAGS.rotation:
batch_sdf_pt[cnt, ...] = sample_pt[choice, :]
# R = np.dot(self.CAM_ROT, RT[:3,:3].T).T
pc_rot = batch_sdf_pt[cnt, ...].copy()
# pc_rot[:,0] = -pc_rot[:,2]
# pc_rot[:,1] = -pc_rot[:,0]
# pc_rot[:,2] = pc_rot[:,1]
R, _ = self.get_img_cam(img_dir_v2, num)
R = np.dot(self.rot90y, R)
# R = self.rot90y
batch_sdf_pt_rot[cnt, ...] = np.dot(batch_sdf_pt[cnt, ...], R)
else:
batch_sdf_pt[cnt, ...] = sample_pt[choice, :]
batch_sdf_val[cnt, :, 0] = sample_sdf_val[choice]
batch_norm_params[cnt, ...] = norm_params
batch_sdf_params[cnt, ...] = sdf_params
else:
raise Exception("no verts or binvox")
# img, cam_mat, cam_pos = self.get_img_old(img_dir, num, img_file_lst)
if self.FLAGS.shift:
batch_img[cnt, ...] = img_new.astype(np.float32)
batch_shifts[cnt, ...] = np.asarray([x_shift, y_shift], dtype=np.float32) * 2 / (self.FLAGS.img_h)
else:
batch_img[cnt, ...] = img.astype(np.float32)
# batch_img[cnt, ...] = self.normalize_color(img.astype(np.float32))
# batch_img_mat[cnt, ...] = cam_mat
# batch_img_pos[cnt, ...] = cam_pos
batch_trans_mat[cnt, ...] = trans_mat
batch_regress_mat[cnt, ...] = regress_mat
batch_cat_id.append(cat_id)
batch_obj_nm.append(obj)
batch_view_id.append(num)
cnt += 1
batch_data = {}
batch_data['pc'] = batch_pc
batch_data['sdf_pt'] = batch_sdf_pt
batch_data['sdf_pt_rot'] = batch_sdf_pt_rot
batch_data['sdf_val'] = batch_sdf_val
batch_data['norm_params'] = batch_norm_params
batch_data['sdf_params'] = batch_sdf_params
batch_data['img'] = batch_img
# batch_data['img_mat'] = batch_img_mat
# batch_data['img_pos'] = batch_img_pos
batch_data['trans_mat'] = batch_trans_mat
batch_data['regress_mat'] = batch_regress_mat
batch_data['cat_id'] = batch_cat_id
batch_data['obj_nm'] = batch_obj_nm
batch_data['view_id'] = batch_view_id
batch_data['shifts'] = batch_shifts
return batch_data
def refill_data_order(self):
temp_order = copy.deepcopy(self.data_order)
cats_quota = {key: value for key, value in self.cats_limit.items()}
np.random.shuffle(temp_order)
pointer = 0
epoch_order=[]
while len(epoch_order) < self.epoch_amount:
cat_id, _, _ = self.listinfo[temp_order[pointer]]
if cats_quota[cat_id] > 0:
epoch_order.append(temp_order[pointer])
cats_quota[cat_id]-=1
pointer+=1
return epoch_order
def work(self, epoch, index):
if index == 0:
self.order = self.refill_data_order()
print("data order reordered!")
return self.get_batch(index)
def run(self):
while (self.bno // (self.num_batches* self.batch_size)) < self.FLAGS.max_epoch and not self.stopped:
self.queue.put(self.work(self.bno // (self.num_batches* self.batch_size),
self.bno % (self.num_batches * self.batch_size)))
self.bno += self.batch_size
def fetch(self):
if self.stopped:
return None
# else:
# print("queue length", self.queue.qsize())
return self.queue.get()
def shutdown(self):
self.stopped = True
while not self.queue.empty():
self.queue.get()
if __name__ == '__main__':
sys.path.append('../preprocessing/')
import create_file_lst as create
data = Pt_sdf_img(res=256, expr=1.5,
listinfo=[["03001627", "ff3581996365bdddc3bd24f986301745"],
["03001627", "ff3581996365bdddc3bd24f986301745"]],
info=create.get_all_info(), maxnverts=6000, maxntris=50000,
minsurbinvox=4096, num_points=2048, batch_size=2, normalize=False, norm_color=True)
batch1 = data.get_batch(0)
print(batch1.keys())
print(batch1["verts"].shape)
print(batch1["nverts"])
print(batch1["tris"].shape)
print(batch1["ntris"])
print(batch1["surfacebinvoxpc"].shape)
print(batch1["sdf"].shape)
print(batch1["sdf_params"])
print(batch1["img"].shape, batch1["img"][0, 64, 64, :])
print(batch1["img_cam"])
# (2048, 3)
cloud1 = batch1["surfacebinvoxpc"][0, ...]
trans1 = batch1["img_cam"][0, ...]
az1 = float(trans1[0] + 180) * math.pi / 180.0
el1 = float(trans1[1]) * math.pi / 180.0
in1 = float(trans1[2]) * math.pi / 180.0
transmatrix_az1 = [[math.cos(az1), 0, math.sin(az1)],
[0, 1, 0],
[-math.sin(az1), 0, math.cos(az1)]]
transmatrix_az1 = np.asarray(transmatrix_az1).astype(np.float32)
transmatrix_el1 = [[1, 0, 0],
[0, math.cos(el1), -math.sin(el1)],
[0, math.sin(el1), math.cos(el1)]]
transmatrix_el1 = np.asarray(transmatrix_el1).astype(np.float32)
transmatrix_in1 = [[math.cos(in1), -math.sin(in1), 0],
[math.sin(in1), math.cos(in1), 0],
[0, 0, 1]]
transmatrix_in1 = np.asarray(transmatrix_in1).astype(np.float32)
trans = np.matmul(np.matmul(transmatrix_in1, transmatrix_el1), transmatrix_az1)
translate1 = np.tile(np.expand_dims(np.asarray([-trans1[2], 0, 0]).astype(np.float32), axis=0), (2048, 1))
points = np.matmul(cloud1, trans.T)
np.savetxt("ff_rotate.xyz", points)
np.savetxt("ff.xyz", cloud1)
# def get_img(img_dir, num):
# img_h5 = os.path.join(img_dir, "%02d.h5"%num)
# cam_mat, cam_pos, trans_mat =None, None, None
# with h5py.File(img_h5, 'r') as h5_f:
# trans_mat = h5_f["trans_mat"][:].astype(np.float32)
# RT = h5_f["regress_mat"][:].astype(np.float32)
# K = h5_f["K"][:].astype(np.float32)
# img_arr = h5_f["img_arr"][:][:,:,:4].astype(np.float32) / 255.
# return img_arr, cam_mat, cam_pos, trans_mat, RT
#
#
# img, cam_mat, cam_pos, trans_mat, RT = get_img("/ssd1/datasets/ShapeNet/ShapeNetRenderingh5_v1/03636649/7fa0f8d0da975ea0f323a65d99f15033", 8)
# alpha_pixels = np.argwhere(img[:, :, 3] > 0.00)
# y_shift_top = min(alpha_pixels[:, 0])
# y_shift_down = 137 - max(alpha_pixels[:, 0])
#
# x_shift_left = min(alpha_pixels[:, 1])
# x_shift_right = 137 - max(alpha_pixels[:, 1])
# y_shift = random.randrange(-y_shift_top, y_shift_down, 1)
# x_shift = random.randrange(-x_shift_left, x_shift_right, 1)
# print(y_shift_top, y_shift_down, y_shift)
# print(x_shift_left, x_shift_right, x_shift)
# img_new = np.zeros((137,137, 4), dtype=np.float32)
# new_alpha_pixels = np.stack((alpha_pixels[:, 0] + y_shift, alpha_pixels[:, 1] + x_shift), axis=1)
# print(new_alpha_pixels.shape, alpha_pixels.shape, new_alpha_pixels - alpha_pixels)
# # for i in range(new_alpha_pixels.shape[0]):
# # img_new[new_alpha_pixels[i,0],new_alpha_pixels[i,1],:] = img[alpha_pixels[i,0],alpha_pixels[i,1],:]
# img_new[new_alpha_pixels[:, 0], new_alpha_pixels[:, 1], :] = img[alpha_pixels[:, 0], alpha_pixels[:, 1], :]
# cv2.imwrite(os.path.join("/home/xharlie/dev/DISN_codebase/pnt_vis", 'org_%s_%d.png' % ("7fa0f8d0da975ea0f323a65d99f15033",8)), np.asarray(img*255).astype(np.uint8))
# cv2.imwrite(os.path.join("/home/xharlie/dev/DISN_codebase/pnt_vis", 'shifted_%s_%d.png' % ("7fa0f8d0da975ea0f323a65d99f15033",8)), np.asarray(img_new*255).astype(np.uint8))
# print(os.path.join("/home/xharlie/dev/DISN_codebase/pnt_vis", 'org_%s_%d.png' % ("7fa0f8d0da975ea0f323a65d99f15033",8)))
# print(os.path.join("/home/xharlie/dev/DISN_codebase/pnt_vis", 'shifted_%s_%d.png' % ("7fa0f8d0da975ea0f323a65d99f15033",8)))
================================================
FILE: data/filelists/02691156_test.lst
================================================
521eab9363fdc2a07209009cfb89d4bd
50da48c8e7644508fca1f1143bb6bc17
43abe330362164e99be82ec29531a70f
4ad92be763c2ded8fca1f1143bb6bc17
d06105ee2a2ae27c51008e496c6cfd2e
ddec69970cbc4d29112a90660b187a10
36d8c865f766e3e097872638b21438e3
f9e80ce23d9536623fddedb0bf24c68a
b1f08c51a098c43696d224195a988f09
4a837740b388aa45d8ff6111270336a9
a56143efe74ee89ebbf3143b1cb6076a
3c7e4628a9ea201bbf3143b1cb6076a
aa07239e9397cf189601fb40d0d298b9
4635326bc4fdc3e9297cd7e2ef7dfa80
427030abcc0f11a8947bbeb9022263b8
d08471df3e76602427743256ca3834f
b785b39d10c33b5de9f07d25f575b2d4
e0385af10bddc6a0ca8607f540cc62ba
b80bd34ab330babbc8727b27ee96a4b7
e42443669339a6c1a5a118bd15e6e34f
b4575e5e6161fd497b164268a44f7712
a6cbada42d1a30d0f5c7319b71bdce6e
53eee66291c47a91bc0909d98a1ff2b4
db0c0fc7ce05d372311e3590f044c241
b976a48c015d6ced5e9e2656aff7dd5b
489d3e4cc3d790a0ca8607f540cc62ba
d20e3ed9b3430672bbf3143b1cb6076a
eed299b690be51ffbd931fcaa69140
b092d523bdd320e4ca8607f540cc62ba
d0ee4253d406b3f05e9e2656aff7dd5b
3db61220251b3c9de719b5362fe06bbb
a1708ad923f3b51abbf3143b1cb6076a
dfa36bffe436a98ee0534173b9189765
fe0c4db38fb6399990b1d6deb98feec6
545cadae487b55bbc46ba5100bcdc520
57937c7ab42260ebf119374ee5d5f944
aa2af754642256c08699933784576e73
350d12f5290908c7f446f92b52bbd82a
48e9c61de4db838d84b83051fa0ae5d2
a9a7f21271b3efbaf446f92b52bbd82a
ff52c059efaca3c1ca8607f540cc62ba
997cb29f544d6f2726360e1e29a956c7
57fe8ad460bcb4929a4a28ef635593ce
b1835836e541766882568aa50e4e5dba
f12eefbbefabe566ca8607f540cc62ba
cf0cdaa94220ee3f4c3a35cee92bb95b
a074750e28ed3818203936772104a82d
45a4ec99ed13ed773c2498c4c2f13ca
d72a483cf8a0cf2bbbf3143b1cb6076a
c9aeb20d7cd1b3b45e9e2656aff7dd5b
471ca950dbdf0c6c5f80f808704d6409
9825919cffec79701944f01d3ab2091b
e0cc4f538a8da2d65d3bbd70fc7759b7
97d662e5e6345b46bd46d022fd7d80aa
9ac292686a2fcebbe719b5362fe06bbb
f2d4b8440d4bde5330afbcb38d77d0c3
4c008f39378be18bc0909d98a1ff2b4
adb3ea03d7b954255e9e2656aff7dd5b
abc465975af79827dfb86dddee1d6ac3
33faf711ed54a4d3db22b838c125a50b
50755e616df58fe566cf1b4a8fc3914e
f6ea6663b48bf78261f1ef59130c405d
947d6b9cd1966e2e719b5362fe06bbb
fc7387d630c84bb9c863ab010b80d9ed
b6d61068ef2bf2d46059aeb39e538eb2
b590adb6d3486f6e90b1d6deb98feec6
9afe827a622d8ca28699933784576e73
dacb447d7820e7f7ca8607f540cc62ba
f57c74e194cd2b2bc8727b27ee96a4b7
b31bbc50a0d3a4366cf1b4a8fc3914e
a5cd14be786fc8175e9e2656aff7dd5b
e86fd13a49f0ee0a62b600da24e0965
a0a7e673a1e1bca78699933784576e73
d4dac019726e980e203936772104a82d
9bf3c126d5918c41f5c7319b71bdce6e
b72804a8bd3dbbaca8607f540cc62ba
b9fabfa6d5fedbc3a8e091cb544689d5
dc7c5d12854b9467b96212c8f6cd06e
9a8aecab136ce50db7ef47444625afb2
b2b1c1d5c757af8a7209009cfb89d4bd
da9d111e1175d318bbf3143b1cb6076a
e8409b544c626028a9b2becd26dc2fc1
a805c30d4b09f11f62347b4731688b0f
b3a59a941500e76535592b447835a16e
fd41d04f1aabbaea3fddedb0bf24c68a
ab95a4e7f2d3cf9ca8607f540cc62ba
d5a94c9f09d238c4c3a35cee92bb95b
571cfb1da3d5b3704b5910188444efc8
af696fc30a96a0c8bc0909d98a1ff2b4
4ff50b9f815c58acca8607f540cc62ba
9f5dda6f01bbe29bf810506e9ae2dcc2
ba662ec78231c493252b4f9439ef95a6
acd8f367c36a3d84fc7a6d75b3d807ff
d2e2e23f5be557e2d1ab3b031c100cb1
f39985959d394f8c863ab010b80d9ed
56ba815f883279b462b600da24e0965
356a633ea047c549ca8607f540cc62ba
9ba460913d86466f62347b4731688b0f
a04d10b24ede5e9a3de778e85611513b
ce827e4c857d553f71d03b466c72ce41
ca4ec545363b3b8e8c2814a4ead9cb90
ecb4ae05d7dd135a619550d2af0b6117
973df01cea43c7f690b1d6deb98feec6
f13827d156628467b4cdad9a5bf52dd5
1e0a24e1135e75a831518807a840c4f4
2d3ecfb6d7ef2c45e08b03c50fd87acb
9bd8d0fa75bc21c5e3375a6b96a1d765
93ba822e84586999e3375a6b96a1d765
cf61af3c52dae1e0651e8da9cf70afea
5bc41589eba11a4e15477d594f1fbd99
7e8be9c88e596b84198609c994ea801
7805239ad1e40e07c69d7040c52664c5
8951b4f9834869a6673a028ac04b7de3
fe266c740580c102ff9ce0c50c2cd25a
d844094b073a0452b04b2d1c5ce9783b
79351c8f83f5a3abb2d09bc8d348e46b
8f9fe8d7df1af4e057240bc6888ed016
3255eb4c8ad868b3b378822897b79a81
7eef160cf5e4188a5a8c25d312cc3c6a
f9fc7fc23e62986fef6c510e24348d3b
70f330ba02ad7a05bec2ed99cca9acdf
52151d6a699ed1acecae07472b415b97
92a83ecaa10e8d3f78e919a72d9a39e7
bc58ff3369054fa68f52dc705c3109b9
8700f6db654c5d2aca52e8e28cb200ce
4c0f48d49805a37298a97ddfb532e08c
aeb10a6725afb1abc79f92df566f8c6b
46d2373fa05a4876bc913a3935f0ae10
effbe2683574dca2b37a6cf3f07b9ff4
6c432109eee42aed3b053f623496d8f5
f62ad267cdd1a00a34b1f3550986bd42
cbf4dc1c144ce656ffa79951b9f955a3
5e77ccd7794465dacbbcf57b22894cc3
aac4ceced7042e4c1a6d59f1fe711d12
1c2e9dedbcf511e616a077c4c0fc1181
d5e01850a9d1f3ac5fb48d488d5dfafd
752d9a010346862551cfdb4c9f126c12
396c8e232192a44be1a9c234926c21e2
733db701650ed0d4651e8da9cf70afea
14d9c576d06622198f52dc705c3109b9
bddc2c1a4fae008947a1dbf5fd48a4dd
5459029489f68030590874dcd9dc8481
4a7b3bb0f7e4e13af7f031a34b185310
caa7e70beee4543f42c20743f866e1a6
3b2a19d782234467f9cc1fc25372199f
97066012fbca5983c74417871493eae8
95cfdf728da16975c5f6fdebb053ab2f
5aeb583ee6e0e4ea42d0e83abdfab1fd
7790715d4bc226f8b569b36137d81c9b
ab7001e6d0321374b378822897b79a81
5ac0cd21410b2a6a341877ff7a6c751f
1af4b32eafffb0f7ee60c37cbf99c1c
a87c4bebcad260edc05997f3aeab04c6
a12179d6f8b753a934a446df7eff04e9
914c308ac4a9156842c20743f866e1a6
f66bf1a9b6d2d109a34fb3db6a11a22d
4658a2fb7353f839643ae903098a314
376e9480ebe635b1e98208adea7b4e8d
ad66ac8155a316422068b7c500584ade
b26c50c3dd4a1cbb16b34c3751bc447d
19b219dbd2e4467828d4f2ffc8f17f3a
1e6a71e0cb436a88a3a1394d6e3d2c63
af04f04964fc2f1b64a62403221fd59f
fbf6917bdd86d5862df404314e891e08
48b99ae8fbe0762a8ed04761eced33c6
a61bb94e08709f2bd0734afa0d357999
885b7ba506c9d68ab6ecbbb2e4d05900
b5130ad12f6db8d0c83b9fdce4d2e0e7
8383e10a1d1faf89c7749c7e68c22ddc
a0c9b929b9a57fc8f0ea53ad10b4d47
8fa9e2e8dbed43911f32208e53f871eb
de9e093bb17848c3b2bd4a92202f8700
369244d49f8f1308b858e64ff0fa8db3
a657a0dec941d40772fe60ad306aa5
464a8718f0e81ffd9a6e43b878d5b335
1adb40469ec3636c3d64e724106730cf
bfa8e832618454c0a179137acc8d4437
f9a8c5ae39362284d538ebc793e748b2
4bca81eedcc3da52b8013668e30e23b0
552d76fdb54e5d57cf7cf1e30e2f5267
c087319ca6126c51c5b0cf694baa734f
5c4095795aad447f7301f2b895d332ac
8a84a26158da1db7668586dcfb752ad
fc44636ad5fd9754927b6179bcc6e892
84de1d44d8795d5876817284cd40c7c1
c207db490c4acde27b5d32a85e1b7987
65654b5c4e488e0c961fa14fc879444e
b152548ae1a12bcb680558279a114842
22e4e0210f80fae813940713146922c1
3e0561d70c7fd4f51c6e4e20f2b76086
3fd97395c1d1479b35cfde72d9f6a4cf
257d7b5ccd3b5c7f7c5c969e221ece01
ad6e93a1db3e1da5977e4bb19a62128e
218caa58819e10d1fe40308d822f996c
e30e25fe047ce1ea10b08ceced9a0113
a73be4c48272735df64801ad2940cdd5
3713302f0330f960970864f653fa080f
98011d15300361e54f0e6f5b218145e
e6363b1d63f6aad3c1006ed55bc1a3fc
1fccf0064e0aebfeb179f2ac46747670
b552a6155c5b340e70828dc2c11733e1
b27de883a83409a86bd2a0f0614d73d
536f5d8e46467566643c3c243d611069
bd48d0beb5d1acf1d2106c9042f1bde9
efbf3d4c8877e7dc7ce8c809505eca2f
db4e26b10e48f0202eb17a4a1756af76
721eab5632f60887e72b7fd373921885
cbc9d6ae9d22fcc57f3efc94c2d31dc5
bb7d526405e9347b8f6810e1a2b6aa04
f0d6c53d21ae5b5cd0c57f18e8d8830d
d722973c75c85d93d0734afa0d357999
789f032dccc6092977b7d0d4764c121d
8a25b5ee4421f96a349a1add3c9c4a87
f3e2df468c15795872517bb0a6b4d3ef
9a5f4508a4337d195e48cdafd0101d9
63ca41783e5d41f1651e8da9cf70afea
a374b0448461438ef3d4cc10d9776c62
3d5354863690ac7eca27bba175814d1
62c875c3db8bbc512842bbbd2f23c97c
edc9fefa5fb82a0443a0c73d98327de8
2a2caad9e540dcc687bf26680c510802
8b0d9118e9e7dc3f95c9af648ce95367
c6c525a71215dd5a459f73e379ceb540
90612205109d7458e84aab2e1d454e3c
9d292c07f1dff16e1304733e0af0907
e1e7f3843b1fb876f5156bb441883fa
1c798f3e8bcaaed6f34c3a85e57ba71c
a5021faf372fa2c48f329df3701cbb3d
39ae262853031e42aedf20f7099e25c5
f8647af0b1ad01445de04aad18bd94c3
eac2573ef637a0dbf31cac033b2c0831
d276954441de1e878a3d2bbe7d58317e
79d82d0db21dff48aedf20f7099e25c5
f74cbd91e6fb40dfce5965228d7e8c9f
b9ee9a1ed9296e8c598bfdaf1b614b1
9441549e323552f2f001dddaf44c449b
6aa1ef13aebb1935ebdda919ac927e5e
3ad337dcef167024fe6302fece358e4a
98168c1772b769c0ea1bd6f2443b43e7
d1a8e79eebf4a0b1579c3d4943e463ef
4def53f149137451b0009f08a96f38a9
8325baeca433510f4e8c959f70e2c0d8
48df2496242053da4ee0fb6a51564c3
37ed9b767fb055959d61264e98b74348
bf124ddeb1189a3cb312af71146176c8
a3fc9ef9f611a783525e60273896d30a
12f3fb99c95c6a7357891d676f728bc0
fc16704314dc71ee9a6e43b878d5b335
a14b262838529c2c81e1d9f6b27f1a92
1deb997079e0b3cd6c1cd53dbc9f7b8e
f4a5b28233523a4e588ed1d0f708d42f
48cb2de06f46cde25ed29e0a9f14425
b04ec55f4960b3b984b7ea000aa0a2b
b34526d94a00ab55f5a25dd70eb863e0
e416ba617d5388401b0d75a1d7e2d58
3c2986906532a1c8cc36f752df32539d
a516f9a6947bd0d639cb1b92881e8e76
c510e14ac20edee814a46d7ec44fc258
a93a20767d70220cd3b936925082270f
b43ccbfd5e1d88bd780469afe5e05eb1
b6a1b55eb79a383542086bcdee59b1cf
9f9cc77c5e32664e6a8a5e39588ebf68
f9c93ddc9b921d88a72ae0d8b7f98590
55fabcb7e7c11560fa6bb68bdba0e663
d12f7698698bbc8f9b10643ba761a774
444d67950ff9a4cc1139bebb00fe5be8
50342e9cb1a7e00e59c11002fedd14ce
c8a7eab796be432d5de04aad18bd94c3
5ae05c956af61890b58b3ab5dbaea0f7
2c1fff0653854166e7a636089598229
6cf339eb8c950ac5d556fc099c90ab45
10aa040f470500c6a66ef8df4909ded9
c1b5dc92221bcdad5fc84bf2b9ef981
fac4af109beb0108b4f192eea1889928
83ed7c81a011d72a179137acc8d4437
ea58a51483e3604897dec65c2238cb8a
e033b6ad34586a86cc1c9e8218bfe7fc
b9ba988dd9a6cf426e8b6dd39a855b69
a702da03d770f5096e2738fc9da60e6f
c359e067e75cfa8693d4024985440d4c
ddd06628f3bfd0b64e1dedff94c67c76
e79e9e1c8dae48888ee1ba57de3d34e0
14762404f34eb050bf7a28999a707afd
7a57a9b261f60dcb2296d88107d065f6
85da8ecc055fc6cb58328b65a4733701
f07028f2080aaf4e75b90b083ed202b
9e998a06601e9f944b2bd73664dd1844
b59a7cab8e95f6eaf3a7414a84b5637
afc975c77f6d5a1bd23d6ce2c840685b
bea43bda17ea2ec792e07599d5caede
4f0bf26c62bb7c8b7e1c97634acf0214
70295db03521e219a5be3c7b80fdc3d
c5c726006697aa19b5666ac9dae008e8
2a906a12b740afe2fe93207afde39a32
737629e185f4c45f99f30106e678cab1
feb0bd0dcd155af4cc34b900bb2492e
41fd618a15692db27359b134afde902
aa0802b8b940b7222296d88107d065f6
e0df54a0990000035dde10d3d9d6a06
b75575684fa8ffaeac7e7b41e1ebe3e4
ee0105d05a5007ab827afb33b6d5eec6
de29a1335c332a5ef7bc9a344bb7bae5
b46455f82ad28fb595ff232cd38210b4
a8773829298f492cbcb9a99298d16322
6b69e4c1cceb6e0681fa1ee3c368532e
f24daae76836e249f0878b58b4e887bf
69d471ccfdf9e55cace8f9c62f7ef839
58fcba9ef405277cfc8d2548f6ad75e
abb19f2adc42aea2579c3d4943e463ef
46829981c5c25285bfc0a2c490b4c222
e0b5c450de6d7fe3d87c63d8b3018b58
66e60b297f733435fff6684ee288fa59
67dbb0de722cf5cd7a734abc5ba1db0f
ee92bc35ee989f59271b3fb2659dec56
f5403d3ffcc6bb17adce4f2283adbdbd
79c10c1d217b4e96ee2723567c7709e6
461891f9231fc09a3d21c2160f47f16
e9df546c1e54af0733d72ae4e2c33411
5b5c4dc4bd29dc8166cf1b4a8fc3914e
c2352a98200942e5b39b85af85a55aef
ea06bef342fbfd4236f3a2343a8221f2
237b5aa80b3d3461d1d47c38683a697d
e5c6ba3e7d4f2fde40acb87a6be88b3
dc74cd06430b61f478d9c09d692f9057
5b985bc192961c595de04aad18bd94c3
cc0c7bf3f0f598db2a9ab3cbfdfd536c
3ae96a1e1bb488942296d88107d065f6
74a5f937c22aa08a3e70653c1b3170b5
f1111840bde23096ee2723567c7709e6
e3de366a0cfb59ed38294c37c250d7cd
a48676cfe44fd9bee40acb87a6be88b3
76252e1b65ede02f889919e9428eee54
7fce28d597b3137cf24f8f5f80968450
1b90541c9d95d65d2b48e2e94b50fd01
89f21747e6403735d9e1375411b582e
d3f2dcf27000283799d9d900afe054b8
861dbd415c83e12e67c647d96462f673
e1e5cfcabcbe26a03087f84b199fd297
12991e9529a2b2bf9ac9930d2147598f
97ec5b82d9757b639cb1b92881e8e76
efc9cda06afcd8c2354ab1decf4fe605
b81339a2f1dbc0de9598ceb95c7f0752
1cb757280b862ae52c7575c9089791ff
b2b3fc16b9a676f5950bd071d87a18b3
97eb9cf6c8a11a389967b23b351d6841
ebd96d07a7d68cf2fc7b6f7beb3a27ff
bf5d6902e75fd8812296d88107d065f6
d109c08886c2a3dabdf566b587d6b21
7d226c520a29c7705e28caa3b26a73fd
daeb27ada93505b1e24e4b657f0a298
cc80380c511ec8e2c91a9d486db717
d6bf9fb6149faabe36f3a2343a8221f2
715623df7ed5a6fc2296d88107d065f6
4e2322d4f1c0d29df96e777471c18dbe
94379090010cd6bb874c9ce092a813ef
96ed9dcc355f3d34585be1dcf6e59170
ce682d7a2bbf77b6fc4b92d3d335214a
e69631d34410f99ac4f72bf08dc79a6
f134306ace70df3ac1006ed55bc1a3fc
8b59ed9a391c86cdb4910ab5b756f3ae
afd6b2789e486ad4663191fd557d3a61
d24f2a1da14a00ce16b34c3751bc447d
b94b4edc5e4701093ba0eea71939b1f2
c31f5303997022c842c20743f866e1a6
62bc52c204b738317dcda43eefa0ac02
f691f2409e006d33f412783097373bdc
4a3950ebb6fe6aca8afca43ae0909988
df25be12ae47d2517ef7776b3bf5815c
33ddbeb13fecf7868405970680284869
448bd2bcde027ca9e5d07633dda45110
5de2cc606b65b960e0b6546e08902f28
c237b4636625f1b0af8d9a7eb0a2bedf
31a06c63b8932cac8bec85d7b4e1ee67
d43b80dd95a2233a5ae839ffe09b9d31
9dbab9e46b372e837645a27090729af6
5d8583703889178a8bc354dd4eb23614
df68b8fb9f4531b42e690fa6dfd5d610
70d9304de59792a9515d73fcb34092fc
9c41b0040048581c32387cdb9b2a84d5
a4ea22087dec2f32c7575c9089791ff
b8e4e4994d4674cf2023ec956848b741
896508fa65b8a31c12b38b1d99376c0b
9a266b3a734e374687bf26680c510802
de519752147a225032387cdb9b2a84d5
35ae2885a0e645fb7843a50f3dd2047e
ecc50d702133b1531e9da99095f71c63
5dd2324cd6ebf52e293fdbda4e7beec9
4580804c798365a094a6f19fab16fe62
adaadca2be822544d81b6465d8dc20b5
167740d2a5f5cb6c7f4561609781d8c9
6896058e4bc0be46bdf566b587d6b21
7664f3809169e998a4ee0fb6a51564c3
8ddc3bfd5a86d4be2e7c68eb5d1b9123
879ebdd198cf4aa58f6810e1a2b6aa04
e814190f683946b798b4e13cd6d24c30
e115f4f824e28246becc132ee053f2fa
87b4476ce2df563972459a40bb821ba6
48a0d4cb43c961165de04aad18bd94c3
563cef4df464ddb1e153dd90dac45a6d
75705b82eb24f5ae23e79e99b949a341
fbc429365ab7136be1a9c234926c21e2
1a9b552befd6306cc8f2d5fe7449af61
35bb733b13c48bbc839ab492b6143b9d
c1c341e597c01d3814a46d7ec44fc258
e3aff5ae3e8f2a7c4c2c88971423d0be
ad546b049b2246bd609e2d916fa0da27
57c4a88a7b2e10f14c971d5c531b9d1c
862d685006637dfef630324ef3baae90
81e4cc88fc757ee220152153c3a56171
dfe65f8a20df11c5d1df55cbe0874aa
853dc1e740631bf2ffa79951b9f955a3
68c61d42222863682296d88107d065f6
8996445c6d2407c0fb5c1b0f759e2bc1
26f8a11864fd6bf7b68211fcc7956ac6
cda3cd7f140fe791ed137f17a6d8e3c8
13f9eb29d699488a99eab31c7df6f5c3
8c42e3042a4beaa7d5c40787c7bb7824
9b5e193416d5b2c09d608d5eb8e56ba5
d940f33afc01ff036da97d9f744f7e97
213cdfff847f32135ae839ffe09b9d31
895ae296f701f5e2ee7ff700fef7cd22
7b1859e6b57bb6621c795eedd7ee6db0
85a15c26a6e9921ae008cc4902bfe3cd
e4b0599a9d06f7ae39cb1b92881e8e76
99c0ee178c5a4dbd8d8a353a30b33dd
6459a6977cce8f8789b0d69aba91f1ef
1d0c128592385580e2129f6359ec27e3
48c4e5e2c2dfccc7a68efacd2d601104
bdfbf1c555dacd9d325212819caa597d
8264f874bc7fa58ac3d9e92d9c33325b
b51032670accbd25d11b9a498c2f9ed5
76811819fc2bf7fbdbe9ce60b93b8bd5
bff6cee515cdefa8a5effc03faf54012
dd65065e6e2d31d62e350437b1fc5163
5558a2511bd43caf2fc668af6d3ad0ad
1998ee1bf3806b05818b286e41cc1a3f
c7c5bb658cafcc7c67711f7c205c5b63
123ac29b0aac8c8e5d07633dda45110
343a607d1604335fb4f192eea1889928
67c8fe06930cf8788762ebad71629f9b
b5589ad89ceab860123d1d349cb8cfb9
f6e6fd724a9eab24ba8e93696257b3fc
bdfa5ff6aefd3fb8a57854d2ce086d65
9a84ed39f9a2a3c0b3f2b01de37c0b29
5294c39d2a57bd7e5cad6226edb8e82
8c0c8307c5de1b65ac96c03d6280efb7
51d6c3bf592a1fc16dfe8328adcc508e
204f4e737fa14aef33ba31f6ad43c835
723a86a2b266109d1fc43d5b32fa230f
cd9f07bc1e5087b7f33a09c02bab9cc
407135e4c3c7cf2523c853ced7da0343
320e542b0b2f8afa248b612e49a6e572
3bff0d84311470a357f53fe209e96fca
6e25548ed9d2c7b597dec65c2238cb8a
aea5192a4a7bda94d33646b0990bb4a
324304121b61339bc36cfeafa51d54fc
3d23703a618ce7df1e569ed4e4cfe84
3f9cab3630160be9f19e1980c1653b79
5a4c3f3af30e42e057891d676f728bc0
86c8e75179f00b725b7d3d0361fc611b
87069f21b11c180799a771d197c7b487
52a84fea7c314f4c3dfc741b4df74043
b481294a2692419cba5f6626ebfdf87f
2aec6e6096e640add00d52e62bf14ee9
ff6e377e8e5b3757cc34b900bb2492e
c0375c2ce28292d9a179137acc8d4437
bd698089021a4a58e23abb9b807b4cb1
bbd8e6b06d8906d5eccd82bb51193a7f
b8ce3803485b620b2c674305897e1782
e3dd7fd80f9e53be6ec2a8147a044691
27e6fe140e6e668a3881254c11db28
e41c5719ad09055f1b880c747ee1f83
3d6a8f8c27e465aac6747f7c9ffe9e32
80b8f4da6b77eb66d208f79049825a82
f6e6bab105ab890080be894a49cc4571
4129199695b9344930813b40bae6f4cd
1d396e76ecfd973575ffe5b08493cffc
20865546e07ab8067c597cd12d99981b
e110c699f2ed6511b53a02c8ab03ad65
e2ddbf9e63bbf9cc4e99bd46be8e610a
5d1d88958bd1c9c573328938c756eb4b
e02485f093835f45c1b64d86df61366a
fc0097a6ad81e5cc1c2daaaceea98731
35892510dcd7cebb87bf26680c510802
4fe7bcbeccf207a5a2a2a57a63160d60
804821516ddb3203c6747f7c9ffe9e32
aff5f5ac9dbabebee5d07633dda45110
da1acb401541235be4d2773f0358b43b
d45809b73a371efd185b376619557c95
b509fbbe99df854f0478431b5ad57db
f337580024e8c36da5cec7cc83604181
3069d990d52051eb3a34c2907e8f3f1f
3921f5f454c5733e96e161ce7a956a8
a6b09752263b1de2296d88107d065f6
6b6cb0c71731aacc277d303e3a640f98
f390b1b28b6dda03dc57b3e43c28d486
af73d05ac86369bf4ce863ea27e2b897
3b5b8a2384e8850d185b376619557c95
52ca6970fb09b561f9f7510373841dd9
d4cc520929730248642fa8402286a797
b702e35f4a59e81f64801ad2940cdd5
20150c9c3038d08419bf31399c6e39e0
4bfa5d948d9ca7ab7c5f0032facde6fe
e805054e6b9b3666fcfb100fed3ed97a
e9704a563a5a0a3f5a4b8d382b9decda
e138a98d82f3aa692142bc26f72ae44c
7f0c20bc26b08a163e2ffe63fcfe09ec
e3f68fbd5d1629e238976998fb731b88
3a3827f1a76c5230e24527abcb488f31
d96f2b6990d0d79e247412be0e58d7d4
882b5868ee1382ab1608512333cae245
3209a02075cb9f0168023bcf4ba60aff
a1db8dcb7f1fcdd597190b73ffeacc5f
3a54f2b6f9b053b759b859405dee3be8
2e3c317357ecb038543941eaaf04581f
6481eb70eb9a58cfb2bb87688c5d2f58
fb9deec3a422b06b609e2d916fa0da27
bfd606459cace196e7ee2e25a3cfaa4d
330f797ebbc565e71560e45167753555
b153004c293d4b151f32208e53f871eb
3f387e8586f92b6b7d3b11085e75c7ad
9cbbede82cf4f7e463a33dad5001f8d7
c5e999752db444eb91a464c5de1b632b
d6d84d05892a4f492e7c68eb5d1b9123
7b1d4aff088fa3736e0f3d76ecf4a53f
8277c0294461b76e8405970680284869
b2960c2be8fad9dac140e34b6af37a1d
edd9583988b62c90328f15e6c60d0e90
7f6af37cd64377e1cabcecce1c335df1
ed1d51ac367d0fa5f830b2dc9bf63133
70ed0fe305145f60e53236e6f2fbeb94
83778fc8ddde4a937d5bc8e1d7e1af86
cf6fa8a054ed7bce5de04aad18bd94c3
ed50758d8792491314777db9411e4949
ed4aaf81dc577bedac4f72bf08dc79a6
c271badfb6842c882fd5ed7e39258c7
2b5c0a38c754927d21abaaa81d1a4195
2087ba820bd70001243402995adcdc4f
700bc5991a46c1d53ddab476a0f5c5ee
14cd2f1de7f68bf3ab550998f901c8e1
f9db62e6a88f0d7129343faf3bbffb15
398ff83ba75191f050405f236096897d
e15f4c98857b67e41e287f9f679ab620
a359cd0297d4e655a871065f9ebc6ac5
6341436b6a9df0c6683651cbc8e49e4f
e75ce21b914ba565b4c6d1a32dc4f554
7ce599765d4c11fe87bf26680c510802
8b4309aac2f7f6b3b97c9314bd4647d5
f6ec20afe98e37ef6e2a24768a2fccc
556d2b99469e62e623a346a784afd6ba
a7394a6f2dcf8e9b3cbb132878a747df
c47954200b78fc32f677dde7945cba25
261093138afff514d8d7812d176664b2
ff6ab0fe13f58e22962a5697e98a94be
a57802c776ba1b69e44b1dd0f956e84
cbb5ed444249f0a9e90916c8815b5c43
2dcc844fe9c4d4d99b0fce6a4905cf2b
6420a3ff5e526d59e16519c843f95ce0
61e8e8a7ea726a03c79f92df566f8c6b
d6c655a7c97cab8e9f5f802084bd1d73
a828cbaf4b3bd253e163b5a191403a0f
d883e6e5622a0cab72351dbf9e0687e0
9436273fc1a5e3ca7af159eaf7625abf
9c0431249dd5a50dfaf7f0ef9aa8fd9e
15898fef6fec88c53ada73811bb576de
902cc09a60a494a278d0cdddb0c08062
43d8125d940bb2ae850f318836ee7512
29192f8c96264e3435fc197bbabcd5bd
2c64c521c114df40e51f766854841067
b2ceeee3c5b75962ac4f72bf08dc79a6
240fd3c1fd804ec1b8cf782e8c539948
5e9129782c45b26992e39b8eae3e6b15
1284eb71b82f6794207f77cc6c79e3d5
958c54f8da7a1359cea2c06142ecb1b3
d83300deab42c100eb9db4e832a6dd82
1e155559446469112e690fa6dfd5d610
ece25d89898c7d9090b1d6deb98feec6
b22014408721ec314567cadca15fe337
166d333d38897d1513d521050081b441
4cee36a2e8dd3b24b87697d3904b168b
3fa511e1882e41eeca8607f540cc62ba
48706d323b9041d5438a95791ca4064d
8ac8c21b63ff535fca8607f540cc62ba
7bad9d15c0f0d3c03554ccf8c30febe7
e36ce61195489a56c8da6d3458daff84
829108f586f9d0ac7f5c403400264eea
ed7e1a38fe33830b87697d3904b168b
4875318127182dbd15aba2f83720a298
d70d648947c65b1eca8607f540cc62ba
caf92880cf63690188a7f6dddc29eab
9daa49ab2f97fc14d85e5191b992b560
d16405b7a4300014ef5bed0139d3780c
e06c2333068e9bd0755d33896264181d
21827b0be78dd3e17dd9ca9e282b9209
494a1698eb82572c3df325aac2f73830
8c746468d3dcb6d3ff3a35e90542981d
bc8c26902e912b851a53b454324fd345
e726c8e6897130439a6e43b878d5b335
e8de6c58f4a772d771d03b466c72ce41
5ac00867c7d78b1690b1d6deb98feec6
7c6a2879e359f505467f6b8c6b1d352f
f1b9ff223b5a13719a6e43b878d5b335
3feeb5f8ecbfcb4ba8f0518e94fcfb22
13370c42b8ea45cf5e8172e6d9ae84ff
e812f54386acd072d44f37c9e0fb10d0
87348bdeb8bc74139ebd7d1067b13a
be080a797406422843afdb9c81ff2967
37b1f7f02c4b87dbca8607f540cc62ba
59f258b7aa7c1f7aa7d0c1e4eb8db7dc
2176fa9f69e5e1dcca8607f540cc62ba
971ef250f2d0cb389a6e43b878d5b335
72aee7d0e998a68aca8607f540cc62ba
7fedb48b457ee9f31629b98cc1b1b992
e0058b4948f87d3b87697d3904b168b
c0bb4f92d12f4504d65766fd3c4f994c
babf58c69501ae6b9b46c030f642fc41
49660fd24e5c2fbab87697d3904b168b
28d719b73b1fcd2f5de04aad18bd94c3
123ba1ebe2ee533ef0c45eff2a917cc9
25bd1569261bc545e8323edc0fe816a8
8add45a11c9fcb446eb5821e78d8898a
57f1dfb095bbe82cafc7bdb2f8d1ea84
ea9eece7f2c45a2a82e4c37374fbdce
a00c0bdf007689619ebe905ef4009f84
86b11ae736659136ca8607f540cc62ba
54e926e12382808b66cf1b4a8fc3914e
1678946724380812de689e373096b0e3
90769434f2b588c1b675ec196a869fe5
d0614abb68caa5ddac7f1a00b76bd166
917694a71164f2148e8405d6c51a908
d74767519393a937f73e5bc170b7e2be
4008286f2fe8b6a97c44cd1ce3d402d0
66ae19841350ac2d4ba2821676102936
bc7ead8b45952ab8822054a0a020bf4a
508fa09e7df177e7fee8021c81c84603
44c0cb6571f6f000ca8607f540cc62ba
d63daa9d1fd2ff5d575bf8a4b14be4f4
7385f1416e93f1c14ba2821676102936
757c47e20a37647431e38f024b7ad042
934dd5529c22cd05bc0909d98a1ff2b4
e25e3dc95243a92c59bcb260e54d3785
f009f3112625ee00b8cf782e8c539948
d59bb0ad79371634f3d7c71ae132007d
a2712db5540766cdf6a602e459585636
c494f446954523a8a32748a9f843a0bf
e59c4f290d8585a862b600da24e0965
167250e2014c72dbb87697d3904b168b
118e8142a8cb1fe19a4a28ef635593ce
befcb95d80e0e49119ba010ddb4974fe
de5807cb73bcbbf18587e940b916a22f
452c18f8997c53741adbb4c4e06ad649
1e2de00cf19a0a33554ccf8c30febe7
959f28c6724979ef9a6e43b878d5b335
ca11efc8928c10908b96ae1a0a8b84ec
f46df635ac669a9818b14db3b83de9ff
fd9f1cdaa381599bca8607f540cc62ba
692797a818b4630f1aa3e317da5a1267
d81042a53dd1cc5bd90bfc986bc4c94d
130422d62194cf026c8067e570d6af71
9fb60716f0f5a2b84408eb298433d643
c9be9f07f5ae7c375d7629390efe0a2
c1b5fd196374203d772a4b403daac29b
123bd9e948881939c38a1d3458dafa1b
f7110ecac70994a83820d8f180caa23a
18e6f319062ccb49ca8607f540cc62ba
c6e4d12318bc4a3b262daac8a0882e96
319cf93077118d19f64801ad2940cdd5
26e10058cf9835aaca8607f540cc62ba
edc185566c1df89c35fc197bbabcd5bd
5fb64e3fc0abe449ca8607f540cc62ba
f7739764eb1c78a053f370d353cea84
4ee48907120e261c3df16180af9974ee
265f5348ab2320b2148672750a1a335
2066f1830765183544bb6b89d63deb6f
1e9ef313876bfba7d02c6d35cc802839
a7a0e7eddf4ffb8c19378fd691582500
fddcb2b3d45ce98e641c309f1fd7e183
4bdb2c4fc6701174ca8607f540cc62ba
a1848a4a69b14704ca8607f540cc62ba
4cdd238ccf9002344f59c2a67aa8473b
d7a2512d9d8ad4c8a18e0889038e4fb6
caf80ecbad22a7384e1799d9d4d697c3
2229bc4e646f506679f56e78e8640bfb
f31be358cb57dffffe198fc7b510f52f
fcfa1a67f34e7f2fbb3974ea29d1d642
75d162523d703917b87697d3904b168b
6a75658fb8242b9c590874dcd9dc8481
144070f63941362bd1810447902e2904
77ee6ccca238ceec5144962e2c20b832
d615a8217b70af06bc0909d98a1ff2b4
85cf5445f44a49f5cf35fd096a07bc43
94ce3a5ad2576e73a5cac89017eae8d1
77c9fd0f0c6b0e9fca8607f540cc62ba
c4111dbb21e1f17043afdb9c81ff2967
23eed87ac79f1b152f9c405cf0817830
e3fd510add7b1aa3c19eb6ab3736de88
6f72a0d86494b551a834b9c8bfc8647a
2c49289098e4492bca8607f540cc62ba
9b1fc3881a5335cb44012f72ba1e15a8
560b4af718f67902ac4f72bf08dc79a6
e283e3825d66a985b87697d3904b168b
c581942f40cbb60819ba010ddb4974fe
9b687f9cff46d43d89c2da356f872ebc
b812c2df636aa0218b96ae1a0a8b84ec
4a11239139c5f81762b600da24e0965
ae4a9574248395b671d03b466c72ce41
ecbb6df185a7b260760d31bf9510e4b7
59b8d36b0f96aa5cca649c0959202cf
3b82e575165383903c83f6e156ad107a
8341ff3b44ed2e30473f10e6caaeca56
345570c792fde290d49cdf0198aeb01e
d3d788c1fb35227619ba010ddb4974fe
92fb0d6a866fe7aca8607f540cc62ba
75db11c354c6342aad01ec966c80ac91
3a6d6534045b1895e8ed194c80e0b1ef
cc60baa1a796f5c14c3a35cee92bb95b
7de379891610f5feaf7dd1bfd65143a9
aebc4c46b3cb7c3bca8607f540cc62ba
e9bae38bc2083d0bb4d73e4449062b04
422105cd23178ebf333c61abffc4e1c4
fd67c89ff247f9e7442ed26ceeb35a60
f04fbc2423b13da170832200321e72bc
37fbd275a734ec1b66cf1b4a8fc3914e
8ff8f3c845e7ae8443afdb9c81ff2967
975c00ab85218a05430355e13bc86b4e
19ff8fce1658f864ca8607f540cc62ba
a0d63ee7fd87f93619ba010ddb4974fe
8f40518bd30467151e5ae32cb9e3711f
ed738ba28cd73714bb0f4bdf8821663a
6d93492543d1087eb87697d3904b168b
6aeae52e38f892a7e0091ae06332b2d5
576edc1da4e3fb47b627754c4259e985
f95d8e86feb79b17cbebff57eecf0a64
3cab1ffcff8b84cbcad035c2ab458
2e389edb9a3c0496e1c255da0d1c1826
8d5c3d38de9c3685f2e77d54f4da142
f26ea1a00455f44fb88e2a19106395c2
c5d748c352d8eeeb3d4e343a1ac21b93
91d3479f5da120a9b4d73e4449062b04
8b61ba80d9e487deca8607f540cc62ba
4a552066ae1da546cc34b900bb2492e
e00b89bc338348caa42c49797afd1f5c
29fd29045703ff18b4a8b7176ed97248
d13d131a649c5df38b96ae1a0a8b84ec
4761e30dcb30471cf7d5cc24ec79e682
6ea21a2265075beb9a2f7b9a6f4f875f
fff513f407e00e85a9ced22d91ad7027
618b433a97bc23acb1f09c4591ed2db9
e954dc13308e6756308fc4195afc19d3
9321ab235b82ca268c9bdb0f364cdad
adeb5d68e8d65cc419ba010ddb4974fe
329987191cce68bfe64acd170567d820
5a1d4af1f417d28566cf1b4a8fc3914e
52764ef0877372245ddb9958cad651ae
f110a2ce31dee1b3c16ef5c633c71b56
eb658ff31f0becea1d0f8853f6d023e3
74cbf170c5f2fb587d9c9c8a8ba32919
81e6b629264dad5daf2c6c19cc41708a
9d06f4ff9f1e7932941d71475449eb25
f1295a30fd857249224c86fc0bbbbedc
dd9c0622e873de43c752b66cc923fdb
4374a3b4b98e247b398db3ebdf468ed7
ebd991666f177f8f575bf8a4b14be4f4
ce339f515469303979e13964f05c24f9
c9a6dcf87d1f15bca8607f540cc62ba
3fb7ceab42d7b17219ba010ddb4974fe
e5610bbacaf098508b96ae1a0a8b84ec
32e7224d196e5866bd564bd76cf3cbec
d75a4d4d25863f5062747c704d78d4f8
e16f9cc7dedcacdb9b0435532743fd43
9818f0b88fed05b24b0a1bcf2fb497ec
310f0957ae1436d88025a4ffa6c0c22b
ff7c22a964a5a54e3bb4b8f3758b3c41
97bc5fffde64178f43afdb9c81ff2967
32edb6ba5788dc12d8ff6111270336a9
b0b164107a27986961f6e1cef6b8e434
36a5bd4ca6a0b191532d23702363f9a5
7442ad61d59fac8c7372dc0a2f1067b1
916950e40ca7aabc8b96ae1a0a8b84ec
384e72f69e6f24404cb288947cda4a2c
d59d75f52ac9b241ae0d772a1c85134a
fb402a36e91ab1b44e7761521d3c6953
49917fb82beca4beca8607f540cc62ba
4d6ec762d1583ded46555ee25941a22e
ff554f038a338ef322031be9b666aa96
3265b621ca222d29d00d52e62bf14ee9
1354e0acd354a3ddb6670e1d7042072b
820ba20e5da8325f19ba010ddb4974fe
d5f01e2aa54bbf28ca8607f540cc62ba
64cb683afd5e9e559db1d21b460eacef
3ab1e94b6c3a1730c56cc5a87f567365
d8452d4fe51f2bab3554ccf8c30febe7
cfb555a4d82a600aca8607f540cc62ba
4f9b12d07dce21ac9d93a50cb0355558
cd6a3584c3da1db4abcfca680e6d54ff
================================================
FILE: data/filelists/02691156_train.lst
================================================
a98038807a61926abce962d6c4b37336
25ae9c70ded5640ac2a9d7232db0ed61
89b6f678789287a3d3128304aa2279ec
36d2cda57906072c1e08b6601b6fd998
ca91becbfaf5a094bba1aa1c98256342
e8b4bac72559c097e8f5e45871fbc77c
ee562cc82d73ab212135f3a0e614f115
3fb3fa76a2e67bae71d03b466c72ce41
c6bcec892954942a83855ba2afe73b0b
9550774ad1c19b24a5a118bd15e6e34f
5763ed16cc79ce63dc0a4f5bab755bb6
e380f6fa720e1c15560a4691498bd2fc
351e24a503c49840cc0472b5df09bf08
ccf4e9c074c3395c26360e1e29a956c7
f1b407dd7f610bb1a266a0298675ed53
7b3bd63ff099f5b062b600da24e0965
a5639c976e677ce6e719b5362fe06bbb
73f6ccf1468de18d381fd507da445af6
b71bd3c61315abf9ad8a06dbee1d115
8c2f2570e178823562b600da24e0965
22831bc32bd744d3f06dea205edf9704
b1f40266ad9da400d90bfc986bc4c94d
9a3b5fa35243504124f575085333a65b
8d847b813fa70470bc0909d98a1ff2b4
98988dc4e5c62dfbc0909d98a1ff2b4
88883a7ad39baf47bd46d022fd7d80aa
4ea714b785e24f0d9a6e43b878d5b335
c64e43e18b01fb5eca8607f540cc62ba
b6fb57668129c4cd4c11ffe5517eef5a
c85a76404b85d94e62b600da24e0965
5b86cf0b988987c9fca1f1143bb6bc17
e777a6a46ae240a7bd46d022fd7d80aa
36dd57178402cdf2afd477f714c68df9
fc9f6bc1ba1cb7c1c3fe7930fce05ded
ca6e0a1d5cfee53a8cbc4ababb61ad1
ade0163327c8c7f5847335355bf4459e
1f08b579e153b2de313f9af5275b7c70
da5fda29d2415fb09d92b4de623f5639
c9ba5885f6ffc835a8cba409c4409ba9
ff2f975a23b78bc78caa71b1fbf7fb98
4ee6a3030995dcd4bc0909d98a1ff2b4
5d925e4748bb4ad155050237670e0ad2
895e49f92ff5003032611f2edb791b8c
fc5ca618ae253663d13ef00338ba8c52
6fdf55a7ca1e64ff7d7b38cb4a2969ae
4d885cb269ae88ccbc40166c69b12cc6
24bbc1f5225969fb90b1d6deb98feec6
bdcc8077771968d67c54439d6177032
71bb720c33da689090b1d6deb98feec6
91e3ab3e12059b4a9d92b4de623f5639
7855e8ac604ae162bbf3143b1cb6076a
2d43c1430df8194ace5721ccacba16
9259906152f9d885a8cba409c4409ba9
a2f0c1bdfe1475bdc1a897657d9a1924
b90571e8736a296c549b705aa127253d
70ae0521d5ca428d7b3d3cfb30f2513e
aa0b34d9bc5b77e0d86ebdaa02a63c4b
96291ea39a5c6eda203936772104a82d
36ce6d61721805abbf3143b1cb6076a
4ee420a617a2bb40bd4fd4a5b9107dc4
498ea154c08d51abc863ab010b80d9ed
b237bc484545cb46d8f63fb451ae8aba
d2815b419e61dbb0b87697d3904b168b
7b9bb6e42aa2191b58a458f7911d7423
a69edb40dbc1fc6c66cf1b4a8fc3914e
2705c3edd082f0987f1f82f6fc8747b8
a153353168cd47869a6e43b878d5b335
1c4b8662938adf41da2b0f839aba40f9
827c877ebc70fd01faaf13445ab19dca
96600318559071d48caa71b1fbf7fb98
e00d7bd590ac129bbc0909d98a1ff2b4
6e65a6f2b81fdea2282e76ed8cc73a69
e0a8ae255ed47518a847e990b54bf80c
7bd43965f17c25377209009cfb89d4bd
66cd9502b63e8a97bbf3143b1cb6076a
b4dbf6f6b0cc8ec5ce19d55bc5e6a406
a6b9d686a7b977035bae66e2c509821b
256626ea73837e032625b83fa7422e2b
f3cc7d5c4089b842df6e254b0245ddcb
463834c3aa682c281883411175051361
dba3ab64bab4ed3ed13ef00338ba8c52
d221f607d5b5c553faac198e88c3dbb7
a4462b31326da9493ea703383c665f30
2c89cc6eb008eaf5ca8607f540cc62ba
cfd42bf49322e79d8deb28944f3f72ef
62bd247f0e8081a171d03b466c72ce41
89b42bde2332e5c067c5e3041553656b
d28a3cd771b2bf1e71d03b466c72ce41
6fd578ff0ad4f6e8203936772104a82d
d2e99eeecebf0c77bd46d022fd7d80aa
c18b1ed6e935b11bca8607f540cc62ba
76b492b77a03882d431e5b4ad135fb8
9dbc0aba1311e7b8663e90eaf6b4ca52
151550551758af098b96ae1a0a8b84ec
24968851e483feb237678474be485ca
471f072ea9d51f639d92b4de623f5639
98dd57d068c8de064c3a35cee92bb95b
69121d9daf6d569fb96212c8f6cd06e
56c79a936f57ef3f7b164268a44f7712
b2c69aa6c8d78b59f119374ee5d5f944
816f1a18692bca2abc0909d98a1ff2b4
4fd9c86e43a1dea17209009cfb89d4bd
cc23974115a8de15d13ef00338ba8c52
69a7b9b7265a70f1a9b2becd26dc2fc1
a1784ead19fb7645b6dd6448cb8a70ee
e2116e0b34db656dfca1f1143bb6bc17
2c83e01a7a4423c74d4cb1c2a5e48b7a
9e57a7d6a7f488dfbd46d022fd7d80aa
eb60d49fd5cdb809e6a2524c335c48f9
d24e6c81b5261fe5ca2bd098b9203af
bbd1b96d77b8dc08b96212c8f6cd06e
bb7c6c397143f72fe0cfe7507a46f0c
366b149545ba4df546ed10e8f7fe336e
48a36df204cb05dde7fc8cd567dee096
73934196c92ce472f4a5531fe6556d72
f11d14402a759a1465f50257ecdfa5c7
ed95d9219432bbdbbf3143b1cb6076a
d7e8b636d4a7dab67e697b0700f10b81
6ba642ca477a73db4c3a35cee92bb95b
54c13e95f07492a9e10e757961deca98
5274742871cef1aca8cba409c4409ba9
b522108c4c08430a71d03b466c72ce41
34c669182c8c9a2623fc69eefd95e6d3
3e0e8b37400e290125b57604d8b9519f
1d269dbde96f067966cf1b4a8fc3914e
fc6decc887f6d8a0bbf3143b1cb6076a
5ad5fbe84d7d8ef790b1d6deb98feec6
ebedcd06f1770cd4bbf3143b1cb6076a
875c4b43e35b6803a85b9ef94e886600
c0edd36fbf8d63fa35fc197bbabcd5bd
4385e4300e72e49e90b1d6deb98feec6
d34eba7c2ce4db53adecb6fc00604132
803fd1bf9b85da0aa79201593c1eb4b0
b738666a0403a7fa6818e4a1f2613507
4a9d28a5f272853fbbf3143b1cb6076a
e4ac77fdf28116232fa725d7a62a02a
52712e1c07ea494419ba010ddb4974fe
31b75f20c64b03ff6b7bd17e458d0dcb
26048b00f9227a9f8699933784576e73
1c27d282735f81211063b9885ddcbb1
43ddfbedbd6721fa828204947d78b9af
5c7ef3d5de5ca9a1ca8607f540cc62ba
5bd21df38ef89239ba4ae55719e5e195
afa65aa66f7ca040873ec74c119307b9
bf93f4dc64eff22b4d4cb1c2a5e48b7a
5bdef9dfed852e26195688f8ce8acdb7
a487d7527a0d0c2076b0a025d05432d
d1df81e184c71e0f26360e1e29a956c7
cdccbb56939fcdafa266a0298675ed53
e841e17e3256acf38699933784576e73
a3bafea9edc457463da2ae40e7681e7e
3e5aa51d27e294a835fc197bbabcd5bd
1667ab313638fb366cf1b4a8fc3914e
dbee200cebd464779b0ed23034a67f7f
fd528602cbde6f11bbf3143b1cb6076a
c12362906beecc796059aeb39e538eb2
cfc075c635df8a7a94b9c9a92aa36f8c
e413c15ded9ba57a23fc69eefd95e6d3
d21c556af88582754c3a35cee92bb95b
a36d00e2f7414043f2b0736dd4d8afe0
4e67529b0ca7bd4fb3f2b01de37c0b29
9873e280d91107fe9a55c6af6f4b2bb3
9d7e431ebd35cdc2bd46d022fd7d80aa
201e40e86acd7d34f4c1adce71073351
b9e6298004d7d422bd46d022fd7d80aa
dc8d9003cde43b66c8727b27ee96a4b7
4209abb3ec319f85e5118a089c2a99af
6db040a8d5c1d5c14d210d9468aedaf2
a2de53a5de7ea01dd01b5600c06c528d
7f2d03635180db2137678474be485ca
596cddf6fbdc9d6b96212c8f6cd06e
b58058567bfe6976b30e3fbc7205ab54
c1aa42594ad2d80e4c3a35cee92bb95b
67d9607d84fb51435fc197bbabcd5bd
91f8e08144218e2d23fc69eefd95e6d3
c27b08dad98f802488a89a28f04ce622
e523ba4e79a48d31bd46d022fd7d80aa
41abfb4a9e8071754a40844f179aeca9
9f7d4125c4b705208b96ae1a0a8b84ec
98b163efbbdf20c898dc7d57268f30d4
bd2a375de8c7374195adb59fcbb6489e
3f6c0034bb278de4f446f92b52bbd82a
e005d8b297850d483a99ba0078ef7bd1
48e47a6e592cf635590b4d838791a67a
df990580230f0254d21176457f0be3a
117861b9ebca4f17c69cb28fb4b4d257
24db19ddb06fcd3f9a6e43b878d5b335
9fe677b21938f6bfcc14f1e6f4f4f49b
8b65813c6ab0c972ca2bd098b9203af
5466493424ca47bbfca1f1143bb6bc17
91f3ccba290da90671d03b466c72ce41
124a579e0635b8eace19d55bc5e6a406
b95510fb88096a208fc2d09ac4aa4e78
f186d2998485c6ed5e9e2656aff7dd5b
b82731071bd39b66e4c15ad8a2edd2e
7cdbe41e6701c661bc0909d98a1ff2b4
d068bfa97f8407e423fc69eefd95e6d3
f0065f4f9e20d604521546825315c695
b3c7044fcd6f15c24b0a1bcf2fb497ec
9baf5b31d70e0d05e98d814cc4d9c5e3
58d23c8bf0902cc590b1d6deb98feec6
c1d8614b0e5e3f3bf5a498db2fc1d347
c12d132ade345228d75cdfed9b20c6e7
1e9acb74ad09ba97192ddbe75f0b85fe
448b45ac858784e9b020e22bd5fe2e73
c4ed630f9c0f728090b1d6deb98feec6
299ec43108d7109113ae47e860a2333a
9e617d72fabc718b90b1d6deb98feec6
1fc2625479e798b11944f01d3ab2091b
2ce94527ad7f57333bfdfb6cb363d727
f0bd0660d9cec23cf2b0736dd4d8afe0
ad9059778f3e34ed4c3a35cee92bb95b
b151573056013eaf71d03b466c72ce41
de543fb92592aa48236a74f773a58aa
b788ca6fc544c0aff3f3e17ace8695b
376466b562217c2abc0909d98a1ff2b4
157a81baeb10914566cf1b4a8fc3914e
7e10d8f0457cb48219ba010ddb4974fe
bf78d2e27a671fce4d4cb1c2a5e48b7a
d84bb293898861ed9b2acbfd8323f804
dbd74d18fa992eee7f1f82f6fc8747b8
b53ea9af10f2a151bc0909d98a1ff2b4
24c2cc372c63603137678474be485ca
52747021197c7eeeb1a0518c224975f
4bae467a3dad502b90b1d6deb98feec6
79784107e5be61a562347b4731688b0f
3e7e119508f0abf935fc197bbabcd5bd
f7bf32d3aecd197360c9b6e4c75a092a
8ce12b6b3b451b8ad0671652a4c42f7b
d220ffb04a5ff31abd46d022fd7d80aa
cf13bbe558f37bab4c3a35cee92bb95b
75916f78e72f90984b70ddbaea6e513
639d85cb4487bb0e3c326782eb2d380e
9b285862ababfc3a68222c7df7dc40f1
cdb17eb7b14c83f225e27d5227712286
8f33d2c0c08befe48caa71b1fbf7fb98
5785c8651893ca6b7209009cfb89d4bd
1e4bb798f236f0b17f1f82f6fc8747b8
e9dcdcd8963ba18f42bc0eea174f82b
eac05be6e7f3bfa99a6e43b878d5b335
37cbf91baa58d6577dc01d89d8a05b74
a9e6abca0f6bf69416ee5e3e330ec691
884adbb15fcb934051279f7b42f4d889
dc7a703f94b3b17667c5e3041553656b
d5ad529ad399086e4e9a6f7cd468e49d
b87185699318f4b635fc197bbabcd5bd
4710274bd87b099f19cd118ab9f114a4
d6cc7ffd165de05e2e2de556c136fbc8
5c8b6d47313dae4fca1f1143bb6bc17
a7d29332d98b7b8340a4a448803b06f7
be11ce096084bd784f95630cc18536e0
617993bd3425d570ca2bd098b9203af
ce1d767436d9b289e8ac6b4e1f12f978
dfa5d6ed898152d34210bb5f1b1324bb
7b7ebc856120f97a1944f01d3ab2091b
dd5310819d4f16d7b9fc567905a4b292
f40fe7461dc4e3396b7bd17e458d0dcb
4542b5cf23a95691ca8607f540cc62ba
398fc0e717b0cd524c3a35cee92bb95b
bd22bcf18a9c8163adecb6fc00604132
c9063c31d7b42fa564ed556128c71bda
c69c73793f459a2c3d4b1f38e3dfce4b
cbc73e8bc866ecacf7f795409cb230c2
c7e74cb0f2dcef904abea106683105f
4cb1c851d4333d1c4c3a35cee92bb95b
6ea7eb1ef18eabcf8699933784576e73
deefcd290f7f2f1a79201593c1eb4b0
2988a7a566ea79797209009cfb89d4bd
dfed744828fceb4d28cd0e56fe42c08
7d19ed245331582c3fe7930fce05ded
362af793b1d0084423fc69eefd95e6d3
e9f39176973edd33a8cba409c4409ba9
71ddef945e2ae8de7d64cad20089f027
2bdf8800514abd05a7d2c4e7aae73d33
d51bd83c27fc3167ba4ae55719e5e195
fb2204e98090448ebbf3143b1cb6076a
823de294a08784fc879e4d613e8d4e33
3c1e298b4222f4d15d3bbd70fc7759b7
7bd76c17b7194d571aa9d8d95b6740cc
a053f49d808b7b36c8db97d9bc169245
d64caea6c332861bcc14f1e6f4f4f49b
4eced94670d10b35e856faf938562bd0
a1c3287d5e847f866b7bd17e458d0dcb
388c9b9f1cf24ff84e61a0c2eaaabe87
5d6334ae2a0dbf70bd46d022fd7d80aa
10e4331c34d610dacc14f1e6f4f4f49b
92cf58c641a4e5af56a793e48de27b07
3391c664149308cb4f95630cc18536e0
20aec82ef5f61b0bbd46d022fd7d80aa
62a72a5afc84ed54faa7ec7d870d2e09
acb99bd964b1b23ad13ef00338ba8c52
535dad1777edb67bbc0909d98a1ff2b4
707cc578bfec0f671aa9d8d95b6740cc
cccf4d96e0e3d728c93b40751084c22
fc7c3ccb57f65337209009cfb89d4bd
a51d836a9349b2a1f42bc0eea174f82b
66493aa4ae7dbe40b6b87e72ead132ed
18f5265d553d72fb6b7bd17e458d0dcb
7d89d64afbb5b24056dd1ba442ba87e2
4f9a01d66d1de632f810506e9ae2dcc2
c80e8a74a31c6156bac66f0bb664359f
3d6b9ea0f212e93f26360e1e29a956c7
78551e5fc01df70f77fd7318510b8627
2a05d684eeb9c1cfae2ca9bb680dd18b
62fa636e217a3db25a70c4e5328e0b9f
b2235fbc13fc2ae0bbf3143b1cb6076a
d281db2c631c0170991ade27bbcf967d
54f0d46b866c1f714d4cb1c2a5e48b7a
d3580448933d00fd90b1d6deb98feec6
8504e370736b26604d210d9468aedaf2
1930a979c7a9a2d662b600da24e0965
de776175878f17d1f4c1adce71073351
cf93f33b52900c64bbf3143b1cb6076a
1c673748703c99207f1f82f6fc8747b8
cb5fe2eaa25b2518afd477f714c68df9
ffccda82ecc0d0f71740529c616cd4c7
a1ca5014ee1048081e06124bec25a766
d919249737749c36417568af9ae9577f
642e481ed56874eb19ba010ddb4974fe
420f92d84c88244b9a6e43b878d5b335
cb8fb401a278fc36bbf3143b1cb6076a
2d4c147d4d1cc40c582bf3113c3974ef
63dda61ab3ccc4304a3b534252984039
2103dcb213151791acf77e718d93f3e1
b1696ffd98c753ccea88a0a7eb1222bb
14d6bbabad3ad00dbbf3143b1cb6076a
45a4b43dc4c77dea6818e4a1f2613507
14bf5197d60d733f2a3ecc4a9713cabb
8682729ee0259ceaca8607f540cc62ba
82cd0676627c20b0879eac31511e27a8
ab0ab979406ed687a8e091cb544689d5
1385305478499e6c1e06124bec25a766
a99ffd1b1fd121bcf2b0736dd4d8afe0
eb43db95d804f40d66cf1b4a8fc3914e
d9f90f110ce30fbbadecb6fc00604132
77ab8bb69221b13bbc0909d98a1ff2b4
251313501093a024599faef54fd54e83
1896f1f8724aff33b7ea0a7ab024f81e
ddf0e3053cb1ca8f5e9e2656aff7dd5b
f2f779b4f12ea6d67209009cfb89d4bd
fad346b02d91348bbbf3143b1cb6076a
3dc5331ce579b2d0d8ff6111270336a9
68ff153952368948b4eba5f9f157d8c8
d07277bc3c95a365bd46d022fd7d80aa
c7b1ae292fb3d011511e2f9385a386db
446327ea5e2e50aebbf3143b1cb6076a
a50b4b0ac82a67d0bbb9a486df472172
12b25b8de7aa37a0bd46d022fd7d80aa
deb9d02cd1eda25270c4138179d9ed97
8d5ecf095e56cf8cca8607f540cc62ba
7c67e8cce3f3eb3c89ba278a735b3c5a
e0bb0ddf67462f4a8b686f76be476fe0
999539f6290b7072ca2bd098b9203af
d639c8d2f55982558b96ae1a0a8b84ec
64211a5d22e8ffad7209009cfb89d4bd
d6b4ad58a49bb80cd13ef00338ba8c52
ebda573deda43034f2b0736dd4d8afe0
8fc553e3a88b7ad54e461d462a3ccbc4
6693d4bd6edce2a7fd3f94e9ae089f96
131db4a650873babad3ab188d086d4db
45985e48353c65cfd14a90435b48593
110f6dbf0e6216e9f9a63e9a8c332e52
2c9d5fed0ebb4a544c3a35cee92bb95b
47bf091a7c919d1c90b1d6deb98feec6
b63f7eb03f91f8a7de04805f7d685d
5f8fa607106199e7bd46d022fd7d80aa
41d4250764619ff5bbf3143b1cb6076a
f0b22be59432dc8bca8607f540cc62ba
7bb1d2f8be9593b3cc14f1e6f4f4f49b
a6693555a4c0bd47434e905131c8d6c6
154146362c18b3c447fdda991f503a6b
688f4e273beef132f0daafcf2996daaa
3cdb3a166a13e44dafd477f714c68df9
e127b1f5ead603f9a5a118bd15e6e34f
329a018e131ece70f23c3116d040903f
4542d34685168ecf7a571401e6605fc2
8e47730a471abb7f43afdb9c81ff2967
b0fb094d1f0fc2a6766c6046535346e7
c8143c3384690147d13ef00338ba8c52
20bf5bba045e5a53fdd77aff53f4b7ba
7e52ac52a2eb74ac26360e1e29a956c7
c1e6d2235406d250e9ca68dea406967d
e501a0327ab3731d0f859db45b95a2d
d3dcf83f03c7ad2bbc0909d98a1ff2b4
9a3cb94af2f2a5b826360e1e29a956c7
f4b734236ec678d269e10d525d6df27
2495267afeb60584c3a35cee92bb95b
dd465efdee6a57e966cf1b4a8fc3914e
a9545fac33430c6062347b4731688b0f
f6f2905883c49d179e0d0faf84afc607
45c4867cd4554e7cc863ab010b80d9ed
47821cd2309d5a3990b1d6deb98feec6
7ae99c0cc14cdd97408827f71d73e45a
c8ea73dddcd80d901b1cc145b0144991
4100df683795dfa1f95dfd5eb5f06d19
a8471560d4dd5a31ebc34aaab30ca460
ae8073beb28788809f576466d21c96ff
37d2da0de056f5045bb2b764fed1d166
4a15b999378e1831dee83316225be271
7934ca36e240e91d5e9e2656aff7dd5b
b41f477cd3c6843094b9c9a92aa36f8c
b19927db257219bb26360e1e29a956c7
78a94b8bd2971595ca8607f540cc62ba
6f0ad1fb7917fd9b50577cf04f3bf74a
c5e04f903e3472c31883411175051361
5dbe5dd200fc214951971f8370d9050
1580c09f49bb438a7209009cfb89d4bd
3572e3fa25911295922e63c830b776de
6c87f8378066f8f171d03b466c72ce41
ac76572656c1e36ea79176d3c96ca1af
ab399dca637174fb9a4a28ef635593ce
6705821a6b32fb3eca8607f540cc62ba
da58b3e055132c9f6afab9f956f15ea
880715a3ef69f47e62b600da24e0965
a6aa2281ebfd822e9b2acbfd8323f804
863742f8e07f52ba4c3a35cee92bb95b
fe0eb72a9fb21dd62b600da24e0965
83cb2b58d88c0ae3f4fc64fb3aaf41d7
3881241b81d379644d4cb1c2a5e48b7a
304c2daaf96c79138cdbee8c4dbbdd7c
513c955bb46d739683651cbc8e49e4f
33fff5b8d113cca41b950a59358e57bd
baa972f48cde1dc290baeef8ba5b93e5
ce0c461237a21cefdb22b838c125a50b
dd9e42969d34463aca8607f540cc62ba
ffc1b82bec23a50995b8d6bdd18d56e8
81b67bd14fbcacefd67fc01cbf5eb7c4
29f514bdcf72e779bbf3143b1cb6076a
8d54e30dea0e2508bbf3143b1cb6076a
e899c19c87245ac94c3a35cee92bb95b
e161df613fc808b0d7ec54df5db5828c
afc2efb530e899634d4cb1c2a5e48b7a
b55748e796006e18b3f627c3cfda6efb
e2612c366bd11e305e9e2656aff7dd5b
d22521d217d89f8d5b1bb801ea1e2db7
758b67f9af18602715aa5b227c027ee0
19604020a86ab1790b1d6deb98feec6
95a79d9ea571592bc3e5025cb598f546
2117484d4ad547ae719b5362fe06bbb
cf96229978efbb488b96ae1a0a8b84ec
39ce355324ab4bc8b96ae1a0a8b84ec
dbab9feed7e936cfa87372b03d6dc78b
ac0234f2b9f195e3cc1281a5f11b5a5b
66a32714d2344d1bf52a658ce0ec2c1
735466165c04f71f62b600da24e0965
58e967e02a183d49bc0909d98a1ff2b4
2e9c1c3d866c4b6ce2c6d8aa34a5d35b
6c8275f09052bf66ca8607f540cc62ba
d39075b8eb890a898deb28944f3f72ef
94dffe91af2c8834fca1f1143bb6bc17
3aa98ec8f8a1c1f44d210d9468aedaf2
8da50272a54dee98d972c9dd75ed77d4
f59470cae839ba0e9b2acbfd8323f804
8af46946b9b2b3aacf0820a704ed425d
6ad44d7abe7492b7d89ea85a4a66c0f9
e9c78deefc2950be62b600da24e0965
59209cb5ba7a34633e1e5609a53c0477
e08402fb1e5953a2a93f0f952e72609
3a72adcf14ccec9965f50257ecdfa5c7
273e90f5c26654ea8b96ae1a0a8b84ec
6110cd7e771f0ab3a847e990b54bf80c
912219c657177b17774a720fca15e35b
1066b65c30d153e04c3a35cee92bb95b
79e924263f903feb35fc197bbabcd5bd
68b5cf1b10331dfa77c1f99ed297e3ca
ea6ccb2dfb61484caaa29616be3e223b
74797de431f83991bc0909d98a1ff2b4
112ca5420188df4bd90bfc986bc4c94d
b273c9007d1e364fca8607f540cc62ba
9e8f908bc6c822ae3f6fe63822cb343c
ca88882d06ee5468c34c40f49da8010e
9705e3c2d21106ced7f23cd024f22c12
6cf5d850b55bc9f990b1d6deb98feec6
f04b62deb7737c86d37636af9c7bcc34
e712867dc4c1a4a6d016d0153a25a372
bfa52c24ed71614f48a7b7802dc31138
5011e352793d063f26360e1e29a956c7
94d3a666d2dbc4385ff3feb917a6004b
5e7952b2d1a495f24c3a35cee92bb95b
73bef2b9747edffb8b96ae1a0a8b84ec
c330992ccc6154d82b6925c3587009fe
9d3eb87e69fba56890b1d6deb98feec6
a75977cd75acf0f05ff3feb917a6004b
d1cdd239dcbfd018bbf3143b1cb6076a
95fe3a31e4c084a128132d87f74ffe13
ed73e946a138f3cfbc0909d98a1ff2b4
f9d30b24d9651ee476c772fd813166d
b4e9ebb75081f146f6babb7d9ead7011
f57caba2eed21f2998459325335edae9
3a5aa99b9e9e37a6bbf3143b1cb6076a
63c78352b218c01a995425f067333fd3
9483e1b0e4222cb4f2b0736dd4d8afe0
c2f3e3a227aee9ecca8607f540cc62ba
22944fabf8a9763f28132d87f74ffe13
7ef375680d89c711c8db97d9bc169245
fcc94cf74fb886b7bbf3143b1cb6076a
5c63ad3688c623b1a787d03c28977672
df9d8ab5ab6f50ed4d4cb1c2a5e48b7a
152d35bcceab5592eb1a0518c224975f
865f434c71d41326c9d5795160525060
de3a0bb3f0ca87a5674fc9582804ad0a
94351a82955a6136c3f40f6a57084ffb
a94057f15ca19a33fd98271adcb6e31a
2ab4a5c3ca32ba9a4d4cb1c2a5e48b7a
559f9a545b9b98a1d433b2698458193
9634ed6dc8ecae0026360e1e29a956c7
48c4b6bde824e987a8cba409c4409ba9
6f96857e279a38793525b6164e3f382b
4ae3924f14d2c0084c3a35cee92bb95b
77410e47feee769deb1a0518c224975f
3029b9f2174da4b0bbf3143b1cb6076a
dae59259ed2a2951d13ef00338ba8c52
c476ac72594e39ffbd46d022fd7d80aa
6a861b7cf2552818181edaa32d7673d8
404714cf775f5ceed32761b337f8b72a
ed709305e61acf6a9b017c80f62649a0
d4aec2680be68c813a116bc3efac4e3b
e5af05179ffeb8fcbd46d022fd7d80aa
26950e05ed379413bbf3143b1cb6076a
1d1244abfefc781f35fc197bbabcd5bd
ae857883c77d156b71d03b466c72ce41
85c9fba37bb685d7ca8607f540cc62ba
e49d1e1d176ec1dfbc0909d98a1ff2b4
6d6b6777cf1c15106540a0ff73700634
58fadbeceb7e239724f575085333a65b
7e1646c0a04dc68f6ea66e6959004764
90489d6f74296c88daf24b8b932d0212
4c07126c6ecf5436b7bd17e458d0dcb
b97900a7f44bd7dcca8607f540cc62ba
72a74e13c2424c19f2b0736dd4d8afe0
fac9c4f0d5f239e4f2b0736dd4d8afe0
b7b657d7db3c3b8cd13ef00338ba8c52
a7751857e571d6bd3c326782eb2d380e
2b1a867569f9f61a54eefcdc602d4520
7462d130f9c7abcd5e9e2656aff7dd5b
2a7c34d4f5aaea962b600da24e0965
76a86e664e302f32fca1f1143bb6bc17
788cd4e599b0ca1819ba010ddb4974fe
7f4ceb12e48be00ea4642ec4b6f68a
53d0eca7c8ab5e644c3a35cee92bb95b
1f96a33a3a461544ca8607f540cc62ba
b19771099e1d3cd4d86ebdaa02a63c4b
c953df8a3f917663a9b2becd26dc2fc1
dea43c46fdbe84511adbb4c4e06ad649
317ac4d5ff597c9ae719b5362fe06bbb
8baeb2c664b0bdf4ca8607f540cc62ba
c489f0cb96399da63c326782eb2d380e
642b46912529c6e57f1f82f6fc8747b8
49131e925ef3349566cf1b4a8fc3914e
892ae1180c58b3e671d03b466c72ce41
640c9b76fd75aa94d13ef00338ba8c52
e50f001069380884b87697d3904b168b
d390f0246fd43cc8bd46d022fd7d80aa
21a1049ee5b7f531bc0909d98a1ff2b4
5515a62182afd357f2b0736dd4d8afe0
7274be512ba47d837678474be485ca
e761cf88524cf8f24c3a35cee92bb95b
fb0f2907b977e7cb67c5e3041553656b
1e358e70c047687a1a8831797284b67
65166f18d4ee36a61cac9affde84fd21
accb9ee4edf6af6ce4080dcedcbec993
296c3ee559f87c9354eefcdc602d4520
444a58c4c6bfcd6c7a571401e6605fc2
9e30fc9f2d9ae56e3ec83bd6bef75c92
55ce4fc0b3df0234bbf3143b1cb6076a
c0c32558decf271df3ad4b0977199f23
bf5d59729b0c0e336cec6e2299cb4a76
65b3e612c00a65a6bc0909d98a1ff2b4
84e45a6f079cfb9526360e1e29a956c7
5f46b24028db58f490baeef8ba5b93e5
ca8e8a54b54b41eceb1a0518c224975f
9bfd7f4ecdd8efd8bd46d022fd7d80aa
2502fffc569075b152486b4487d562c1
1c87b854cceb778615aa5b227c027ee0
ba1358d41ef026fbb87697d3904b168b
8fe1c92c1c9ff33fbc0909d98a1ff2b4
c5d0dd7a7b44b079a76ffc04f04676cb
8200621d7b5cb84a6b7bd17e458d0dcb
2c3df6a4d0ddc9a69725372054c2f091
211cac5d62271583b85f0298cf43349d
45145c5e7924dca8e991cc67fb9c11f
16715d886ecf0a97ce2cec85ea6ae00d
50e793fe39e527b245f31985fc702c6e
bd91c1eca592312048464d2edba1bcf0
d63bd140efa537dcf73e5bc170b7e2be
a69c25f93540eaed6370c33da8a7988f
fdb87fe46a2dd5ae148cecac5cfe1090
99b2ee98a16b3c0b1338b1079208569a
2026699e25ba56c5fd6b49391fda17
ad98f06fa29c52eb23db3adbb2f1dce
b1deb3638098e9c92a4947824596dce3
2af93e42ceca0ff7efe7c6556ea140b4
e52f809111bb75692b5a1d128057b6a4
a051219f3f444fadc5e2bf7b5a5f1c56
e9bbeedf2681b8ad154c6bbaeb7d331f
7279a912e89a6f00adcbeb54f3d014e9
8ba22e93df58242b61c0a7e9e23d6288
de72864008c4db8bdeadc9ca0263db5a
206a4bec609b727566cf1b4a8fc3914e
577ef32f6c313a5e4ca16f43c2716caf
900771de03746670ca8607f540cc62ba
3caf95d83fcccdcc28662498a294724
f5a8cae96024e709c1ccec171a275967
bf77987a13fc34b5b6c7da997b0e5e3
fe00bf68a2cd32b6dd455eb19d4d269e
5a6eb0f2a316f23666cf1b4a8fc3914e
e52f08852429e6117dc01d89d8a05b74
989da7f7bce36747c6c291015ab44100
2997fa1441eb7bb735fc197bbabcd5bd
f21a375ca5fd26994fb6540b6bb872e9
aca6b424287392cf3438e17bc657daf1
37f251fbd5e094348139630c61d12904
707da8b9f37fd990bde4f466a45d975a
d3856a35d1fb8536d8e727806889c9b0
cd9062c0065ee3a4727e0d1e650e3b69
6af4383123972f2262b600da24e0965
8df55e58da6c297b4c3a35cee92bb95b
5f11d3dd6ccacf92de7a468bfa758b34
86012cd0bb6727e9e80771be8faac585
d532217c7fabf1d44e8b48a4c01e36f8
e18b6350437cfe0d727249e8d9a90100
bf448fcf33a5349619ba010ddb4974fe
fd6210721415e4bb51a9048f9848535d
2bdb44eece3409a5a18e0889038e4fb6
63a2144cfae402149b30aa09067b7eef
48fed12884533a5fe48f6bbab67fa514
bc764c59e4bf4e9f508cfa5a106b05fe
a3bcd8767d2827626f5b49394e7f4cdb
790e9d3a9e037d3efa86938af3fa9595
b4a420a55d3db8aca89fa467f217f46
1203825bf97bc3524722e1824a086fad
67e8571eceec1ea44c3a35cee92bb95b
bf57639c6735626282b3aeca5b3e7150
29120728132e5dce42a2048a31b7df8c
78c3a29d1153e68e5fa2a5df3ce5bc40
4cbca5f95cd6cbc6e59552931a2cfd3c
2f379576475cfba24c3a35cee92bb95b
e88a8692a22d548e1ec438f11f5ea1c3
5df7124460d8cd14fd17e1e0553418c6
670d455bf1bdaafdf577ff4de1ac394c
911e9f0246b26b309f789b924eaffb62
641af2da275049936cc53f9d72e7fec3
8615ac14d65e76efbde09007ce74853c
5e34c340059f5b4b1c97b7d78f1a34d4
22c11b2bab2cf93fc1ccec171a275967
e08574959d2cb7c8f6cabb305f7d6d18
afcb946d2d36a77abc0909d98a1ff2b4
c398f78fb73ccf29751c7a6f15617f4
b458bf7d57d211ee43bc2645d97a220e
72aedca98ea4429c8ed4db287040dac1
f2f6684e930651df3dffb45955223d25
19e2864af4f6de438050e8e370967931
d15e3519a61c5bad86442c51e82d8d69
ff6f81eba664481126360e1e29a956c7
c2d5bd1215248f9c8b6c29bda2bc905a
3a92789dfc5186dcfdbac8c3ccfc63c
93e0290ab5eede3a883f7527225435dc
1c16739bbf3fa7c44276157eea5f8676
5b048655453b37467584cbfee85fb982
d708c311bcd60e61c9ac656f0c2edc4b
e521828113e1e0c45e28caa3b26a73fd
945b33ed9d6844591596c26b5af806fe
28add8a00a7bcb7318d508b491dafd46
9d65814e1b252fb01636caafca838500
f7298a13f6d1644472a4466eb772f128
fbc7afa847c30a4c183bb3a05fac486f
f144e93fe2a11c1f4c3a35cee92bb95b
dd9ece07d4bc696c2bafe808edd44356
fd3a9743e16d35e51fc210a07910eb2
41c7470ce9ecb74b6f9423fcc87803f2
6feb039c710277aabd10f71f04d299c
91ad0ff431597651767529f9ae81ac0f
6021cb206f3db880c57b4651eeb679eb
d3ecaf6bb9395131d563154e026c3490
7f1eaf37fb4e24de82cea33798fcd6b6
ed2aaca045fb1714cd4229f38ad0d015
d59cd5f2012a1ca1aae46a5cc955c766
b23e79036b214fd4ca27bba175814d1
f5bb02c0df184488e0b6c670e0e97766
6d3965fef2c63d37b3a197029fcc978f
f2fda88e9688fd81d972c9dd75ed77d4
fc5d7c28e254a0d84c3a35cee92bb95b
71e9496397481233a8cba409c4409ba9
c00b97813a9cbd72ec85c5551a78ef2b
ccca0685aa63308ed54e5c2e672a56dc
d80afa36aeb72c552b5147716975ed8a
7568400ccaa12eb9d972c9dd75ed77d4
ccfe789ebc77be87e71a4f02883f26bc
315f523d0a924fb7ef70df8610b582b2
b65ddb8f80d8fb562e38f6d9568202c7
9a007813a38638c379a04281ec8c6618
32a547e29d66132110b2a26d47842033
72c28618e3273795f9066cd40fcf015
106dfe858cb8fbc2afc6b80d80a265ab
faa361f642620bb72def37e9c0b35d0e
6ca6c7920c62773073d96deff5ddb8e5
eb85e7d86e2ef861e7cb9c477e2b7be
bc2c90ea00831423908b15214255bff9
8f4c92227704fdf11c568754310e5f73
7e75688f4b185d4193a78ffd70737098
875d75a0aef86850b6b87e72ead132ed
2c932237239e4d22181acc12f598af7
85fd79b9fe5948ff62b600da24e0965
7c7fe1664a1f36b8ad6a38fcc21e6e9e
e5bb559c00276ad354eba1f1b35fb0c1
4e85ef428689df5cede07437dedab44
a1d2c8b24476c8ee70d98a97e17b4da3
90bd96c05c0208c642d1180c659735fe
6f8e17cf5180fa96a911ef3962f7cae2
72fcc9dfb927311935fc197bbabcd5bd
d8719b491412ea0bb1cb87d703a74b6f
ff13be97bdfa45f8254dc1d04198881
9fb0988ef701a11388170d426b6605b5
2751a0d9a1effa41f0b8c8d7a19e0d9a
cce565137003bb39b2da68ec42b2eaf6
4f3f39ddde5874f2db73445864b72015
da67955425ffe66071d03b466c72ce41
5abba5b86814b98a9f4ab5ced9b9495
f40467cbad9ca466eb7d375d58cb985e
4f5fc434ebc03254fc7b1255b2e02e3f
ef20d432f2a7b1752c164e0c5ea74611
c0796e38ea7a1d9fbc0909d98a1ff2b4
265e6c77443c74bd8043fd2260891a82
5793a442744f4bcf7af203abeca5ce86
68a423eea131656b1e2b909763d0fd31
f71028dac9b396fe80288501d9901d7b
105f7f51e4140ee4b6b87e72ead132ed
5213a6520cc225a0fb5c1b0f759e2bc1
fc25e0cdcb2ecf1ca2bd098b9203af
22795c32b54719dffaa7ec7d870d2e09
16ef481509c64f845dcf422dd1ee66d9
39d7e8e001e0234e8f721bc8b8155d7
4f2830d3d566220be5dd38f670a033a8
d5b78307fd9a0764bc97347c46fe15e1
d56fba80d39bdff738decdbba236bc1d
8b72934186e1d8b0f510cd52a5f27547
eb8fe6d82d195ab5bc8feea465aa74f2
aeb538b2f1c36a8d9e811b082458229e
604392af2cbb7d1fe30ec10233e7931a
6778c46aff633538c0676369cd1d063d
b6dc4ddde769573df551b6c3f174499e
a02387f2b9d73a01a5cbab5aded19a14
bdbc01a1bea50bdba6cb562d18000d3d
c3454da26509937d4b4c1e25039af4c8
2818edd47cbd2aa1afe30fe053f7a977
fa5c740ca9192b708e8131a047a07ce1
d984822941e7a768c231d70e1e0cc567
329b62a63e882c7c71d03b466c72ce41
f016679500a76fbd8badc4a9f1acc937
18806a80387734b754c7b6e11bf7148d
d64f391dee878277bd46d022fd7d80aa
8a47b24f85a0eafa12234b062bc6c471
6659e72d40cef80be07c29b23ef67611
5d022668941c6559b0ed23034a67f7f
2ba980d080f89581ab2a0ebad7754fba
fe82a9934a38997866cf1b4a8fc3914e
16f81f41ba16edebca8607f540cc62ba
6296558889cbcba8faa7ec7d870d2e09
5da145252e095024ee738cc95b5ae8e
c2923f0931fa539f794f2d24bb38b7d1
83b55a6e1677563d6ae6891f58c50f
f88906b677e97695f4126163bc622a34
d0b7060229617935d2a4e6ac398c976f
4d0994838c31434cef5f09964a6a1f97
33a4f9403600f29c281f657e8f8481a1
39fce052e13f97a57a10aa3eec436422
6baefb84d6e12a0c6bdb424f4ee7ff8b
3576bf753aea3dcf661f0ad700067cc
31fd02481a07471e4e8b48a4c01e36f8
ade3c4987f49895ff960bc420d751255
8ef4637cb349584420c6a28228acb628
e3f562bd552fbb14496e2f80fb255499
fcbdaf6100aad67d5abb92fce0f1ced2
66bdf712963b9a17efe0d4e1eba2e3af
5efa09bee2cf193afaad157818f6ee1e
cdbd857f25b1597c711d3e79ce66dfac
7631caf6989bd17e4a51f4b900f5eb50
b30bd72e684744c521b1ceea9c93aa79
b644db95fe32d115d8d90babf3c5509a
934b1ff5cf72b25c4310636931b68fdb
f44c0e1e55a3469494f3355d9c061b5a
b5b0dac4093a61cb3f2b01de37c0b29
9de5723b085c9dd8f4fb6842b3610149
f3cbfb52ea1c907a850e00840470903a
5de885a47cf8aae2951971f8370d9050
10af5de930178a161596c26b5af806fe
5f73e503595094b783b772877a547745
9d72d4ac799977bb71d03b466c72ce41
3c109726e03fbac4ace5721ccacba16
150cdc45dabde04f7f29c61065b4dc5a
6fc4f30540b2fa9dbc0909d98a1ff2b4
3826bf5c55ee469cec4dff11e684b695
132fc603f8f69b08e816c75152573ee0
122776d17b6a118086da73d36506db6f
4d3fca1d1cacc27beeefea58691b769a
f25ffb9cf92236fb9671f5163e7f6535
5fcc974627fb15fbd1491f61ed5cc034
5b3e534b2d022a9528be5258a76a8dcf
862f246e54900f48ed4212b3ec7c4371
17bc7631cbdaaa0c932e2c9d273ab571
391b9c5bb875607c19ba010ddb4974fe
ba7d272a0ef0f06cd165fddf32a925f6
46c259e87609c54fafc0cc47720c0ef4
2f576be042897eae38f859e2bc79169c
f5e271c3cb2edc1681209be1a5e8b10d
1605bdb8709be6773c4d876662ed7ef0
4f1fb7c062c50fb15a2c5766752aea65
a9bbba73d3fb7688b6b87e72ead132ed
7bdf4816b61c0e1748766ee3c52f8ba4
3a7e89dc355faac111f5789deac2dcac
c1262e16d330f7a0231e16e03ac422a0
fe0b8ab916cd568d749f4ec7f5556c32
ef6db5bcb6bb96ddd2f0cc036969ee4f
9407c551466b346450e5128bacca96b5
91948fbd89e316b9a1efa53c1b6b3c23
c06b54fce5cc4961c9d5e99e50e5e709
72e68e04a203c96d873ec74c119307b9
3a7e396786751f544c3a35cee92bb95b
b1f056090f81f992301e72365eacb45b
6db64533897238af392d539dc5a47ed5
40d6a54bb4f276afefe0d4e1eba2e3af
b3c37b67cdcfd68571d03b466c72ce41
99dc4702d20942da18e0889038e4fb6
fcc2023fd98e157f2d99c69702933ca4
eaa0d465e9d0c16acfbf0f1430c86945
d353b227b279804190b1d6deb98feec6
6720352c366eba1a60370f16a3e15e76
dbd0efc89242cc9318de900bee20377
949acc63ad8f8816e816c75152573ee0
60f99c0946c095e833b2a295000cb6fe
296d0aa10bd7ddd87965b154b2af39d4
ce5310bbab4bc178d7a85b8b6dea0a54
80b9b2807547a2d3ab94ae13bc67d41c
5a399ad6696d587d5e37076261ed63
525f3ec38c3baa7a4944d3c8bf9547cf
8af65c495c966cd7c337e45399cf632
e3c26c3920b93f36eb7fefaef8eada2b
636dfe39d75701b6cc14f1e6f4f4f49b
7ee2912263fa4bb36f14b7a660f4c864
a1bb5d1a075bf7fc37d1c8fcb5a639e2
edd9f45c7c927032db5e5b1ef1010d8b
c814a53c1538cdca4f7e1991902e92f7
4e3e46fa987d0892a185a70f269c2a41
d9dd8dd2c422dadaad70e50d5d7d02a5
dbd589812bda0b1ebab624e35355496d
d18592d9615b01bbbc0909d98a1ff2b4
f8f4cccabf7ac33b199dff268d0aba38
7608d7a5a3e3c2b13d4b1f38e3dfce4b
78ceee44d207e826c87f6dba8af25d8b
b831f60f211435df5bbc861d0124304c
d0456644386d9149ce593c35f70d3f
cbacce3a17e061251ab9df4be75138d0
ff12c3a1d388b03044eedf822e07b7e4
8c6ec24418f0af1950e187c1fbdbf3ba
5f0e7de6a86a694d3930849f1d75b1
d777b1e4ba72cebac5353b0f3cdec54
22ed115500e9648c5fabfc69ee61b28b
a1a58070ca1749d76abbb3e202b76402
58e7f5046a0eb6474298cee0ed15ce9
b9794f4722f565e319ba010ddb4974fe
7af320cedd724bc89437816457a69b
f8ceed6c984895079a6e43b878d5b335
c7749c0a8b61f43bc9b9e28055202e3d
351c9235749e398162147e00e97e28b5
b76c6ef211d627efac8c46f8a114a34b
77a81458ea729c62ace5721ccacba16
ce4b8076f8f9a5a05be07e24c1d3227d
e7ff46a15ae32ede7480441c35610069
aa4df918db6c5973db6e67bf56014264
a162465f9664d92a94eaa56dbee38b5b
afd43430bd7c689f251fe573763aebef
2a06adfb446c85c9f9d3f977c7090b2a
209bb7656231011d7965bced3a0d8967
b63c554a915454b7a8481a97c910a7de
cff4a52406b84da7aaeb49542c2cc445
4c3b1356008b3284e42e14fe98b0b5
313758cb2eacbb576d3e60add9f0d715
276908a82ab3728e6283c6757ac506b9
b7fd11d4af74b4ffddaa0161e9d3dfac
c4433144c905ad0b71d03b466c72ce41
a9240313c39307574c3a35cee92bb95b
541db123c3ae32cda91f7285bb2efb4d
1de58c7eec71b438bbb26c14135f164e
94c4ade39534d1902c13e5b9ca0fc656
78edc61edc8835b5bc0909d98a1ff2b4
38a8e07ed9b0da99fa7918e5874b2c16
5cfdb557f5fedd51adb50624aa91e8c9
5aec07305ba4bd3d66cf1b4a8fc3914e
7ee59463dc17ac6e3e3f3c9608255377
2677c3793143e75766cf1b4a8fc3914e
22393fa9307224ec853c6f214c15e60f
b55af8905ccc3b35102bb5032a53eed8
baa3e1edf8870f755f1a3e0b9f8002cd
bfd02b9a1ad7ce73fe2d13a096d8b561
3e9ff76da8ca4885d0635288642e63e
7175100f99a61c9646322bce65ca3756
ed7eb0caa75661addc82b8fee1057b30
eeeb30213be73bd14c3a35cee92bb95b
a69d6f9ea766b9d1a13079850f677b69
a05cb1f091b01cc87aaa57326478bd1f
4561def0c651631122309ea5a3ab0f04
cc6041868bf2913312b981fe5abe4a07
a9b2d531e073113f9d1eb836604648db
f8038d33c212f81fe99ea3c41458bc01
530540dc968b396d7f3805c1aec66f00
4b0f44a76ef66ec9491bc6c980bcf9e4
136c2b868c5326dbba5db366aa3ac475
9f525ad90573de3dccc19f6800e20c43
63f4d6895e0de9079bd3f7086e6031a
94981062a6f3748844750bbcfe7b8fee
3844797c89c5e2e821b85e5214b0d6a7
87cf8f265536d4369a6e43b878d5b335
2764f43226260c94a5a118bd15e6e34f
d1a887a47991d1b3bc0909d98a1ff2b4
679d4f84caa5a1a8f019a51d1a3b2e07
8eab40ab482a46f04369ac253fd9f7b2
b65ac56abaecc35bedcd88be6151afb4
b0f3f0f754c0129486faacd7b0ac262e
8f39d2dbb98bce6057b643a522b3d830
b1dfa9a6274688cd29ba25678ec45698
ec2ceb5d65007bacfbb51ecfb25331aa
8b851217c2ef15b8eeb11afd6f15c99e
7662fbb435dc1d0760bb9786c97a649e
de5cade3966a1dad94946b454cd190d0
ecd761d36abc0fb5250e498b1554a6f
43e078c68d2fa3b4d5d30e1306d90d74
b9168b74c6d459e65a73760c6feb254c
dac25e0fbef7dabaf1692146d36a4a3d
92497dcdab4d0a8de1e82eac4119b0b3
5e0331eab3f051988f6810e1a2b6aa04
224a8b6776a242f8adcbeb54f3d014e9
35835c28f33d985fa18e0889038e4fb6
ee672fc1455b9fc43523242fdf9b75a7
6187d076d53429aa67c54439d6177032
40fefe66b018c17b4c2c88971423d0be
2421f54274a5c237e8cef78f8179925b
5c43f5436b308ed89a6e43b878d5b335
ff77ea82fb4a5f92da9afa637af35064
e6e8f0e244efac73da2b0f839aba40f9
76e66ae36d942c494c3a35cee92bb95b
48c2f17fd1610cddf9b189ce48b45ae1
1397f5bfd89673b21fc43d5b32fa230f
172ac13acd9aa91f3df325aac2f73830
47c7b3cb099b3212d1c83bc8b134e4d8
e96cd99f545a4d22b0a339fc52929deb
bad95673c40e3bbd66cf1b4a8fc3914e
eefb4a1fcc2ca4d8894e22af7ae821f8
10cfc2090a2ade124c3a35cee92bb95b
eae845d4a7945ecaf2e466e56cb8c63f
77dfe229aa38e70b3fdf1b3b0fe86dff
3391b6520218cacbf27ebdfa602af873
6044301c7b4c63ec90b1d6deb98feec6
32a2723086f770e9233d80f3ecb7c6d3
c8b848f32a850b15e816c75152573ee0
e51bd7d434d1ee6622096c1bee7ddc7a
50d2629e7e96c2883034111f96c5f617
54984229a5e704f2941d71475449eb25
7220043361fe9e50eb983188eb4e930b
dd4da4309c12d47bc2c2c81e2232aa95
a73231f3d0342db94e8b48a4c01e36f8
7edc7e17171b488bd33efe8cc2e2bf98
395afa94dd4d549670e6bd9d4e2b211f
253a1aead30731904c3a35cee92bb95b
f214cf57d5d5634960e1e93111ad3e76
e93a2143cbec37a173fac4529123dfb2
9f21e660ba62b9c8ac055f4f708c624f
c600de8c83303e6a441eeb748bfdabb4
4244f171a6065c2f71e3a79f2415f19
16d40e779903e77863b132896d8bc65d
fe58e1c34a7fc8ac7f6b2c9a3874dfdf
3fe365251b54087af0478431b5ad57db
1f5537f4747ec847622c69c3abc6f80
733afba7f61652e789850bc84e2ce90e
3231fc366c6f4f3cca8607f540cc62ba
2cc1ff07bcb27de4f64801ad2940cdd5
ff28d340bf0b5d9387b2a887422ab97
d4849eddcd93569ac119f94203b4868c
ca0f8f701a042689331960c3710d952
af69c8020fa9b68366cf1b4a8fc3914e
78f32f279a50beea216b327569dd806e
46791426a5b92fed6cc9876a2c35084c
c950fc7d559f30016e86a8ae6e1f4d7e
676e568ab8e286ad67c54439d6177032
18d55087d052ecc86b7bd17e458d0dcb
3af52163a2d0551d91637951367b1518
83dd9dd45724d5fbbeb310a83b693887
56616237ed5168f3a18e0889038e4fb6
5aee97ad467ed9d75fe4b20a3aaa51a2
6ea4e68428cba49f68557927e45c29cd
23e30666530887e69a6e43b878d5b335
f0e7808ee55510be1a7dd57f67482196
697002e0242f331eca8607f540cc62ba
95a6c003f5bd8a4acef4e20384a35136
46d4d453ceac2f5c3c3b254d8683a766
7b3ef304a0088b39112e53a423c9745e
7a97d3dadc608b4350f01eb2b12b0a8
d9c080cb6634a902ca9f0727e23831d9
9465be8f818fbf94b01a0cb11141e033
886942791e830bf1d32b1717fde97410
1d6afc44b053ab07941d71475449eb25
6dedeb5b87ee318b2154ead1f7ab03aa
57f30880519c8270e58d21f41272cdad
43beab0c1cc46ae641b5a73cd6c05ccd
1f3fd9b2ce99e4ed164ee3a88aef3755
8b3bccc84ac7d534d56132409b00c58b
6456e87ff00e31a96efa61580a088aac
cae48a376cb607547d3b11085e75c7ad
d2842bc324b3dac5bc0909d98a1ff2b4
bb976c45b6812b9254e2b6da60f72ab3
b77aae4fdee662f487dedd9dfc0f1d4d
12877bdca58ccbea402991f646f01d6c
5869e6c3e9d2748e5ff3feb917a6004b
a18f4e4c291761fa7cebb3dd777c66be
e2275ee8d6b175f2f446f92b52bbd82a
c022461863cacb39a2872fda285c0d5f
65d7ed8984d78a797c9af13aaa662e8e
6f473d567942897b9908db9f2ff495fe
5d0d3f54c5d9dd386a1aee7416e39fad
675464537c846822aa7669713586004c
783f3f72d5639597ba0d990ae229b477
9e524a14078824b5cfe15db7c5db913
cfaff76a1503d4f562b600da24e0965
42dcf7058ed936fd22362be7f5226e91
87d37c43f41871fb4dd260a1dd3357bc
c6ab8acad9e61a3e48227c7754aae2a1
e87902d01d40c71521b1ceea9c93aa79
229c164fe2c80acc1ca2e8373597f711
8f39cc306f68c89c8139630c61d12904
a0fd595fdbd3a85113a96c178eda1cb8
56c605d0b1bd86a9f417244ad1b14759
eaccb2ca303223afc503a3776fc280fe
f56cde19efc8d428b03f97f6dc2a21fd
723c87de224355b69878ac4a791083c5
ad66ece988a63911643ae903098a314
aeaa3ef74dc4c60c95175320d65fc89b
221c079c90d4d5779e9cd6cd13c91bb9
5bd746709adf5b3ccffae3eeba6126e6
759da7376ab2196a66df9c92bbd3d5c1
3c6c4be95d2dad2937b25178f54477f4
94056866a14b015a50c626aa72455dae
bbb8ec10b86465356630654359fc97d0
e0ad511aab31dfdb3e237dc81fd8be72
99ee9ae50909ac0cd3cd0742a4ec7e9b
8cf06a71987992cf90a51833252023c7
a55a46c1442470aeace5721ccacba16
831171fab182f62eb115cf6cc3371017
c7fe2215d41c2db3a45193285587808f
572cae68af04663cb145cb2b20ac87f8
b88fef1090e6d151b3f2b01de37c0b29
fc5dade8622f686b4aba1f0cb15b1439
c541b8c49b5d2d8e99ad3ba13045dc42
fb110c5d01f1b3fc59dcf12563d8fce3
1a963a929d9b1332290d63dca780cfb6
f1b3408a3ba452d0c1ccec171a275967
e8289fd7e6ab0df4d37636af9c7bcc34
e4665d76bf8fc441536d5be52cb9d26a
92e2aee5e86c0fc870d98a97e17b4da3
a922f408bb1b1ea1f2cb090f7f07d463
a281b2664e7e5b2fad9d7d48f3cddb17
b2e86c7880a56b6f71c382fe82cf6e04
efbb9337b9bd3cab56ed1d365b05390d
ea1aa637a6cbe7b4fce29e20147f9d9e
33c9e81a88866451f4fb6842b3610149
21adc93a24e86672f054f5e37c7ac323
7fa1d1bd456f0fdf6e68e46a69a2d96d
3693696a7d11f2a866cf1b4a8fc3914e
8ceca54101f96a96d972c9dd75ed77d4
9f18925334b6f37bd560687a81f263dd
9cb21d68582e1c4ec1ccec171a275967
8ec085a86e6d9425f4fb6842b3610149
8e50f707e506f65f66cf1b4a8fc3914e
20b91c5ceb005cc44947b319a9e09fd
9f40666fcc14828abc2db24227b9dabf
2af04ef09d49221b85e5214b0d6a7
b07608c9c3962cf4db73445864b72015
3b41c0837f22555871d03b466c72ce41
a331e93c3184742853a6ddb5892da51a
f963bac7f45473cdb33bc7516e53285e
a63e9d5df0c56b3f099bfb561edad43
d5189c00524f662c79f9bc8b647dba0
fbe213adb802384db443c685f436f80e
65278860c7d0f3704f59c2a67aa8473b
16f67f87f414a5df26360e1e29a956c7
d441a12b217c26bc0d5f9d32d37453c
2993c233805d2718ad8912880b776dcf
e25794343ee37d6fa8eeb11153b68d81
751b1e75fcd7f1deffb814dfce3ab22e
71a3c6e1c87c8b42233f6392bb87bbd4
c62237ac28c4ed61efe0d4e1eba2e3af
f3660119189d3eca4c3a35cee92bb95b
18d994c4f8362cfaee9d01b4b18e1b2f
e5c98b67c146cd61e816c75152573ee0
6fe837570383eb98f72a00ecdc268a5b
934d7c130fd419cdacffbc7889712a99
ffbc31352a34c3e1ffb94dfdd6ddfaf0
f533dc37778c6f004c949161e83c47b5
a762fe69269fc34b2625832ae05a7344
2980f6ac8412890548437f47a316427e
7df1ad6363410383f3cc56bc9bfcde3
f6f5efa1554038ce2154ead1f7ab03aa
a00f6bbbba234739b92527b70e93ee2c
70e4200e848e653072ec6e905035e5d7
17c2d3e052dfe73f9cc1fc25372199f
617a3d4bb40402679c411d305417ef6c
6d52412e798efdeab87697d3904b168b
882c6bdea5fc5e82a3ee83e6cad78356
909548225096784cd5cf6c89d6cfc357
d54a694d514b1911844ac48bcfce34
81bfc74dd037d1ea88d58cc5b9d401bb
bfcdf2928e854d109b6724d4f3457e3e
ae8a5344a37b2649eda3a29d4e1368cb
b7b8ffe2f07e4eff95dfd5eb5f06d19
b2dd8a3e977d8e5f23c640e813cbc041
b8fbf59025f18f1ccf5fcd318778a0ea
34c656eeca31045724a182d01c698394
56fbecc11e62071553a6ddb5892da51a
dad83c903379cb9cfa585c96250561a9
b3066d613364710797020a1f4453e3a4
5903b9eeb53f1f05a5a118bd15e6e34f
55d0772f003a362916c1ee83fd7a7f1a
b7023a2bc0b1c28142edba76767f7bf5
b02aa659514366aa2c6868c67da0489
38884564ee0da15798494085d68ad6a0
1bdeb4aaa0aaea4b4f95630cc18536e0
4f7814692598ebdc7dadbbeb79fd1fc9
e332fb3eb2c4016ec1f9d235878ff0a9
f7f915160c0e1f6f42bc0eea174f82b
c9620ae77d3eb16ea3123c495342b850
64e36b948869a79683653a771e25099b
67a6b5b12ba64c529a6e43b878d5b335
ab35aa631852d30685dfb1711fe4ff6d
cb91205ac0f2f62429dc68c96bb3c4
42d9f626ba4bc61516c4bdb2c8eca27b
b501466a5a77f1173d2cc3e9d55f7579
560e0890ae86aa7624a25a765a1075c2
86e19045d9f27bfe269856bd6e519d10
e58010dd5766e0ce78f081615c34707c
7977f492ebf2c1d5ce78be835f7c74e3
eb7bf553e500b9b544bf3710e93f8cf7
7a3da3c75d98e44d7d64cad20089f027
7b485e11f80e0577bc0909d98a1ff2b4
46f9b86c1292366fadc12de54d203570
2f5c1ef50794aa92a55d095b876bb574
28711664a9d08bae46322bce65ca3756
688c6d406c789b8d71d03b466c72ce41
db5146b7695fafba78d7c0e1adfe122c
3112ef52e6da5d6142320ab3b0c39c62
e4bdcd6baad501ab2a8b9d468136b0a1
f7160900b6ce7bc4e63e266a803d9270
d7f71651e6571ee2f63894cf4226f14
52b2c8f99319167c71d03b466c72ce41
b3dd0a06e7f727449a55c6af6f4b2bb3
7af2dfbf11201feac3ab86afd1c689
ea527508bb74f476f64801ad2940cdd5
1d4fbbf681ba892ddeddb5c33cb2f8f3
34e87dd1c4922f7d48a263e43962eb7
6509073d1ff37d683d41f76be7f2e91f
7af9fcb4a2c4079b873ec74c119307b9
3a6f0d1cff0aa524567ab83a85d8a5a0
d1b407350e61150942d79310bc7e47b3
31d1cf39b807c856efe0d4e1eba2e3af
be5d2c935a36894c92cea77f96988ae6
82e50255f14e7d9e60c9b6e4c75a092a
2407711ff7759994101cacf58b339533
d8a8e238987fed8dbc0909d98a1ff2b4
e7158ecb09050b03873ec74c119307b9
eae958f99bad7dcb18b14db3b83de9ff
926749549b15941e6455d739a5cbd8d7
a4ca564574e55f1a66cf1b4a8fc3914e
79f0a9d3d78764ec19ef6dae2862f036
f944c570191885e8ca8607f540cc62ba
b29c650e4d7582d11ae96ac7591d0dc5
aa70737ddaede2e3368d7e7849f8df62
6fe8da29821a60d75057515802db06ab
b7bd7a753da0aa113ce4891c7dcdfb1c
22eb91041de27ca4936b2c59e7c43ba
a849d4325008fbea85dfb1711fe4ff6d
a367bcfb5d26801a848c716e284f561f
fb5e00c769fa06e7c277130bc8102991
8463c1f30bcd9151b92527b70e93ee2c
10155655850468db78d106ce0a280f87
480ee59947a01283873ec74c119307b9
d6ca5966c5ed5b86da2b0f839aba40f9
f36ac9cdcf15ac8497492c4542407e32
68303a007a6c8ab02d6ff44f79e93a89
ace4fe6e9c97150a35fc197bbabcd5bd
f8fa93d7b17fe6126bded4fd00661977
ec531add757ad0fa9a51282fb89c35c1
4204361e3781952a8e951223a21e1fc1
60b5f5da40e0dd33579f6385fdd4245b
8c2d5c6dd599a5bb68c7efc443fd2354
8c3419a655600e5766cf1b4a8fc3914e
35611fc0fecb7a795e02646e6b8fbe8e
1367266dc0a07c925d4533028830a79b
c05bb681e0ee27e2eea65ef742e4d989
6826af6513566b12f4aab844bf68e35e
cd846470dd7a135d29ca62020db7d733
5c9b09738d7920f0546100d9c41f5274
2b2cf12a1fde287077c5f5c64222d77e
99e1961a72bb8ac46177b6d1ecbf989
1b626fd06226b600adcbeb54f3d014e9
c93f76888cf5a14c93421b5e4ff654e0
42b71c3f82a845574c3a35cee92bb95b
8a343fecfe2b8660d0fe0309648c1f07
f858fdc6841407e6d4bf37afb4832e7b
1dbcb49dfbfd0844a480511cbe2c4655
fe3aa0ec747c12c0ca8607f540cc62ba
76f949c39923b0778f297017462c6cb0
7c96e824c287f684651713cd1e90c5f4
fa27e66018f82cf6e549ab640f51dca9
523f5360c3aa35b5e1c77ed807ff5c62
f2171bb2d715140c8b96ae1a0a8b84ec
c5ff8a911c2780efc03676083f8f4de6
2be6cc069c95951a4304ffdb51711149
18cd9dc7631ef3064c41882468413db8
1a04e3eab45ca15dd86060f189eb133
fc2d2df18182df8c82a2a8a82be86fd6
fe4ad5664773074cb536c73c7d134340
af3863d4ce7dd92ac6f6da58b133bae0
cc630f80fc235ab360c9b6e4c75a092a
195ca2eabbf7c735a8d66821ccb813fe
d837b5228d9c010bbe584d85bf07b4ac
f9209166fc259d8885e96081cfe0563b
a05347463ea86f1ecc777fcc6b5f19eb
d54ca25127a15d2b937ae00fead8910d
b7eefc4c25dd9e49238581dd5a8af82c
10e0a7255d279a419751c7a6f15617f4
e037cb87e6cdcd76df39601c41fbe0ba
fbcc12c5530ab67cad659a74e36b6387
a0bca89b37e69d349f66d5781c13189
674115a86dd196c142c20743f866e1a6
9c916b72d9f9f93b9f2700a6b7be99ac
e66996d97d9f553939e75b12f2e5480
557429a274a21e1e6a257cd6bc529741
ca2a07b005ad4385ca8607f540cc62ba
78646117554e23162c00431da4ecd526
6f96517661cf1b6799ed03445864bd37
1bba3fb413b93890947bbeb9022263b8
1d5beedb73951ef68649ad8da70da1e
a224182f76e4a44fe1a65cde8802138c
6ad89740605331aef5f09964a6a1f97
322e8dccadea03d3340b9c9d10273ac
a6a27c5acbf70ebd3df325aac2f73830
cf2bbaaebcadfb282933085759cb1f25
912d89d2d910a81cadcbeb54f3d014e9
7206b1f248826f2398b39d2f77aef0eb
ca16041e31078463afe21c1ae3d91b49
4b4fd540cab0cdf3f38bce64a8733419
b793e65c707e884262bbb378da4fdb53
5fc53108f6bf2f45893f875739da1b24
337e7f2c3745e07789d7e2c40a194e8
30b5160e2870b7a0ac8be969b55649e0
4377ea17eb17fa79216b327569dd806e
94ee700c27e2c05f84fcdb4aed90c145
fdcb11fa39661f0fb08f81d66e854bfa
b008491b09894384451efd5041dc713
32da9294ff0c3d8c7a40e1005054fac1
df0b14faa90bd4dce68b9e5f5c3d0eca
32637024c9aad5289a6e43b878d5b335
1d68bc47a558ec9b266eb575093ccace
bd8c9f9442124cab5e64c90e34fc13b8
902b39a955eeb2bf35569910818956dd
6eb12144093da25e816e98a113f4d393
697161441b9da2a7ca8607f540cc62ba
1ea7a36e4f353416fe1f6e05091d5d9
d7454b0e80d3236ff268234accd8cf4e
4b623f70c9853080aac5531514d15662
219fa6821c9240e42476c2e017302af2
e4237061106f5df1dc82b8fee1057b30
a87cad03c8f717e230dd29e8b6a554b3
58fe58e9f7431a1a428659c2b5124968
494660cc290492218ac43fbf276bac06
8bde5a00c3caf9771d03b466c72ce41
e8e1b765fdf5edfa14c19f41d007670e
b943b632fd36f75ac1ccec171a275967
a4c41dc85210c3a0ae049cb809622fee
f88be1c8e93fbfecba0d990ae229b477
2efa2cfc42f2ff481b27cd1681a3d0e7
abbe69a6f94918c79eb9aa3111a82815
2d33ee87ee5230c335fc197bbabcd5bd
6946f7a2a5ef851215ea536736a1eb7e
87fb26b8e56d25f2b87697d3904b168b
aa3a801045f6fea9afd51f67d3985e6e
2893dc61be63a8a16d0ff49003c479bc
fef1c15a5db21b00a67cc8f661e7890a
c2be303f5abf0db7b3369733e21bbc63
62bc07e9813d75ead46f37bdc1dd4b45
4a6961377146f08cb45fd154bd3b6957
8da05b28d9b2e2fddd01eabba9d45203
a4b26e08b6080277a47575cd04a1d851
ddb96cc263869979f446f92b52bbd82a
93c3ce7904b3258b2285a9bad03a0ac7
6ba7cad8fa7301f9c1ca96a73599ca7e
bb785567f73903da2661ac6da30aefd
440ac1b4ac3cbe114c3a35cee92bb95b
6bc51a88f3c58469b00421d9df4746fa
2c9797204c91e3a440975e4feec771f6
24bdf389877fb7f21b1f694e36340ebb
fca4c82b2c488d329554e5818acd6e12
a3a3a3d2ccc590eeaef99de91a3e555
12e127c0416f94ca4c3a35cee92bb95b
96ee3ab4413dca5a48d2ba4615e03b21
bdc5360ff3c62ed69aa9d7f676c1fd7e
6c2c84db10ba167e48464d2edba1bcf0
260288918550573dc9eda6e157b92d90
143326cbe409ca9f62048be44e1fa435
ac0d1320328f5636b819f3a4f3895504
26210ec84a9c1c6eb1bb46d2556ba67d
f3f3805b0f1c81e6f1218670339368db
1abe9524d3d38a54f49a51dc77a0dd59
f5cc091bacb338c6951971f8370d9050
595556bad291028733de69c9cd670995
d605a53c0917acada80799ffaf21ea7d
b1021932b387da327f58a59a37266b2e
c46336844aa275098b96ae1a0a8b84ec
86a5bdbd8c0c70eea7de26672c5fab85
6b15289a71312a5af8ea21a9397429b9
d78a16856adad344670aaa01f77ae41a
d2f8a99bbdc387c8c5552bebbfa48bd7
e8c1e738997275799de8e648621673e1
ebb5a048015c13cd35fc197bbabcd5bd
86f2c71ef3700ca2cca362d2a61f33e4
22829f20e331d563dd455eb19d4d269e
d2bf5f39131584c0a8cba409c4409ba9
2636cc55f0bee49671d03b466c72ce41
9b5a1706223b150613f6b7168403d0e9
81440fcd51052844af7d907e4e1905dd
551635d89144da64299a59bfd8e7d284
189f045faacc1b5f9a8993cdad554625
bc48b77452fd108adf8f666ba0e601ac
6abe0099d2a6efc882401bb74114a99
600f970e5d1032dda4642ec4b6f68a
ac463974cee5a8867bd1a5c452e6bb5f
e5a7a353d5fa8df844b2fa2cac0778f5
fbb2e9c15888afcaca504cdc40c452de
262795bc8a994b11ba0d990ae229b477
91bd6e91455f85fddcf9f917545742df
cc7a48498e745baef828c8b5be2ff54
e31da3ac74fa3c0c23db3adbb2f1dce
b74369cf3556cc822fa1bda037a5a7fa
9a29495f38c07b0526a6eb5f28c0aecb
724be1fb093a31a1ac8c46f8a114a34b
f6b96f56212f55363023a5c0cae3fffe
b725f44502906a42dc5a5a67e94552af
6e4570ef29d420e17099115060cea9b5
b224e74c6de1185a6f498c6206a06582
669060a91dc45dfd2ede7237ec38a80
2e0c7d77c0b74e87c1ccec171a275967
e8d5a3e98c222583d972c9dd75ed77d4
71a3888c2229715b694188e21796efaa
167a44b60adc37319ba010ddb4974fe
25864172dcde70c6ace5721ccacba16
d6db0815d8fbaad621967ef97204d18
5c379a118ec80927febd4e8b843c95aa
1d5708929a4ae05842d1180c659735fe
aa05bf3c5a7bb61bcacf204c07dae519
8fe406a829c40c933b353a5057e248f5
5abe1e80846dd485c3e7213e9e8493f0
53c7a6b56afb63807222da102ac36d2b
e27229a5f83b0ac96ece6611a5309fa2
214d7c0720b860091f21e5fbc0306e3e
cabce3320f119855a5131d38588a62b
f9505b01e3ea959cf9700e397b8b4e4d
84d5ab52436c832d36813a9f7d8d3045
a60b2775f1955153ca8607f540cc62ba
551e8582c195944af1b991541832fbf8
89175682a6cecf548966fecb9138dba7
49f400e6574c75554c3a35cee92bb95b
e6d6e9544e353f9f75e49fe23848bbe5
2af529843a47df7aba0d990ae229b477
361f57d736cfc14dc8bff13697c27fb
fe23572aac36c84761cfaa00f7177470
f1210d8f895e40b663c15773e7567372
990431d8a1ef435bbc913a3935f0ae10
ddb9b552868e8c61334736c27ce16882
89a697d339c01c19452b96e716decae1
1d7eb22189100710ca8607f540cc62ba
800334df5da57266a4642ec4b6f68a
78c5137e361e02cb24624455c20aef91
1bcbb0267f5f1d53c6c0edf9d2d89150
6e324581dbbdfb5548e8405d6c51a908
7006c5afe5175d76e69ef11112d71da4
3aa2ba8ca2aede556d96f75c7a1666e5
f96426f2392abb1d8d58389384d9812e
2a895d17616bcae1f361e4786a4d3c00
82a472004d00b288b4d569aa61960548
5ea68e6edd123801ad75fc64c51fb188
3902709d4b10903579995cc5afab9d5
fabe8fdc617e3aca2bd098b9203af
daf0298bbe90dff19751c7a6f15617f4
a53846c68d0df55fbaa5dc5e42189b81
76eaa5ea5f272c2f5986032c1ed37f74
d47207e14e61db3f1436d436f198567c
30acfedb688a62e72ce638efd383ace8
66c37aeffd6e73f284306f3bf0a1f2d7
ff569b4018fc2640cea77fac5d58428e
c4f22c879e8adbc6aaae11b67645c759
a2041f74f316e7b9585e3fa372e910b7
fb62efc64c58d1e5e0d07a8ce78b9182
260305219d81f745623cba1f26a8e885
51f24c13e4af3e06b6e5b4d7b00c5b3
8238cca88d753930a23a96b0250afc71
ac06ebedebe86a7b4c3a35cee92bb95b
b1762428d609674598aeb62a3dfc01d8
7fec4732aa03b54e7db7c8d619fa260f
3b0efeb0891a9686ca9f0727e23831d9
e7e73007e0373933c4c280b3db0d6264
85396c57cdbf919f83467b3671ddaea2
c6306d07f28bc5231309643a94d8a5f
5454ef3f1e0367f38f92ff0dbc52d7eb
953baa426dac775bbc8c4428ef1dffc7
ac3336c2f47b17d5acf77e718d93f3e1
1d663e36e305fa8e2178120752ee7a07
468e504d8c28d8c9b8b8dbe00be04f1d
a1947665b3f56b584f127ea45c2fea1c
3f80ce1461f3dbfe16af5d7a0b735543
5a0fe6557b4e2b9ea8e091cb544689d5
afe6a70cc5fa98fbd93d05336f155bb9
98c0c90dcce8f9ee3ba77af508a192c0
ec8ba88cdead53f336dafa9b6763ef3f
a20db17555286e06f5e83e93ffcfd3f0
3bc8cebf08ac975dbd46d022fd7d80aa
20dbfa169424bb8ed7b90ecb4a11cd32
eff5216d782684aa3c7aa3e4b8926c27
12c66a0490b223be595dc3191c718398
b54d9c1ccb737eb6d972c9dd75ed77d4
f277fd1032f615ec2268dda5c324173f
31af9b965002990e27e7e81f554f78b
2da62d609cc59f9a10b920f84a47c477
e3473fc8fffca7d4d972c9dd75ed77d4
e3e6cbc295806a47cf0420e0d05f48de
d199612c22fe9313f4fb6842b3610149
5c74962846d6cd33920ed6df8d81211d
521b82ced564aa2c8ee17de2c75c8e96
ac75db84aa4e72e28f21c6f032637775
440e5ba74ac8124e9751c7a6f15617f4
4a27a6276e748777bc0909d98a1ff2b4
d25572a7c7bd40a72d716a8ba99beff8
464879f87b67827af268234accd8cf4e
7117ac29aef4f1c4951971f8370d9050
6ed172205a9805b8dd9eb6c0ee8316a3
580e54df8765aac1c1ca96a73599ca7e
cc40acee83422fe892b90699bc4724f9
47fe79cbf9d6ef36dc3607950feada54
cbbf6ca6a621c5f9acf77e718d93f3e1
144649df5a5f9c8b5e4cd38353d7ef05
9196f5a53aa7756687bac2e90bbe10e8
51ebcde47b4c29d81a62197a72f89474
49aa625393dbd1a4d443895deb2f03aa
4303c9458a723504d972c9dd75ed77d4
fb06b00775efdc8e21b85e5214b0d6a7
754d9b0f12e6c6104af5b53e1d2ec5b6
6bfb3e84a0fe44c1bc6e7c82ab33ecb
fb01b45a0659af80c1006ed55bc1a3fc
6cdc9acb022b2d7d98aeb62a3dfc01d8
e55224bb456066c618d508b491dafd46
c54ca35ef1df558850ea677bbfebf3fb
2b20176a59621b35497add46ccd9d60
b848dca797986bd69d175f8055b49b9
4c9214d70e0a00c6c1ccec171a275967
796bb7d6f4d5ce8471d03b466c72ce41
c94efebebb2eaefcedc8262267425d73
e387c8d826cbbdd68a8dc9dc46f918a8
6a59f581ea7f33a5700feb5468ed9746
d8a037897d5d5b108130971b27e95927
ce3c18550fb997d1107e1ecf38d6ca93
21c7cc3e5f27540be6553f96496649c9
d1e81c9479eb1b7da9263338bcc7d067
14c954d5d3c8e954b6b87e72ead132ed
ad10ae20ac2e87a2adcbeb54f3d014e9
d23eecb0437107756c63b8b48495261a
b6af488133a67825881b4ad693eafd3
6db6f79bff14b883a0ff12a4a79c7c7b
fb92c2e96fdf6c37595dc3191c718398
ac39424c7666c318cde5b07c0f09692a
5a38f5eb63dd8b20ab9d1113aabc16f5
71f718d82a865472bfa44fe936def6d4
d0001af4b3c1fe3d6f675e9f2e677792
ca8c65b83038dddb17486544d154bb2
655ea8d8c710cf98f3a69a6853df2d7b
7bbe33ebb5429a0a7a9e881131950954
c781fcd64271dc15224d7b1b956e1382
23cb6abc0705de4ba5a118bd15e6e34f
f1a917846d46b61f71d03b466c72ce41
e1324a093b45645c5a5672eede2b271f
80796b736f1d6bc78e8131a047a07ce1
81596cc38eef8260ce9e5ac45c67ec22
1492ab4cf7a345e34b6f686803e61ffd
56c827003a2fdb16853d2b3113ecdbb6
cc86a2ca41e279bc89b1c1fd829ec927
a2c2ad021c80f08c973e06016b069172
cf17d0ce34f09f572722fc1bdd7e0e51
7d180493022c01daace5721ccacba16
fdc1a422b48a16f67341d39902b9e2e1
daedff5e78136a8b507c9a5cb0f72e1e
769efbce0af867807456183f198fd1e9
ce6aef9846db6aa5c1a897657d9a1924
196d35794f869816db6f03b6829a5891
e4e1b542f8732ae1c6768d9a3f27965
c14cb2e75415dba59a6e43b878d5b335
a7df65b30f1e6a3663d1bfc21cc05e4c
83e4e523003294ab9a6e43b878d5b335
7c76d7d8ecfca9c2b1bb46d2556ba67d
1d09583e9236b8d149d860a48be37092
9a847e8c8f9c0acbbb05fba9fce1c1e0
65b12fc357604a2587b2a887422ab97
fef935c1f862f4aa31309643a94d8a5f
320e639572e8b9ceca504cdc40c452de
e431f79ac9f0266bca677733d59db4df
1d4f988b009edadf54a2210c7b2aa25
c049dcd36058a87e75b7e61db54ffec7
f613ace665da5e3e8b96ae1a0a8b84ec
bc2deb55a1c952beca9f0727e23831d9
7ecb807e2270606619ba010ddb4974fe
9a5d4e2d21506f11c503a3776fc280fe
e3bdca8304aa6593c503a3776fc280fe
a2491ac51414429e422ceeb181af6a7f
50e6ab918250ac797a663d343339f8e
ed4aab2d41d62b49895ae53d16ed9e39
e4d902abdf9481558caa71b1fbf7fb98
11d2af04fad0a7e2ce19d55bc5e6a406
4044d5954ef85af8279326882e8430cb
6c613c1893bf7f9ffae8113cc147b3ae
e160529ef50ae4dbb819cac660ba383c
c2d90cc742f17ce828204947d78b9af
b2bb5a56b3d805b298b8c800ae001b66
17c86b46990b54b65578b8865797aa0
8de793e2e964f40a26c713777861983a
a4678e6798e768c3b6a66ea321171690
af55f398af2373aa18b14db3b83de9ff
2d01483c696c0a1688be2a30dd556a09
c353ad7ae6ad2b9df1cb19f636b1c2bd
d8a43017132c210cc1006ed55bc1a3fc
5f9b4ffc555c9915a3451bc89763f63c
67eac921334c130c336fa8434b94be14
43edf9f02a027ed162f11c7bf54cc1ed
4de5861211ad5b95e7ef9fff09638f8e
ae4fff8877a5a64b3ae1361afc45ac52
2f988bec20218fa19a6e43b878d5b335
fd95b99d4699430a7395d58407f193ba
7b134f6573e7270fb0a79e28606cb167
393cfa7e090b972dce2cec85ea6ae00d
a9b95631bcbefe9ad225a1c252daae25
ce12e8c1a5f5ce1df58f507a9f1e3e03
9a4bd6fa35e2e59689437db5f9b0a8a1
8daba5f5c906b3b331fec775e1dce6b3
b356ef92a2052648b8494b55ada518dc
171f4e9ffda674f44f4fd7b0550f5bef
57eaa54ff3e4d6f211f78b196c636566
a9dff753cf97f9c5354ab1decf4fe605
37608404f9e224d4fd180252c91ed0f3
e17a696c47d4292393db03f6b4e68f17
40c730231c4da8f33c3bcafb5ffed4c0
c3bd5ab4d3ac6a5a5c351e299b24e355
166c9abfb0f5256bbf46baa68c6e37d4
68537bfb054ee3802ffb52751fee2c0d
d5f4e2228e3fadd2aa6a832b9db7452f
68ac5704aefbe4f54e86b47976e55141
3d2e10ca9a5db964dc398f7f89f37ee6
460f2b6d8f4dc18d565895440030d853
d9eaf9c7d58279dc9a6e43b878d5b335
8c6ab402ad29ff5c3b9dffcb3e0245d9
61bd590e917928f6b6ecbbb2e4d05900
dca7f88e151f196b8179909e06795c03
e0aec5757f7a907d647cd52f13caf24b
bdf120e29b19f77b352526271bef32d2
f25da5eca572f01bd8d90babf3c5509a
9eef6307dc504b88392b84e3285cce39
e6f0811f15286120cedbd07f4cf21a81
d2c7b95823938833339bd6b570381585
6422d4a9c5b5b8f350361148ac946a05
e216667457193c729a6e43b878d5b335
bc92b144ec7029782e7c68eb5d1b9123
71dcfd1e5d1e261179febb7e11d3625
a726f95306ce6e1071616ead796bdece
9b60b20ea5fe6f002a2fdfabfb4182ed
f12b45a38f012a78ac4f72bf08dc79a6
c78cbd0e53900a1ef34db3de24263f32
6859dc976c0528a831fec775e1dce6b3
8bb827904cd9acd36c1cd53dbc9f7b8e
82a2a1830758bacba389345bd31e2871
788548a68d7b46ec179febb7e11d3625
37700819bf2af266f64801ad2940cdd5
30d1974a29d95d8be8bfa4901aefcf8d
67636e7d15d082089412a62cd6b1bf5
64dbeac5250de2bfc5d50480246d2c40
521916cfab629ce0b6ed9420d56b12a9
eb110db9bdd0463e5b7003ff580606fa
e218bb755f35da1bb4cdad9a5bf52dd5
e0df97dfc068e3664bf88973bd147a26
47d958a8a781144b132a08135eefe76d
240136d2ae7d2dec9fe69c7ccc27d2bf
1f7a516fdf80dcdc1006ed55bc1a3fc
a361d82b2c510ca5208842e3d616cb23
aba51f26f4da1b44b785bc4e6e3fb739
e452189bb7bd6617ef7cbef6334698fc
cbdf611a2146031823a665a253ac8cae
9378f4e9b3bc187e621c837076d6923a
7cbd504262e2d17ee91114a141d25a9d
359f69a030d69b3da8fcf7222eacb152
3b9c905771244df7b6ed9420d56b12a9
5bea928fa9b2255ca8cba409c4409ba9
cb55e0710b727bf62e36a049ed2b7f88
c235f2c6d1e8c80e7f436bc8bb8973a3
be96646f774c7d0e2a23d93958262ccc
420f3bb771e8e75ed878249aca2571f
4ed01f44e3e422dff64801ad2940cdd5
486f1238321ffd2825eb6beb311c44e1
3adbafd59a34d393eccd82bb51193a7f
77f5111d348bf051368d7e7849f8df62
69a46dafabb616191f9b3085a256a338
220a911e2e303865f64801ad2940cdd5
3764de22af04fd32a993db466b6d73d3
4d13a1b180422efc2d0334ee3a22c9fc
57575cb42132554af64801ad2940cdd5
4bf0b3df529d5093551df482db927edc
2b0a2bb1556c96b94f762cd8ae1b1c4b
54885d5beee4e76ab63969f9f8d6f075
21feae1212b07575f23c3116d040903f
6058d6701a0ca4e748e8405d6c51a908
6a868213168421c6f0985368fed75674
647e76622faa22b626b85a24a73a298a
1d4ff34cdf90d6f9aa2d78d1b8d0b45c
3b3eb57af5f995c268aa0dbe2db661e2
7f3446564689ac918f69a600441c970
5fed73635306ad9f14ac58bc87dcf2c2
5cd14216765393f18b96ae1a0a8b84ec
22acc443fd007fce6e80138ae17d7d07
4f8952ff04d33784f64801ad2940cdd5
3daca58825ce2ff6dc82b8fee1057b30
2628b6cfcf1a53465569af4484881d20
d18f2aeae4146464bd46d022fd7d80aa
bc33901245943313d6d949577c389a84
40192d0e50b4d2c1f27a705edb2f9ba6
b7c11baa48456c23149f1a143758cddb
34ddff243ac3783521b85e5214b0d6a7
3948ac8a29ae42c761f027f2a55df6ea
776bd07271792d1b131c2ccc2e4397
421f45774389984bea6586b61968eac
69f1d9c3987d429e5e9e2656aff7dd5b
4d223d7a0e8162cabd46d022fd7d80aa
77fea5bd4008e5f09a6e43b878d5b335
73bcbc2d147291451e7b1f533ce75
5d2f0bdbd08be6fa3105bdad0abb9e24
16689e54c884aa01639c7058eaf33ae
4f3a64164fbe16f54c2c88971423d0be
f771c5a1b9bbac21f4fb6842b3610149
3a82056ea319a442f64801ad2940cdd5
54711bb9127ddf7ef412783097373bdc
61330ac001ced49f64801ad2940cdd5
1ea8a685cdc71effb8494b55ada518dc
3ecea45bfa541b8e4a4dd08ffc16eb81
48e477d5904bb7bb1ad94eee1d03defc
1c26ecb4cd01759dc1006ed55bc1a3fc
4b4782c572fa8b11a20c7111a5d0d7fc
a4391c7977d990142c20743f866e1a6
5f6b6f649b419cea71f4784575c35350
67979ab8dc522028788e57551eae0744
62ca091091053afd9a6e43b878d5b335
2f4133664133746cf64801ad2940cdd5
1f9b49f320eeb2f5d0226d12d397045
32b6448c0864812729348d14ca881f7d
538f0b5ee7c786e6d3b936925082270f
35131f7ea7256373879c08e5cc6e64bc
4653be69e215a1a4b378822897b79a81
33b8b6af08696fdea616caf97d73fa02
5963e4385e6e5c0925c10fa44a32fd7
879a8f69cd931fe9f64801ad2940cdd5
562a94308f7bf09b8aa0062ef5480a6d
743670f7f3a8042e6ad6a28101cd3ecd
844d36a369cdeed3ac4f72bf08dc79a6
162ed8d0d989f3acc1ccec171a275967
1628b65a9f3cd7c05e9e2656aff7dd5b
5678fc24603d25cb74745e8fbb11e3df
4d2d87e61a18760ff64801ad2940cdd5
2c5bdd9a08122f9e2023ec956848b741
6a3028e1c7205b22ad6a38fcc21e6e9e
3bad4bd2c944d78391d77854c55fb8fc
3c52f7f687ce7efe3df325aac2f73830
445404a75a0ba2ab1fc43d5b32fa230f
61fe19a62a786c96950d2b3eef73a70e
6615bb23e68159c193d4024985440d4c
273c9c0bd43443c3b4f192eea1889928
8b594934c14ac5db66cf1b4a8fc3914e
35f43f566f2f14651713426437a9f7cd
1a6ad7a24bb89733f412783097373bdc
16868a30ebe634053dc22b596edc161e
24d4c063f7a361bacbc6ff5546f4ec42
34a89777594d3a61b2440702f5566974
4470a28f2dd0cca9d9fba06863881b8d
68f26c36ba5340ede58ca160a93fe29b
a2c5e769f19c7e97b7d7aa9b9ebcccb0
150fd58e55111034761c6d3861a25da2
5cbe5be753b5c7faf389d19fad321c37
5c10e37453733ddb46d83d16be057f3e
5a37bc42a52130a18f52dc705c3109b9
22d0561f06900e165140beb2199de2af
4a21d3920b11cdbf1592d7a04a86fa53
4bd5f77521e76e6a2e690fa6dfd5d610
37f2f187a1582704a29fef5d2b2f3d7
a273a18b004c209c90b1d6deb98feec6
1cfada8b8ad2428fcabcecce1c335df1
3b31e28ac1eb36fe1eb4be4ad34a6dbd
65cde29553fe7d763a63e8ba97b45ddc
2d9a7863dcfb5663d208f79049825a82
c00d38c09ac5e6b8405970680284869
aa780af4d9cc83c3669c7dec71cfc5b0
24e79ed92be932e19bfb78d2af523ae
372c95e7685363ca18e0889038e4fb6
33d955301966e4215ebedace13b486c4
556363167281c6e486ecff2582325794
3f3cd5461f7ec6edfa8a0c9a1860ff01
3636483aff4b7977b7d7aa9b9ebcccb0
75e9e2d6970f5ee71927c29d6faf370a
3ee352a759364cdfbd46d022fd7d80aa
4d84619c0da53326e90916c8815b5c43
59bbe6a07a5a68d5d96b332cac4e78f7
66e0fbcab927f21a875d37e2f5bce5e8
2c1f66380af03e4c5d1df55cbe0874aa
740e79be16a92efbf1f2e10bfa81e2b
3b86245a5cd388ccf12b4513d8540d7c
31d40e6e24511386d6d949577c389a84
457c12e05d0f5d15762c3bd1a2b3f377
88af6c30339602c2c87c199a35aa58d6
b3bfc198214215397b5fa2b5a4fdb00c
7a794db8180858fe90916c8815b5c43
d6c1cb09e27c3fbce8b8a0b16211ba77
a839884fba87173ce25031ee39d82b94
ffce3c994052ffea339b6c8cc24f619d
6da4590bf9d7bb9698b8c800ae001b66
7d928af41b7dd26e1d0f8853f6d023e3
a34a6611fd6b2451690ce339b831e7e2
b80131dacfa19f77337e02e3502c7536
cef4d41c07613b658168857903a9552b
38edc8fad5a5c0f0ac4f72bf08dc79a6
adee8f091d7cc677508af777f11ed409
8e2e03ed888e0eace4f2488af2c37f8d
debd942c5fcdc9c84c2c88971423d0be
5d7c2f1b6ed0d02aa4684be4f9cb3c1d
a26639a06e2ae1ede7d756565593b850
af188ff4bc1ed0693faf1ff99e423b8
9159a77918eb86cf408508ea36928b08
4d139f21350f64d2425a06bba46b20dd
cc113b6e9d4fbeb23df325aac2f73830
794fe891e20800d37bbc9fbc6d1fd31d
96430e8f2174428ecbc790a63192d2ab
ce2c4502b06c3c356abde8e1529c422f
d9a92927192e9755702736225b32125
41acaa4d19dbdca75ad6eb90e75c835d
95e589163afd0a7a609e2d916fa0da27
5fc63354b0156d113136bac5fdb5050a
80da27a121142718e15a23e1c3d8f46d
61159c0458d41ac8e341b5704aa568bd
f39e0412290bcc714917e69390d054d0
dae96d5eb7dd6fcd2863c6a2c8157d17
8383c4706c60ea2fc1006ed55bc1a3fc
687ebd7d2b1e1475459cbe66a12329e7
775f06502261575c26b390daf74a4b00
1eb1d7d471f3c4c0634efb708169415
de1e70fefcabfb6f79be89de816ea2e6
27317e8e93190374780ee0648cf79a36
30b514b24624da4fc1ccec171a275967
d405b9e5f942fed5efe5d5ae25ee424e
a1f740e10229b43a82401bb74114a99
f680ee392bad2dca29348d14ca881f7d
fc76d0a9da7cde0bef5ebf5f74916182
e8ed294534ba18df4a29fef5d2b2f3d7
5cd68dfe309e1f8317e5bbee411fa5d0
ec4a2a47f601397ea01e5c9f53f20fd4
655dc5a5376e9c8152c3271e911ffe19
b5cdecafe353e18ac1006ed55bc1a3fc
4ae3b41081645ca3e70b97b9b33fd6d6
b7b94613ab6076a2a959294e5fb80cf8
9f25e4e0aa598c7fabda204c62559ac3
22dd4b6a60e20112185b376619557c95
de9564aeaa585a6ccbc790a63192d2ab
c3600f9ede30352a663e90eaf6b4ca52
6271b0016c5fb3bd59d2e83012533b47
657439efe649f57f47f8deec944763f7
c8db76f18f56c1344c2c88971423d0be
536e1640461854957a86454b5377c47f
a9b808a446c498f475df24d58e852c90
d3198154076f49a86f0778e65d2e88ad
76851aaf721dcb63509012911cf74f29
f8fb835bdc55ffffdc82b8fee1057b30
46dcd7b89d67cc41a1398b9e7da33687
3a3403fb14bdb46823e79e99b949a341
40a828b10b1b092bd208f79049825a82
9f90f3298d7b6c6f938204d34a891739
9513fcab860b113795ff232cd38210b4
4dfe2199fdd333d09837a3d08a6a1966
947ac452f850e284082bf69673a94f
e9ddadf335adac52e025e00c738da634
9695d544e326baeaebc75cd68927f0b5
c91e7b5681d8aeadb81009266e6622c4
44dece8f8529374ee2199ec015f35ba2
959044f10e27b89ee664ce1de3ddc8b4
ddd6c2a51c25036c8a43cd65b179a1ff
33c5c1919425791de038c01d73511063
f8d8b590a0dcd399718ac2a6ddb54499
4508864390ae424d663e50e76f163b3
51f51906f12681a1dc82b8fee1057b30
d617ffca7890b33eeb9d949e4b90f4af
65468fa9ca2f3e9e642566c028df23cd
2d0945065aa2a427eec7473defebb526
8675974f9f6ec91ceb3b5fc90bde085d
b87cb85be0d8eedb44bf3710e93f8cf7
89bc3fa2ecf1425f6c32d954b1c7f41e
f485dcbd466f217286774cad40dd456a
c624907ad60cb9348a69ce464571d8bc
c9584d90a1da19f723a665a253ac8cae
bd298d2907400418df8fc3a07f996293
337658edebb67c301ce9f50324082ee4
ec9bfc810a015c3a446cb1ee5d43f75f
a3e15e215144dda0a03ebab0e8b8f7a0
2c16ac865f06542381598514fe928082
a430ba73d3ee2c0fca9f0727e23831d9
7932eddb8032b6f1e4d2773f0358b43b
2d43bb802a8faf0bce15d210eb57e565
fbee89bee5338798d4837a4534bf020b
a287dc5d0e28d3d3325212819caa597d
876127a17b7285b3c1fbdb352261d023
697b269a890237fe15796a932d10290d
84b84d39581a6766925c10fa44a32fd7
a9cdbca070047fe61e9dc95dd6a9f6
ca45f5d7efba158ca35e371359a547
e7fed0e0dbd871ce35ae6d8873b772f2
7b39d993f6934a96b08e958a32ef3184
f2975fde05d9d63eeea0c0561850e04e
26830050c44b5a8f9cf081e9d8a0b57f
764894168678b36efc1619e612ccfb0b
e53547a01129eef87eda1e12bd28fb7
4a559ef6547b685d8aed56c1a220a07d
b11c03976f121b3537007500db3b770e
584e076b6cee78addc3757fd1f4189a9
a799568755357be8a07b3b853565360b
8d148580eda6994c2a8810071030bd25
bc86e4461bd4c955a34fb3db6a11a22d
efc2f4eb92871bb2b7a641946dd77b16
5eff54a76d8ef89d7e1c97634acf0214
8c344cf05ad1bcb7709f5d258bc9a906
92306925325c9e8a3f3cc56bc9bfcde3
b70b049cacaee0f210af2c858faa12b9
5024341275a685bdecff69852469d7e3
172764bea108bbcceae5a783c313eb36
4c5b8babafbb7b5f937ae00fead8910d
28402efe2e3435d124fbfb66ea1f14f7
47a40ce42bb9077579dc7d843e2be5ed
947a78a898b6aa81f19a675dcc5ca632
1f672d2fd5e3f4e78026abe712c1ab05
87d764f79c2f3af24c2c88971423d0be
b46244d196a7f66635ae67400a94a6fe
dbdca81a0f9079096d511e9563e4bbe7
e06d3e6c1fb4b208cb7c15fd62c3982e
2e961e38a039f1bc67711f7c205c5b63
23fb92d8cc0f8ac4def547874c3364e3
db73a3c857949f469a6e43b878d5b335
af6b292c7857c78abb0e5c1799dab683
8615fe6e2a959ac1efe5f291bc2f5fd0
f087be2dec869154acb63dc32be3cb01
9a878c5f0bfbd964d470a0056f762381
9a0f4dd21a4ca19bf1cb19f636b1c2bd
8d2903595298549959bf29282ea7962d
57b5666dfe2607ea1025c08d338b6d83
1cc3ebbadfe69e8011f5789deac2dcac
f47c5c54c4e49f62e0a768dae1badf69
f97a48680d63a78a9751e413d5325f7d
af71e72822241808a8ab13c300600dba
6a8b9f82f1de022a9ea7c189c9a53081
62ebb16b6b4ffd74df8fc3a07f996293
1b0b1d2cb9f9d5c0575bd26acccafabd
ecb0d8d1c592bcc11bee3078a673c2ae
9595693b6c0f5157651e8da9cf70afea
a19a5a459d234919c1ccec171a275967
ce337df2f75801eeb07412c80bd835
2a3d485b0214d6a182389daa2190d234
918b46dfb239ee044a8d8b0dca1fd34
d1b1c13fdec4d69ccfd264a25791a5e1
93c38745ac281f6b8aeaf14658928f6
910bd9a7d9ac4738d5c4dc314e25b351
e88ce288726375ff87bf26680c510802
6a47f4d30d54771e8782c935066e938
a675480b02f939424131d9ef9081c198
f592e88114a240cc61a8d3163a0a75a7
8cd5191c587341029aa2a8cabf259b68
17ac3afd54143b797172a40a4ca640fe
f97fa7329969bcd0ebf1d9fd44798b9b
6da4668de7ccdd0d4d10a13d437fced6
c5143d3be7f1d0eb27745e9b6b461e93
f58a26c915e7a1dceae7a0fa074b4a2a
8a050edf3d971a617b17a3f88bbfbb61
5a815646537e3b39f51612c193433f02
d8e8540acddacf98c1006ed55bc1a3fc
fcd7a8834a7f26f15069db69b8c1c70
d7f3d0503ee4ee1cc34b900bb2492e
cdd4dc06cea48b5faae529ab4a75c4af
72e1cdcb882b6993c1006ed55bc1a3fc
8df8e2580639b093c1006ed55bc1a3fc
ec879d7360572a5db65bd29086fc2a67
98480ee19ba4dc93ef5f09964a6a1f97
e430f24c3125997339cb1b92881e8e76
f894972de285088da0896c4491cb3db6
cc9b7118034278fcb4cdad9a5bf52dd5
a660b01d17f929f54e61a0c2eaaabe87
1856da25a85402ce63e266a803d9270
23f911351a5801aa46555ee25941a22e
4d50ff789e84e70e54eefcdc602d4520
c8dcaeda94da8da962b600da24e0965
a211208ba6b752b1e75e6a02e772bcee
a231f85d38f2b52154eefcdc602d4520
893c03e02dd0e1ad7d64cad20089f027
a00ed5d078c6244c37678474be485ca
c57409c95dd4bafba5a118bd15e6e34f
3e4b522e38ef9a781b5928ecfc4b0684
520382dade7695c4906bca4ffd4af837
e1a8e2f93abfc7d590baeef8ba5b93e5
a777672f17d3641f1aa9d8d95b6740cc
9d230551c65af968b207f792ce9b3f25
19f211f1dec98bbb82ea21d84574e1ef
617259db5ef0b9f8bc0909d98a1ff2b4
f4818cd7c0701fbe752556d244bfb42b
602a71a251857294959a8a7d5a8a5077
f405858991b190173af8c56bd4352c9
10eeb119fd5508e0d6d949577c389a84
dc6a2bdc4c3e630a43bc71474ad05fbf
8406b2372f6e1478d62bfd1579f9a1c2
30d8f7fe0da9d5d0c164bdcf3c9661ee
439c0ad637f11af762b600da24e0965
437de410d7c23cbb29b33c3ec58287c9
f55390ed02c0b2b36aa3bf023a2b42a5
26a29227d6326e20e63e266a803d9270
57e135ae4fc03f2e6d06e36417078f
56ec4638067cfccd3dd4ea7aa5ac3a5a
dd48aa92170bdde04c3a35cee92bb95b
a8c4288e4027e6a319ba010ddb4974fe
f1a4a370f9e50890686c25eb09ee7de5
820c903c55d7a1908f0d19519a0ef908
414f3305033ad38934f276985b6d695
25668f59015af0de56a7f2952cdf4b81
2599e47b04ea7a32d872dc56d048665c
762e29f11597581d62b600da24e0965
852e1b84dfa1f7e8e075f0bda7acfbe2
41aafedd84a6fa7490baeef8ba5b93e5
993599a55057f963ae7c0d0e12bd33da
325f0b5ace799075bc0909d98a1ff2b4
a4cbb0489a3a680eca8607f540cc62ba
73fb8c3c4530ed4bbf3143b1cb6076a
d05cdbdddb68865d2dcd3faa5a0a5f24
12c82319147385e7ef0e1705c5c9e361
45c963d64b8ef3de37678474be485ca
8a674703723db7a390baeef8ba5b93e5
4457652c2853e0bea8cba409c4409ba9
8af730a8f082af9167b9bb226efd81df
52e27aecdd55c1bf5b03388497f76a9e
bd46cedafa0568b070d98a97e17b4da3
afa83b431ffe73a454eefcdc602d4520
a097428376f298abd872dc56d048665c
a20490d0ffcd3be6e0d6812cdcf8799b
b4de0e888e562f40873ec74c119307b9
5c3e308093e9f287f019a51d1a3b2e07
b64f57298cf3e4328b96ae1a0a8b84ec
b253d5dd187679c74a9ee9951c24bdb0
c01746b173e0870b3a4cd082c6787017
b3ac8c2c48af1c07ca8607f540cc62ba
b3323a51c2c1af9937678474be485ca
5676893c90ec0f6dab81b7399bdbb6e2
ab9e9045e6c7bc6537678474be485ca
2e468cc6afe2da70bc0909d98a1ff2b4
70bb20cf86fe6afe76b85a01edd4a109
29b92db18649b64e959a8a7d5a8a5077
fc9b408aee84f46d70c4138179d9ed97
77dfd8d4ee3c54c3e99ea3c41458bc01
9052a53f45d5f8487d64cad20089f027
1e8adc1e176bc68571d03b466c72ce41
97c12e6155fdf8ca90baeef8ba5b93e5
525446bc8f55e629151f2df200a24ac
f70e5f2568e927147d755f57c8fea340
2018b7614e77d726c1ccec171a275967
718b6f112f70146c62b600da24e0965
b7b743834a6d78c2225a23c790f08fdd
a5ca77bfabfad028b56059027b9b30d2
62ebe2dd7bceccd097f28f82dd9c77a2
a611fb88b28c3f2ec231d70e1e0cc567
cb7c32bd7266daef37f38dedb2f1219
34ffc5e29472358cae81a3776126c079
72985b83dd9c31955dcafa83e2819ac7
30b9882d1d75be3537678474be485ca
93314e5d740a48049a6e43b878d5b335
fa7cf8d11d1340ff9a6e43b878d5b335
bc3b68407bba00d92756c2c914ecfebf
a931895438ae4502a9f468923d4ea2fd
857350d3e780366537678474be485ca
7584ab1da1ae2778300ca77569ad3884
bb9ba5deec9e2a5fca8607f540cc62ba
a2661597dd2e8a2eb87697d3904b168b
5739574537212a72b3f2b01de37c0b29
68d3c213b16ee2a6b5f20f5912ee034d
e09c32b947e33f619ba010ddb4974fe
53789eb9419da78c19bf80b167cee3a3
aafb38ca8d8f27de350ef9fb5390c42a
e0e0d713c8969b52ca8607f540cc62ba
776c423005dbb55d354aed6327ff24db
d0ab3ed71a4ac9319d1eb836604648db
7f895411162624e92023ec956848b741
59b851010f0aef7422b13c48c34706de
f986604528abe35554eefcdc602d4520
bbc645e0c0449532b3c7301213dfb7
ea29b3af190b00367d3b11085e75c7ad
3fba2f3ea21abb4f8c1b0ccac3d04f1
dadf41579d385b0aacf77e718d93f3e1
cf71f5442c4120db37678474be485ca
732ff6155a096fb0151f2df200a24ac
2cd9e40d1ccb1917228c3c30d65cabe0
35fcf4cfd91d7cb3e1211756a8e887aa
e51b620853f2cc0137678474be485ca
d3b9114df1d8a3388e415c6cf89025f0
8259a1fdcb9bca7526360e1e29a956c7
a4d75675f0f871c96466a07aedd68378
4e66465abe540ee326ccedfb0470de8f
3fe8243b660d5e8fbc0909d98a1ff2b4
ec4f0bfd77978a1cca8607f540cc62ba
92e445da194d65873dc5bf61ec5f5588
6a54d956a8adb2d0e691625fb79e2c2
35c8abfbabb0d8ea66b0983c7366318e
1d96d1c7cfb1085e61f1ef59130c405d
cf310fe73705eb85a099666f6cac75b0
6812a13a1a99f0da2f20ac99f64093d
dd949574a91719eb7ab25516d117381a
44e08106211ff2596ed8c57a1980bb26
b74611a3b3b3ac72ca8607f540cc62ba
2c3ba3f35c5d2b0ce77e43d0a92bdc06
e4e98f8654d29536dc858dada15498d2
46ae88cad17edca7ae7c0d0e12bd33da
8d84a34d5aac3bffc6f6da58b133bae0
e70bd95ab764bc1b3465be15e1aa6a0c
350d4b260bb18470f77959a47a1c16a8
53958f924a50069090baeef8ba5b93e5
55cdb0891d7a05fb2217d56276f279c
db758090dd739ee9ca68a659ecae961c
ca4443e9a37c4f0b16ade7bb280a6832
da3ed25d281fc4c065fc5f76098aceb0
828176e6eaee542ceb532c8487004b3c
c7df0d3a924147a49a6e43b878d5b335
1ba18539803c12aae75e6a02e772bcee
deb196087108dfbdbe4df22b15a36e0b
69ed3801f4f6f4d1e1873a3963e0d14
1e40d41905a9be766ed8c57a1980bb26
e5fe5ed2cdc8b11d62b600da24e0965
db628662ba1cac04b627754c4259e985
8c851663113c3f6790baeef8ba5b93e5
125417c3fa9bc1b130f57e42c77d3894
813927b25c3a0c6dff227f13dbef5a8d
543412ccea0db2f8f37f38dedb2f1219
5a5e4590c54a70c6322c168d7a7c32f4
b3d034788411421019ba010ddb4974fe
c9f91acaeea4136f2863c6a2c8157d17
9ac7fb5963ae673f7d64cad20089f027
e45d71c7afb3cb1c67629418bd553f95
8855c5531c093275146f724acb952fba
413a85d9cc7f19a8b6c3e7b944b34fa
649a8f44ccc86f4843513dd632697ccb
aaefbfb4765df684cf9f662004cc77d8
54066a3cdb79ac8fa5cbab5aded19a14
9912e7eaab960bf0e3639a60ffa58b1e
18d123aaef6b911954eefcdc602d4520
ab2f47cda3622573c231d70e1e0cc567
86099a00dd63ac05aac413eef609e99b
1caa02b831cccff090baeef8ba5b93e5
9e75560008080a8529348d14ca881f7d
9a04c7aa6e1655fc90baeef8ba5b93e5
8adc6a0f45a1ef2e71d03b466c72ce41
d3f93b6da62fae46a98ae8c73b190485
d38922599bc74f6da30fd8ce49679098
afd02e6d4cf0a342c1ccec171a275967
c3733e626c07b9ff26360e1e29a956c7
333278f95a359498e768735f27170bc4
cda1206f9460ece9868255f726935f63
19b6112991fb8e33f3f2af1b43965204
7030044b49828f08b96ae1a0a8b84ec
52e7f93d592622a9615ba7bf3620290d
57a57f639a3e636d914c075742032f6
e557af9d5aa40f424d210d9468aedaf2
a3c928995562fca8ca8607f540cc62ba
c93d0663035962b01b1cc145b0144991
371a609f050b4e
gitextract_568vs1vs/
├── .gitignore
├── README.md
├── cam_est/
│ ├── model_cam.py
│ ├── model_cam_old.py
│ └── train_sdf_cam.py
├── data/
│ ├── data_sdf_h5_queue.py
│ ├── data_sdf_h5_queue_mask_imgh5_cammat.py
│ └── filelists/
│ ├── 02691156_test.lst
│ ├── 02691156_train.lst
│ ├── 02828884_test.lst
│ ├── 02828884_train.lst
│ ├── 02933112_test.lst
│ ├── 02933112_train.lst
│ ├── 02958343_test.lst
│ ├── 02958343_train.lst
│ ├── 03001627_test.lst
│ ├── 03001627_train.lst
│ ├── 03211117_test.lst
│ ├── 03211117_train.lst
│ ├── 03636649_test.lst
│ ├── 03636649_train.lst
│ ├── 03691459_test.lst
│ ├── 03691459_train.lst
│ ├── 04090263_test.lst
│ ├── 04090263_train.lst
│ ├── 04256520_test.lst
│ ├── 04256520_train.lst
│ ├── 04379243_test.lst
│ ├── 04379243_train.lst
│ ├── 04401088_test.lst
│ ├── 04401088_train.lst
│ ├── 04530566_test.lst
│ └── 04530566_train.lst
├── demo/
│ ├── demo.py
│ └── result.obj
├── isosurface/
│ ├── LIB_PATH
│ ├── computeDistanceField
│ ├── computeMarchingCubes
│ ├── displayDistanceField
│ ├── libtcmalloc.so.4
│ ├── model_normalized.obj.n.dist
│ └── tbb/
│ ├── pstl2018_20180822oss/
│ │ ├── CHANGES
│ │ ├── CMakeLists.txt
│ │ ├── ParallelSTLConfig.cmake.in
│ │ ├── bin/
│ │ │ ├── pstlvars.csh
│ │ │ └── pstlvars.sh
│ │ ├── build/
│ │ │ ├── CMakeCache.txt
│ │ │ └── CMakeFiles/
│ │ │ ├── 3.12.0/
│ │ │ │ ├── CMakeCXXCompiler.cmake
│ │ │ │ ├── CMakeSystem.cmake
│ │ │ │ └── CompilerIdCXX/
│ │ │ │ ├── CMakeCXXCompilerId.cpp
│ │ │ │ └── a.out
│ │ │ ├── CMakeOutput.log
│ │ │ ├── cmake.check_cache
│ │ │ └── feature_tests.cxx
│ │ ├── doc/
│ │ │ └── Release_Notes.txt
│ │ ├── examples/
│ │ │ ├── convex_hull/
│ │ │ │ ├── Makefile
│ │ │ │ ├── convex_hull.cpp
│ │ │ │ ├── readme.html
│ │ │ │ └── utils.h
│ │ │ ├── dot_product/
│ │ │ │ ├── Makefile
│ │ │ │ ├── dot_product.cpp
│ │ │ │ └── readme.html
│ │ │ └── gamma_correction/
│ │ │ ├── Makefile
│ │ │ ├── gamma_correction.cpp
│ │ │ ├── readme.html
│ │ │ ├── utils.cpp
│ │ │ └── utils.h
│ │ └── include/
│ │ └── pstl/
│ │ ├── algorithm
│ │ ├── execution
│ │ ├── internal/
│ │ │ ├── algorithm_impl.h
│ │ │ ├── bricks_impl.h
│ │ │ ├── execution_defs.h
│ │ │ ├── execution_impl.h
│ │ │ ├── glue_algorithm_defs.h
│ │ │ ├── glue_algorithm_impl.h
│ │ │ ├── glue_execution_defs.h
│ │ │ ├── glue_memory_defs.h
│ │ │ ├── glue_memory_impl.h
│ │ │ ├── glue_numeric_defs.h
│ │ │ ├── glue_numeric_impl.h
│ │ │ ├── memory_impl.h
│ │ │ ├── numeric_impl.h
│ │ │ ├── parallel_backend.h
│ │ │ ├── parallel_backend_tbb.h
│ │ │ ├── parallel_backend_utils.h
│ │ │ ├── parallel_impl.h
│ │ │ ├── pstl_config.h
│ │ │ ├── unseq_backend_simd.h
│ │ │ └── utils.h
│ │ ├── iterators.h
│ │ ├── memory
│ │ └── numeric
│ ├── tbb-2018_U6/
│ │ ├── .gitattributes
│ │ ├── .gitignore
│ │ ├── CHANGES
│ │ ├── LICENSE
│ │ ├── Makefile
│ │ ├── README
│ │ ├── README.md
│ │ ├── build/
│ │ │ ├── AIX.gcc.inc
│ │ │ ├── AIX.inc
│ │ │ ├── FreeBSD.clang.inc
│ │ │ ├── FreeBSD.gcc.inc
│ │ │ ├── FreeBSD.inc
│ │ │ ├── Makefile.rml
│ │ │ ├── Makefile.tbb
│ │ │ ├── Makefile.tbbmalloc
│ │ │ ├── Makefile.tbbproxy
│ │ │ ├── Makefile.test
│ │ │ ├── SunOS.gcc.inc
│ │ │ ├── SunOS.inc
│ │ │ ├── SunOS.suncc.inc
│ │ │ ├── android.clang.inc
│ │ │ ├── android.gcc.inc
│ │ │ ├── android.icc.inc
│ │ │ ├── android.inc
│ │ │ ├── android.linux.inc
│ │ │ ├── android.linux.launcher.sh
│ │ │ ├── android.macos.inc
│ │ │ ├── android.windows.inc
│ │ │ ├── big_iron.inc
│ │ │ ├── build.py
│ │ │ ├── codecov.txt
│ │ │ ├── common.inc
│ │ │ ├── common_rules.inc
│ │ │ ├── detect.js
│ │ │ ├── generate_tbbvars.bat
│ │ │ ├── generate_tbbvars.sh
│ │ │ ├── index.html
│ │ │ ├── ios.clang.inc
│ │ │ ├── ios.macos.inc
│ │ │ ├── linux.clang.inc
│ │ │ ├── linux.gcc.inc
│ │ │ ├── linux.icc.inc
│ │ │ ├── linux.inc
│ │ │ ├── linux.pathcc.inc
│ │ │ ├── linux.xl.inc
│ │ │ ├── macos.clang.inc
│ │ │ ├── macos.gcc.inc
│ │ │ ├── macos.icc.inc
│ │ │ ├── macos.inc
│ │ │ ├── mic.icc.inc
│ │ │ ├── mic.linux.inc
│ │ │ ├── mic.linux.launcher.sh
│ │ │ ├── mic.offload.inc
│ │ │ ├── suncc.map.pause
│ │ │ ├── test_launcher.bat
│ │ │ ├── test_launcher.sh
│ │ │ ├── version_info_aix.sh
│ │ │ ├── version_info_android.sh
│ │ │ ├── version_info_linux.sh
│ │ │ ├── version_info_macos.sh
│ │ │ ├── version_info_sunos.sh
│ │ │ ├── version_info_windows.js
│ │ │ ├── vs2013/
│ │ │ │ ├── index.html
│ │ │ │ ├── makefile.sln
│ │ │ │ ├── tbb.vcxproj
│ │ │ │ ├── tbbmalloc.vcxproj
│ │ │ │ ├── tbbmalloc_proxy.vcxproj
│ │ │ │ └── version_string.ver
│ │ │ ├── windows.cl.inc
│ │ │ ├── windows.gcc.inc
│ │ │ ├── windows.icl.inc
│ │ │ └── windows.inc
│ │ ├── cmake/
│ │ │ ├── README.rst
│ │ │ ├── TBBBuild.cmake
│ │ │ ├── TBBGet.cmake
│ │ │ ├── TBBMakeConfig.cmake
│ │ │ ├── tbb_config_generator.cmake
│ │ │ └── templates/
│ │ │ ├── TBBConfig.cmake.in
│ │ │ ├── TBBConfigForSource.cmake.in
│ │ │ └── TBBConfigVersion.cmake.in
│ │ ├── doc/
│ │ │ ├── Release_Notes.txt
│ │ │ └── html/
│ │ │ ├── a00002.html
│ │ │ ├── a00004.html
│ │ │ ├── a00006.html
│ │ │ ├── a00008.html
│ │ │ ├── a00010.html
│ │ │ ├── a00012.html
│ │ │ ├── a00014.html
│ │ │ ├── a00016.html
│ │ │ ├── a00017.html
│ │ │ ├── a00018.html
│ │ │ ├── a00019.html
│ │ │ ├── a00020.html
│ │ │ ├── a00021.html
│ │ │ ├── a00022.html
│ │ │ ├── a00023.html
│ │ │ ├── a00024.html
│ │ │ ├── a00025.html
│ │ │ ├── a00026.html
│ │ │ ├── a00027.html
│ │ │ ├── a00028.html
│ │ │ ├── a00029.html
│ │ │ ├── a00030.html
│ │ │ ├── a00031.html
│ │ │ ├── a00032.html
│ │ │ ├── a00033.html
│ │ │ ├── a00034.html
│ │ │ ├── a00035.html
│ │ │ ├── a00036.html
│ │ │ ├── a00037.html
│ │ │ ├── a00038.html
│ │ │ ├── a00039.html
│ │ │ ├── a00040.html
│ │ │ ├── a00041.html
│ │ │ ├── a00042.html
│ │ │ ├── a00043.html
│ │ │ ├── a00044.html
│ │ │ ├── a00045.html
│ │ │ ├── a00046.html
│ │ │ ├── a00047.html
│ │ │ ├── a00048.html
│ │ │ ├── a00049.html
│ │ │ ├── a00050.html
│ │ │ ├── a00051.html
│ │ │ ├── a00052.html
│ │ │ ├── a00053.html
│ │ │ ├── a00054.html
│ │ │ ├── a00055.html
│ │ │ ├── a00056.html
│ │ │ ├── a00057.html
│ │ │ ├── a00058.html
│ │ │ ├── a00059.html
│ │ │ ├── a00060.html
│ │ │ ├── a00061.html
│ │ │ ├── a00062.html
│ │ │ ├── a00063.html
│ │ │ ├── a00064.html
│ │ │ ├── a00065.html
│ │ │ ├── a00066.html
│ │ │ ├── a00067.html
│ │ │ ├── a00068.html
│ │ │ ├── a00069.html
│ │ │ ├── a00070.html
│ │ │ ├── a00071.html
│ │ │ ├── a00072.html
│ │ │ ├── a00073.html
│ │ │ ├── a00074.html
│ │ │ ├── a00075.html
│ │ │ ├── a00076.html
│ │ │ ├── a00077.html
│ │ │ ├── a00078.html
│ │ │ ├── a00079.html
│ │ │ ├── a00080.html
│ │ │ ├── a00081.html
│ │ │ ├── a00082.html
│ │ │ ├── a00083.html
│ │ │ ├── a00084.html
│ │ │ ├── a00085.html
│ │ │ ├── a00086.html
│ │ │ ├── a00087.html
│ │ │ ├── a00088.html
│ │ │ ├── a00089.html
│ │ │ ├── a00090.html
│ │ │ ├── a00091.html
│ │ │ ├── a00092.html
│ │ │ ├── a00093.html
│ │ │ ├── a00094.html
│ │ │ ├── a00095.html
│ │ │ ├── a00096.html
│ │ │ ├── a00097.html
│ │ │ ├── a00098.html
│ │ │ ├── a00099.html
│ │ │ ├── a00100.html
│ │ │ ├── a00101.html
│ │ │ ├── a00102.html
│ │ │ ├── a00103.html
│ │ │ ├── a00104.html
│ │ │ ├── a00105.html
│ │ │ ├── a00106.html
│ │ │ ├── a00107.html
│ │ │ ├── a00108.html
│ │ │ ├── a00109.html
│ │ │ ├── a00110.html
│ │ │ ├── a00111.html
│ │ │ ├── a00112.html
│ │ │ ├── a00113.html
│ │ │ ├── a00114.html
│ │ │ ├── a00115.html
│ │ │ ├── a00116.html
│ │ │ ├── a00117.html
│ │ │ ├── a00118.html
│ │ │ ├── a00119.html
│ │ │ ├── a00120.html
│ │ │ ├── a00121.html
│ │ │ ├── a00122.html
│ │ │ ├── a00123.html
│ │ │ ├── a00124.html
│ │ │ ├── a00125.html
│ │ │ ├── a00126.html
│ │ │ ├── a00127.html
│ │ │ ├── a00128.html
│ │ │ ├── a00129.html
│ │ │ ├── a00130.html
│ │ │ ├── a00131.html
│ │ │ ├── a00132.html
│ │ │ ├── a00133.html
│ │ │ ├── a00134.html
│ │ │ ├── a00135.html
│ │ │ ├── a00136.html
│ │ │ ├── a00137.html
│ │ │ ├── a00138.html
│ │ │ ├── a00139.html
│ │ │ ├── a00140.html
│ │ │ ├── a00141.html
│ │ │ ├── a00142.html
│ │ │ ├── a00143.html
│ │ │ ├── a00144.html
│ │ │ ├── a00145.html
│ │ │ ├── a00146.html
│ │ │ ├── a00147.html
│ │ │ ├── a00148.html
│ │ │ ├── a00149.html
│ │ │ ├── a00150.html
│ │ │ ├── a00151.html
│ │ │ ├── a00152.html
│ │ │ ├── a00153.html
│ │ │ ├── a00154.html
│ │ │ ├── a00155.html
│ │ │ ├── a00156.html
│ │ │ ├── a00157.html
│ │ │ ├── a00158.html
│ │ │ ├── a00159.html
│ │ │ ├── a00160.html
│ │ │ ├── a00161.html
│ │ │ ├── a00162.html
│ │ │ ├── a00163.html
│ │ │ ├── a00164.html
│ │ │ ├── a00165.html
│ │ │ ├── a00166.html
│ │ │ ├── a00167.html
│ │ │ ├── a00168.html
│ │ │ ├── a00169.html
│ │ │ ├── a00170.html
│ │ │ ├── a00171.html
│ │ │ ├── a00172.html
│ │ │ ├── a00173.html
│ │ │ ├── a00174.html
│ │ │ ├── a00175.html
│ │ │ ├── a00176.html
│ │ │ ├── a00177.html
│ │ │ ├── a00178.html
│ │ │ ├── a00179.html
│ │ │ ├── a00180.html
│ │ │ ├── a00181.html
│ │ │ ├── a00182.html
│ │ │ ├── a00183.html
│ │ │ ├── a00184.html
│ │ │ ├── a00203.html
│ │ │ ├── a00208.html
│ │ │ ├── a00227.html
│ │ │ ├── a00246.html
│ │ │ ├── a00249.html
│ │ │ ├── a00271.html
│ │ │ ├── a00272.html
│ │ │ ├── a00273.html
│ │ │ ├── a00274.html
│ │ │ ├── a00275.html
│ │ │ ├── a00276.html
│ │ │ ├── a00278.html
│ │ │ ├── a00279.html
│ │ │ ├── a00280.html
│ │ │ ├── a00281.html
│ │ │ ├── a00282.html
│ │ │ ├── a00283.html
│ │ │ ├── a00284.html
│ │ │ ├── a00285.html
│ │ │ ├── a00286.html
│ │ │ ├── a00287.html
│ │ │ ├── a00288.html
│ │ │ ├── a00289.html
│ │ │ ├── a00290.html
│ │ │ ├── a00291.html
│ │ │ ├── a00292.html
│ │ │ ├── a00293.html
│ │ │ ├── a00294.html
│ │ │ ├── a00295.html
│ │ │ ├── a00296.html
│ │ │ ├── a00297.html
│ │ │ ├── a00298.html
│ │ │ ├── a00299.html
│ │ │ ├── a00300.html
│ │ │ ├── a00301.html
│ │ │ ├── a00302.html
│ │ │ ├── a00303.html
│ │ │ ├── a00304.html
│ │ │ ├── a00305.html
│ │ │ ├── a00306.html
│ │ │ ├── a00307.html
│ │ │ ├── a00308.html
│ │ │ ├── a00309.html
│ │ │ ├── a00310.html
│ │ │ ├── a00311.html
│ │ │ ├── a00312.html
│ │ │ ├── a00313.html
│ │ │ ├── a00314.html
│ │ │ ├── a00315.html
│ │ │ ├── a00316.html
│ │ │ ├── a00317.html
│ │ │ ├── a00318.html
│ │ │ ├── a00319.html
│ │ │ ├── a00320.html
│ │ │ ├── a00321.html
│ │ │ ├── a00322.html
│ │ │ ├── a00323.html
│ │ │ ├── a00324.html
│ │ │ ├── a00325.html
│ │ │ ├── a00326.html
│ │ │ ├── a00327.html
│ │ │ ├── a00328.html
│ │ │ ├── a00329.html
│ │ │ ├── a00330.html
│ │ │ ├── a00331.html
│ │ │ ├── a00332.html
│ │ │ ├── a00333.html
│ │ │ ├── a00334.html
│ │ │ ├── a00335.html
│ │ │ ├── a00336.html
│ │ │ ├── a00337.html
│ │ │ ├── a00338.html
│ │ │ ├── a00339.html
│ │ │ ├── a00340.html
│ │ │ ├── a00341.html
│ │ │ ├── a00342.html
│ │ │ ├── a00343.html
│ │ │ ├── a00344.html
│ │ │ ├── a00345.html
│ │ │ ├── a00346.html
│ │ │ ├── a00347.html
│ │ │ ├── a00348.html
│ │ │ ├── a00349.html
│ │ │ ├── a00350.html
│ │ │ ├── a00351.html
│ │ │ ├── a00352.html
│ │ │ ├── a00353.html
│ │ │ ├── a00354.html
│ │ │ ├── a00355.html
│ │ │ ├── a00356.html
│ │ │ ├── a00357.html
│ │ │ ├── a00358.html
│ │ │ ├── a00359.html
│ │ │ ├── a00360.html
│ │ │ ├── a00361.html
│ │ │ ├── a00362.html
│ │ │ ├── a00363.html
│ │ │ ├── a00364.html
│ │ │ ├── a00365.html
│ │ │ ├── a00366.html
│ │ │ ├── a00367.html
│ │ │ ├── a00368.html
│ │ │ ├── a00369.html
│ │ │ ├── a00370.html
│ │ │ ├── a00371.html
│ │ │ ├── a00372.html
│ │ │ ├── a00373.html
│ │ │ ├── a00374.html
│ │ │ ├── a00375.html
│ │ │ ├── a00376.html
│ │ │ ├── a00377.html
│ │ │ ├── a00378.html
│ │ │ ├── a00379.html
│ │ │ ├── a00380.html
│ │ │ ├── a00381.html
│ │ │ ├── a00382.html
│ │ │ ├── a00383.html
│ │ │ ├── a00384.html
│ │ │ ├── a00385.html
│ │ │ ├── a00386.html
│ │ │ ├── a00387.html
│ │ │ ├── a00388.html
│ │ │ ├── a00389.html
│ │ │ ├── a00390.html
│ │ │ ├── a00391.html
│ │ │ ├── a00392.html
│ │ │ ├── a00393.html
│ │ │ ├── a00394.html
│ │ │ ├── a00395.html
│ │ │ ├── a00396.html
│ │ │ ├── a00397.html
│ │ │ ├── a00398.html
│ │ │ ├── a00399.html
│ │ │ ├── a00400.html
│ │ │ ├── a00401.html
│ │ │ ├── a00402.html
│ │ │ ├── a00403.html
│ │ │ ├── a00404.html
│ │ │ ├── a00405.html
│ │ │ ├── a00406.html
│ │ │ ├── a00407.html
│ │ │ ├── a00408.html
│ │ │ ├── a00409.html
│ │ │ ├── a00410.html
│ │ │ ├── a00411.html
│ │ │ ├── a00412.html
│ │ │ ├── a00413.html
│ │ │ ├── a00414.html
│ │ │ ├── a00415.html
│ │ │ ├── a00416.html
│ │ │ ├── a00417.html
│ │ │ ├── a00418.html
│ │ │ ├── a00419.html
│ │ │ ├── a00420.html
│ │ │ ├── a00421.html
│ │ │ ├── a00422.html
│ │ │ ├── a00423.html
│ │ │ ├── a00424.html
│ │ │ ├── a00425.html
│ │ │ ├── a00426.html
│ │ │ ├── a00427.html
│ │ │ ├── a00428.html
│ │ │ ├── a00429.html
│ │ │ ├── a00430.html
│ │ │ ├── annotated.html
│ │ │ ├── classes.html
│ │ │ ├── dir_525f2cc589630bacbdc3bb450847427e.html
│ │ │ ├── dir_63fb2cc293d133785b96e521fa051167.html
│ │ │ ├── dir_87119f26c7695cbc270003e99bc7f49f.html
│ │ │ ├── dir_b9976680b2be72d2d0b8fca1c31202a2.html
│ │ │ ├── doxygen.css
│ │ │ ├── dynsections.js
│ │ │ ├── files.html
│ │ │ ├── functions.html
│ │ │ ├── functions_0x62.html
│ │ │ ├── functions_0x63.html
│ │ │ ├── functions_0x64.html
│ │ │ ├── functions_0x65.html
│ │ │ ├── functions_0x66.html
│ │ │ ├── functions_0x67.html
│ │ │ ├── functions_0x68.html
│ │ │ ├── functions_0x69.html
│ │ │ ├── functions_0x6a.html
│ │ │ ├── functions_0x6c.html
│ │ │ ├── functions_0x6d.html
│ │ │ ├── functions_0x6e.html
│ │ │ ├── functions_0x6f.html
│ │ │ ├── functions_0x70.html
│ │ │ ├── functions_0x71.html
│ │ │ ├── functions_0x72.html
│ │ │ ├── functions_0x73.html
│ │ │ ├── functions_0x74.html
│ │ │ ├── functions_0x75.html
│ │ │ ├── functions_0x76.html
│ │ │ ├── functions_0x77.html
│ │ │ ├── functions_0x7e.html
│ │ │ ├── functions_enum.html
│ │ │ ├── functions_eval.html
│ │ │ ├── functions_func.html
│ │ │ ├── functions_func_0x62.html
│ │ │ ├── functions_func_0x63.html
│ │ │ ├── functions_func_0x64.html
│ │ │ ├── functions_func_0x65.html
│ │ │ ├── functions_func_0x66.html
│ │ │ ├── functions_func_0x67.html
│ │ │ ├── functions_func_0x68.html
│ │ │ ├── functions_func_0x69.html
│ │ │ ├── functions_func_0x6a.html
│ │ │ ├── functions_func_0x6c.html
│ │ │ ├── functions_func_0x6d.html
│ │ │ ├── functions_func_0x6e.html
│ │ │ ├── functions_func_0x6f.html
│ │ │ ├── functions_func_0x70.html
│ │ │ ├── functions_func_0x71.html
│ │ │ ├── functions_func_0x72.html
│ │ │ ├── functions_func_0x73.html
│ │ │ ├── functions_func_0x74.html
│ │ │ ├── functions_func_0x75.html
│ │ │ ├── functions_func_0x77.html
│ │ │ ├── functions_func_0x7e.html
│ │ │ ├── functions_rela.html
│ │ │ ├── functions_type.html
│ │ │ ├── functions_vars.html
│ │ │ ├── globals.html
│ │ │ ├── globals_func.html
│ │ │ ├── hierarchy.html
│ │ │ ├── index.html
│ │ │ ├── jquery.js
│ │ │ ├── modules.html
│ │ │ ├── namespacemembers.html
│ │ │ ├── namespacemembers_enum.html
│ │ │ ├── namespacemembers_eval.html
│ │ │ ├── namespacemembers_func.html
│ │ │ ├── namespacemembers_type.html
│ │ │ ├── namespaces.html
│ │ │ ├── pages.html
│ │ │ └── tabs.css
│ │ ├── examples/
│ │ │ ├── GettingStarted/
│ │ │ │ ├── index.html
│ │ │ │ └── sub_string_finder/
│ │ │ │ ├── Makefile
│ │ │ │ ├── Makefile.windows
│ │ │ │ ├── msvs/
│ │ │ │ │ ├── sub_string_finder.sln
│ │ │ │ │ ├── sub_string_finder.vcxproj
│ │ │ │ │ ├── sub_string_finder_extended.vcxproj
│ │ │ │ │ └── sub_string_finder_pretty.vcxproj
│ │ │ │ ├── readme.html
│ │ │ │ ├── sub_string_finder
│ │ │ │ ├── sub_string_finder.cpp
│ │ │ │ ├── sub_string_finder_extended
│ │ │ │ ├── sub_string_finder_extended.cpp
│ │ │ │ ├── sub_string_finder_pretty
│ │ │ │ ├── sub_string_finder_pretty.cpp
│ │ │ │ └── xcode/
│ │ │ │ └── sub_string_finder.xcodeproj/
│ │ │ │ └── project.pbxproj
│ │ │ ├── Makefile
│ │ │ ├── common/
│ │ │ │ ├── copy_libraries.bat
│ │ │ │ ├── examples-common.inc
│ │ │ │ ├── gui/
│ │ │ │ │ ├── Makefile.gmake
│ │ │ │ │ ├── Makefile.win
│ │ │ │ │ ├── convideo.cpp
│ │ │ │ │ ├── d2dvideo.cpp
│ │ │ │ │ ├── dxcheck.bat
│ │ │ │ │ ├── gdivideo.cpp
│ │ │ │ │ ├── macvideo.cpp
│ │ │ │ │ ├── video.h
│ │ │ │ │ ├── winvideo.h
│ │ │ │ │ ├── xcode/
│ │ │ │ │ │ └── tbbExample/
│ │ │ │ │ │ ├── OpenGLView.h
│ │ │ │ │ │ ├── OpenGLView.m
│ │ │ │ │ │ ├── PkgInfo
│ │ │ │ │ │ ├── en.lproj/
│ │ │ │ │ │ │ ├── InfoPlist.strings
│ │ │ │ │ │ │ ├── MainMenu.nib
│ │ │ │ │ │ │ └── MainMenu.xib
│ │ │ │ │ │ ├── iOS.storyboard
│ │ │ │ │ │ ├── main.m
│ │ │ │ │ │ ├── tbbAppDelegate.h
│ │ │ │ │ │ ├── tbbAppDelegate.m
│ │ │ │ │ │ ├── tbbExample-Info.ios.plist
│ │ │ │ │ │ ├── tbbExample-Info.plist
│ │ │ │ │ │ └── tbbExample-Prefix.pch
│ │ │ │ │ └── xvideo.cpp
│ │ │ │ ├── index.html
│ │ │ │ ├── toolset.props
│ │ │ │ └── utility/
│ │ │ │ ├── fast_random.h
│ │ │ │ └── utility.h
│ │ │ ├── concurrent_hash_map/
│ │ │ │ ├── count_strings/
│ │ │ │ │ ├── Makefile
│ │ │ │ │ ├── Makefile.windows
│ │ │ │ │ ├── count_strings
│ │ │ │ │ ├── count_strings.cpp
│ │ │ │ │ ├── msvs/
│ │ │ │ │ │ ├── count_strings.sln
│ │ │ │ │ │ └── count_strings.vcxproj
│ │ │ │ │ ├── readme.html
│ │ │ │ │ └── xcode/
│ │ │ │ │ └── count_strings.xcodeproj/
│ │ │ │ │ └── project.pbxproj
│ │ │ │ └── index.html
│ │ │ ├── concurrent_priority_queue/
│ │ │ │ ├── index.html
│ │ │ │ └── shortpath/
│ │ │ │ ├── Makefile
│ │ │ │ ├── Makefile.windows
│ │ │ │ ├── msvs/
│ │ │ │ │ ├── shortpath.sln
│ │ │ │ │ └── shortpath.vcxproj
│ │ │ │ ├── readme.html
│ │ │ │ ├── shortpath
│ │ │ │ ├── shortpath.cpp
│ │ │ │ └── xcode/
│ │ │ │ └── shortpath.xcodeproj/
│ │ │ │ └── project.pbxproj
│ │ │ ├── graph/
│ │ │ │ ├── binpack/
│ │ │ │ │ ├── Makefile
│ │ │ │ │ ├── Makefile.windows
│ │ │ │ │ ├── binpack
│ │ │ │ │ ├── binpack.cpp
│ │ │ │ │ ├── msvs/
│ │ │ │ │ │ ├── binpack.sln
│ │ │ │ │ │ └── binpack.vcxproj
│ │ │ │ │ ├── readme.html
│ │ │ │ │ └── xcode/
│ │ │ │ │ └── binpack.xcodeproj/
│ │ │ │ │ └── project.pbxproj
│ │ │ │ ├── cholesky/
│ │ │ │ │ ├── Makefile
│ │ │ │ │ ├── Makefile.windows
│ │ │ │ │ ├── cholesky.cpp
│ │ │ │ │ ├── init.cpp
│ │ │ │ │ ├── msvs/
│ │ │ │ │ │ ├── cholesky.sln
│ │ │ │ │ │ └── cholesky.vcxproj
│ │ │ │ │ ├── readme.html
│ │ │ │ │ └── xcode/
│ │ │ │ │ └── cholesky.xcodeproj/
│ │ │ │ │ └── project.pbxproj
│ │ │ │ ├── dining_philosophers/
│ │ │ │ │ ├── Makefile
│ │ │ │ │ ├── Makefile.windows
│ │ │ │ │ ├── dining_philosophers
│ │ │ │ │ ├── dining_philosophers.cpp
│ │ │ │ │ ├── msvs/
│ │ │ │ │ │ ├── dining_philosophers.sln
│ │ │ │ │ │ └── dining_philosophers.vcxproj
│ │ │ │ │ ├── readme.html
│ │ │ │ │ └── xcode/
│ │ │ │ │ └── dining_philosophers.xcodeproj/
│ │ │ │ │ └── project.pbxproj
│ │ │ │ ├── fgbzip2/
│ │ │ │ │ ├── Makefile
│ │ │ │ │ ├── Makefile.windows
│ │ │ │ │ ├── blocksort.cpp
│ │ │ │ │ ├── bzlib.cpp
│ │ │ │ │ ├── bzlib.h
│ │ │ │ │ ├── bzlib_private.h
│ │ │ │ │ ├── compress.cpp
│ │ │ │ │ ├── crctable.cpp
│ │ │ │ │ ├── decompress.cpp
│ │ │ │ │ ├── fgbzip2
│ │ │ │ │ ├── fgbzip2.cpp
│ │ │ │ │ ├── huffman.cpp
│ │ │ │ │ ├── msvs/
│ │ │ │ │ │ ├── fgbzip2.sln
│ │ │ │ │ │ └── fgbzip2.vcxproj
│ │ │ │ │ ├── randtable.cpp
│ │ │ │ │ ├── readme.html
│ │ │ │ │ └── xcode/
│ │ │ │ │ └── fgbzip2.xcodeproj/
│ │ │ │ │ └── project.pbxproj
│ │ │ │ ├── index.html
│ │ │ │ ├── logic_sim/
│ │ │ │ │ ├── D_latch.h
│ │ │ │ │ ├── Makefile
│ │ │ │ │ ├── Makefile.windows
│ │ │ │ │ ├── basics.h
│ │ │ │ │ ├── four_bit_adder.h
│ │ │ │ │ ├── msvs/
│ │ │ │ │ │ ├── logic_sim.sln
│ │ │ │ │ │ └── logic_sim.vcxproj
│ │ │ │ │ ├── one_bit_adder.h
│ │ │ │ │ ├── readme.html
│ │ │ │ │ ├── test_all
│ │ │ │ │ ├── test_all.cpp
│ │ │ │ │ └── two_bit_adder.h
│ │ │ │ ├── matmult/
│ │ │ │ │ ├── Makefile
│ │ │ │ │ ├── Makefile.windows
│ │ │ │ │ ├── matmult
│ │ │ │ │ ├── matmult.cpp
│ │ │ │ │ ├── msvs/
│ │ │ │ │ │ ├── matmult.sln
│ │ │ │ │ │ └── matmult.vcxproj
│ │ │ │ │ └── readme.html
│ │ │ │ ├── som/
│ │ │ │ │ ├── Makefile
│ │ │ │ │ ├── Makefile.windows
│ │ │ │ │ ├── msvs/
│ │ │ │ │ │ ├── som.sln
│ │ │ │ │ │ └── som.vcxproj
│ │ │ │ │ ├── readme.html
│ │ │ │ │ ├── som.cpp
│ │ │ │ │ ├── som.h
│ │ │ │ │ ├── som_graph.cpp
│ │ │ │ │ └── xcode/
│ │ │ │ │ └── som.xcodeproj/
│ │ │ │ │ └── project.pbxproj
│ │ │ │ └── stereo/
│ │ │ │ ├── Makefile
│ │ │ │ ├── Makefile.windows
│ │ │ │ ├── imageEffects.cl
│ │ │ │ ├── lodepng.cpp
│ │ │ │ ├── lodepng.h
│ │ │ │ ├── msvs/
│ │ │ │ │ ├── stereo.sln
│ │ │ │ │ └── stereo.vcxproj
│ │ │ │ ├── readme.html
│ │ │ │ ├── stereo.cpp
│ │ │ │ ├── utils.h
│ │ │ │ └── xcode/
│ │ │ │ └── stereo.xcodeproj/
│ │ │ │ └── project.pbxproj
│ │ │ ├── index.html
│ │ │ ├── parallel_do/
│ │ │ │ ├── index.html
│ │ │ │ └── parallel_preorder/
│ │ │ │ ├── Graph.cpp
│ │ │ │ ├── Graph.h
│ │ │ │ ├── Makefile
│ │ │ │ ├── Makefile.windows
│ │ │ │ ├── Matrix.h
│ │ │ │ ├── main.cpp
│ │ │ │ ├── msvs/
│ │ │ │ │ ├── parallel_preorder.sln
│ │ │ │ │ └── parallel_preorder.vcxproj
│ │ │ │ ├── parallel_preorder
│ │ │ │ ├── parallel_preorder.cpp
│ │ │ │ ├── readme.html
│ │ │ │ └── xcode/
│ │ │ │ └── parallel_preorder.xcodeproj/
│ │ │ │ └── project.pbxproj
│ │ │ ├── parallel_for/
│ │ │ │ ├── game_of_life/
│ │ │ │ │ ├── Makefile
│ │ │ │ │ ├── Makefile.windows
│ │ │ │ │ ├── game_of_life
│ │ │ │ │ ├── msvs/
│ │ │ │ │ │ ├── Game_of_life.sln
│ │ │ │ │ │ ├── Game_of_life.vcxproj
│ │ │ │ │ │ ├── app.rc
│ │ │ │ │ │ └── resource.h
│ │ │ │ │ ├── readme.html
│ │ │ │ │ ├── src/
│ │ │ │ │ │ ├── AssemblyInfo.cpp
│ │ │ │ │ │ ├── Board.h
│ │ │ │ │ │ ├── Evolution.cpp
│ │ │ │ │ │ ├── Evolution.h
│ │ │ │ │ │ ├── Form1.h
│ │ │ │ │ │ ├── Game_of_life.cpp
│ │ │ │ │ │ └── Update_state.cpp
│ │ │ │ │ └── xcode/
│ │ │ │ │ └── game_of_life.xcodeproj/
│ │ │ │ │ └── project.pbxproj
│ │ │ │ ├── index.html
│ │ │ │ ├── polygon_overlay/
│ │ │ │ │ ├── Makefile
│ │ │ │ │ ├── Makefile.windows
│ │ │ │ │ ├── msvs/
│ │ │ │ │ │ ├── polygon_overlay.sln
│ │ │ │ │ │ ├── pover.rc
│ │ │ │ │ │ ├── pover.vcxproj
│ │ │ │ │ │ └── resource.h
│ │ │ │ │ ├── polymain.cpp
│ │ │ │ │ ├── polymain.h
│ │ │ │ │ ├── polyover.cpp
│ │ │ │ │ ├── polyover.h
│ │ │ │ │ ├── pover
│ │ │ │ │ ├── pover_global.h
│ │ │ │ │ ├── pover_video.cpp
│ │ │ │ │ ├── pover_video.h
│ │ │ │ │ ├── readme.html
│ │ │ │ │ ├── rpolygon.h
│ │ │ │ │ └── xcode/
│ │ │ │ │ └── polygon_overlay.xcodeproj/
│ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ └── xcshareddata/
│ │ │ │ │ └── xcschemes/
│ │ │ │ │ ├── tbbExample.ios.xcscheme
│ │ │ │ │ └── tbbExample.xcscheme
│ │ │ │ ├── seismic/
│ │ │ │ │ ├── Makefile
│ │ │ │ │ ├── Makefile.windows
│ │ │ │ │ ├── main.cpp
│ │ │ │ │ ├── msvs/
│ │ │ │ │ │ ├── SeismicSimulation.rc
│ │ │ │ │ │ ├── SeismicSimulation.vcxproj
│ │ │ │ │ │ ├── resource.h
│ │ │ │ │ │ └── seismic.sln
│ │ │ │ │ ├── readme.html
│ │ │ │ │ ├── seismic
│ │ │ │ │ ├── seismic_video.cpp
│ │ │ │ │ ├── seismic_video.h
│ │ │ │ │ ├── universe.cpp
│ │ │ │ │ ├── universe.h
│ │ │ │ │ └── xcode/
│ │ │ │ │ └── seismic.xcodeproj/
│ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ └── xcshareddata/
│ │ │ │ │ └── xcschemes/
│ │ │ │ │ ├── tbbExample.ios.xcscheme
│ │ │ │ │ └── tbbExample.xcscheme
│ │ │ │ └── tachyon/
│ │ │ │ ├── Makefile
│ │ │ │ ├── Makefile.windows
│ │ │ │ ├── msvs/
│ │ │ │ │ ├── gui.rc
│ │ │ │ │ ├── resource.h
│ │ │ │ │ ├── tachyon.serial.vcxproj
│ │ │ │ │ ├── tachyon.sln
│ │ │ │ │ ├── tachyon.tbb.vcxproj
│ │ │ │ │ ├── tachyon.tbb1d.vcxproj
│ │ │ │ │ ├── tachyon.vcxproj
│ │ │ │ │ └── win8ui/
│ │ │ │ │ ├── App.xaml
│ │ │ │ │ ├── App.xaml.cpp
│ │ │ │ │ ├── App.xaml.h
│ │ │ │ │ ├── Common/
│ │ │ │ │ │ └── StandardStyles.xaml
│ │ │ │ │ ├── DirectXBase.cpp
│ │ │ │ │ ├── DirectXBase.h
│ │ │ │ │ ├── DirectXPage.xaml
│ │ │ │ │ ├── DirectXPage.xaml.cpp
│ │ │ │ │ ├── DirectXPage.xaml.h
│ │ │ │ │ ├── Package.appxmanifest
│ │ │ │ │ ├── copy_libraries_and_assets.bat
│ │ │ │ │ ├── pch.h
│ │ │ │ │ ├── tbbTachyon.sln
│ │ │ │ │ ├── tbbTachyon.vcxproj
│ │ │ │ │ ├── tbbTachyon.vcxproj.filters
│ │ │ │ │ ├── tbbTachyonRenderer.cpp
│ │ │ │ │ └── tbbTachyonRenderer.h
│ │ │ │ ├── readme.html
│ │ │ │ ├── src/
│ │ │ │ │ ├── api.cpp
│ │ │ │ │ ├── api.h
│ │ │ │ │ ├── apigeom.cpp
│ │ │ │ │ ├── apitrigeom.cpp
│ │ │ │ │ ├── apitrigeom.h
│ │ │ │ │ ├── bndbox.cpp
│ │ │ │ │ ├── bndbox.h
│ │ │ │ │ ├── box.cpp
│ │ │ │ │ ├── box.h
│ │ │ │ │ ├── camera.cpp
│ │ │ │ │ ├── camera.h
│ │ │ │ │ ├── coordsys.cpp
│ │ │ │ │ ├── coordsys.h
│ │ │ │ │ ├── cylinder.cpp
│ │ │ │ │ ├── cylinder.h
│ │ │ │ │ ├── extvol.cpp
│ │ │ │ │ ├── extvol.h
│ │ │ │ │ ├── global.cpp
│ │ │ │ │ ├── global.h
│ │ │ │ │ ├── grid.cpp
│ │ │ │ │ ├── grid.h
│ │ │ │ │ ├── imageio.cpp
│ │ │ │ │ ├── imageio.h
│ │ │ │ │ ├── imap.cpp
│ │ │ │ │ ├── imap.h
│ │ │ │ │ ├── intersect.cpp
│ │ │ │ │ ├── intersect.h
│ │ │ │ │ ├── jpeg.cpp
│ │ │ │ │ ├── jpeg.h
│ │ │ │ │ ├── light.cpp
│ │ │ │ │ ├── light.h
│ │ │ │ │ ├── machine.h
│ │ │ │ │ ├── macros.h
│ │ │ │ │ ├── main.cpp
│ │ │ │ │ ├── objbound.cpp
│ │ │ │ │ ├── objbound.h
│ │ │ │ │ ├── parse.cpp
│ │ │ │ │ ├── parse.h
│ │ │ │ │ ├── plane.cpp
│ │ │ │ │ ├── plane.h
│ │ │ │ │ ├── ppm.cpp
│ │ │ │ │ ├── ppm.h
│ │ │ │ │ ├── pthread.cpp
│ │ │ │ │ ├── pthread_w.h
│ │ │ │ │ ├── quadric.cpp
│ │ │ │ │ ├── quadric.h
│ │ │ │ │ ├── render.cpp
│ │ │ │ │ ├── render.h
│ │ │ │ │ ├── ring.cpp
│ │ │ │ │ ├── ring.h
│ │ │ │ │ ├── shade.cpp
│ │ │ │ │ ├── shade.h
│ │ │ │ │ ├── sphere.cpp
│ │ │ │ │ ├── sphere.h
│ │ │ │ │ ├── tachyon_video.cpp
│ │ │ │ │ ├── tachyon_video.h
│ │ │ │ │ ├── texture.cpp
│ │ │ │ │ ├── texture.h
│ │ │ │ │ ├── tgafile.cpp
│ │ │ │ │ ├── tgafile.h
│ │ │ │ │ ├── trace.h
│ │ │ │ │ ├── trace.serial.cpp
│ │ │ │ │ ├── trace.simple.cpp
│ │ │ │ │ ├── trace.tbb.cpp
│ │ │ │ │ ├── trace.tbb1d.cpp
│ │ │ │ │ ├── trace_rest.cpp
│ │ │ │ │ ├── triangle.cpp
│ │ │ │ │ ├── triangle.h
│ │ │ │ │ ├── types.h
│ │ │ │ │ ├── ui.cpp
│ │ │ │ │ ├── ui.h
│ │ │ │ │ ├── util.cpp
│ │ │ │ │ ├── util.h
│ │ │ │ │ ├── vector.cpp
│ │ │ │ │ ├── vector.h
│ │ │ │ │ ├── vol.cpp
│ │ │ │ │ └── vol.h
│ │ │ │ ├── tachyon.serial
│ │ │ │ ├── tachyon.tbb
│ │ │ │ ├── tachyon.tbb1d
│ │ │ │ └── xcode/
│ │ │ │ └── tachyon.xcodeproj/
│ │ │ │ ├── project.pbxproj
│ │ │ │ └── xcshareddata/
│ │ │ │ └── xcschemes/
│ │ │ │ ├── tachyon.serial.xcscheme
│ │ │ │ ├── tachyon.tbb.ios.xcscheme
│ │ │ │ ├── tachyon.tbb.xcscheme
│ │ │ │ └── tachyon.tbb1d.xcscheme
│ │ │ ├── parallel_reduce/
│ │ │ │ ├── convex_hull/
│ │ │ │ │ ├── Makefile
│ │ │ │ │ ├── Makefile.windows
│ │ │ │ │ ├── convex_hull.h
│ │ │ │ │ ├── convex_hull_bench
│ │ │ │ │ ├── convex_hull_bench.cpp
│ │ │ │ │ ├── convex_hull_sample
│ │ │ │ │ ├── convex_hull_sample.cpp
│ │ │ │ │ ├── msvs/
│ │ │ │ │ │ ├── convex_hull.sln
│ │ │ │ │ │ ├── convex_hull_benchmark.vcxproj
│ │ │ │ │ │ └── convex_hull_sample.vcxproj
│ │ │ │ │ ├── readme.html
│ │ │ │ │ └── xcode/
│ │ │ │ │ └── convex_hull.xcodeproj/
│ │ │ │ │ └── project.pbxproj
│ │ │ │ ├── index.html
│ │ │ │ └── primes/
│ │ │ │ ├── Makefile
│ │ │ │ ├── Makefile.windows
│ │ │ │ ├── main.cpp
│ │ │ │ ├── msvs/
│ │ │ │ │ ├── primes.sln
│ │ │ │ │ └── primes.vcxproj
│ │ │ │ ├── primes
│ │ │ │ ├── primes.cpp
│ │ │ │ ├── primes.h
│ │ │ │ ├── readme.html
│ │ │ │ └── xcode/
│ │ │ │ └── primes.xcodeproj/
│ │ │ │ └── project.pbxproj
│ │ │ ├── pipeline/
│ │ │ │ ├── index.html
│ │ │ │ └── square/
│ │ │ │ ├── Makefile
│ │ │ │ ├── Makefile.windows
│ │ │ │ ├── gen_input.cpp
│ │ │ │ ├── input.txt
│ │ │ │ ├── msvs/
│ │ │ │ │ ├── square.sln
│ │ │ │ │ └── square.vcxproj
│ │ │ │ ├── output.txt
│ │ │ │ ├── readme.html
│ │ │ │ ├── square
│ │ │ │ ├── square.cpp
│ │ │ │ └── xcode/
│ │ │ │ └── square.xcodeproj/
│ │ │ │ └── project.pbxproj
│ │ │ ├── task/
│ │ │ │ ├── index.html
│ │ │ │ └── tree_sum/
│ │ │ │ ├── Makefile
│ │ │ │ ├── Makefile.windows
│ │ │ │ ├── OptimizedParallelSumTree.cpp
│ │ │ │ ├── SerialSumTree.cpp
│ │ │ │ ├── SimpleParallelSumTree.cpp
│ │ │ │ ├── TreeMaker.h
│ │ │ │ ├── common.h
│ │ │ │ ├── main.cpp
│ │ │ │ ├── msvs/
│ │ │ │ │ ├── tree_sum.sln
│ │ │ │ │ └── tree_sum.vcxproj
│ │ │ │ ├── readme.html
│ │ │ │ ├── tree_sum
│ │ │ │ └── xcode/
│ │ │ │ └── tree_sum.xcodeproj/
│ │ │ │ └── project.pbxproj
│ │ │ ├── task_arena/
│ │ │ │ ├── fractal/
│ │ │ │ │ ├── Fractal
│ │ │ │ │ ├── Makefile
│ │ │ │ │ ├── Makefile.windows
│ │ │ │ │ ├── fractal.cpp
│ │ │ │ │ ├── fractal.h
│ │ │ │ │ ├── fractal_video.h
│ │ │ │ │ ├── main.cpp
│ │ │ │ │ ├── msvs/
│ │ │ │ │ │ ├── fractal.sln
│ │ │ │ │ │ ├── fractal.vcxproj
│ │ │ │ │ │ ├── gui.rc
│ │ │ │ │ │ └── resource.h
│ │ │ │ │ ├── readme.html
│ │ │ │ │ └── xcode/
│ │ │ │ │ └── fractal.xcodeproj/
│ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ └── xcshareddata/
│ │ │ │ │ └── xcschemes/
│ │ │ │ │ ├── tbbExample.ios.xcscheme
│ │ │ │ │ └── tbbExample.xcscheme
│ │ │ │ └── index.html
│ │ │ ├── task_group/
│ │ │ │ ├── index.html
│ │ │ │ └── sudoku/
│ │ │ │ ├── Makefile
│ │ │ │ ├── Makefile.windows
│ │ │ │ ├── input1
│ │ │ │ ├── input2
│ │ │ │ ├── input3
│ │ │ │ ├── input4
│ │ │ │ ├── msvs/
│ │ │ │ │ ├── sudoku.sln
│ │ │ │ │ └── sudoku.vcxproj
│ │ │ │ ├── readme.html
│ │ │ │ ├── sudoku
│ │ │ │ ├── sudoku.cpp
│ │ │ │ └── xcode/
│ │ │ │ └── sudoku.xcodeproj/
│ │ │ │ └── project.pbxproj
│ │ │ └── test_all/
│ │ │ ├── fibonacci/
│ │ │ │ ├── Fibonacci.cpp
│ │ │ │ ├── Makefile
│ │ │ │ ├── Makefile.windows
│ │ │ │ ├── fibonacci
│ │ │ │ ├── msvs/
│ │ │ │ │ ├── fibonacci.sln
│ │ │ │ │ └── fibonacci.vcxproj
│ │ │ │ ├── readme.html
│ │ │ │ └── xcode/
│ │ │ │ └── fibonacci.xcodeproj/
│ │ │ │ └── project.pbxproj
│ │ │ └── index.html
│ │ ├── include/
│ │ │ ├── index.html
│ │ │ ├── serial/
│ │ │ │ └── tbb/
│ │ │ │ ├── parallel_for.h
│ │ │ │ └── tbb_annotate.h
│ │ │ └── tbb/
│ │ │ ├── aggregator.h
│ │ │ ├── aligned_space.h
│ │ │ ├── atomic.h
│ │ │ ├── blocked_range.h
│ │ │ ├── blocked_range2d.h
│ │ │ ├── blocked_range3d.h
│ │ │ ├── blocked_rangeNd.h
│ │ │ ├── cache_aligned_allocator.h
│ │ │ ├── combinable.h
│ │ │ ├── compat/
│ │ │ │ ├── condition_variable
│ │ │ │ ├── ppl.h
│ │ │ │ ├── thread
│ │ │ │ └── tuple
│ │ │ ├── concurrent_hash_map.h
│ │ │ ├── concurrent_lru_cache.h
│ │ │ ├── concurrent_priority_queue.h
│ │ │ ├── concurrent_queue.h
│ │ │ ├── concurrent_unordered_map.h
│ │ │ ├── concurrent_unordered_set.h
│ │ │ ├── concurrent_vector.h
│ │ │ ├── critical_section.h
│ │ │ ├── enumerable_thread_specific.h
│ │ │ ├── flow_graph.h
│ │ │ ├── flow_graph_abstractions.h
│ │ │ ├── flow_graph_opencl_node.h
│ │ │ ├── gfx_factory.h
│ │ │ ├── global_control.h
│ │ │ ├── index.html
│ │ │ ├── internal/
│ │ │ │ ├── _aggregator_impl.h
│ │ │ │ ├── _concurrent_queue_impl.h
│ │ │ │ ├── _concurrent_unordered_impl.h
│ │ │ │ ├── _flow_graph_async_msg_impl.h
│ │ │ │ ├── _flow_graph_body_impl.h
│ │ │ │ ├── _flow_graph_cache_impl.h
│ │ │ │ ├── _flow_graph_impl.h
│ │ │ │ ├── _flow_graph_indexer_impl.h
│ │ │ │ ├── _flow_graph_item_buffer_impl.h
│ │ │ │ ├── _flow_graph_join_impl.h
│ │ │ │ ├── _flow_graph_node_impl.h
│ │ │ │ ├── _flow_graph_streaming_node.h
│ │ │ │ ├── _flow_graph_tagged_buffer_impl.h
│ │ │ │ ├── _flow_graph_trace_impl.h
│ │ │ │ ├── _flow_graph_types_impl.h
│ │ │ │ ├── _mutex_padding.h
│ │ │ │ ├── _range_iterator.h
│ │ │ │ ├── _tbb_hash_compare_impl.h
│ │ │ │ ├── _tbb_strings.h
│ │ │ │ ├── _tbb_trace_impl.h
│ │ │ │ ├── _tbb_windef.h
│ │ │ │ ├── _template_helpers.h
│ │ │ │ ├── _x86_eliding_mutex_impl.h
│ │ │ │ └── _x86_rtm_rw_mutex_impl.h
│ │ │ ├── machine/
│ │ │ │ ├── gcc_arm.h
│ │ │ │ ├── gcc_generic.h
│ │ │ │ ├── gcc_ia32_common.h
│ │ │ │ ├── gcc_itsx.h
│ │ │ │ ├── ibm_aix51.h
│ │ │ │ ├── icc_generic.h
│ │ │ │ ├── linux_common.h
│ │ │ │ ├── linux_ia32.h
│ │ │ │ ├── linux_ia64.h
│ │ │ │ ├── linux_intel64.h
│ │ │ │ ├── mac_ppc.h
│ │ │ │ ├── macos_common.h
│ │ │ │ ├── mic_common.h
│ │ │ │ ├── msvc_armv7.h
│ │ │ │ ├── msvc_ia32_common.h
│ │ │ │ ├── sunos_sparc.h
│ │ │ │ ├── windows_api.h
│ │ │ │ ├── windows_ia32.h
│ │ │ │ └── windows_intel64.h
│ │ │ ├── memory_pool.h
│ │ │ ├── mutex.h
│ │ │ ├── null_mutex.h
│ │ │ ├── null_rw_mutex.h
│ │ │ ├── parallel_do.h
│ │ │ ├── parallel_for.h
│ │ │ ├── parallel_for_each.h
│ │ │ ├── parallel_invoke.h
│ │ │ ├── parallel_reduce.h
│ │ │ ├── parallel_scan.h
│ │ │ ├── parallel_sort.h
│ │ │ ├── parallel_while.h
│ │ │ ├── partitioner.h
│ │ │ ├── pipeline.h
│ │ │ ├── queuing_mutex.h
│ │ │ ├── queuing_rw_mutex.h
│ │ │ ├── reader_writer_lock.h
│ │ │ ├── recursive_mutex.h
│ │ │ ├── runtime_loader.h
│ │ │ ├── scalable_allocator.h
│ │ │ ├── spin_mutex.h
│ │ │ ├── spin_rw_mutex.h
│ │ │ ├── task.h
│ │ │ ├── task_arena.h
│ │ │ ├── task_group.h
│ │ │ ├── task_scheduler_init.h
│ │ │ ├── task_scheduler_observer.h
│ │ │ ├── tbb.h
│ │ │ ├── tbb_allocator.h
│ │ │ ├── tbb_config.h
│ │ │ ├── tbb_disable_exceptions.h
│ │ │ ├── tbb_exception.h
│ │ │ ├── tbb_machine.h
│ │ │ ├── tbb_profiling.h
│ │ │ ├── tbb_stddef.h
│ │ │ ├── tbb_thread.h
│ │ │ ├── tbbmalloc_proxy.h
│ │ │ └── tick_count.h
│ │ ├── index.html
│ │ ├── jni/
│ │ │ ├── Android.mk
│ │ │ └── Application.mk
│ │ ├── python/
│ │ │ ├── Makefile
│ │ │ ├── TBB.py
│ │ │ ├── index.html
│ │ │ ├── rml/
│ │ │ │ ├── Makefile
│ │ │ │ ├── ipc_server.cpp
│ │ │ │ ├── ipc_utils.cpp
│ │ │ │ └── ipc_utils.h
│ │ │ ├── setup.py
│ │ │ └── tbb/
│ │ │ ├── __init__.py
│ │ │ ├── __main__.py
│ │ │ ├── api.i
│ │ │ ├── pool.py
│ │ │ └── test.py
│ │ └── src/
│ │ ├── Makefile
│ │ ├── index.html
│ │ ├── old/
│ │ │ ├── concurrent_queue_v2.cpp
│ │ │ ├── concurrent_queue_v2.h
│ │ │ ├── concurrent_vector_v2.cpp
│ │ │ ├── concurrent_vector_v2.h
│ │ │ ├── spin_rw_mutex_v2.cpp
│ │ │ ├── spin_rw_mutex_v2.h
│ │ │ ├── task_v2.cpp
│ │ │ ├── test_concurrent_queue_v2.cpp
│ │ │ ├── test_concurrent_vector_v2.cpp
│ │ │ ├── test_mutex_v2.cpp
│ │ │ └── test_task_scheduler_observer_v3.cpp
│ │ ├── perf/
│ │ │ ├── coarse_grained_raii_lru_cache.h
│ │ │ ├── cpq_pdes.cpp
│ │ │ ├── fibonacci_impl_tbb.cpp
│ │ │ ├── perf.cpp
│ │ │ ├── perf.h
│ │ │ ├── perf_sched.cpp
│ │ │ ├── run_statistics.sh
│ │ │ ├── statistics.cpp
│ │ │ ├── statistics.h
│ │ │ ├── statistics_xml.h
│ │ │ ├── time_cpq_throughput_test.cpp
│ │ │ ├── time_fibonacci_cutoff.cpp
│ │ │ ├── time_framework.h
│ │ │ ├── time_hash_map.cpp
│ │ │ ├── time_hash_map_fill.cpp
│ │ │ ├── time_hash_map_fill.html
│ │ │ ├── time_locked_work.cpp
│ │ │ ├── time_lru_cache_throughput.cpp
│ │ │ ├── time_parallel_for_each.cpp
│ │ │ ├── time_sandbox.h
│ │ │ ├── time_split_node.cpp
│ │ │ └── time_vector.cpp
│ │ ├── rml/
│ │ │ ├── client/
│ │ │ │ ├── index.html
│ │ │ │ ├── library_assert.h
│ │ │ │ ├── omp_dynamic_link.cpp
│ │ │ │ ├── omp_dynamic_link.h
│ │ │ │ ├── rml_factory.h
│ │ │ │ ├── rml_omp.cpp
│ │ │ │ └── rml_tbb.cpp
│ │ │ ├── include/
│ │ │ │ ├── index.html
│ │ │ │ ├── rml_base.h
│ │ │ │ ├── rml_omp.h
│ │ │ │ └── rml_tbb.h
│ │ │ ├── index.html
│ │ │ ├── perfor/
│ │ │ │ ├── omp_nested.cpp
│ │ │ │ ├── omp_simple.cpp
│ │ │ │ ├── tbb_multi_omp.cpp
│ │ │ │ ├── tbb_simple.cpp
│ │ │ │ └── thread_level.h
│ │ │ ├── server/
│ │ │ │ ├── index.html
│ │ │ │ ├── irml.rc
│ │ │ │ ├── job_automaton.h
│ │ │ │ ├── lin-rml-export.def
│ │ │ │ ├── rml_server.cpp
│ │ │ │ ├── thread_monitor.h
│ │ │ │ ├── wait_counter.h
│ │ │ │ ├── win32-rml-export.def
│ │ │ │ └── win64-rml-export.def
│ │ │ └── test/
│ │ │ ├── rml_omp_stub.cpp
│ │ │ ├── test_job_automaton.cpp
│ │ │ ├── test_rml_mixed.cpp
│ │ │ ├── test_rml_omp.cpp
│ │ │ ├── test_rml_omp_c_linkage.c
│ │ │ ├── test_rml_tbb.cpp
│ │ │ ├── test_server.h
│ │ │ └── test_thread_monitor.cpp
│ │ ├── tbb/
│ │ │ ├── arena.cpp
│ │ │ ├── arena.h
│ │ │ ├── cache_aligned_allocator.cpp
│ │ │ ├── cilk-tbb-interop.h
│ │ │ ├── concurrent_hash_map.cpp
│ │ │ ├── concurrent_monitor.cpp
│ │ │ ├── concurrent_monitor.h
│ │ │ ├── concurrent_queue.cpp
│ │ │ ├── concurrent_vector.cpp
│ │ │ ├── condition_variable.cpp
│ │ │ ├── critical_section.cpp
│ │ │ ├── custom_scheduler.h
│ │ │ ├── dynamic_link.cpp
│ │ │ ├── dynamic_link.h
│ │ │ ├── governor.cpp
│ │ │ ├── governor.h
│ │ │ ├── ia32-masm/
│ │ │ │ ├── atomic_support.asm
│ │ │ │ ├── itsx.asm
│ │ │ │ └── lock_byte.asm
│ │ │ ├── ia64-gas/
│ │ │ │ ├── atomic_support.s
│ │ │ │ ├── ia64_misc.s
│ │ │ │ ├── lock_byte.s
│ │ │ │ ├── log2.s
│ │ │ │ └── pause.s
│ │ │ ├── ibm_aix51/
│ │ │ │ └── atomic_support.c
│ │ │ ├── index.html
│ │ │ ├── intel64-masm/
│ │ │ │ ├── atomic_support.asm
│ │ │ │ ├── intel64_misc.asm
│ │ │ │ └── itsx.asm
│ │ │ ├── intrusive_list.h
│ │ │ ├── itt_notify.cpp
│ │ │ ├── itt_notify.h
│ │ │ ├── lin32-tbb-export.def
│ │ │ ├── lin32-tbb-export.lst
│ │ │ ├── lin64-tbb-export.def
│ │ │ ├── lin64-tbb-export.lst
│ │ │ ├── lin64ipf-tbb-export.def
│ │ │ ├── lin64ipf-tbb-export.lst
│ │ │ ├── mac32-tbb-export.def
│ │ │ ├── mac32-tbb-export.lst
│ │ │ ├── mac64-tbb-export.def
│ │ │ ├── mac64-tbb-export.lst
│ │ │ ├── mailbox.h
│ │ │ ├── market.cpp
│ │ │ ├── market.h
│ │ │ ├── mutex.cpp
│ │ │ ├── observer_proxy.cpp
│ │ │ ├── observer_proxy.h
│ │ │ ├── pipeline.cpp
│ │ │ ├── private_server.cpp
│ │ │ ├── queuing_mutex.cpp
│ │ │ ├── queuing_rw_mutex.cpp
│ │ │ ├── reader_writer_lock.cpp
│ │ │ ├── recursive_mutex.cpp
│ │ │ ├── scheduler.cpp
│ │ │ ├── scheduler.h
│ │ │ ├── scheduler_common.h
│ │ │ ├── scheduler_utility.h
│ │ │ ├── semaphore.cpp
│ │ │ ├── semaphore.h
│ │ │ ├── spin_mutex.cpp
│ │ │ ├── spin_rw_mutex.cpp
│ │ │ ├── task.cpp
│ │ │ ├── task_group_context.cpp
│ │ │ ├── task_stream.h
│ │ │ ├── tbb_assert_impl.h
│ │ │ ├── tbb_main.cpp
│ │ │ ├── tbb_main.h
│ │ │ ├── tbb_misc.cpp
│ │ │ ├── tbb_misc.h
│ │ │ ├── tbb_misc_ex.cpp
│ │ │ ├── tbb_resource.rc
│ │ │ ├── tbb_statistics.cpp
│ │ │ ├── tbb_statistics.h
│ │ │ ├── tbb_thread.cpp
│ │ │ ├── tbb_version.h
│ │ │ ├── tls.h
│ │ │ ├── tools_api/
│ │ │ │ ├── disable_warnings.h
│ │ │ │ ├── ittnotify.h
│ │ │ │ ├── ittnotify_config.h
│ │ │ │ ├── ittnotify_static.c
│ │ │ │ ├── ittnotify_static.h
│ │ │ │ ├── ittnotify_types.h
│ │ │ │ └── legacy/
│ │ │ │ └── ittnotify.h
│ │ │ ├── win32-tbb-export.def
│ │ │ ├── win32-tbb-export.lst
│ │ │ ├── win64-gcc-tbb-export.def
│ │ │ ├── win64-gcc-tbb-export.lst
│ │ │ ├── win64-tbb-export.def
│ │ │ ├── win64-tbb-export.lst
│ │ │ ├── winrt-tbb-export.lst
│ │ │ └── x86_rtm_rw_mutex.cpp
│ │ ├── tbbmalloc/
│ │ │ ├── Customize.h
│ │ │ ├── MapMemory.h
│ │ │ ├── Statistics.h
│ │ │ ├── TypeDefinitions.h
│ │ │ ├── backend.cpp
│ │ │ ├── backref.cpp
│ │ │ ├── frontend.cpp
│ │ │ ├── index.html
│ │ │ ├── large_objects.cpp
│ │ │ ├── lin32-proxy-export.def
│ │ │ ├── lin32-tbbmalloc-export.def
│ │ │ ├── lin64-proxy-export.def
│ │ │ ├── lin64-tbbmalloc-export.def
│ │ │ ├── lin64ipf-proxy-export.def
│ │ │ ├── lin64ipf-tbbmalloc-export.def
│ │ │ ├── mac32-tbbmalloc-export.def
│ │ │ ├── mac64-tbbmalloc-export.def
│ │ │ ├── proxy.cpp
│ │ │ ├── proxy.h
│ │ │ ├── proxy_overload_osx.h
│ │ │ ├── shared_utils.h
│ │ │ ├── tbb_function_replacement.cpp
│ │ │ ├── tbb_function_replacement.h
│ │ │ ├── tbbmalloc.cpp
│ │ │ ├── tbbmalloc.rc
│ │ │ ├── tbbmalloc_internal.h
│ │ │ ├── tbbmalloc_internal_api.h
│ │ │ ├── win32-gcc-tbbmalloc-export.def
│ │ │ ├── win32-tbbmalloc-export.def
│ │ │ ├── win64-gcc-tbbmalloc-export.def
│ │ │ └── win64-tbbmalloc-export.def
│ │ ├── tbbproxy/
│ │ │ ├── tbbproxy-windows.asm
│ │ │ └── tbbproxy.cpp
│ │ └── test/
│ │ ├── harness.h
│ │ ├── harness_allocator.h
│ │ ├── harness_allocator_overload.h
│ │ ├── harness_assert.h
│ │ ├── harness_bad_expr.h
│ │ ├── harness_barrier.h
│ │ ├── harness_checktype.h
│ │ ├── harness_concurrency.h
│ │ ├── harness_concurrency_tracker.h
│ │ ├── harness_cpu.h
│ │ ├── harness_defs.h
│ │ ├── harness_dynamic_libs.h
│ │ ├── harness_eh.h
│ │ ├── harness_fp.h
│ │ ├── harness_graph.h
│ │ ├── harness_inject_scheduler.h
│ │ ├── harness_iterator.h
│ │ ├── harness_m128.h
│ │ ├── harness_memory.h
│ │ ├── harness_mic.h
│ │ ├── harness_preload.h
│ │ ├── harness_report.h
│ │ ├── harness_runtime_loader.h
│ │ ├── harness_state_trackable.h
│ │ ├── harness_task.h
│ │ ├── harness_tbb_independence.h
│ │ ├── harness_test_cases_framework.h
│ │ ├── harness_tls.h
│ │ ├── harness_tsx.h
│ │ ├── test_ScalableAllocator.cpp
│ │ ├── test_ScalableAllocator_STL.cpp
│ │ ├── test_aggregator.cpp
│ │ ├── test_aligned_space.cpp
│ │ ├── test_allocator.h
│ │ ├── test_allocator_STL.h
│ │ ├── test_assembly.cpp
│ │ ├── test_async_msg.cpp
│ │ ├── test_async_node.cpp
│ │ ├── test_atomic.cpp
│ │ ├── test_blocked_range.cpp
│ │ ├── test_blocked_range2d.cpp
│ │ ├── test_blocked_range3d.cpp
│ │ ├── test_blocked_rangeNd.cpp
│ │ ├── test_broadcast_node.cpp
│ │ ├── test_buffer_node.cpp
│ │ ├── test_cache_aligned_allocator.cpp
│ │ ├── test_cache_aligned_allocator_STL.cpp
│ │ ├── test_cilk_common.h
│ │ ├── test_cilk_dynamic_load.cpp
│ │ ├── test_cilk_interop.cpp
│ │ ├── test_combinable.cpp
│ │ ├── test_composite_node.cpp
│ │ ├── test_concurrent_hash_map.cpp
│ │ ├── test_concurrent_lru_cache.cpp
│ │ ├── test_concurrent_monitor.cpp
│ │ ├── test_concurrent_priority_queue.cpp
│ │ ├── test_concurrent_queue.cpp
│ │ ├── test_concurrent_queue_whitebox.cpp
│ │ ├── test_concurrent_unordered_common.h
│ │ ├── test_concurrent_unordered_map.cpp
│ │ ├── test_concurrent_unordered_set.cpp
│ │ ├── test_concurrent_vector.cpp
│ │ ├── test_condition_variable.h
│ │ ├── test_container_move_support.h
│ │ ├── test_continue_node.cpp
│ │ ├── test_critical_section.cpp
│ │ ├── test_dynamic_link.cpp
│ │ ├── test_eh_algorithms.cpp
│ │ ├── test_eh_flow_graph.cpp
│ │ ├── test_eh_tasks.cpp
│ │ ├── test_enumerable_thread_specific.cpp
│ │ ├── test_examples_common_utility.cpp
│ │ ├── test_fast_random.cpp
│ │ ├── test_flow_graph.cpp
│ │ ├── test_flow_graph_whitebox.cpp
│ │ ├── test_fp.cpp
│ │ ├── test_function_node.cpp
│ │ ├── test_gfx_factory.cpp
│ │ ├── test_global_control.cpp
│ │ ├── test_global_control_whitebox.cpp
│ │ ├── test_halt.cpp
│ │ ├── test_handle_perror.cpp
│ │ ├── test_hw_concurrency.cpp
│ │ ├── test_indexer_node.cpp
│ │ ├── test_initializer_list.h
│ │ ├── test_inits_loop.cpp
│ │ ├── test_intrusive_list.cpp
│ │ ├── test_ittnotify.cpp
│ │ ├── test_join_node.cpp
│ │ ├── test_join_node.h
│ │ ├── test_join_node_key_matching.cpp
│ │ ├── test_join_node_msg_key_matching.cpp
│ │ ├── test_lambda.cpp
│ │ ├── test_limiter_node.cpp
│ │ ├── test_malloc_atexit.cpp
│ │ ├── test_malloc_compliance.cpp
│ │ ├── test_malloc_init_shutdown.cpp
│ │ ├── test_malloc_lib_unload.cpp
│ │ ├── test_malloc_overload.cpp
│ │ ├── test_malloc_pools.cpp
│ │ ├── test_malloc_pure_c.c
│ │ ├── test_malloc_regression.cpp
│ │ ├── test_malloc_used_by_lib.cpp
│ │ ├── test_malloc_whitebox.cpp
│ │ ├── test_model_plugin.cpp
│ │ ├── test_multifunction_node.cpp
│ │ ├── test_mutex.cpp
│ │ ├── test_mutex_native_threads.cpp
│ │ ├── test_opencl_kernel_32.spir
│ │ ├── test_opencl_kernel_64.spir
│ │ ├── test_opencl_node.cl
│ │ ├── test_opencl_node.cpp
│ │ ├── test_opencl_precompiled_kernel_gpu_32.ir
│ │ ├── test_opencl_precompiled_kernel_gpu_64.ir
│ │ ├── test_openmp.cpp
│ │ ├── test_overwrite_node.cpp
│ │ ├── test_parallel_do.cpp
│ │ ├── test_parallel_for.cpp
│ │ ├── test_parallel_for_each.cpp
│ │ ├── test_parallel_for_vectorization.cpp
│ │ ├── test_parallel_invoke.cpp
│ │ ├── test_parallel_pipeline.cpp
│ │ ├── test_parallel_reduce.cpp
│ │ ├── test_parallel_scan.cpp
│ │ ├── test_parallel_sort.cpp
│ │ ├── test_parallel_while.cpp
│ │ ├── test_partitioner.h
│ │ ├── test_partitioner_whitebox.cpp
│ │ ├── test_partitioner_whitebox.h
│ │ ├── test_pipeline.cpp
│ │ ├── test_pipeline_with_tbf.cpp
│ │ ├── test_priority_queue_node.cpp
│ │ ├── test_queue_node.cpp
│ │ ├── test_range_based_for.h
│ │ ├── test_reader_writer_lock.cpp
│ │ ├── test_runtime_loader.cpp
│ │ ├── test_rwm_upgrade_downgrade.cpp
│ │ ├── test_semaphore.cpp
│ │ ├── test_sequencer_node.cpp
│ │ ├── test_source_node.cpp
│ │ ├── test_split_node.cpp
│ │ ├── test_static_assert.cpp
│ │ ├── test_std_thread.cpp
│ │ ├── test_streaming_node.cpp
│ │ ├── test_tagged_msg.cpp
│ │ ├── test_task.cpp
│ │ ├── test_task_arena.cpp
│ │ ├── test_task_assertions.cpp
│ │ ├── test_task_auto_init.cpp
│ │ ├── test_task_enqueue.cpp
│ │ ├── test_task_group.cpp
│ │ ├── test_task_leaks.cpp
│ │ ├── test_task_priority.cpp
│ │ ├── test_task_scheduler_init.cpp
│ │ ├── test_task_scheduler_observer.cpp
│ │ ├── test_task_steal_limit.cpp
│ │ ├── test_tbb_condition_variable.cpp
│ │ ├── test_tbb_fork.cpp
│ │ ├── test_tbb_header.cpp
│ │ ├── test_tbb_thread.cpp
│ │ ├── test_tbb_version.cpp
│ │ ├── test_thread.h
│ │ ├── test_tick_count.cpp
│ │ ├── test_tuple.cpp
│ │ ├── test_write_once_node.cpp
│ │ └── test_yield.cpp
│ └── tbb2018_20180822oss/
│ ├── CHANGES
│ ├── LICENSE
│ ├── README
│ ├── README.md
│ ├── bin/
│ │ ├── tbbvars.csh
│ │ └── tbbvars.sh
│ ├── cmake/
│ │ ├── README.rst
│ │ ├── TBBBuild.cmake
│ │ ├── TBBConfig.cmake
│ │ ├── TBBConfigVersion.cmake
│ │ ├── TBBGet.cmake
│ │ ├── TBBMakeConfig.cmake
│ │ ├── tbb_config_generator.cmake
│ │ └── templates/
│ │ ├── TBBConfig.cmake.in
│ │ ├── TBBConfigForSource.cmake.in
│ │ └── TBBConfigVersion.cmake.in
│ ├── doc/
│ │ ├── Release_Notes.txt
│ │ └── html/
│ │ ├── a00002.html
│ │ ├── a00004.html
│ │ ├── a00006.html
│ │ ├── a00008.html
│ │ ├── a00010.html
│ │ ├── a00012.html
│ │ ├── a00014.html
│ │ ├── a00016.html
│ │ ├── a00017.html
│ │ ├── a00018.html
│ │ ├── a00019.html
│ │ ├── a00020.html
│ │ ├── a00021.html
│ │ ├── a00022.html
│ │ ├── a00023.html
│ │ ├── a00024.html
│ │ ├── a00025.html
│ │ ├── a00026.html
│ │ ├── a00027.html
│ │ ├── a00028.html
│ │ ├── a00029.html
│ │ ├── a00030.html
│ │ ├── a00031.html
│ │ ├── a00032.html
│ │ ├── a00033.html
│ │ ├── a00034.html
│ │ ├── a00035.html
│ │ ├── a00036.html
│ │ ├── a00037.html
│ │ ├── a00038.html
│ │ ├── a00039.html
│ │ ├── a00040.html
│ │ ├── a00041.html
│ │ ├── a00042.html
│ │ ├── a00043.html
│ │ ├── a00044.html
│ │ ├── a00045.html
│ │ ├── a00046.html
│ │ ├── a00047.html
│ │ ├── a00048.html
│ │ ├── a00049.html
│ │ ├── a00050.html
│ │ ├── a00051.html
│ │ ├── a00052.html
│ │ ├── a00053.html
│ │ ├── a00054.html
│ │ ├── a00055.html
│ │ ├── a00056.html
│ │ ├── a00057.html
│ │ ├── a00058.html
│ │ ├── a00059.html
│ │ ├── a00060.html
│ │ ├── a00061.html
│ │ ├── a00062.html
│ │ ├── a00063.html
│ │ ├── a00064.html
│ │ ├── a00065.html
│ │ ├── a00066.html
│ │ ├── a00067.html
│ │ ├── a00068.html
│ │ ├── a00069.html
│ │ ├── a00070.html
│ │ ├── a00071.html
│ │ ├── a00072.html
│ │ ├── a00073.html
│ │ ├── a00074.html
│ │ ├── a00075.html
│ │ ├── a00076.html
│ │ ├── a00077.html
│ │ ├── a00078.html
│ │ ├── a00079.html
│ │ ├── a00080.html
│ │ ├── a00081.html
│ │ ├── a00082.html
│ │ ├── a00083.html
│ │ ├── a00084.html
│ │ ├── a00085.html
│ │ ├── a00086.html
│ │ ├── a00087.html
│ │ ├── a00088.html
│ │ ├── a00089.html
│ │ ├── a00090.html
│ │ ├── a00091.html
│ │ ├── a00092.html
│ │ ├── a00093.html
│ │ ├── a00094.html
│ │ ├── a00095.html
│ │ ├── a00096.html
│ │ ├── a00097.html
│ │ ├── a00098.html
│ │ ├── a00099.html
│ │ ├── a00100.html
│ │ ├── a00101.html
│ │ ├── a00102.html
│ │ ├── a00103.html
│ │ ├── a00104.html
│ │ ├── a00105.html
│ │ ├── a00106.html
│ │ ├── a00107.html
│ │ ├── a00108.html
│ │ ├── a00109.html
│ │ ├── a00110.html
│ │ ├── a00111.html
│ │ ├── a00112.html
│ │ ├── a00113.html
│ │ ├── a00114.html
│ │ ├── a00115.html
│ │ ├── a00116.html
│ │ ├── a00117.html
│ │ ├── a00118.html
│ │ ├── a00119.html
│ │ ├── a00120.html
│ │ ├── a00121.html
│ │ ├── a00122.html
│ │ ├── a00123.html
│ │ ├── a00124.html
│ │ ├── a00125.html
│ │ ├── a00126.html
│ │ ├── a00127.html
│ │ ├── a00128.html
│ │ ├── a00129.html
│ │ ├── a00130.html
│ │ ├── a00131.html
│ │ ├── a00132.html
│ │ ├── a00133.html
│ │ ├── a00134.html
│ │ ├── a00135.html
│ │ ├── a00136.html
│ │ ├── a00137.html
│ │ ├── a00138.html
│ │ ├── a00139.html
│ │ ├── a00140.html
│ │ ├── a00141.html
│ │ ├── a00142.html
│ │ ├── a00143.html
│ │ ├── a00144.html
│ │ ├── a00145.html
│ │ ├── a00146.html
│ │ ├── a00147.html
│ │ ├── a00148.html
│ │ ├── a00149.html
│ │ ├── a00150.html
│ │ ├── a00151.html
│ │ ├── a00152.html
│ │ ├── a00153.html
│ │ ├── a00154.html
│ │ ├── a00155.html
│ │ ├── a00156.html
│ │ ├── a00157.html
│ │ ├── a00158.html
│ │ ├── a00159.html
│ │ ├── a00160.html
│ │ ├── a00161.html
│ │ ├── a00162.html
│ │ ├── a00163.html
│ │ ├── a00164.html
│ │ ├── a00165.html
│ │ ├── a00166.html
│ │ ├── a00167.html
│ │ ├── a00168.html
│ │ ├── a00169.html
│ │ ├── a00170.html
│ │ ├── a00171.html
│ │ ├── a00172.html
│ │ ├── a00173.html
│ │ ├── a00174.html
│ │ ├── a00175.html
│ │ ├── a00176.html
│ │ ├── a00177.html
│ │ ├── a00178.html
│ │ ├── a00179.html
│ │ ├── a00180.html
│ │ ├── a00181.html
│ │ ├── a00182.html
│ │ ├── a00183.html
│ │ ├── a00184.html
│ │ ├── a00203.html
│ │ ├── a00208.html
│ │ ├── a00227.html
│ │ ├── a00246.html
│ │ ├── a00249.html
│ │ ├── a00271.html
│ │ ├── a00272.html
│ │ ├── a00273.html
│ │ ├── a00274.html
│ │ ├── a00275.html
│ │ ├── a00276.html
│ │ ├── a00278.html
│ │ ├── a00279.html
│ │ ├── a00280.html
│ │ ├── a00281.html
│ │ ├── a00282.html
│ │ ├── a00283.html
│ │ ├── a00284.html
│ │ ├── a00285.html
│ │ ├── a00286.html
│ │ ├── a00287.html
│ │ ├── a00288.html
│ │ ├── a00289.html
│ │ ├── a00290.html
│ │ ├── a00291.html
│ │ ├── a00292.html
│ │ ├── a00293.html
│ │ ├── a00294.html
│ │ ├── a00295.html
│ │ ├── a00296.html
│ │ ├── a00297.html
│ │ ├── a00298.html
│ │ ├── a00299.html
│ │ ├── a00300.html
│ │ ├── a00301.html
│ │ ├── a00302.html
│ │ ├── a00303.html
│ │ ├── a00304.html
│ │ ├── a00305.html
│ │ ├── a00306.html
│ │ ├── a00307.html
│ │ ├── a00308.html
│ │ ├── a00309.html
│ │ ├── a00310.html
│ │ ├── a00311.html
│ │ ├── a00312.html
│ │ ├── a00313.html
│ │ ├── a00314.html
│ │ ├── a00315.html
│ │ ├── a00316.html
│ │ ├── a00317.html
│ │ ├── a00318.html
│ │ ├── a00319.html
│ │ ├── a00320.html
│ │ ├── a00321.html
│ │ ├── a00322.html
│ │ ├── a00323.html
│ │ ├── a00324.html
│ │ ├── a00325.html
│ │ ├── a00326.html
│ │ ├── a00327.html
│ │ ├── a00328.html
│ │ ├── a00329.html
│ │ ├── a00330.html
│ │ ├── a00331.html
│ │ ├── a00332.html
│ │ ├── a00333.html
│ │ ├── a00334.html
│ │ ├── a00335.html
│ │ ├── a00336.html
│ │ ├── a00337.html
│ │ ├── a00338.html
│ │ ├── a00339.html
│ │ ├── a00340.html
│ │ ├── a00341.html
│ │ ├── a00342.html
│ │ ├── a00343.html
│ │ ├── a00344.html
│ │ ├── a00345.html
│ │ ├── a00346.html
│ │ ├── a00347.html
│ │ ├── a00348.html
│ │ ├── a00349.html
│ │ ├── a00350.html
│ │ ├── a00351.html
│ │ ├── a00352.html
│ │ ├── a00353.html
│ │ ├── a00354.html
│ │ ├── a00355.html
│ │ ├── a00356.html
│ │ ├── a00357.html
│ │ ├── a00358.html
│ │ ├── a00359.html
│ │ ├── a00360.html
│ │ ├── a00361.html
│ │ ├── a00362.html
│ │ ├── a00363.html
│ │ ├── a00364.html
│ │ ├── a00365.html
│ │ ├── a00366.html
│ │ ├── a00367.html
│ │ ├── a00368.html
│ │ ├── a00369.html
│ │ ├── a00370.html
│ │ ├── a00371.html
│ │ ├── a00372.html
│ │ ├── a00373.html
│ │ ├── a00374.html
│ │ ├── a00375.html
│ │ ├── a00376.html
│ │ ├── a00377.html
│ │ ├── a00378.html
│ │ ├── a00379.html
│ │ ├── a00380.html
│ │ ├── a00381.html
│ │ ├── a00382.html
│ │ ├── a00383.html
│ │ ├── a00384.html
│ │ ├── a00385.html
│ │ ├── a00386.html
│ │ ├── a00387.html
│ │ ├── a00388.html
│ │ ├── a00389.html
│ │ ├── a00390.html
│ │ ├── a00391.html
│ │ ├── a00392.html
│ │ ├── a00393.html
│ │ ├── a00394.html
│ │ ├── a00395.html
│ │ ├── a00396.html
│ │ ├── a00397.html
│ │ ├── a00398.html
│ │ ├── a00399.html
│ │ ├── a00400.html
│ │ ├── a00401.html
│ │ ├── a00402.html
│ │ ├── a00403.html
│ │ ├── a00404.html
│ │ ├── a00405.html
│ │ ├── a00406.html
│ │ ├── a00407.html
│ │ ├── a00408.html
│ │ ├── a00409.html
│ │ ├── a00410.html
│ │ ├── a00411.html
│ │ ├── a00412.html
│ │ ├── a00413.html
│ │ ├── a00414.html
│ │ ├── a00415.html
│ │ ├── a00416.html
│ │ ├── a00417.html
│ │ ├── a00418.html
│ │ ├── a00419.html
│ │ ├── a00420.html
│ │ ├── a00421.html
│ │ ├── a00422.html
│ │ ├── a00423.html
│ │ ├── a00424.html
│ │ ├── a00425.html
│ │ ├── a00426.html
│ │ ├── a00427.html
│ │ ├── a00428.html
│ │ ├── a00429.html
│ │ ├── a00430.html
│ │ ├── annotated.html
│ │ ├── classes.html
│ │ ├── dir_525f2cc589630bacbdc3bb450847427e.html
│ │ ├── dir_63fb2cc293d133785b96e521fa051167.html
│ │ ├── dir_87119f26c7695cbc270003e99bc7f49f.html
│ │ ├── dir_b9976680b2be72d2d0b8fca1c31202a2.html
│ │ ├── doxygen.css
│ │ ├── dynsections.js
│ │ ├── files.html
│ │ ├── functions.html
│ │ ├── functions_0x62.html
│ │ ├── functions_0x63.html
│ │ ├── functions_0x64.html
│ │ ├── functions_0x65.html
│ │ ├── functions_0x66.html
│ │ ├── functions_0x67.html
│ │ ├── functions_0x68.html
│ │ ├── functions_0x69.html
│ │ ├── functions_0x6a.html
│ │ ├── functions_0x6c.html
│ │ ├── functions_0x6d.html
│ │ ├── functions_0x6e.html
│ │ ├── functions_0x6f.html
│ │ ├── functions_0x70.html
│ │ ├── functions_0x71.html
│ │ ├── functions_0x72.html
│ │ ├── functions_0x73.html
│ │ ├── functions_0x74.html
│ │ ├── functions_0x75.html
│ │ ├── functions_0x76.html
│ │ ├── functions_0x77.html
│ │ ├── functions_0x7e.html
│ │ ├── functions_enum.html
│ │ ├── functions_eval.html
│ │ ├── functions_func.html
│ │ ├── functions_func_0x62.html
│ │ ├── functions_func_0x63.html
│ │ ├── functions_func_0x64.html
│ │ ├── functions_func_0x65.html
│ │ ├── functions_func_0x66.html
│ │ ├── functions_func_0x67.html
│ │ ├── functions_func_0x68.html
│ │ ├── functions_func_0x69.html
│ │ ├── functions_func_0x6a.html
│ │ ├── functions_func_0x6c.html
│ │ ├── functions_func_0x6d.html
│ │ ├── functions_func_0x6e.html
│ │ ├── functions_func_0x6f.html
│ │ ├── functions_func_0x70.html
│ │ ├── functions_func_0x71.html
│ │ ├── functions_func_0x72.html
│ │ ├── functions_func_0x73.html
│ │ ├── functions_func_0x74.html
│ │ ├── functions_func_0x75.html
│ │ ├── functions_func_0x77.html
│ │ ├── functions_func_0x7e.html
│ │ ├── functions_rela.html
│ │ ├── functions_type.html
│ │ ├── functions_vars.html
│ │ ├── globals.html
│ │ ├── globals_func.html
│ │ ├── hierarchy.html
│ │ ├── index.html
│ │ ├── jquery.js
│ │ ├── modules.html
│ │ ├── namespacemembers.html
│ │ ├── namespacemembers_enum.html
│ │ ├── namespacemembers_eval.html
│ │ ├── namespacemembers_func.html
│ │ ├── namespacemembers_type.html
│ │ ├── namespaces.html
│ │ ├── pages.html
│ │ └── tabs.css
│ ├── examples/
│ │ ├── GettingStarted/
│ │ │ ├── index.html
│ │ │ └── sub_string_finder/
│ │ │ ├── Makefile
│ │ │ ├── readme.html
│ │ │ ├── sub_string_finder.cpp
│ │ │ ├── sub_string_finder_extended.cpp
│ │ │ └── sub_string_finder_pretty.cpp
│ │ ├── common/
│ │ │ ├── examples-common.inc
│ │ │ ├── gui/
│ │ │ │ ├── Makefile.gmake
│ │ │ │ ├── Makefile.win
│ │ │ │ ├── convideo.cpp
│ │ │ │ ├── d2dvideo.cpp
│ │ │ │ ├── dxcheck.bat
│ │ │ │ ├── gdivideo.cpp
│ │ │ │ ├── macvideo.cpp
│ │ │ │ ├── video.h
│ │ │ │ ├── winvideo.h
│ │ │ │ └── xvideo.cpp
│ │ │ ├── index.html
│ │ │ └── utility/
│ │ │ ├── fast_random.h
│ │ │ └── utility.h
│ │ ├── concurrent_hash_map/
│ │ │ ├── count_strings/
│ │ │ │ ├── Makefile
│ │ │ │ ├── count_strings.cpp
│ │ │ │ └── readme.html
│ │ │ └── index.html
│ │ ├── concurrent_priority_queue/
│ │ │ ├── index.html
│ │ │ └── shortpath/
│ │ │ ├── Makefile
│ │ │ ├── readme.html
│ │ │ └── shortpath.cpp
│ │ ├── graph/
│ │ │ ├── binpack/
│ │ │ │ ├── Makefile
│ │ │ │ ├── binpack.cpp
│ │ │ │ └── readme.html
│ │ │ ├── cholesky/
│ │ │ │ ├── Makefile
│ │ │ │ ├── cholesky.cpp
│ │ │ │ ├── init.cpp
│ │ │ │ └── readme.html
│ │ │ ├── dining_philosophers/
│ │ │ │ ├── Makefile
│ │ │ │ ├── dining_philosophers.cpp
│ │ │ │ └── readme.html
│ │ │ ├── fgbzip2/
│ │ │ │ ├── Makefile
│ │ │ │ ├── blocksort.cpp
│ │ │ │ ├── bzlib.cpp
│ │ │ │ ├── bzlib.h
│ │ │ │ ├── bzlib_private.h
│ │ │ │ ├── compress.cpp
│ │ │ │ ├── crctable.cpp
│ │ │ │ ├── decompress.cpp
│ │ │ │ ├── fgbzip2.cpp
│ │ │ │ ├── huffman.cpp
│ │ │ │ ├── randtable.cpp
│ │ │ │ └── readme.html
│ │ │ ├── index.html
│ │ │ ├── logic_sim/
│ │ │ │ ├── D_latch.h
│ │ │ │ ├── Makefile
│ │ │ │ ├── basics.h
│ │ │ │ ├── four_bit_adder.h
│ │ │ │ ├── one_bit_adder.h
│ │ │ │ ├── readme.html
│ │ │ │ ├── test_all.cpp
│ │ │ │ └── two_bit_adder.h
│ │ │ ├── matmult/
│ │ │ │ ├── Makefile
│ │ │ │ ├── matmult.cpp
│ │ │ │ └── readme.html
│ │ │ ├── som/
│ │ │ │ ├── Makefile
│ │ │ │ ├── readme.html
│ │ │ │ ├── som.cpp
│ │ │ │ ├── som.h
│ │ │ │ └── som_graph.cpp
│ │ │ └── stereo/
│ │ │ ├── Makefile
│ │ │ ├── imageEffects.cl
│ │ │ ├── lodepng.cpp
│ │ │ ├── lodepng.h
│ │ │ ├── readme.html
│ │ │ ├── stereo.cpp
│ │ │ └── utils.h
│ │ ├── index.html
│ │ ├── parallel_do/
│ │ │ ├── index.html
│ │ │ └── parallel_preorder/
│ │ │ ├── Graph.cpp
│ │ │ ├── Graph.h
│ │ │ ├── Makefile
│ │ │ ├── Matrix.h
│ │ │ ├── main.cpp
│ │ │ ├── parallel_preorder.cpp
│ │ │ └── readme.html
│ │ ├── parallel_for/
│ │ │ ├── game_of_life/
│ │ │ │ ├── Makefile
│ │ │ │ ├── readme.html
│ │ │ │ └── src/
│ │ │ │ ├── AssemblyInfo.cpp
│ │ │ │ ├── Board.h
│ │ │ │ ├── Evolution.cpp
│ │ │ │ ├── Evolution.h
│ │ │ │ ├── Form1.h
│ │ │ │ ├── Game_of_life.cpp
│ │ │ │ └── Update_state.cpp
│ │ │ ├── index.html
│ │ │ ├── polygon_overlay/
│ │ │ │ ├── Makefile
│ │ │ │ ├── polymain.cpp
│ │ │ │ ├── polymain.h
│ │ │ │ ├── polyover.cpp
│ │ │ │ ├── polyover.h
│ │ │ │ ├── pover_global.h
│ │ │ │ ├── pover_video.cpp
│ │ │ │ ├── pover_video.h
│ │ │ │ ├── readme.html
│ │ │ │ └── rpolygon.h
│ │ │ ├── seismic/
│ │ │ │ ├── Makefile
│ │ │ │ ├── main.cpp
│ │ │ │ ├── readme.html
│ │ │ │ ├── seismic_video.cpp
│ │ │ │ ├── seismic_video.h
│ │ │ │ ├── universe.cpp
│ │ │ │ └── universe.h
│ │ │ └── tachyon/
│ │ │ ├── Makefile
│ │ │ ├── readme.html
│ │ │ └── src/
│ │ │ ├── api.cpp
│ │ │ ├── api.h
│ │ │ ├── apigeom.cpp
│ │ │ ├── apitrigeom.cpp
│ │ │ ├── apitrigeom.h
│ │ │ ├── bndbox.cpp
│ │ │ ├── bndbox.h
│ │ │ ├── box.cpp
│ │ │ ├── box.h
│ │ │ ├── camera.cpp
│ │ │ ├── camera.h
│ │ │ ├── coordsys.cpp
│ │ │ ├── coordsys.h
│ │ │ ├── cylinder.cpp
│ │ │ ├── cylinder.h
│ │ │ ├── extvol.cpp
│ │ │ ├── extvol.h
│ │ │ ├── global.cpp
│ │ │ ├── global.h
│ │ │ ├── grid.cpp
│ │ │ ├── grid.h
│ │ │ ├── imageio.cpp
│ │ │ ├── imageio.h
│ │ │ ├── imap.cpp
│ │ │ ├── imap.h
│ │ │ ├── intersect.cpp
│ │ │ ├── intersect.h
│ │ │ ├── jpeg.cpp
│ │ │ ├── jpeg.h
│ │ │ ├── light.cpp
│ │ │ ├── light.h
│ │ │ ├── machine.h
│ │ │ ├── macros.h
│ │ │ ├── main.cpp
│ │ │ ├── objbound.cpp
│ │ │ ├── objbound.h
│ │ │ ├── parse.cpp
│ │ │ ├── parse.h
│ │ │ ├── plane.cpp
│ │ │ ├── plane.h
│ │ │ ├── ppm.cpp
│ │ │ ├── ppm.h
│ │ │ ├── pthread.cpp
│ │ │ ├── pthread_w.h
│ │ │ ├── quadric.cpp
│ │ │ ├── quadric.h
│ │ │ ├── render.cpp
│ │ │ ├── render.h
│ │ │ ├── ring.cpp
│ │ │ ├── ring.h
│ │ │ ├── shade.cpp
│ │ │ ├── shade.h
│ │ │ ├── sphere.cpp
│ │ │ ├── sphere.h
│ │ │ ├── tachyon_video.cpp
│ │ │ ├── tachyon_video.h
│ │ │ ├── texture.cpp
│ │ │ ├── texture.h
│ │ │ ├── tgafile.cpp
│ │ │ ├── tgafile.h
│ │ │ ├── trace.h
│ │ │ ├── trace.serial.cpp
│ │ │ ├── trace.simple.cpp
│ │ │ ├── trace.tbb.cpp
│ │ │ ├── trace.tbb1d.cpp
│ │ │ ├── trace_rest.cpp
│ │ │ ├── triangle.cpp
│ │ │ ├── triangle.h
│ │ │ ├── types.h
│ │ │ ├── ui.cpp
│ │ │ ├── ui.h
│ │ │ ├── util.cpp
│ │ │ ├── util.h
│ │ │ ├── vector.cpp
│ │ │ ├── vector.h
│ │ │ ├── vol.cpp
│ │ │ └── vol.h
│ │ ├── parallel_reduce/
│ │ │ ├── convex_hull/
│ │ │ │ ├── Makefile
│ │ │ │ ├── convex_hull.h
│ │ │ │ ├── convex_hull_bench.cpp
│ │ │ │ ├── convex_hull_sample.cpp
│ │ │ │ └── readme.html
│ │ │ ├── index.html
│ │ │ └── primes/
│ │ │ ├── Makefile
│ │ │ ├── main.cpp
│ │ │ ├── primes.cpp
│ │ │ ├── primes.h
│ │ │ └── readme.html
│ │ ├── pipeline/
│ │ │ ├── index.html
│ │ │ └── square/
│ │ │ ├── Makefile
│ │ │ ├── gen_input.cpp
│ │ │ ├── readme.html
│ │ │ └── square.cpp
│ │ ├── task/
│ │ │ ├── index.html
│ │ │ └── tree_sum/
│ │ │ ├── Makefile
│ │ │ ├── OptimizedParallelSumTree.cpp
│ │ │ ├── SerialSumTree.cpp
│ │ │ ├── SimpleParallelSumTree.cpp
│ │ │ ├── TreeMaker.h
│ │ │ ├── common.h
│ │ │ ├── main.cpp
│ │ │ └── readme.html
│ │ ├── task_arena/
│ │ │ ├── fractal/
│ │ │ │ ├── Makefile
│ │ │ │ ├── fractal.cpp
│ │ │ │ ├── fractal.h
│ │ │ │ ├── fractal_video.h
│ │ │ │ ├── main.cpp
│ │ │ │ └── readme.html
│ │ │ └── index.html
│ │ ├── task_group/
│ │ │ ├── index.html
│ │ │ └── sudoku/
│ │ │ ├── Makefile
│ │ │ ├── input1
│ │ │ ├── input2
│ │ │ ├── input3
│ │ │ ├── input4
│ │ │ ├── readme.html
│ │ │ └── sudoku.cpp
│ │ └── test_all/
│ │ ├── fibonacci/
│ │ │ ├── Fibonacci.cpp
│ │ │ ├── Makefile
│ │ │ └── readme.html
│ │ └── index.html
│ ├── include/
│ │ ├── index.html
│ │ ├── serial/
│ │ │ └── tbb/
│ │ │ ├── parallel_for.h
│ │ │ └── tbb_annotate.h
│ │ └── tbb/
│ │ ├── aggregator.h
│ │ ├── aligned_space.h
│ │ ├── atomic.h
│ │ ├── blocked_range.h
│ │ ├── blocked_range2d.h
│ │ ├── blocked_range3d.h
│ │ ├── blocked_rangeNd.h
│ │ ├── cache_aligned_allocator.h
│ │ ├── combinable.h
│ │ ├── compat/
│ │ │ ├── condition_variable
│ │ │ ├── ppl.h
│ │ │ ├── thread
│ │ │ └── tuple
│ │ ├── concurrent_hash_map.h
│ │ ├── concurrent_lru_cache.h
│ │ ├── concurrent_priority_queue.h
│ │ ├── concurrent_queue.h
│ │ ├── concurrent_unordered_map.h
│ │ ├── concurrent_unordered_set.h
│ │ ├── concurrent_vector.h
│ │ ├── critical_section.h
│ │ ├── enumerable_thread_specific.h
│ │ ├── flow_graph.h
│ │ ├── flow_graph_abstractions.h
│ │ ├── flow_graph_opencl_node.h
│ │ ├── gfx_factory.h
│ │ ├── global_control.h
│ │ ├── index.html
│ │ ├── internal/
│ │ │ ├── _aggregator_impl.h
│ │ │ ├── _concurrent_queue_impl.h
│ │ │ ├── _concurrent_unordered_impl.h
│ │ │ ├── _flow_graph_async_msg_impl.h
│ │ │ ├── _flow_graph_body_impl.h
│ │ │ ├── _flow_graph_cache_impl.h
│ │ │ ├── _flow_graph_impl.h
│ │ │ ├── _flow_graph_indexer_impl.h
│ │ │ ├── _flow_graph_item_buffer_impl.h
│ │ │ ├── _flow_graph_join_impl.h
│ │ │ ├── _flow_graph_node_impl.h
│ │ │ ├── _flow_graph_streaming_node.h
│ │ │ ├── _flow_graph_tagged_buffer_impl.h
│ │ │ ├── _flow_graph_trace_impl.h
│ │ │ ├── _flow_graph_types_impl.h
│ │ │ ├── _mutex_padding.h
│ │ │ ├── _range_iterator.h
│ │ │ ├── _tbb_hash_compare_impl.h
│ │ │ ├── _tbb_strings.h
│ │ │ ├── _tbb_trace_impl.h
│ │ │ ├── _tbb_windef.h
│ │ │ ├── _template_helpers.h
│ │ │ ├── _x86_eliding_mutex_impl.h
│ │ │ └── _x86_rtm_rw_mutex_impl.h
│ │ ├── machine/
│ │ │ ├── gcc_arm.h
│ │ │ ├── gcc_generic.h
│ │ │ ├── gcc_ia32_common.h
│ │ │ ├── gcc_itsx.h
│ │ │ ├── ibm_aix51.h
│ │ │ ├── icc_generic.h
│ │ │ ├── linux_common.h
│ │ │ ├── linux_ia32.h
│ │ │ ├── linux_ia64.h
│ │ │ ├── linux_intel64.h
│ │ │ ├── mac_ppc.h
│ │ │ ├── macos_common.h
│ │ │ ├── mic_common.h
│ │ │ ├── msvc_armv7.h
│ │ │ ├── msvc_ia32_common.h
│ │ │ ├── sunos_sparc.h
│ │ │ ├── windows_api.h
│ │ │ ├── windows_ia32.h
│ │ │ └── windows_intel64.h
│ │ ├── memory_pool.h
│ │ ├── mutex.h
│ │ ├── null_mutex.h
│ │ ├── null_rw_mutex.h
│ │ ├── parallel_do.h
│ │ ├── parallel_for.h
│ │ ├── parallel_for_each.h
│ │ ├── parallel_invoke.h
│ │ ├── parallel_reduce.h
│ │ ├── parallel_scan.h
│ │ ├── parallel_sort.h
│ │ ├── parallel_while.h
│ │ ├── partitioner.h
│ │ ├── pipeline.h
│ │ ├── queuing_mutex.h
│ │ ├── queuing_rw_mutex.h
│ │ ├── reader_writer_lock.h
│ │ ├── recursive_mutex.h
│ │ ├── runtime_loader.h
│ │ ├── scalable_allocator.h
│ │ ├── spin_mutex.h
│ │ ├── spin_rw_mutex.h
│ │ ├── task.h
│ │ ├── task_arena.h
│ │ ├── task_group.h
│ │ ├── task_scheduler_init.h
│ │ ├── task_scheduler_observer.h
│ │ ├── tbb.h
│ │ ├── tbb_allocator.h
│ │ ├── tbb_config.h
│ │ ├── tbb_disable_exceptions.h
│ │ ├── tbb_exception.h
│ │ ├── tbb_machine.h
│ │ ├── tbb_profiling.h
│ │ ├── tbb_stddef.h
│ │ ├── tbb_thread.h
│ │ ├── tbbmalloc_proxy.h
│ │ └── tick_count.h
│ ├── index.html
│ ├── lib/
│ │ ├── ia32/
│ │ │ ├── gcc4.1/
│ │ │ │ ├── libtbb.so.2
│ │ │ │ ├── libtbb_debug.so.2
│ │ │ │ ├── libtbb_preview.so.2
│ │ │ │ ├── libtbb_preview_debug.so.2
│ │ │ │ ├── libtbbmalloc.so.2
│ │ │ │ ├── libtbbmalloc_debug.so.2
│ │ │ │ ├── libtbbmalloc_proxy.so.2
│ │ │ │ └── libtbbmalloc_proxy_debug.so.2
│ │ │ ├── gcc4.4/
│ │ │ │ ├── libtbb.so.2
│ │ │ │ ├── libtbb_debug.so.2
│ │ │ │ ├── libtbb_preview.so.2
│ │ │ │ ├── libtbb_preview_debug.so.2
│ │ │ │ ├── libtbbmalloc.so.2
│ │ │ │ ├── libtbbmalloc_debug.so.2
│ │ │ │ ├── libtbbmalloc_proxy.so.2
│ │ │ │ └── libtbbmalloc_proxy_debug.so.2
│ │ │ └── gcc4.7/
│ │ │ ├── libtbb.so.2
│ │ │ ├── libtbb_debug.so.2
│ │ │ ├── libtbb_preview.so.2
│ │ │ ├── libtbb_preview_debug.so.2
│ │ │ ├── libtbbmalloc.so.2
│ │ │ ├── libtbbmalloc_debug.so.2
│ │ │ ├── libtbbmalloc_proxy.so.2
│ │ │ └── libtbbmalloc_proxy_debug.so.2
│ │ └── intel64/
│ │ ├── gcc4.1/
│ │ │ ├── libtbb.so.2
│ │ │ ├── libtbb_debug.so.2
│ │ │ ├── libtbb_preview.so.2
│ │ │ ├── libtbb_preview_debug.so.2
│ │ │ ├── libtbbmalloc.so.2
│ │ │ ├── libtbbmalloc_debug.so.2
│ │ │ ├── libtbbmalloc_proxy.so.2
│ │ │ └── libtbbmalloc_proxy_debug.so.2
│ │ ├── gcc4.4/
│ │ │ ├── libtbb.so.2
│ │ │ ├── libtbb_debug.so.2
│ │ │ ├── libtbb_preview.so.2
│ │ │ ├── libtbb_preview_debug.so.2
│ │ │ ├── libtbbmalloc.so.2
│ │ │ ├── libtbbmalloc_debug.so.2
│ │ │ ├── libtbbmalloc_proxy.so.2
│ │ │ └── libtbbmalloc_proxy_debug.so.2
│ │ └── gcc4.7/
│ │ ├── libtbb.so.2
│ │ ├── libtbb_debug.so.2
│ │ ├── libtbb_preview.so.2
│ │ ├── libtbb_preview_debug.so.2
│ │ ├── libtbbmalloc.so.2
│ │ ├── libtbbmalloc_debug.so.2
│ │ ├── libtbbmalloc_proxy.so.2
│ │ └── libtbbmalloc_proxy_debug.so.2
│ └── python/
│ ├── Makefile
│ ├── TBB.py
│ ├── index.html
│ ├── rml/
│ │ ├── Makefile
│ │ ├── ipc_server.cpp
│ │ ├── ipc_utils.cpp
│ │ └── ipc_utils.h
│ ├── setup.py
│ └── tbb/
│ ├── __init__.py
│ ├── __main__.py
│ ├── api.i
│ ├── pool.py
│ └── test.py
├── models/
│ ├── CNN/
│ │ ├── __init__.py
│ │ ├── alexnet.py
│ │ ├── resnet.py
│ │ └── vgg.py
│ ├── deformnet.py
│ ├── model_normalization.py
│ ├── posenet.py
│ ├── posenet_old.py
│ ├── sdfnet.py
│ └── tf_ops/
│ ├── approxmatch/
│ │ ├── __init__.py
│ │ ├── tf_approxmatch.cpp
│ │ ├── tf_approxmatch.py
│ │ ├── tf_approxmatch_compile.sh
│ │ └── tf_approxmatch_g.cu
│ └── nn_distance/
│ ├── README.md
│ ├── __init__.py
│ ├── tf_nndistance.cpp
│ ├── tf_nndistance.py
│ ├── tf_nndistance_compile.sh
│ ├── tf_nndistance_cpu.py
│ └── tf_nndistance_g.cu
├── postprocessing/
│ └── clean_smallparts.py
├── preprocessing/
│ ├── create_file_lst.py
│ ├── create_img_h5.py
│ ├── create_img_h5_newrenderer.py
│ ├── create_point_sdf_fullgrid.py
│ ├── create_point_sdf_grid.py
│ └── info.json
├── test/
│ ├── command
│ ├── create_sdf.py
│ ├── test_cd_emd.py
│ ├── test_f_score.py
│ ├── test_iou.py
│ └── test_sdf_acc.py
├── train/
│ └── train_sdf.py
└── utils/
├── output_utils.py
├── part_color_mapping.json
└── tf_util.py
Showing preview only (1,061K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (11646 symbols across 842 files)
FILE: cam_est/model_cam.py
function placeholder_inputs (line 14) | def placeholder_inputs(batch_size, num_points, img_size, num_pc=2018, nu...
function cal_K (line 59) | def cal_K(img_size):
function matrixize (line 79) | def matrixize(xyz, batch_size):
function get_inverse_norm_matrix (line 84) | def get_inverse_norm_matrix(norm_params, batch_size):
function get_model (line 109) | def get_model(ref_dict, num_point, is_training, bn=False, bn_decay=None,...
function get_img_points (line 189) | def get_img_points(sample_pc, trans_mat_right, pred_xyshift, FLAGS, img_...
function get_loss (line 203) | def get_loss(end_points, sdf_weight=10., regularization=True, FLAGS=None):
FILE: cam_est/model_cam_old.py
function placeholder_inputs (line 14) | def placeholder_inputs(batch_size, num_points, img_size, num_pc=2018, nu...
function get_model (line 47) | def get_model(ref_dict, num_point, is_training, bn=False, bn_decay=None,...
function get_img_points (line 111) | def get_img_points(sample_pc, trans_mat_right, pred_xyshift, FLAGS):
function get_loss (line 125) | def get_loss(end_points, sdf_weight=10., regularization=True, FLAGS=None):
FILE: cam_est/train_sdf_cam.py
function log_string (line 166) | def log_string(out_str):
function get_learning_rate (line 171) | def get_learning_rate(batch):
function get_bn_decay (line 181) | def get_bn_decay(batch):
class NoStdStreams (line 191) | class NoStdStreams(object):
method __init__ (line 192) | def __init__(self,stdout = None, stderr = None):
method __enter__ (line 197) | def __enter__(self):
method __exit__ (line 202) | def __exit__(self, exc_type, exc_value, traceback):
function load_model (line 208) | def load_model(sess, LOAD_MODEL_FILE, prefixs, strict=False):
function train (line 239) | def train():
function pc_normalize (line 353) | def pc_normalize(pc, centroid=None):
function train_one_epoch (line 369) | def train_one_epoch(sess, ops, train_writer, saver):
function eval_one_epoch (line 464) | def eval_one_epoch(sess, ops):
function create_img_h5 (line 574) | def create_img_h5(batch_data, transmat):
function check_all_h5 (line 620) | def check_all_h5():
FILE: data/data_sdf_h5_queue.py
function get_filelist (line 21) | def get_filelist(lst_dir, maxnverts, minsurbinvox, cats, cats_info, type):
class Pt_sdf_img (line 30) | class Pt_sdf_img(threading.Thread):
method __init__ (line 31) | def __init__(self, FLAGS, listinfo=None, info=None, qsize=64, cats_lim...
method set_cat_limit (line 59) | def set_cat_limit(self, cats_limit):
method get_img_dir (line 68) | def get_img_dir(self, cat_id, obj):
method get_sdf_h5_filenm (line 73) | def get_sdf_h5_filenm(self, cat_id, obj):
method pc_normalize (line 76) | def pc_normalize(self, pc, centroid=None):
method __len__ (line 92) | def __len__(self):
method memory (line 95) | def memory(self):
method getitem (line 112) | def getitem(self, index):
method get_sdf_h5 (line 121) | def get_sdf_h5(self, sdf_h5_file, cat_id, obj):
method get_img_old (line 144) | def get_img_old(self, img_dir, num, file_lst):
method get_img (line 153) | def get_img(self, img_dir, num):
method degree2rad (line 188) | def degree2rad(self, params):
method unit (line 194) | def unit(self, v):
method camera_info (line 200) | def camera_info(self, param):
method get_cam_pos (line 208) | def get_cam_pos(self, param):
method get_az (line 215) | def get_az(self, az):
method get_el (line 222) | def get_el(self, el):
method get_inl (line 229) | def get_inl(self, inl):
method get_batch (line 238) | def get_batch(self, index):
method refill_data_order (line 305) | def refill_data_order(self):
method work (line 320) | def work(self, epoch, index):
method run (line 326) | def run(self):
method fetch (line 332) | def fetch(self):
method shutdown (line 339) | def shutdown(self):
FILE: data/data_sdf_h5_queue_mask_imgh5_cammat.py
function get_filelist (line 20) | def get_filelist(lst_dir, maxnverts, minsurbinvox, cats, cats_info, type):
class Pt_sdf_img (line 29) | class Pt_sdf_img(threading.Thread):
method __init__ (line 30) | def __init__(self, FLAGS, listinfo=None, info=None, qsize=64, cats_lim...
method set_cat_limit (line 67) | def set_cat_limit(self, cats_limit):
method get_img_dir (line 76) | def get_img_dir(self, cat_id, obj):
method get_sdf_h5_filenm (line 84) | def get_sdf_h5_filenm(self, cat_id, obj):
method pc_normalize (line 87) | def pc_normalize(self, pc, centroid=None):
method __len__ (line 103) | def __len__(self):
method memory (line 106) | def memory(self):
method getitem (line 123) | def getitem(self, index):
method get_sdf_h5 (line 132) | def get_sdf_h5(self, sdf_h5_file, cat_id, obj):
method get_img_cam (line 152) | def get_img_cam(self, img_dir, num):
method get_img (line 161) | def get_img(self, img_dir, num):
method degree2rad (line 182) | def degree2rad(self, params):
method unit (line 188) | def unit(self, v):
method camera_info (line 194) | def camera_info(self, param):
method get_cam_pos (line 202) | def get_cam_pos(self, param):
method get_az (line 209) | def get_az(self, az):
method get_el (line 216) | def get_el(self, el):
method get_inl (line 223) | def get_inl(self, inl):
method get_batch (line 232) | def get_batch(self, index, istrain = True):
method refill_data_order (line 336) | def refill_data_order(self):
method work (line 350) | def work(self, epoch, index):
method run (line 356) | def run(self):
method fetch (line 362) | def fetch(self):
method shutdown (line 369) | def shutdown(self):
FILE: demo/demo.py
function log_string (line 103) | def log_string(out_str):
function create (line 123) | def create():
class NoStdStreams (line 178) | class NoStdStreams(object):
method __init__ (line 179) | def __init__(self,stdout = None, stderr = None):
method __enter__ (line 184) | def __enter__(self):
method __exit__ (line 189) | def __exit__(self, exc_type, exc_value, traceback):
function cam_evl (line 195) | def cam_evl(img_arr):
function read_img_get_transmat (line 261) | def read_img_get_transmat():
function test_one_epoch (line 281) | def test_one_epoch(sess, ops, batch_data):
function to_binary (line 342) | def to_binary(res, pos, pred_sdf_val_all, sdf_file):
function create_obj (line 355) | def create_obj(pred_sdf_val, sdf_params, dir, i):
function create_one_cube_obj (line 365) | def create_one_cube_obj(marching_cube_command, i, sdf_file, cube_obj_file):
function get_sdf_h5 (line 371) | def get_sdf_h5(sdf_h5_file, cat_id, obj):
FILE: isosurface/tbb/pstl2018_20180822oss/build/CMakeFiles/3.12.0/CompilerIdCXX/CMakeCXXCompilerId.cpp
function main (line 579) | int main(int argc, char* argv[])
FILE: isosurface/tbb/pstl2018_20180822oss/build/CMakeFiles/feature_tests.cxx
function main (line 405) | int main(int argc, char** argv) { (void)argv; return features[argc]; }
FILE: isosurface/tbb/pstl2018_20180822oss/examples/convex_hull/convex_hull.cpp
function divide_and_conquer (line 59) | void divide_and_conquer(Policy exec, Iterator first, Iterator last, poin...
function find_hull_points (line 75) | void find_hull_points(Policy exec, Iterator first, Iterator last, pointV...
function quickhull (line 106) | void quickhull(const pointVec_t &points, pointVec_t &hull) {
function is_convex (line 122) | bool is_convex(const pointVec_t & points) {
function main (line 134) | int main(int argc, char* argv[]) {
FILE: isosurface/tbb/pstl2018_20180822oss/examples/convex_hull/utils.h
function namespace (line 25) | namespace util {
FILE: isosurface/tbb/pstl2018_20180822oss/examples/dot_product/dot_product.cpp
function random_number_generator (line 32) | double random_number_generator() {
function main (line 39) | int main(int argc, char* argv[]) {
FILE: isosurface/tbb/pstl2018_20180822oss/examples/gamma_correction/gamma_correction.cpp
class fractal (line 30) | class fractal {
method fractal (line 33) | fractal(int x, int y): my_size{x, y} {}
function applyGamma (line 64) | void applyGamma(Rows& image, double g) {
function main (line 82) | int main(int argc, char* argv[]) {
FILE: isosurface/tbb/pstl2018_20180822oss/examples/gamma_correction/utils.h
function class (line 24) | class image {
FILE: isosurface/tbb/pstl2018_20180822oss/include/pstl/internal/algorithm_impl.h
function namespace (line 40) | namespace pstl {
type typename (line 808) | typedef typename std::iterator_traits<InputIterator>::difference_type di...
type typename (line 905) | typedef typename std::iterator_traits<InputIterator>::difference_type di...
type typename (line 1109) | typedef typename std::iterator_traits<ForwardIterator>::difference_type ...
type typename (line 1138) | typedef typename std::iterator_traits<ForwardIterator>::difference_type ...
type reduce_type (line 1145) | enum reduce_type { not_init = -1, broken, all_true, all_false, true_false }
type PartitionRange (line 1232) | struct PartitionRange {
function PartitionRange (line 1239) | PartitionRange init{ last, last, last };
type PartitionRange (line 1313) | struct PartitionRange {
type typename (line 1318) | typedef typename std::iterator_traits<BidirectionalIterator>::value_type T;
function PartitionRange (line 1321) | PartitionRange init{ last, last, last };
type std (line 1386) | typedef std::pair<difference_type, difference_type> return_type;
function pattern_sort (line 1426) | void pattern_sort(RandomAccessIterator first, RandomAccessIterator last,...
type typename (line 1521) | typedef typename std::iterator_traits<ForwardIterator>::value_type T1;
type typename (line 1522) | typedef typename std::iterator_traits<RandomAccessIterator>::value_type T2;
type typename (line 1580) | typedef typename std::iterator_traits<ForwardIterator>::difference_type ...
function pattern_nth_element (line 1660) | void pattern_nth_element(RandomAccessIterator first, RandomAccessIterato...
function except_handler (line 1848) | except_handler([=]() {
function pattern_includes (line 1891) | bool pattern_includes(InputIterator1 first1, InputIterator1 last1, Input...
function pattern_includes (line 1896) | bool pattern_includes(InputIterator1 first1, InputIterator1 last1, Input...
type typename (line 2021) | typedef typename std::iterator_traits<RandomAccessIterator>::difference_...
type std (line 2132) | typedef std::pair<ForwardIterator, ForwardIterator> result_t;
type typename (line 2209) | typedef typename std::iterator_traits<ForwardIterator1>::reference ref_t...
type typename (line 2210) | typedef typename std::iterator_traits<ForwardIterator2>::reference ref_t...
function pattern_lexicographical_compare (line 2227) | bool pattern_lexicographical_compare(ForwardIterator1 first1, ForwardIte...
function pattern_lexicographical_compare (line 2233) | bool pattern_lexicographical_compare(ForwardIterator1 first1, ForwardIte...
FILE: isosurface/tbb/pstl2018_20180822oss/include/pstl/internal/bricks_impl.h
function namespace (line 24) | namespace pstl {
FILE: isosurface/tbb/pstl2018_20180822oss/include/pstl/internal/execution_defs.h
function namespace (line 26) | namespace pstl {
function namespace (line 93) | namespace internal {
FILE: isosurface/tbb/pstl2018_20180822oss/include/pstl/internal/execution_impl.h
function namespace (line 29) | namespace pstl {
FILE: isosurface/tbb/pstl2018_20180822oss/include/pstl/internal/glue_algorithm_defs.h
function namespace (line 28) | namespace std {
FILE: isosurface/tbb/pstl2018_20180822oss/include/pstl/internal/glue_algorithm_impl.h
function namespace (line 31) | namespace std {
type typename (line 165) | typedef typename iterator_traits<ForwardIterator>::reference value_type;
type typename (line 255) | typedef typename iterator_traits<ForwardIterator1>::reference reference_...
type typename (line 256) | typedef typename iterator_traits<ForwardIterator2>::reference reference_...
type typename (line 271) | typedef typename iterator_traits<ForwardIterator1>::reference input_type;
type typename (line 272) | typedef typename iterator_traits<ForwardIterator2>::reference output_type;
type typename (line 283) | typedef typename iterator_traits<ForwardIterator1>::reference input1_type;
type typename (line 284) | typedef typename iterator_traits<ForwardIterator2>::reference input2_type;
type typename (line 285) | typedef typename iterator_traits<ForwardIterator>::reference output_type;
type typename (line 298) | typedef typename iterator_traits<ForwardIterator>::reference element_type;
type typename (line 317) | typedef typename iterator_traits<ForwardIterator1>::reference input_type;
type typename (line 318) | typedef typename iterator_traits<ForwardIterator2>::reference output_type;
type typename (line 522) | typedef typename iterator_traits<RandomAccessIterator>::value_type input...
type typename (line 533) | typedef typename iterator_traits<RandomAccessIterator>::value_type input...
type typename (line 551) | typedef typename iterator_traits<RandomAccessIterator>::value_type input...
type typename (line 643) | typedef typename iterator_traits<RandomAccessIterator>::value_type input...
type typename (line 678) | typedef typename iterator_traits<ForwardIterator>::value_type input_type;
type typename (line 694) | typedef typename iterator_traits<ForwardIterator>::value_type input_type;
type typename (line 712) | typedef typename iterator_traits<RandomAccessIterator>::value_type input...
type typename (line 744) | typedef typename iterator_traits<BidirectionalIterator>::value_type inpu...
type typename (line 847) | typedef typename iterator_traits<RandomAccessIterator>::value_type input...
type typename (line 860) | typedef typename iterator_traits<RandomAccessIterator>::value_type input...
type typename (line 878) | typedef typename iterator_traits<ForwardIterator>::value_type input_type;
type typename (line 894) | typedef typename iterator_traits<ForwardIterator>::value_type input_type;
type typename (line 910) | typedef typename iterator_traits<ForwardIterator>::value_type value_type;
FILE: isosurface/tbb/pstl2018_20180822oss/include/pstl/internal/glue_execution_defs.h
function namespace (line 28) | namespace std {
FILE: isosurface/tbb/pstl2018_20180822oss/include/pstl/internal/glue_memory_defs.h
function namespace (line 26) | namespace std {
FILE: isosurface/tbb/pstl2018_20180822oss/include/pstl/internal/glue_memory_impl.h
function namespace (line 27) | namespace std {
type typename (line 52) | typedef typename iterator_traits<InputIterator>::value_type value_type1;
type typename (line 53) | typedef typename iterator_traits<ForwardIterator>::value_type value_type2;
type typename (line 72) | typedef typename iterator_traits<InputIterator>::value_type value_type1;
type typename (line 73) | typedef typename iterator_traits<ForwardIterator>::value_type value_type2;
type typename (line 90) | typedef typename iterator_traits<InputIterator>::value_type value_type1;
type typename (line 91) | typedef typename iterator_traits<ForwardIterator>::value_type value_type2;
type typename (line 110) | typedef typename iterator_traits<ForwardIterator>::value_type value_type;
type typename (line 127) | typedef typename iterator_traits<ForwardIterator>::value_type value_type;
type typename (line 146) | typedef typename iterator_traits<ForwardIterator>::value_type value_type;
type typename (line 160) | typedef typename iterator_traits<ForwardIterator>::value_type value_type;
type typename (line 177) | typedef typename iterator_traits<ForwardIterator>::value_type value_type;
type typename (line 190) | typedef typename iterator_traits<ForwardIterator>::value_type value_type;
type typename (line 208) | typedef typename iterator_traits<ForwardIterator>::value_type value_type;
type typename (line 225) | typedef typename iterator_traits<ForwardIterator>::value_type value_type;
FILE: isosurface/tbb/pstl2018_20180822oss/include/pstl/internal/glue_numeric_defs.h
function namespace (line 26) | namespace std {
FILE: isosurface/tbb/pstl2018_20180822oss/include/pstl/internal/glue_numeric_impl.h
function namespace (line 29) | namespace std {
type typename (line 48) | typedef typename iterator_traits<ForwardIterator>::value_type T;
type typename (line 57) | typedef typename iterator_traits<ForwardIterator1>::value_type input_type;
type typename (line 100) | typedef typename iterator_traits<ForwardIterator1>::value_type input_type;
type typename (line 172) | typedef typename iterator_traits<ForwardIterator1>::value_type value_type;
FILE: isosurface/tbb/pstl2018_20180822oss/include/pstl/internal/memory_impl.h
function namespace (line 28) | namespace pstl {
FILE: isosurface/tbb/pstl2018_20180822oss/include/pstl/internal/numeric_impl.h
function namespace (line 37) | namespace pstl {
type typename (line 198) | typedef typename std::iterator_traits<InputIterator>::difference_type di...
function T (line 217) | T res) { }
type typename (line 235) | typedef typename std::iterator_traits<ForwardIterator1>::value_type T;
type typename (line 254) | typedef typename std::iterator_traits<ForwardIterator1>::value_type T;
FILE: isosurface/tbb/pstl2018_20180822oss/include/pstl/internal/parallel_backend_tbb.h
function namespace (line 41) | namespace pstl {
function reverse_join (line 233) | void reverse_join(trans_scan_body& a) {
function assign (line 243) | void assign(trans_scan_body& b) {
type binary_no_op (line 430) | struct binary_no_op {
type typename (line 477) | typedef typename std::iterator_traits<RandomAccessIterator>::value_type T;
type typename (line 487) | typedef typename std::iterator_traits<RandomAccessIterator>::value_type T;
FILE: isosurface/tbb/pstl2018_20180822oss/include/pstl/internal/parallel_backend_utils.h
function namespace (line 28) | namespace pstl {
type typename (line 97) | typedef typename std::iterator_traits<RandomAccessIterator2>::value_type T;
type typename (line 112) | typedef typename std::iterator_traits<decltype(Buf(0).get())>::value_typ...
FILE: isosurface/tbb/pstl2018_20180822oss/include/pstl/internal/parallel_impl.h
function namespace (line 28) | namespace pstl {
FILE: isosurface/tbb/pstl2018_20180822oss/include/pstl/internal/unseq_backend_simd.h
function namespace (line 32) | namespace pstl {
type typename (line 323) | typedef typename std::iterator_traits<Index>::difference_type difference...
FILE: isosurface/tbb/pstl2018_20180822oss/include/pstl/internal/utils.h
function namespace (line 27) | namespace pstl {
type no_op (line 75) | struct no_op {
function class (line 104) | class pstl_equal {
function class (line 113) | class pstl_less {
FILE: isosurface/tbb/pstl2018_20180822oss/include/pstl/iterators.h
function namespace (line 31) | namespace pstl {
function namespace (line 39) | namespace pstl {
function namespace (line 53) | namespace pstl {
type typename (line 139) | typedef typename std::tuple<Types...> it_types;
type std (line 142) | typedef std::tuple<typename
type std (line 143) | typedef std::tuple<typename
type std (line 144) | typedef std::tuple<typename
type std (line 145) | typedef std::random_access_iterator_tag iterator_category;
function explicit (line 147) | explicit zip_iterator(Types... args): my_it(std::make_tuple(args...)) {}
function reference (line 149) | reference operator*() {
function reference (line 152) | reference operator[](difference_type i) const { return *(*this + i); }
FILE: isosurface/tbb/tbb-2018_U6/build/build.py
function custom_cp (line 70) | def custom_cp(src, dst):
function run_make (line 96) | def run_make(arg):
function append_files (line 127) | def append_files(names, dst, paths=release_dirs):
FILE: isosurface/tbb/tbb-2018_U6/build/detect.js
function readAllFromFile (line 19) | function readAllFromFile(fname) {
function doWork (line 32) | function doWork() {
function doClean (line 169) | function doClean() {
FILE: isosurface/tbb/tbb-2018_U6/doc/html/dynsections.js
function toggleVisibility (line 1) | function toggleVisibility(linkObj)
function updateStripes (line 22) | function updateStripes()
function toggleLevel (line 27) | function toggleLevel(level)
function toggleFolder (line 48) | function toggleFolder(id)
function toggleInherit (line 84) | function toggleInherit(id)
FILE: isosurface/tbb/tbb-2018_U6/doc/html/jquery.js
function b0 (line 16) | function b0(b3,b4){return new b0.fn.init(b3,b4)}
function bw (line 16) | function bw(){if(bF.isReady){return}try{av.documentElement.doScroll("lef...
function X (line 16) | function X(e){var bv=a2[e]={},bw,bx;e=e.split(/\s+/);for(bw=0,bx=e.lengt...
function bD (line 16) | function bD(bF){return function(bG){bx[bF]=arguments.length>1?aJ.call(ar...
function bz (line 16) | function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(ar...
function a5 (line 17) | function a5(bx,bw,by){if(by===L&&bx.nodeType===1){var bv="data-"+bw.repl...
function S (line 17) | function S(bv){for(var e in bv){if(e==="data"&&b.isEmptyObject(bv[e])){c...
function bi (line 17) | function bi(by,bx,bA){var bw=bx+"defer",bv=bx+"queue",e=bx+"mark",bz=b._...
function bE (line 17) | function bE(){if(!(--bB)){e.resolveWith(bv,[bv])}}
function bk (line 18) | function bk(){return false}
function i (line 18) | function i(){return true}
function bv (line 27) | function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT<bS;bT++){var...
function bN (line 27) | function bN(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT<bS;bT++){var...
function C (line 27) | function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}
function aG (line 27) | function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,func...
function a (line 27) | function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.c...
function ba (line 28) | function ba(e,bv){return b.nodeName(e,"table")?(e.getElementsByTagName("...
function t (line 28) | function t(bB,bv){if(bv.nodeType!==1||!b.hasData(bB)){return}var by,bx,e...
function ai (line 28) | function ai(bv,e){var bw;if(e.nodeType!==1){return}if(e.clearAttributes)...
function bg (line 28) | function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e....
function az (line 28) | function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecke...
function E (line 28) | function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(...
function al (line 28) | function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.inne...
function bo (line 28) | function bo(e,bv){if(bv.src){b.ajax({url:bv.src,async:false,dataType:"sc...
function p (line 28) | function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,...
function f (line 29) | function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="...
function aW (line 29) | function aW(bv,bE,bz,bD,bB,bx){bB=bB||bE.dataTypes[0];bx=bx||{};bx[bB]=t...
function am (line 29) | function am(bw,bx){var bv,e,by=b.ajaxSettings.flatOptions||{};for(bv in ...
function bF (line 29) | function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}...
function v (line 29) | function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(b...
function bj (line 29) | function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseF...
function G (line 29) | function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var...
function aL (line 29) | function aL(){try{return new bb.XMLHttpRequest()}catch(bv){}}
function aj (line 29) | function aj(){try{return new bb.ActiveXObject("Microsoft.XMLHTTP")}catch...
function bv (line 30) | function bv(){if(e.queue===false){b._mark(this)}var bE=b.extend({},e),bK...
function bB (line 30) | function bB(bE,bF,bD){var bC=bF[bD];b.removeData(bE,bD,true);bC.stop(e)}
function bh (line 30) | function bh(){setTimeout(at,0);return(a4=b.now())}
function at (line 30) | function at(){a4=L}
function a0 (line 30) | function a0(bv,e){var bw={};b.each(aH.concat.apply([],aH.slice(0,e)),fun...
function bv (line 30) | function bv(bA){return e.step(bA)}
function x (line 30) | function x(bx){if(!Q[bx]){var e=av.body,bv=b("<"+bx+">").appendTo(e),bw=...
function aK (line 30) | function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.pa...
FILE: isosurface/tbb/tbb-2018_U6/examples/GettingStarted/sub_string_finder/sub_string_finder.cpp
class SubStringFinder (line 30) | class SubStringFinder {
method SubStringFinder (line 56) | SubStringFinder( const std::string &s, std::vector<std::size_t> &m, st...
function main (line 60) | int main() {
FILE: isosurface/tbb/tbb-2018_U6/examples/GettingStarted/sub_string_finder/sub_string_finder_extended.cpp
class SubStringFinder (line 37) | class __declspec(target(mic)) SubStringFinder
method SubStringFinder (line 89) | SubStringFinder( const char *s, const std::size_t s_len, std::size_t *...
function SerialSubStringFinder (line 42) | void SerialSubStringFinder ( const std::string &str, std::vector<std::si...
class SubStringFinder (line 62) | class SubStringFinder {
method SubStringFinder (line 89) | SubStringFinder( const char *s, const std::size_t s_len, std::size_t *...
function main (line 93) | int main() {
FILE: isosurface/tbb/tbb-2018_U6/examples/GettingStarted/sub_string_finder/sub_string_finder_pretty.cpp
class SubStringFinder (line 32) | class SubStringFinder {
method SubStringFinder (line 58) | SubStringFinder( const std::string &s, std::vector<std::size_t> &m, st...
function main (line 62) | int main() {
FILE: isosurface/tbb/tbb-2018_U6/examples/common/gui/convideo.cpp
type timeval (line 44) | struct timeval
type timezone (line 80) | struct timezone
type timeval (line 80) | struct timeval
type timezone (line 104) | struct timezone
FILE: isosurface/tbb/tbb-2018_U6/examples/common/gui/d2dvideo.cpp
function DisplayError (line 46) | bool DisplayError(LPSTR lpstrErr, HRESULT hres)
function DrawBitmap (line 62) | void DrawBitmap()
function mouse (line 76) | inline void mouse(int k, LPARAM lParam)
function LRESULT (line 86) | LRESULT CALLBACK InternalWndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LP...
FILE: isosurface/tbb/tbb-2018_U6/examples/common/gui/gdivideo.cpp
function DisplayError (line 37) | bool DisplayError(LPSTR lpstrErr, HRESULT hres)
function LRESULT (line 56) | LRESULT CALLBACK InternalWndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LP...
FILE: isosurface/tbb/tbb-2018_U6/examples/common/gui/macvideo.cpp
type timeval (line 37) | struct timeval
type timezone (line 73) | struct timezone
type timeval (line 73) | struct timeval
type timezone (line 91) | struct timezone
type timezone (line 95) | struct timezone
type timeval (line 95) | struct timeval
function on_mouse_func (line 117) | void on_mouse_func(int x, int y, int k)
function on_key_func (line 123) | void on_key_func(int x)
FILE: isosurface/tbb/tbb-2018_U6/examples/common/gui/video.h
type color_t (line 36) | typedef unsigned int color_t;
type colorcomp_t (line 37) | typedef unsigned char colorcomp_t;
type depth_t (line 38) | typedef signed char depth_t;
function class (line 41) | class drawing_memory
function class (line 63) | class video
function class (line 123) | class drawing_area
function else (line 172) | else if(depth > 0) {
function set_pos (line 198) | inline void drawing_area::set_pos(int local_x, int local_y)
function put_pixel (line 203) | inline void drawing_area::put_pixel(color_t color)
function drawing_area (line 215) | inline drawing_area::~drawing_area()
function WinMain (line 230) | int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, PSTR szCmdLine, int i...
FILE: isosurface/tbb/tbb-2018_U6/examples/common/gui/winvideo.h
function WinInit (line 68) | bool WinInit(HINSTANCE hInstance, int nCmdShow, WNDCLASSEX *uwc, const c...
function RedirectIOToConsole (line 107) | static bool RedirectIOToConsole(void)
function win_set_class (line 162) | void video::win_set_class(WNDCLASSEX &wcex)
function win_load_accelerators (line 167) | void video::win_load_accelerators(int idc)
function init_console (line 172) | bool video::init_console()
function DWORD (line 188) | DWORD WINAPI thread_video(LPVOID lpParameter)
function loop_once (line 195) | static bool loop_once(video *v)
function main_loop (line 227) | void video::main_loop()
function next_frame (line 264) | bool video::next_frame()
function show_title (line 277) | void video::show_title()
FILE: isosurface/tbb/tbb-2018_U6/examples/common/gui/xcode/tbbExample/OpenGLView.h
function interface (line 28) | interface OpenGLView : UIView {
function interface (line 46) | interface OpenGLView : NSOpenGLView{
FILE: isosurface/tbb/tbb-2018_U6/examples/common/gui/xcode/tbbExample/tbbAppDelegate.h
function interface (line 41) | interface tbbAppDelegate : NSObject <NSApplicationDelegate>{
FILE: isosurface/tbb/tbb-2018_U6/examples/common/gui/xvideo.cpp
type timeval (line 80) | struct timeval
function mask2bits (line 92) | inline void mask2bits(unsigned int mask, unsigned int &save, depth_t &sh...
function xerr_handler (line 100) | int xerr_handler(Display* dpy_, XErrorEvent *error)
type timezone (line 301) | struct timezone
type timezone (line 332) | struct timezone
type timeval (line 332) | struct timeval
FILE: isosurface/tbb/tbb-2018_U6/examples/common/utility/fast_random.h
function namespace (line 23) | namespace utility{
function namespace (line 55) | namespace utility {
FILE: isosurface/tbb/tbb-2018_U6/examples/common/utility/utility.h
function namespace (line 47) | namespace utility{
type string_to_number_of_threads (line 445) | struct string_to_number_of_threads{
function report_elapsed_time (line 493) | inline void report_elapsed_time(double seconds){
function report_skipped (line 497) | inline void report_skipped(){
function parse_cli_arguments (line 501) | inline void parse_cli_arguments(int argc, const char* argv[], utility::c...
function parse_cli_arguments (line 521) | inline void parse_cli_arguments(int argc, char* argv[], utility::cli_arg...
FILE: isosurface/tbb/tbb-2018_U6/examples/concurrent_hash_map/count_strings/count_strings.cpp
type Tally (line 58) | struct Tally {
method Tally (line 60) | Tally( StringTable& table_ ) : table(table_) {}
function CountOccurrences (line 72) | static void CountOccurrences(int nthreads) {
type Sound (line 91) | struct Sound {
function CountRateSum (line 145) | int CountRateSum(Sound sounds[], const int num, const int part)
function CreateData (line 166) | static void CreateData() {
function main (line 184) | int main( int argc, char* argv[] ) {
FILE: isosurface/tbb/tbb-2018_U6/examples/concurrent_priority_queue/shortpath/shortpath.cpp
type point (line 44) | struct point {
method point (line 46) | point() {}
method point (line 47) | point(double _x, double _y) : x(_x), y(_y) {}
method point (line 48) | point(const point& p) : x(p.x), y(p.y) {}
function get_distance (line 51) | double get_distance(const point& p1, const point& p2) {
function point (line 57) | point generate_random_point(utility::FastRandom& mr) {
method point (line 46) | point() {}
method point (line 47) | point(double _x, double _y) : x(_x), y(_y) {}
method point (line 48) | point(const point& p) : x(p.x), y(p.y) {}
function die_toss (line 65) | bool die_toss(size_t a, size_t b, utility::FastRandom& mr) {
class compare_f (line 100) | class compare_f {
class shortpath_helper_functor (line 112) | class shortpath_helper_functor {
method shortpath_helper_functor (line 114) | shortpath_helper_functor() {}
function shortpath (line 119) | void shortpath() {
function shortpath_helper (line 133) | void shortpath_helper() {
function make_path (line 177) | void make_path(vertex_id src, vertex_id dst, vector<vertex_id>& path) {
function print_path (line 184) | void print_path() {
function get_default_num_threads (line 207) | int get_default_num_threads() {
class gen_vertices (line 215) | class gen_vertices {
method gen_vertices (line 217) | gen_vertices() {}
class gen_edges (line 226) | class gen_edges {
method gen_edges (line 228) | gen_edges() {}
class reset_vertices (line 240) | class reset_vertices {
method reset_vertices (line 242) | reset_vertices() {}
function InitializeGraph (line 252) | void InitializeGraph() {
function ReleaseGraph (line 296) | void ReleaseGraph() {
function ResetGraph (line 300) | void ResetGraph() {
function main (line 315) | int main(int argc, char *argv[]) {
FILE: isosurface/tbb/tbb-2018_U6/examples/graph/binpack/binpack.cpp
class bin_filler (line 75) | class bin_filler {
method bin_filler (line 86) | bin_filler(size_t bidx, value_pool* _q) :
class item_generator (line 174) | class item_generator {
method item_generator (line 177) | item_generator() : counter(0) {}
class bin_printer (line 189) | class bin_printer {
method bin_printer (line 195) | bin_printer() : running_count(0), item_count(0), my_min(V), my_max(0),...
method continue_msg (line 196) | continue_msg operator()(bin b) {
function get_default_num_threads (line 225) | int get_default_num_threads() {
function main (line 232) | int main(int argc, char *argv[]) {
FILE: isosurface/tbb/tbb-2018_U6/examples/graph/cholesky/cholesky.cpp
function collapse_tile_array (line 96) | static void collapse_tile_array( double ***tile, double *A, int n, int b...
class algorithm (line 122) | class algorithm {
method check_if_valid (line 127) | bool check_if_valid( double *A0, double *C, double *A, int n ) {
method algorithm (line 156) | algorithm( const std::string& alg_name, bool t ) : name(alg_name), is_...
function call_dpotf2 (line 213) | static void call_dpotf2( double ***tile, int b, int k ) {
function call_dtrsm (line 221) | static void call_dtrsm( double ***tile, int b, int k, int j ) {
function call_dsyr2k (line 230) | static void call_dsyr2k( double ***tile, int b, int k, int j, int i ) {
class algorithm_crout (line 248) | class algorithm_crout : public algorithm
method algorithm_crout (line 251) | algorithm_crout() : algorithm("crout_cholesky", true) {}
method func (line 254) | virtual void func( void * ptr, int n, int b ) {
class algorithm_dpotrf (line 272) | class algorithm_dpotrf : public algorithm
method algorithm_dpotrf (line 275) | algorithm_dpotrf() : algorithm("dpotrf_cholesky", false) {}
method func (line 278) | virtual void func( void * ptr, int n, int /* b */ ) {
class dpotf2_body (line 310) | class dpotf2_body {
method dpotf2_body (line 314) | dpotf2_body( int p_, int b_ ) : p(p_), b(b_) {}
class dtrsm_body (line 336) | class dtrsm_body {
method dtrsm_body (line 340) | dtrsm_body( int p_, int b_ ) : p(p_), b(b_) {}
class dsyr2k_body (line 374) | class dsyr2k_body {
method dsyr2k_body (line 378) | dsyr2k_body( int p_, int b_ ) : p(p_), b(b_) {}
type tagged_tile_to_size_t (line 432) | struct tagged_tile_to_size_t {
class algorithm_join (line 438) | class algorithm_join : public algorithm
method algorithm_join (line 441) | algorithm_join() : algorithm("data_join_cholesky", true) {}
method func (line 444) | virtual void func( void * ptr, int n, int b ) {
class call_dpotf2_functor (line 516) | class call_dpotf2_functor
method call_dpotf2_functor (line 521) | call_dpotf2_functor( double ***tile_, int b_, int k_ )
class call_dtrsm_functor (line 527) | class call_dtrsm_functor
method call_dtrsm_functor (line 532) | call_dtrsm_functor( double ***tile_, int b_, int k_, int j_ )
class call_dsyr2k_functor (line 538) | class call_dsyr2k_functor
method call_dsyr2k_functor (line 543) | call_dsyr2k_functor( double ***tile_, int b_, int k_, int j_, int i_ )
class algorithm_depend (line 551) | class algorithm_depend : public algorithm
method algorithm_depend (line 554) | algorithm_depend() : algorithm("depend_cholesky", true) {}
method func (line 557) | virtual void func( void * ptr, int n, int b ) {
function process_args (line 624) | bool process_args( int argc, char *argv[] ) {
function main (line 666) | int main(int argc, char *argv[]) {
FILE: isosurface/tbb/tbb-2018_U6/examples/graph/cholesky/init.cpp
function posdef_gen (line 27) | static void posdef_gen( double * A, int n )
function matrix_init (line 61) | void matrix_init( double * &A, int &n, const char *fname ) {
function matrix_write (line 96) | void matrix_write ( double *A, int n, const char *fname, bool is_triangu...
FILE: isosurface/tbb/tbb-2018_U6/examples/graph/dining_philosophers/dining_philosophers.cpp
type RunOptions (line 67) | struct RunOptions {
method RunOptions (line 71) | RunOptions(utility::thread_number_range threads_, int number_of_philos...
function RunOptions (line 75) | RunOptions ParseCommandLine(int argc, char *argv[]) {
method RunOptions (line 71) | RunOptions(utility::thread_number_range threads_, int number_of_philos...
class chopstick (line 101) | class chopstick {}
class philosopher (line 112) | class philosopher {
method philosopher (line 115) | philosopher( const char *name ) :
class think_node_body (line 146) | class think_node_body {
method think_node_body (line 149) | think_node_body( philosopher &p ) : my_philosopher(p) { }
method think_node_body (line 150) | think_node_body( const think_node_body &other ) : my_philosopher(other...
method continue_msg (line 151) | continue_msg operator()( continue_msg /*m*/) {
class eat_node_body (line 157) | class eat_node_body {
method eat_node_body (line 160) | eat_node_body( philosopher &p) : my_philosopher(p) {}
method eat_node_body (line 161) | eat_node_body( const eat_node_body &other ) : my_philosopher(other.my_...
method continue_msg (line 162) | continue_msg operator()(const join_output &in) {
class forward_node_body (line 168) | class forward_node_body {
method forward_node_body (line 171) | forward_node_body( philosopher &p) : my_philosopher(p) {}
method forward_node_body (line 172) | forward_node_body( const forward_node_body &other ) : my_philosopher(o...
function main (line 226) | int main(int argc, char *argv[]) {
FILE: isosurface/tbb/tbb-2018_U6/examples/graph/fgbzip2/blocksort.cpp
function fallbackSimpleSort (line 82) | static
function fallbackQSort3 (line 144) | static
function fallbackSort (line 263) | static
function Bool (line 397) | static
function mainSimpleSort (line 536) | static
function UChar (line 633) | static
function mainQSort3 (line 672) | static
function mainSort (line 802) | static
function BZ2_blockSort (line 1083) | void BZ2_blockSort ( EState* s )
FILE: isosurface/tbb/tbb-2018_U6/examples/graph/fgbzip2/bzlib.cpp
function BZ2_bz__AssertH__fail (line 93) | void BZ2_bz__AssertH__fail ( int errcode )
function bz_config_ok (line 142) | static
function default_bzfree (line 160) | static
function prepare_new_block (line 168) | static
function init_RL (line 182) | static
function Bool (line 190) | static
function add_pair_to_block (line 267) | static
function flush_RL (line 303) | static
function Bool (line 340) | static
function Bool (line 385) | static
function Bool (line 412) | static
function Bool (line 587) | static
function Int32 (line 739) | Int32 BZ2_indexIntoF ( Int32 indx, Int32 *cftab )
function Bool (line 757) | static
function Bool (line 958) | static Bool myfeof ( FILE* f )
function BZFILE (line 968) | BZFILE* BZ_API(BZ2_bzWriteOpen)
function BZFILE (line 1139) | BZFILE* BZ_API(BZ2_bzReadOpen)
function BZFILE (line 1434) | static
function BZFILE (line 1512) | BZFILE * BZ_API(BZ2_bzopen)
function BZFILE (line 1521) | BZFILE * BZ_API(BZ2_bzdopen)
FILE: isosurface/tbb/tbb-2018_U6/examples/graph/fgbzip2/bzlib.h
type bz_stream (line 100) | typedef
type BZFILE (line 189) | typedef void BZFILE;
FILE: isosurface/tbb/tbb-2018_U6/examples/graph/fgbzip2/bzlib_private.h
type Char (line 93) | typedef char Char;
type Bool (line 94) | typedef unsigned char Bool;
type UChar (line 95) | typedef unsigned char UChar;
type Int32 (line 96) | typedef int Int32;
type UInt32 (line 97) | typedef unsigned int UInt32;
type Int16 (line 98) | typedef short Int16;
type UInt16 (line 99) | typedef unsigned short UInt16;
type EState (line 248) | typedef
type DState (line 399) | typedef
FILE: isosurface/tbb/tbb-2018_U6/examples/graph/fgbzip2/compress.cpp
function BZ2_bsInitWrite (line 89) | void BZ2_bsInitWrite ( EState* s )
function bsFinishWrite (line 97) | static
function bsW (line 123) | static
function bsPutUInt32 (line 134) | static
function bsPutUChar (line 145) | static
function makeMaps_e (line 157) | static
function generateMTFValues (line 171) | static
function sendMTFValues (line 290) | static
function BZ2_compressBlock (line 654) | void BZ2_compressBlock ( EState* s, Bool is_last_block )
FILE: isosurface/tbb/tbb-2018_U6/examples/graph/fgbzip2/decompress.cpp
function makeMaps_d (line 78) | static
function Int32 (line 158) | Int32 BZ2_decompress ( DState* s )
FILE: isosurface/tbb/tbb-2018_U6/examples/graph/fgbzip2/fgbzip2.cpp
type Buffer (line 41) | struct Buffer {
type BufferMsg (line 46) | struct BufferMsg {
method BufferMsg (line 48) | BufferMsg() {}
method BufferMsg (line 49) | BufferMsg(Buffer& inputBuffer, Buffer& outputBuffer, size_t seqId, boo...
method BufferMsg (line 52) | static BufferMsg createBufferMsg(size_t seqId, size_t chunkSize) {
method destroyBufferMsg (line 65) | static void destroyBufferMsg(const BufferMsg& destroyMsg) {
method markLast (line 70) | void markLast(size_t lastId) {
class BufferCompressor (line 81) | class BufferCompressor {
method BufferCompressor (line 84) | BufferCompressor(int blockSizeIn100KB) : m_blockSize(blockSizeIn100KB) {}
method BufferMsg (line 86) | BufferMsg operator()(BufferMsg buffer) const {
class IOOperations (line 101) | class IOOperations {
method IOOperations (line 104) | IOOperations(std::ifstream& inputStream, std::ofstream& outputStream, ...
method readChunk (line 107) | void readChunk(Buffer& buffer) {
method writeChunk (line 113) | void writeChunk(const Buffer& buffer) {
method chunksRead (line 117) | size_t chunksRead() const {
method chunkSize (line 121) | size_t chunkSize() const {
method hasDataToRead (line 125) | bool hasDataToRead() const {
class AsyncNodeActivity (line 145) | class AsyncNodeActivity {
method AsyncNodeActivity (line 148) | AsyncNodeActivity(IOOperations& io)
method submitRead (line 156) | void submitRead(async_file_reader_node::gateway_type& gateway) {
method submitWrite (line 161) | void submitWrite(const BufferMsg& bufferMsg) {
method readingLoop (line 167) | void readingLoop(async_file_reader_node::gateway_type& gateway) {
method writingLoop (line 177) | void writingLoop() {
method sendLastMessage (line 186) | void sendLastMessage(async_file_reader_node::gateway_type& gateway) {
function fgCompressionAsyncNode (line 200) | void fgCompressionAsyncNode(IOOperations& io, int blockSizeIn100KB) {
class AsyncMsgActivity (line 235) | class AsyncMsgActivity {
method AsyncMsgActivity (line 238) | AsyncMsgActivity(tbb::flow::graph& g, IOOperations& io)
method async_msg_type (line 256) | async_msg_type submitRead(BufferMsg& bufferMsg) {
method async_msg_type (line 263) | async_msg_type submitWrite(const BufferMsg& bufferMsg) {
type work_type (line 272) | struct work_type {
method readingLoop (line 277) | void readingLoop() {
method sendLastMessage (line 295) | void sendLastMessage(work_type& work) {
method writingLoop (line 300) | void writingLoop() {
method freeBuffers (line 321) | void freeBuffers() {
function fgCompressionAsyncMsg (line 341) | void fgCompressionAsyncMsg(IOOperations& io, int blockSizeIn100KB, size_...
function fgCompression (line 382) | void fgCompression(IOOperations& io, int blockSizeIn100KB) {
function endsWith (line 414) | bool endsWith(const std::string& str, const std::string& suffix) {
function main (line 420) | int main(int argc, char* argv[]) {
function main (line 497) | int main() {
FILE: isosurface/tbb/tbb-2018_U6/examples/graph/fgbzip2/huffman.cpp
function BZ2_hbMakeCodeLengths (line 115) | void BZ2_hbMakeCodeLengths ( UChar *len,
function BZ2_hbAssignCodes (line 204) | void BZ2_hbAssignCodes ( Int32 *code,
function BZ2_hbCreateDecodeTables (line 222) | void BZ2_hbCreateDecodeTables ( Int32 *limit,
FILE: isosurface/tbb/tbb-2018_U6/examples/graph/logic_sim/D_latch.h
type composite_node (line 35) | typedef composite_node< tuple< signal_t, signal_t >, tuple< signal_t, si...
FILE: isosurface/tbb/tbb-2018_U6/examples/graph/logic_sim/basics.h
function rt_sleep (line 36) | void rt_sleep(int msec) {
function rt_sleep (line 47) | void rt_sleep(int msec) {
type signal_t (line 56) | typedef enum { low=0, high, undefined } signal_t;
type multifunction_node (line 64) | typedef multifunction_node< input_port_t::output_type, tuple<signal_t> >...
type gate_fn_t (line 65) | typedef gate_fn_t::output_ports_type ports_type;
type composite_node (line 66) | typedef composite_node< tuple< signal_t >, tuple< signal_t > > base_type;
function virtual (line 76) | virtual ~gate() {}
type multifunction_node (line 89) | typedef multifunction_node< input_port_t::output_type, tuple<signal_t> >...
type gate_fn_t (line 90) | typedef gate_fn_t::output_ports_type ports_type;
type composite_node (line 91) | typedef composite_node< tuple< signal_t, signal_t >, tuple< signal_t > >...
function virtual (line 101) | virtual ~gate() {}
type multifunction_node (line 114) | typedef multifunction_node< input_port_t::output_type, tuple<signal_t> >...
type gate_fn_t (line 115) | typedef gate_fn_t::output_ports_type ports_type;
type composite_node (line 116) | typedef composite_node< tuple< signal_t, signal_t, signal_t >, tuple< si...
function virtual (line 126) | virtual ~gate() {}
type multifunction_node (line 139) | typedef multifunction_node< input_port_t::output_type, tuple<signal_t> >...
type gate_fn_t (line 140) | typedef gate_fn_t::output_ports_type ports_type;
type composite_node (line 141) | typedef composite_node< tuple< signal_t, signal_t, signal_t, signal_t >,...
function virtual (line 151) | virtual ~gate() {}
function class (line 161) | class steady_signal {
function class (line 178) | class pulse {
function class (line 220) | class push_button {
function class (line 239) | class toggle {
function class (line 263) | class buffer : public gate<1> {
function class (line 285) | class not_gate : public gate<1> {
type typename (line 312) | typedef typename gate<N>::ports_type ports_type;
type typename (line 313) | typedef typename gate<N>::input_port_t::output_type from_input;
function class (line 314) | class and_body {
type typename (line 348) | typedef typename gate<N>::ports_type ports_type;
type typename (line 349) | typedef typename gate<N>::input_port_t::output_type from_input;
function class (line 350) | class or_body {
type typename (line 384) | typedef typename gate<N>::ports_type ports_type;
type typename (line 385) | typedef typename gate<N>::input_port_t input_port_t;
function class (line 386) | class xor_body {
type typename (line 422) | typedef typename gate<N>::ports_type ports_type;
type typename (line 423) | typedef typename gate<N>::input_port_t input_port_t;
function class (line 424) | class nor_body {
function class (line 458) | class led {
type gate (line 512) | typedef gate<4>::ports_type ports_type;
type gate (line 513) | typedef gate<4>::input_port_t input_port_t;
function class (line 514) | class digit_body {
function display (line 556) | void display() { printf("%s: %x\n", label.c_str(), state); }
function get_value (line 557) | unsigned int get_value() { return state; }
FILE: isosurface/tbb/tbb-2018_U6/examples/graph/logic_sim/four_bit_adder.h
type composite_node (line 26) | typedef composite_node< tuple< signal_t, signal_t, signal_t, signal_t, s...
function class (line 29) | class four_bit_adder : public fba_base_type {
function set_up_composite (line 52) | void set_up_composite() {
FILE: isosurface/tbb/tbb-2018_U6/examples/graph/logic_sim/one_bit_adder.h
function namespace (line 24) | namespace P {
type composite_node (line 61) | typedef composite_node< tuple< signal_t, signal_t, signal_t >, tuple< si...
function set_up_composite (line 95) | void set_up_composite() {
FILE: isosurface/tbb/tbb-2018_U6/examples/graph/logic_sim/test_all.cpp
function get_default_num_threads (line 48) | int get_default_num_threads() {
function main (line 57) | int main(int argc, char *argv[]) {
FILE: isosurface/tbb/tbb-2018_U6/examples/graph/logic_sim/two_bit_adder.h
type composite_node (line 30) | typedef composite_node< tuple< signal_t, signal_t, signal_t, signal_t, s...
function set_up_composite (line 49) | void set_up_composite() {
FILE: isosurface/tbb/tbb-2018_U6/examples/graph/matmult/matmult.cpp
function matmult_naive (line 70) | void matmult_naive(const float* A, const float* B, float* C) {
function matmult_tiled_slm (line 83) | __declspec(target(gfx_kernel))
function init_matrix (line 179) | void init_matrix(int width, int height, float* matrix) {
function validate_mat (line 188) | bool validate_mat(char *title, int size_y, int size_x, const float* mat,...
type matrix_size (line 222) | struct matrix_size {
function mat_multiplication (line 237) | void mat_multiplication() {
function main (line 349) | int main(int argc, char* argv[]) {
function main (line 370) | int main() {
FILE: isosurface/tbb/tbb-2018_U6/examples/graph/som/som.cpp
function remark_SOM_element (line 51) | void remark_SOM_element(const SOM_element &s) {
function remark_search_result_type (line 72) | void remark_search_result_type(const search_result_type &s) {
function randval (line 76) | double
function find_data_ranges (line 81) | void
function add_fraction_of_difference (line 91) | void add_fraction_of_difference( SOM_element &to, SOM_element const &fro...
function distance_squared (line 97) | double
function readInputData (line 206) | void readInputData() {
FILE: isosurface/tbb/tbb-2018_U6/examples/graph/som/som.h
type blocked_range2d (line 41) | typedef blocked_range2d<int> subsquare_type;
type tuple (line 42) | typedef tuple<double,int,int> search_result_type;
type InitializeType (line 72) | enum InitializeType { InitializeRandom, InitializeGradient }
function class (line 81) | class SOM_element {
type std (line 107) | typedef std::vector<SOM_element> teaching_vector_type;
function class (line 120) | class SOMap {
FILE: isosurface/tbb/tbb-2018_U6/examples/graph/som/som_graph.cpp
class BMU_search_body (line 71) | class BMU_search_body {
method BMU_search_body (line 76) | BMU_search_body(SOMap &_m, subsquare_type &_sq, int &fnt) : my_map(_m)...
method BMU_search_body (line 77) | BMU_search_body( const BMU_search_body &other) : my_map(other.my_map),...
method search_result_type (line 78) | search_result_type operator()(const SOM_element s) {
function build_BMU_graph (line 107) | void
function wait_for_all_graphs (line 150) | void wait_for_all_graphs(int cIndex) { // cIndex ranges over [0 .. SPEC...
function destroy_BMU_graph (line 158) | void
function find_subrange_overlap (line 177) | void find_subrange_overlap(int const &xval, int const &yval, double cons...
function overlap (line 189) | bool overlap( int &xval, int &yval, search_result_type &sr) {
function cancel_submaps (line 195) | void
function restart_submaps (line 209) | void
function search_result_type (line 226) | search_result_type
function graph_teach (line 259) | void graph_teach(SOMap &map1, teaching_vector_type &in) {
function main (line 309) | int
FILE: isosurface/tbb/tbb-2018_U6/examples/graph/stereo/lodepng.cpp
function lodepng_free (line 94) | static void lodepng_free(void* ptr)
type uivector (line 158) | struct uivector
function uivector_cleanup (line 165) | static void uivector_cleanup(void* p)
function uivector_reserve (line 173) | static unsigned uivector_reserve(uivector* p, size_t allocsize)
function uivector_resize (line 190) | static unsigned uivector_resize(uivector* p, size_t size)
function uivector_resizev (line 198) | static unsigned uivector_resizev(uivector* p, size_t size, unsigned value)
function uivector_init (line 206) | static void uivector_init(uivector* p)
function uivector_push_back (line 214) | static unsigned uivector_push_back(uivector* p, unsigned c)
type ucvector (line 226) | struct ucvector
function ucvector_reserve (line 234) | static unsigned ucvector_reserve(ucvector* p, size_t allocsize)
function ucvector_resize (line 251) | static unsigned ucvector_resize(ucvector* p, size_t size)
function ucvector_cleanup (line 260) | static void ucvector_cleanup(void* p)
function ucvector_init (line 267) | static void ucvector_init(ucvector* p)
function ucvector_init_buffer (line 277) | static void ucvector_init_buffer(ucvector* p, unsigned char* buffer, siz...
function ucvector_push_back (line 286) | static unsigned ucvector_push_back(ucvector* p, unsigned char c)
function string_resize (line 300) | static unsigned string_resize(char** out, size_t size)
function string_init (line 312) | static void string_init(char** out)
function string_cleanup (line 319) | static void string_cleanup(char** out)
function string_set (line 325) | static void string_set(char** out, const char* in)
function lodepng_read32bitInt (line 341) | unsigned lodepng_read32bitInt(const unsigned char* buffer)
function lodepng_set32bitInt (line 348) | static void lodepng_set32bitInt(unsigned char* buffer, unsigned value)
function lodepng_add32bitInt (line 358) | static void lodepng_add32bitInt(ucvector* buffer, unsigned value)
function lodepng_filesize (line 372) | static long lodepng_filesize(const char* filename)
function lodepng_buffer_file (line 394) | static unsigned lodepng_buffer_file(unsigned char* out, size_t size, con...
function lodepng_load_file (line 408) | unsigned lodepng_load_file(unsigned char** out, size_t* outsize, const c...
function lodepng_save_file (line 421) | unsigned lodepng_save_file(const unsigned char* buffer, size_t buffersiz...
function addBitsToStream (line 451) | static void addBitsToStream(size_t* bitpointer, ucvector* bitstream, uns...
function addBitsToStreamReversed (line 457) | static void addBitsToStreamReversed(size_t* bitpointer, ucvector* bitstr...
function readBitFromStream (line 468) | static unsigned char readBitFromStream(size_t* bitpointer, const unsigne...
function readBitsFromStream (line 475) | static unsigned readBitsFromStream(size_t* bitpointer, const unsigned ch...
type HuffmanTree (line 530) | struct HuffmanTree
function HuffmanTree_init (line 552) | static void HuffmanTree_init(HuffmanTree* tree)
function HuffmanTree_cleanup (line 559) | static void HuffmanTree_cleanup(HuffmanTree* tree)
function HuffmanTree_make2DTree (line 567) | static unsigned HuffmanTree_make2DTree(HuffmanTree* tree)
function HuffmanTree_makeFromLengths2 (line 632) | static unsigned HuffmanTree_makeFromLengths2(HuffmanTree* tree)
function HuffmanTree_makeFromLengths (line 677) | static unsigned HuffmanTree_makeFromLengths(HuffmanTree* tree, const uns...
type BPMNode (line 695) | struct BPMNode
type BPMNode (line 699) | struct BPMNode
type BPMLists (line 704) | struct BPMLists
function BPMNode (line 719) | static BPMNode* bpmnode_create(BPMLists* lists, int weight, unsigned ind...
type BPMNode (line 699) | struct BPMNode
function bpmnode_compare (line 751) | static int bpmnode_compare(const void* a, const void* b)
function boundaryPM (line 762) | static void boundaryPM(BPMLists* lists, BPMNode* leaves, size_t numprese...
function lodepng_huffman_code_lengths (line 793) | unsigned lodepng_huffman_code_lengths(unsigned* lengths, const unsigned*...
function HuffmanTree_makeFromFrequencies (line 883) | static unsigned HuffmanTree_makeFromFrequencies(HuffmanTree* tree, const...
function HuffmanTree_getCode (line 900) | static unsigned HuffmanTree_getCode(const HuffmanTree* tree, unsigned in...
function HuffmanTree_getLength (line 905) | static unsigned HuffmanTree_getLength(const HuffmanTree* tree, unsigned ...
function generateFixedLitLenTree (line 912) | static unsigned generateFixedLitLenTree(HuffmanTree* tree)
function generateFixedDistanceTree (line 931) | static unsigned generateFixedDistanceTree(HuffmanTree* tree)
function huffmanDecodeSymbol (line 951) | static unsigned huffmanDecodeSymbol(const unsigned char* in, size_t* bp,
function getTreeInflateFixed (line 979) | static void getTreeInflateFixed(HuffmanTree* tree_ll, HuffmanTree* tree_d)
function getTreeInflateDynamic (line 987) | static unsigned getTreeInflateDynamic(HuffmanTree* tree_ll, HuffmanTree*...
function inflateHuffmanBlock (line 1135) | static unsigned inflateHuffmanBlock(ucvector* out, const unsigned char* ...
function inflateNoCompression (line 1229) | static unsigned inflateNoCompression(ucvector* out, const unsigned char*...
function lodepng_inflatev (line 1257) | static unsigned lodepng_inflatev(ucvector* out,
function lodepng_inflate (line 1287) | unsigned lodepng_inflate(unsigned char** out, size_t* outsize,
function inflate (line 1300) | static unsigned inflate(unsigned char** out, size_t* outsize,
function addHuffmanSymbol (line 1325) | static void addHuffmanSymbol(size_t* bp, ucvector* compressed, unsigned ...
function searchCodeIndex (line 1332) | static size_t searchCodeIndex(const unsigned* array, size_t array_size, ...
function addLengthDistance (line 1347) | static void addLengthDistance(uivector* values, size_t length, size_t di...
type Hash (line 1371) | struct Hash
function hash_init (line 1385) | static unsigned hash_init(Hash* hash, unsigned windowsize)
function hash_cleanup (line 1412) | static void hash_cleanup(Hash* hash)
function getHash (line 1425) | static unsigned getHash(const unsigned char* data, size_t size, size_t pos)
function countZeros (line 1446) | static unsigned countZeros(const unsigned char* data, size_t size, size_...
function updateHashChain (line 1458) | static void updateHashChain(Hash* hash, int wpos, unsigned hashval, unsi...
function encodeLZ77 (line 1478) | static unsigned encodeLZ77(uivector* out, Hash* hash,
function deflateNoCompression (line 1657) | static unsigned deflateNoCompression(ucvector* out, const unsigned char*...
function writeLZ77data (line 1699) | static void writeLZ77data(size_t* bp, ucvector* out, const uivector* lz7...
function deflateDynamic (line 1728) | static unsigned deflateDynamic(ucvector* out, size_t* bp, Hash* hash,
function deflateFixed (line 1973) | static unsigned deflateFixed(ucvector* out, size_t* bp, Hash* hash,
function lodepng_deflatev (line 2021) | static unsigned lodepng_deflatev(ucvector* out, const unsigned char* in,...
function lodepng_deflate (line 2062) | unsigned lodepng_deflate(unsigned char** out, size_t* outsize,
function deflate (line 2075) | static unsigned deflate(unsigned char** out, size_t* outsize,
function update_adler32 (line 2095) | static unsigned update_adler32(unsigned adler, const unsigned char* data...
function adler32 (line 2119) | static unsigned adler32(const unsigned char* data, unsigned len)
function lodepng_zlib_decompress (line 2130) | unsigned lodepng_zlib_decompress(unsigned char** out, size_t* outsize, c...
function zlib_decompress (line 2175) | static unsigned zlib_decompress(unsigned char** out, size_t* outsize, co...
function lodepng_zlib_compress (line 2192) | unsigned lodepng_zlib_compress(unsigned char** out, size_t* outsize, con...
function zlib_compress (line 2234) | static unsigned zlib_compress(unsigned char** out, size_t* outsize, cons...
function zlib_decompress (line 2252) | static unsigned zlib_decompress(unsigned char** out, size_t* outsize, co...
function zlib_compress (line 2260) | static unsigned zlib_compress(unsigned char** out, size_t* outsize, cons...
function lodepng_compress_settings_init (line 2277) | void lodepng_compress_settings_init(LodePNGCompressSettings* settings)
function lodepng_decompress_settings_init (line 2299) | void lodepng_decompress_settings_init(LodePNGDecompressSettings* settings)
function lodepng_crc32 (line 2363) | unsigned lodepng_crc32(const unsigned char* data, size_t length)
function readBitFromReversedStream (line 2381) | static unsigned char readBitFromReversedStream(size_t* bitpointer, const...
function readBitsFromReversedStream (line 2388) | static unsigned readBitsFromReversedStream(size_t* bitpointer, const uns...
function setBitOfReversedStream0 (line 2400) | static void setBitOfReversedStream0(size_t* bitpointer, unsigned char* b...
function setBitOfReversedStream (line 2412) | static void setBitOfReversedStream(size_t* bitpointer, unsigned char* bi...
function lodepng_chunk_length (line 2424) | unsigned lodepng_chunk_length(const unsigned char* chunk)
function lodepng_chunk_type (line 2429) | void lodepng_chunk_type(char type[5], const unsigned char* chunk)
function lodepng_chunk_type_equals (line 2436) | unsigned char lodepng_chunk_type_equals(const unsigned char* chunk, cons...
function lodepng_chunk_ancillary (line 2442) | unsigned char lodepng_chunk_ancillary(const unsigned char* chunk)
function lodepng_chunk_private (line 2447) | unsigned char lodepng_chunk_private(const unsigned char* chunk)
function lodepng_chunk_safetocopy (line 2452) | unsigned char lodepng_chunk_safetocopy(const unsigned char* chunk)
function lodepng_chunk_check_crc (line 2467) | unsigned lodepng_chunk_check_crc(const unsigned char* chunk)
function lodepng_chunk_generate_crc (line 2477) | void lodepng_chunk_generate_crc(unsigned char* chunk)
function lodepng_chunk_append (line 2496) | unsigned lodepng_chunk_append(unsigned char** out, size_t* outlength, co...
function lodepng_chunk_create (line 2515) | unsigned lodepng_chunk_create(unsigned char** out, size_t* outlength, un...
function checkColorValidity (line 2551) | static unsigned checkColorValidity(LodePNGColorType colortype, unsigned ...
function getNumColorChannels (line 2565) | static unsigned getNumColorChannels(LodePNGColorType colortype)
function lodepng_get_bpp_lct (line 2578) | static unsigned lodepng_get_bpp_lct(LodePNGColorType colortype, unsigned...
function lodepng_color_mode_init (line 2586) | void lodepng_color_mode_init(LodePNGColorMode* info)
function lodepng_color_mode_cleanup (line 2596) | void lodepng_color_mode_cleanup(LodePNGColorMode* info)
function lodepng_color_mode_copy (line 2601) | unsigned lodepng_color_mode_copy(LodePNGColorMode* dest, const LodePNGCo...
function lodepng_color_mode_equal (line 2615) | static int lodepng_color_mode_equal(const LodePNGColorMode* a, const Lod...
function lodepng_palette_clear (line 2640) | void lodepng_palette_clear(LodePNGColorMode* info)
function lodepng_palette_add (line 2647) | unsigned lodepng_palette_add(LodePNGColorMode* info,
function lodepng_get_bpp (line 2668) | unsigned lodepng_get_bpp(const LodePNGColorMode* info)
function lodepng_get_channels (line 2674) | unsigned lodepng_get_channels(const LodePNGColorMode* info)
function lodepng_is_greyscale_type (line 2679) | unsigned lodepng_is_greyscale_type(const LodePNGColorMode* info)
function lodepng_is_alpha_type (line 2684) | unsigned lodepng_is_alpha_type(const LodePNGColorMode* info)
function lodepng_is_palette_type (line 2689) | unsigned lodepng_is_palette_type(const LodePNGColorMode* info)
function lodepng_has_palette_alpha (line 2694) | unsigned lodepng_has_palette_alpha(const LodePNGColorMode* info)
function lodepng_can_have_alpha (line 2704) | unsigned lodepng_can_have_alpha(const LodePNGColorMode* info)
function lodepng_get_raw_size (line 2711) | size_t lodepng_get_raw_size(unsigned w, unsigned h, const LodePNGColorMo...
function lodepng_get_raw_size_lct (line 2719) | size_t lodepng_get_raw_size_lct(unsigned w, unsigned h, LodePNGColorType...
function lodepng_get_raw_size_idat (line 2731) | static size_t lodepng_get_raw_size_idat(unsigned w, unsigned h, const Lo...
function LodePNGUnknownChunks_init (line 2743) | static void LodePNGUnknownChunks_init(LodePNGInfo* info)
function LodePNGUnknownChunks_cleanup (line 2750) | static void LodePNGUnknownChunks_cleanup(LodePNGInfo* info)
function LodePNGUnknownChunks_copy (line 2756) | static unsigned LodePNGUnknownChunks_copy(LodePNGInfo* dest, const LodeP...
function LodePNGText_init (line 2779) | static void LodePNGText_init(LodePNGInfo* info)
function LodePNGText_cleanup (line 2786) | static void LodePNGText_cleanup(LodePNGInfo* info)
function LodePNGText_copy (line 2798) | static unsigned LodePNGText_copy(LodePNGInfo* dest, const LodePNGInfo* s...
function lodepng_clear_text (line 2811) | void lodepng_clear_text(LodePNGInfo* info)
function lodepng_add_text (line 2816) | unsigned lodepng_add_text(LodePNGInfo* info, const char* key, const char...
function LodePNGIText_init (line 2842) | static void LodePNGIText_init(LodePNGInfo* info)
function LodePNGIText_cleanup (line 2851) | static void LodePNGIText_cleanup(LodePNGInfo* info)
function LodePNGIText_copy (line 2867) | static unsigned LodePNGIText_copy(LodePNGInfo* dest, const LodePNGInfo* ...
function lodepng_clear_itext (line 2883) | void lodepng_clear_itext(LodePNGInfo* info)
function lodepng_add_itext (line 2888) | unsigned lodepng_add_itext(LodePNGInfo* info, const char* key, const cha...
function lodepng_info_init (line 2926) | void lodepng_info_init(LodePNGInfo* info)
function lodepng_info_cleanup (line 2946) | void lodepng_info_cleanup(LodePNGInfo* info)
function lodepng_info_copy (line 2957) | unsigned lodepng_info_copy(LodePNGInfo* dest, const LodePNGInfo* source)
function lodepng_info_swap (line 2974) | void lodepng_info_swap(LodePNGInfo* a, LodePNGInfo* b)
function addColorBits (line 2984) | static void addColorBits(unsigned char* out, size_t index, unsigned bits...
type ColorTree (line 2995) | struct ColorTree
type ColorTree (line 3003) | struct ColorTree
function color_tree_init (line 3009) | static void color_tree_init(ColorTree* tree)
function color_tree_cleanup (line 3016) | static void color_tree_cleanup(ColorTree* tree)
function color_tree_get (line 3030) | static int color_tree_get(ColorTree* tree, unsigned char r, unsigned cha...
function color_tree_has (line 3043) | static int color_tree_has(ColorTree* tree, unsigned char r, unsigned cha...
function color_tree_add (line 3051) | static void color_tree_add(ColorTree* tree,
function rgba8ToPixel (line 3069) | static unsigned rgba8ToPixel(unsigned char* out, size_t i,
function rgba16ToPixel (line 3143) | static void rgba16ToPixel(unsigned char* out, size_t i,
function getPixelColorRGBA8 (line 3184) | static void getPixelColorRGBA8(unsigned char* r, unsigned char* g,
function getPixelColorsRGBA8 (line 3294) | static void getPixelColorsRGBA8(unsigned char* buffer, size_t numpixels,
function getPixelColorRGBA16 (line 3428) | static void getPixelColorRGBA16(unsigned short* r, unsigned short* g, un...
function lodepng_convert (line 3462) | unsigned lodepng_convert(unsigned char* out, const unsigned char* in,
function lodepng_color_profile_init (line 3536) | void lodepng_color_profile_init(LodePNGColorProfile* profile)
function getValueRequiredBits (line 3560) | static unsigned getValueRequiredBits(unsigned char value)
function lodepng_get_color_profile (line 3570) | unsigned lodepng_get_color_profile(LodePNGColorProfile* profile,
function lodepng_auto_choose_color (line 3760) | unsigned lodepng_auto_choose_color(LodePNGColorMode* mode_out,
function paethPredictor (line 3832) | static unsigned char paethPredictor(short a, short b, short c)
function Adam7_getpassvalues (line 3865) | static void Adam7_getpassvalues(unsigned passw[7], unsigned passh[7], si...
function lodepng_inspect (line 3900) | unsigned lodepng_inspect(unsigned* w, unsigned* h, LodePNGState* state,
function unfilterScanline (line 3966) | static unsigned unfilterScanline(unsigned char* recon, const unsigned ch...
function unfilter (line 4040) | static unsigned unfilter(unsigned char* out, const unsigned char* in, un...
function Adam7_deinterlace (line 4082) | static void Adam7_deinterlace(unsigned char* out, const unsigned char* i...
function removePaddingBits (line 4132) | static void removePaddingBits(unsigned char* out, const unsigned char* in,
function postProcessScanlines (line 4162) | static unsigned postProcessScanlines(unsigned char* out, unsigned char* in,
function readChunk_PLTE (line 4212) | static unsigned readChunk_PLTE(LodePNGColorMode* color, const unsigned c...
function readChunk_tRNS (line 4236) | static unsigned readChunk_tRNS(LodePNGColorMode* color, const unsigned c...
function readChunk_bKGD (line 4272) | static unsigned readChunk_bKGD(LodePNGInfo* info, const unsigned char* d...
function readChunk_tEXt (line 4305) | static unsigned readChunk_tEXt(LodePNGInfo* info, const unsigned char* d...
function readChunk_zTXt (line 4348) | static unsigned readChunk_zTXt(LodePNGInfo* info, const LodePNGDecompres...
function readChunk_iTXt (line 4397) | static unsigned readChunk_iTXt(LodePNGInfo* info, const LodePNGDecompres...
function readChunk_tIME (line 4490) | static unsigned readChunk_tIME(LodePNGInfo* info, const unsigned char* d...
function readChunk_pHYs (line 4505) | static unsigned readChunk_pHYs(LodePNGInfo* info, const unsigned char* d...
function decodeGeneric (line 4519) | static void decodeGeneric(unsigned char** out, unsigned* w, unsigned* h,
function lodepng_decode (line 4720) | unsigned lodepng_decode(unsigned char** out, unsigned* w, unsigned* h,
function lodepng_decode_memory (line 4765) | unsigned lodepng_decode_memory(unsigned char** out, unsigned* w, unsigne...
function lodepng_decode32 (line 4778) | unsigned lodepng_decode32(unsigned char** out, unsigned* w, unsigned* h,...
function lodepng_decode24 (line 4783) | unsigned lodepng_decode24(unsigned char** out, unsigned* w, unsigned* h,...
function lodepng_decode_file (line 4789) | unsigned lodepng_decode_file(unsigned char** out, unsigned* w, unsigned*...
function lodepng_decode32_file (line 4801) | unsigned lodepng_decode32_file(unsigned char** out, unsigned* w, unsigne...
function lodepng_decode24_file (line 4806) | unsigned lodepng_decode24_file(unsigned char** out, unsigned* w, unsigne...
function lodepng_decoder_settings_init (line 4812) | void lodepng_decoder_settings_init(LodePNGDecoderSettings* settings)
function lodepng_state_init (line 4827) | void lodepng_state_init(LodePNGState* state)
function lodepng_state_cleanup (line 4840) | void lodepng_state_cleanup(LodePNGState* state)
function lodepng_state_copy (line 4846) | void lodepng_state_copy(LodePNGState* dest, const LodePNGState* source)
function addChunk (line 4865) | static unsigned addChunk(ucvector* out, const char* chunkName, const uns...
function writeSignature (line 4872) | static void writeSignature(ucvector* out)
function addChunk_IHDR (line 4885) | static unsigned addChunk_IHDR(ucvector* out, unsigned w, unsigned h,
function addChunk_PLTE (line 4906) | static unsigned addChunk_PLTE(ucvector* out, const LodePNGColorMode* info)
function addChunk_tRNS (line 4923) | static unsigned addChunk_tRNS(ucvector* out, const LodePNGColorMode* info)
function addChunk_IDAT (line 4968) | static unsigned addChunk_IDAT(ucvector* out, const unsigned char* data, ...
function addChunk_IEND (line 4983) | static unsigned addChunk_IEND(ucvector* out)
function addChunk_tEXt (line 4992) | static unsigned addChunk_tEXt(ucvector* out, const char* keyword, const ...
function addChunk_zTXt (line 5008) | static unsigned addChunk_zTXt(ucvector* out, const char* keyword, const ...
function addChunk_iTXt (line 5035) | static unsigned addChunk_iTXt(ucvector* out, unsigned compressed, const ...
function addChunk_bKGD (line 5076) | static unsigned addChunk_bKGD(ucvector* out, const LodePNGInfo* info)
function addChunk_tIME (line 5106) | static unsigned addChunk_tIME(ucvector* out, const LodePNGTime* time)
function addChunk_pHYs (line 5123) | static unsigned addChunk_pHYs(ucvector* out, const LodePNGInfo* info)
function filterScanline (line 5141) | static void filterScanline(unsigned char* out, const unsigned char* scan...
function flog2 (line 5198) | static float flog2(float f)
function filter (line 5206) | static unsigned filter(unsigned char* out, const unsigned char* in, unsi...
function addPaddingBits (line 5426) | static void addPaddingBits(unsigned char* out, const unsigned char* in,
function Adam7_interlace (line 5459) | static void Adam7_interlace(unsigned char* out, const unsigned char* in,...
function preProcessScanlines (line 5510) | static unsigned preProcessScanlines(unsigned char** out, size_t* outsize...
function getPaletteTranslucency (line 5603) | static unsigned getPaletteTranslucency(const unsigned char* palette, siz...
function addUnknownChunks (line 5624) | static unsigned addUnknownChunks(ucvector* out, unsigned char* data, siz...
function lodepng_encode (line 5637) | unsigned lodepng_encode(unsigned char** out, size_t* outsize,
function lodepng_encode_memory (line 5830) | unsigned lodepng_encode_memory(unsigned char** out, size_t* outsize, con...
function lodepng_encode32 (line 5846) | unsigned lodepng_encode32(unsigned char** out, size_t* outsize, const un...
function lodepng_encode24 (line 5851) | unsigned lodepng_encode24(unsigned char** out, size_t* outsize, const un...
function lodepng_encode_file (line 5857) | unsigned lodepng_encode_file(const char* filename, const unsigned char* ...
function lodepng_encode32_file (line 5868) | unsigned lodepng_encode32_file(const char* filename, const unsigned char...
function lodepng_encode24_file (line 5873) | unsigned lodepng_encode24_file(const char* filename, const unsigned char...
function lodepng_encoder_settings_init (line 5879) | void lodepng_encoder_settings_init(LodePNGEncoderSettings* settings)
type lodepng (line 6010) | namespace lodepng
function load_file (line 6014) | unsigned load_file(std::vector<unsigned char>& buffer, const std::stri...
function save_file (line 6023) | unsigned save_file(const std::vector<unsigned char>& buffer, const std...
function decompress (line 6031) | unsigned decompress(std::vector<unsigned char>& out, const unsigned ch...
function decompress (line 6045) | unsigned decompress(std::vector<unsigned char>& out, const std::vector...
function compress (line 6053) | unsigned compress(std::vector<unsigned char>& out, const unsigned char...
function compress (line 6067) | unsigned compress(std::vector<unsigned char>& out, const std::vector<u...
function State (line 6094) | State& State::operator=(const State& other)
function decode (line 6102) | unsigned decode(std::vector<unsigned char>& out, unsigned& w, unsigned...
function decode (line 6119) | unsigned decode(std::vector<unsigned char>& out, unsigned& w, unsigned...
function decode (line 6125) | unsigned decode(std::vector<unsigned char>& out, unsigned& w, unsigned...
function decode (line 6140) | unsigned decode(std::vector<unsigned char>& out, unsigned& w, unsigned...
function decode (line 6148) | unsigned decode(std::vector<unsigned char>& out, unsigned& w, unsigned...
function encode (line 6160) | unsigned encode(std::vector<unsigned char>& out, const unsigned char* ...
function encode (line 6174) | unsigned encode(std::vector<unsigned char>& out,
function encode (line 6182) | unsigned encode(std::vector<unsigned char>& out,
function encode (line 6197) | unsigned encode(std::vector<unsigned char>& out,
function encode (line 6206) | unsigned encode(const std::string& filename,
function encode (line 6216) | unsigned encode(const std::string& filename,
FILE: isosurface/tbb/tbb-2018_U6/examples/graph/stereo/lodepng.h
type LodePNGColorType (line 111) | typedef enum LodePNGColorType
function namespace (line 219) | namespace lodepng
type LodePNGDecompressSettings (line 275) | typedef struct LodePNGDecompressSettings LodePNGDecompressSettings;
type LodePNGDecompressSettings (line 276) | struct LodePNGDecompressSettings
type LodePNGCompressSettings (line 303) | typedef struct LodePNGCompressSettings LodePNGCompressSettings;
type LodePNGCompressSettings (line 304) | struct LodePNGCompressSettings /*deflate = compress*/
type LodePNGColorMode (line 338) | typedef struct LodePNGColorMode
type LodePNGTime (line 415) | typedef struct LodePNGTime
type LodePNGInfo (line 427) | typedef struct LodePNGInfo
type LodePNGDecoderSettings (line 539) | typedef struct LodePNGDecoderSettings
type LodePNGFilterStrategy (line 559) | typedef enum LodePNGFilterStrategy
type LodePNGColorProfile (line 579) | typedef struct LodePNGColorProfile
type LodePNGEncoderSettings (line 605) | typedef struct LodePNGEncoderSettings
type LodePNGState (line 642) | typedef struct LodePNGState
function namespace (line 837) | namespace lodepng
FILE: isosurface/tbb/tbb-2018_U6/examples/graph/stereo/stereo.cpp
function applyLeftImageEffect (line 48) | void applyLeftImageEffect(utils::image_buffer& image) {
function applyRightImageEffect (line 62) | void applyRightImageEffect(utils::image_buffer& image) {
function mergeImageBuffers (line 77) | void mergeImageBuffers(utils::image_buffer& leftImage, const utils::imag...
function fillOpenclBuffer (line 96) | void fillOpenclBuffer(tbb::flow::opencl_buffer<cl_uchar>& openclBuffer, ...
class gpu_device_selector (line 100) | class gpu_device_selector {
function hostFunction (line 125) | void hostFunction(const std::string& firstFile, const std::string& secon...
function openclFunctionGPU (line 189) | void openclFunctionGPU(const std::string& firstFile, const std::string& ...
function openclFunctionGPUPlusCPU (line 290) | void openclFunctionGPUPlusCPU(const std::string& firstFile, const std::s...
function main (line 388) | int main(int argc, char* argv[]) {
function main (line 435) | int main() {
FILE: isosurface/tbb/tbb-2018_U6/examples/graph/stereo/utils.h
function namespace (line 26) | namespace utils {
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_do/parallel_preorder/Graph.h
type OpKind (line 25) | enum OpKind {
function class (line 40) | class Cell {
function class (line 68) | class Graph {
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_do/parallel_preorder/Matrix.h
function class (line 21) | class Matrix {
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_do/parallel_preorder/main.cpp
class Cell (line 33) | class Cell
function ParseCommandLine (line 45) | static void ParseCommandLine( int argc, const char* argv[] ) {
function main (line 57) | int main( int argc, const char* argv[] ) {
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_do/parallel_preorder/parallel_preorder.cpp
class Body (line 27) | class Body {
method Body (line 29) | Body() {}
function ParallelPreorderTraversal (line 52) | void ParallelPreorderTraversal( const std::vector<Cell*>& root_set ) {
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/game_of_life/src/Board.h
type Matrix (line 42) | struct Matrix
function class (line 52) | class Board
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/game_of_life/src/Evolution.cpp
class tbb_parallel_task (line 199) | class tbb_parallel_task
method set_values (line 203) | static void set_values (Matrix* source, char* dest)
method tbb_parallel_task (line 217) | tbb_parallel_task () {}
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/game_of_life/src/Evolution.h
type Int32 (line 45) | typedef unsigned int Int32;
function class (line 56) | class Evolution
function class (line 137) | class SequentialEvolution: public Evolution
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/game_of_life/src/Form1.h
function InitializeComponent (line 103) | void InitializeComponent(void)
function OnExit (line 261) | void OnExit(System::Object^ sender, System::EventArgs^ e)
function OnSeed (line 266) | void OnSeed(System::Object^ sender, System::EventArgs^ e)
function OnRun (line 276) | void OnRun(System::Object^ sender, System::EventArgs^ e)
function OnPauseResume (line 284) | void OnPauseResume(System::Object^ sender, System::EventArgs^ e)
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/game_of_life/src/Game_of_life.cpp
function PrintUsage (line 142) | void PrintUsage()
function ParseCommandLine (line 149) | bool ParseCommandLine(int argc, char * argv [])
function main (line 194) | int main( int argc, char* argv[] )
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/game_of_life/src/Update_state.cpp
function create_record (line 29) | inline void create_record( char * src, unsigned * dst, unsigned width)
function sum_offset (line 40) | inline void sum_offset( __m128i * X, __m128i * A, __m128i * B, __m128i * C,
function shift_left2D (line 52) | inline void shift_left2D( __m128i * X, unsigned height, unsigned size_ss...
function shift_right2D (line 77) | inline void shift_right2D( __m128i * X, unsigned height, unsigned size_s...
function UpdateState (line 101) | void UpdateState(Matrix * m_matrix, char * dest ,int begin, int end)
function GetAdjacentCellState (line 222) | char GetAdjacentCellState(
function CheckCell (line 358) | char CheckCell(Matrix * m_matrix, int cellNumber)
function UpdateState (line 393) | void UpdateState(Matrix * m_matrix, char * dest ,int begin, int end)
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/polygon_overlay/polymain.cpp
function main (line 48) | int main( int argc, char **argv) {
function Usage (line 109) | void Usage(int argc, char **argv) {
function ParseCmdLine (line 133) | bool ParseCmdLine(int argc, char **argv ) {
function GenerateMap (line 297) | bool GenerateMap(Polygon_map_t **newMap, int xSize, int ySize, int gNPol...
function CheckPolygonMap (line 479) | void CheckPolygonMap(Polygon_map_t *checkMap) {
function CompOnePolygon (line 551) | bool CompOnePolygon(RPolygon &p1, RPolygon &p2) {
function PolygonsEqual (line 561) | bool PolygonsEqual(RPolygon *p1, RPolygon *p2) {
function ComparePolygonMaps (line 569) | bool ComparePolygonMaps(Polygon_map_t *map1, Polygon_map_t *map2) {
function SetRandomSeed (line 603) | void SetRandomSeed(int newSeed) {
function NextRan (line 607) | int NextRan(int n) {
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/polygon_overlay/polyover.cpp
function OverlayOnePolygonWithMap (line 49) | void OverlayOnePolygonWithMap(Polygon_map_t *resultMap, RPolygon *myPoly...
function SerialOverlayMaps (line 83) | void SerialOverlayMaps(Polygon_map_t **resultMap, Polygon_map_t *map1, P...
class ApplyOverlay (line 103) | class ApplyOverlay {
method ApplyOverlay (line 118) | ApplyOverlay(Polygon_map_t *resultMap, Polygon_map_t *map1, Polygon_ma...
function NaiveParallelOverlay (line 128) | void NaiveParallelOverlay(Polygon_map_t *&result_map, Polygon_map_t &pol...
function split_at (line 182) | void split_at( Flagged_map_t& in_map, Flagged_map_t &left_out, Flagged_m...
class blocked_range_with_maps (line 206) | class blocked_range_with_maps {
method blocked_range_with_maps (line 218) | blocked_range_with_maps(
method blocked_range_with_maps (line 236) | blocked_range_with_maps(const blocked_range_with_maps& other): my_rang...
method empty (line 237) | bool empty() const { return my_range.empty(); }
method is_divisible (line 238) | bool is_divisible() const { return my_range.is_divisible(); }
method check_my_map (line 241) | void check_my_map() {
method dump_map (line 255) | void dump_map( Flagged_map_t& mapx) {
method blocked_range_with_maps (line 268) | blocked_range_with_maps(blocked_range_with_maps& lhs_r, split ) : my_r...
method my_range_type (line 282) | const my_range_type& range() const { return my_range; }
method Flagged_map_t (line 283) | Flagged_map_t& map1() { return my_map1; }
method Flagged_map_t (line 284) | Flagged_map_t& map2() { return my_map2; }
class ApplySplitOverlay (line 291) | class ApplySplitOverlay {
method ApplySplitOverlay (line 350) | ApplySplitOverlay(Polygon_map_t *resultMap, Polygon_map_t *map1, Polyg...
function SplitParallelOverlay (line 362) | void SplitParallelOverlay(Polygon_map_t **result_map, Polygon_map_t *pol...
class ApplySplitOverlayCV (line 419) | class ApplySplitOverlayCV {
method ApplySplitOverlayCV (line 467) | ApplySplitOverlayCV(concurrent_Polygon_map_t *resultMap, Polygon_map_t...
function SplitParallelOverlayCV (line 479) | void SplitParallelOverlayCV(concurrent_Polygon_map_t **result_map, Polyg...
class ApplySplitOverlayETS (line 544) | class ApplySplitOverlayETS {
method ApplySplitOverlayETS (line 592) | ApplySplitOverlayETS(ETS_Polygon_map_t *resultMap, Polygon_map_t *map1...
function SplitParallelOverlayETS (line 604) | void SplitParallelOverlayETS(ETS_Polygon_map_t **result_map, Polygon_map...
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/polygon_overlay/pover_global.h
type allSides (line 79) | typedef enum {
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/polygon_overlay/pover_video.cpp
function rt_sleep (line 34) | void rt_sleep(int msec) {
function rt_sleep (line 45) | void rt_sleep(int msec) {
function g_next_frame (line 53) | bool g_next_frame() {
function g_last_frame (line 61) | bool g_last_frame() {
function initializeVideo (line 66) | bool initializeVideo(int argc, char **argv) {
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/polygon_overlay/pover_video.h
function class (line 36) | class pover_video: public video {
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/polygon_overlay/rpolygon.h
type scalable_allocator (line 38) | typedef scalable_allocator<RPolygon> RPolygon_allocator;
type MallocBehavior (line 41) | enum MallocBehavior {
function class (line 48) | class RPolygon {
function set_nodraw (line 60) | void set_nodraw(int xMin, int yMin, int xMax, int yMax) {m_XMin=xMin; m_...
function set (line 63) | void set(int xMin, int yMin, int xMax, int yMax) {
function get (line 69) | void get(int *xMin, int *yMin, int *xMax, int *yMax) const {*xMin=m_XMin...
function setColor (line 74) | void setColor(colorcomp_t newr, colorcomp_t newg, colorcomp_t newb) {m_r...
function getColor (line 75) | void getColor(int *myr, int *myg, int *myb) {*myr=m_r; *myg=m_g; *myb=m_b;}
function color_t (line 76) | color_t myColor() {return gVideo->get_color(m_r, m_g, m_b);}
function drawPoly (line 77) | void drawPoly() {
function area (line 96) | int area() {return ((m_XMax-m_XMin+1)*(m_YMax-m_YMin+1));}
function print (line 97) | void print(int i) { cout << "RPolygon " << i << " (" << m_XMin << ", " <...
function class (line 120) | class RPolygon_flagged {
type class (line 132) | typedef class vector<RPolygon, RPolygon_allocator> Polygon_map_t;
type class (line 133) | typedef class concurrent_vector<RPolygon, RPolygon_allocator> concurrent...
type class (line 134) | typedef class enumerable_thread_specific<Polygon_map_t> ETS_Polygon_map_t;
type class (line 135) | typedef class vector<RPolygon_flagged, scalable_allocator<RPolygon_flagg...
function PolygonsOverlap (line 137) | inline bool PolygonsOverlap(RPolygon *p1, RPolygon *p2, int &xl, int &yl...
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/seismic/main.cpp
type RunOptions (line 33) | struct RunOptions {
method RunOptions (line 41) | RunOptions(utility::thread_number_range threads_ , int number_of_fr...
function do_get_default_num_threads (line 47) | int do_get_default_num_threads() {
function get_default_num_threads (line 56) | int get_default_num_threads() {
function RunOptions (line 61) | RunOptions ParseCommandLine(int argc, char *argv[]){
method RunOptions (line 41) | RunOptions(utility::thread_number_range threads_ , int number_of_fr...
function main (line 80) | int main(int argc, char *argv[])
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/seismic/seismic_video.cpp
function LRESULT (line 96) | LRESULT CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lP...
function LRESULT (line 111) | LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM ...
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/seismic/seismic_video.h
function class (line 28) | class SeismicVideo : public video
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/seismic/universe.cpp
type Universe::Rectangle (line 118) | struct Universe::Rectangle {
type std::pair<int,int> (line 119) | struct std::pair<int,int>
type std::pair<int,int> (line 120) | struct std::pair<int,int>
method Rectangle (line 121) | Rectangle (int startX, int startY, int width, int height):xRange(start...
method StartX (line 122) | int StartX() const {return xRange.first;}
method StartY (line 123) | int StartY() const {return yRange.first;}
method Width (line 124) | int Width() const {return xRange.second;}
method Height (line 125) | int Height() const {return yRange.second;}
method EndX (line 126) | int EndX() const {return xRange.first + xRange.second;}
method EndY (line 127) | int EndY() const {return yRange.first + yRange.second;}
type UpdateStressBody (line 153) | struct UpdateStressBody {
method UpdateStressBody (line 155) | UpdateStressBody(Universe & u):u_(u){}
type UpdateVelocityBody (line 179) | struct UpdateVelocityBody {
method UpdateVelocityBody (line 181) | UpdateVelocityBody(Universe & u):u_(u){}
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/seismic/universe.h
function class (line 34) | class Universe {
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/msvs/win8ui/App.xaml.h
function namespace (line 27) | namespace tbbTachyon
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/msvs/win8ui/DirectXBase.h
function namespace (line 35) | namespace DX
function DirectXBase (line 48) | DirectXBase abstract
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/msvs/win8ui/DirectXPage.xaml.cpp
function log2 (line 47) | static int log2( unsigned int x ) {
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/msvs/win8ui/DirectXPage.xaml.h
function namespace (line 26) | namespace tbbTachyon
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/msvs/win8ui/tbbTachyonRenderer.h
function tbbTachyonRenderer (line 26) | tbbTachyonRenderer sealed : public DirectXBase
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/src/api.cpp
function vector (line 86) | vector rt_vector(apiflt x, apiflt y, apiflt z) {
function color (line 96) | color rt_color(apiflt r, apiflt g, apiflt b) {
function rt_initialize (line 106) | void rt_initialize() {
function rt_renderscene (line 120) | void rt_renderscene(SceneHandle voidscene) {
function rt_camerasetup (line 125) | void rt_camerasetup(SceneHandle voidscene, apiflt zoom, apiflt aspectratio,
function rt_outputfile (line 154) | void rt_outputfile(SceneHandle voidscene, const char * outname) {
function rt_resolution (line 159) | void rt_resolution(SceneHandle voidscene, int hres, int vres) {
function rt_verbose (line 165) | void rt_verbose(SceneHandle voidscene, int v) {
function rt_rawimage (line 170) | void rt_rawimage(SceneHandle voidscene, unsigned char *rawimage) {
function rt_background (line 175) | void rt_background(SceneHandle voidscene, color col) {
function rt_boundmode (line 182) | void rt_boundmode(SceneHandle voidscene, int mode) {
function rt_boundthresh (line 187) | void rt_boundthresh(SceneHandle voidscene, int threshold) {
function rt_displaymode (line 200) | void rt_displaymode(SceneHandle voidscene, int mode) {
function rt_scenesetup (line 206) | void rt_scenesetup(SceneHandle voidscene, char * outname, int hres, int ...
function SceneHandle (line 212) | SceneHandle rt_newscene(void) {
function rt_deletescene (line 236) | void rt_deletescene(SceneHandle scene) {
function apitextotex (line 241) | void apitextotex(apitexture * apitex, texture * tex) {
function rt_tex_color (line 317) | void rt_tex_color(void * voidtex, color col) {
function rt_tex_phong (line 322) | void rt_tex_phong(void * voidtex, apiflt phong, apiflt phongexp, int typ...
function rt_light (line 329) | void rt_light(void * tex, vector ctr, apiflt rad) {
function rt_scalarvol (line 344) | void rt_scalarvol(void * tex, vector min, vector max,
function rt_extvol (line 349) | void rt_extvol(void * tex, vector min, vector max, int samples, flt (* e...
function rt_box (line 353) | void rt_box(void * tex, vector min, vector max) {
function rt_cylinder (line 357) | void rt_cylinder(void * tex, vector ctr, vector axis, apiflt rad) {
function rt_fcylinder (line 361) | void rt_fcylinder(void * tex, vector ctr, vector axis, apiflt rad) {
function rt_plane (line 365) | void rt_plane(void * tex, vector ctr, vector norm) {
function rt_ring (line 369) | void rt_ring(void * tex, vector ctr, vector norm, apiflt a, apiflt b) {
function rt_sphere (line 373) | void rt_sphere(void * tex, vector ctr, apiflt rad) {
function rt_tri (line 377) | void rt_tri(void * tex, vector v0, vector v1, vector v2) {
function rt_stri (line 387) | void rt_stri(void * tex, vector v0, vector v1, vector v2,
function rt_quadsphere (line 398) | void rt_quadsphere(void * tex, vector ctr, apiflt rad) {
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/src/api.h
type apiflt (line 68) | typedef float apiflt;
type apiflt (line 70) | typedef double apiflt;
type apitexture (line 75) | typedef struct {
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/src/apigeom.cpp
function rt_polycylinder (line 63) | void rt_polycylinder(void * tex, vector * points, int numpts, apiflt rad) {
function rt_heightfield (line 87) | void rt_heightfield(void * tex, vector ctr, int m, int n,
function rt_sheightfield (line 131) | static void rt_sheightfield(void * tex, vector ctr, int m, int n,
function adjust (line 197) | static void adjust(apiflt *base, int xres, int yres, apiflt wx, apiflt wy,
function subdivide (line 214) | static void subdivide(apiflt *base, int xres, int yres, apiflt wx, apifl...
function rt_landscape (line 240) | void rt_landscape(void * tex, int m, int n,
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/src/apitrigeom.cpp
function rt_tri_fcylinder (line 69) | void rt_tri_fcylinder(void * tex, vector ctr, vector axis, apiflt rad) {
function rt_tri_cylinder (line 118) | void rt_tri_cylinder(void * tex, vector ctr, vector axis, apiflt rad) {
function rt_tri_ring (line 122) | void rt_tri_ring(void * tex, vector ctr, vector norm, apiflt a, apiflt b) {
function rt_tri_box (line 170) | void rt_tri_box(void * tex, vector min, vector max) {
function rt_tri_sphere (line 220) | void rt_tri_sphere(void * tex, vector ctr, apiflt rad) {
function rt_tri_plane (line 223) | void rt_tri_plane(void * tex, vector ctr, vector norm) {
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/src/bndbox.cpp
function bndbox (line 72) | bndbox * newbndbox(vector min, vector max) {
function bndbox_bbox (line 88) | static int bndbox_bbox(void * obj, vector * min, vector * max) {
function free_bndbox (line 98) | static void free_bndbox(void * v) {
function bndbox_intersect (line 107) | static void bndbox_intersect(bndbox * bx, ray * ry) {
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/src/bndbox.h
type bndbox (line 56) | typedef struct {
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/src/box.cpp
function box_bbox (line 62) | int box_bbox(void * obj, vector * min, vector * max) {
function box (line 78) | box * newbox(void * tex, vector min, vector max) {
function box_intersect (line 91) | void box_intersect(box * bx, ray * ry) {
function box_normal (line 141) | void box_normal(box * bx, vector * pnt, ray * incident, vector * N) {
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/src/box.h
type box (line 57) | typedef struct {
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/src/camera.cpp
function ray (line 61) | ray camray(scenedef *scene, int x, int y) {
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/src/coordsys.cpp
function xytopolar (line 58) | void xytopolar(flt x, flt y, flt rad, flt * u, flt * v) {
function xyztocyl (line 68) | void xyztocyl(vector pnt, flt height, flt * u, flt * v) {
function xyztospr (line 80) | void xyztospr(vector pnt, flt * u, flt * v) {
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/src/cylinder.cpp
function object (line 79) | object * newcylinder(void * tex, vector ctr, vector axis, flt rad) {
function cylinder_bbox (line 93) | static int cylinder_bbox(void * obj, vector * min, vector * max) {
function cylinder_intersect (line 97) | static void cylinder_intersect(cylinder * cyl, ray * ry) {
function cylinder_normal (line 141) | static void cylinder_normal(cylinder * cyl, vector * pnt, ray * incident...
function object (line 167) | object * newfcylinder(void * tex, vector ctr, vector axis, flt rad) {
function fcylinder_bbox (line 182) | static int fcylinder_bbox(void * obj, vector * min, vector * max) {
function fcylinder_intersect (line 211) | static void fcylinder_intersect(cylinder * cyl, ray * ry) {
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/src/cylinder.h
type cylinder (line 61) | typedef struct {
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/src/extvol.cpp
function extvol_bbox (line 70) | int extvol_bbox(void * obj, vector * min, vector * max) {
function extvol (line 86) | extvol * newextvol(void * voidtex, vector min, vector max,
function color (line 131) | color ExtVoxelColor(flt scalar) {
function color (line 153) | color ext_volume_texture(vector * hit, texture * tex, ray * ry) {
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/src/extvol.h
type extvol (line 57) | typedef struct {
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/src/grid.cpp
function object (line 82) | object * newgrid(int xsize, int ysize, int zsize, vector min, vector max) {
function grid_bbox (line 111) | static int grid_bbox(void * obj, vector * min, vector * max) {
function grid_free (line 120) | static void grid_free(void * v) {
function globalbound (line 145) | static void globalbound(object ** rootlist, vector * gmin, vector * gmax) {
function cellbound (line 175) | static int cellbound(grid *g, gridindex *index, vector * cmin, vector * ...
function countobj (line 238) | static int countobj(object * root) {
function countobjlist (line 252) | static int countobjlist(objectlist * root) {
function engrid_scene (line 266) | int engrid_scene(object ** list) {
function engrid_objlist (line 305) | void engrid_objlist(grid * g, object ** list) {
function engrid_cell (line 326) | static int engrid_cell(grid * gold, gridindex *index) {
function engrid_objectlist (line 373) | static int engrid_objectlist(grid * g, objectlist ** list) {
function engrid_object (line 403) | static int engrid_object(grid * g, object * obj) {
function pos2grid (line 440) | static int pos2grid(grid * g, vector * pos, gridindex * index) {
function grid_intersect (line 467) | static void grid_intersect(grid * g, ray * ry) {
function voxel_intersect (line 620) | static void voxel_intersect(grid * g, ray * ry, int voxindex) {
function grid_bounds_intersect (line 630) | static int grid_bounds_intersect(grid * g, ray * ry, flt *nr, flt *fr) {
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/src/grid.h
type objectlist (line 62) | typedef struct objectlist {
type grid (line 67) | typedef struct {
type gridindex (line 82) | typedef struct {
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/src/imageio.cpp
function fakeimage (line 67) | static
function readimage (line 85) | int readimage(rawimage * img) {
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/src/imap.cpp
function ResetImages (line 63) | void ResetImages(void) {
function LoadImage (line 71) | void LoadImage(rawimage * image) {
function color (line 78) | color ImageMap(rawimage * image, flt u, flt v) {
function rawimage (line 130) | rawimage * AllocateImage(char * filename) {
function DeallocateImage (line 163) | void DeallocateImage(rawimage * image) {
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/src/intersect.cpp
function new_objectid (line 61) | unsigned int new_objectid(void) {
function max_objectid (line 65) | unsigned int max_objectid(void) {
function add_object (line 69) | void add_object(object * obj) {
function free_objects (line 82) | void free_objects(object * start) {
function reset_object (line 96) | void reset_object(void) {
function intersect_objects (line 104) | void intersect_objects(ray * intray) {
function reset_intersection (line 115) | void reset_intersection(intersectstruct * intstruct) {
function add_intersection (line 123) | void add_intersection(flt t, object * obj, ray * ry) {
function closest_intersection (line 145) | int closest_intersection(flt * t, object ** obj, intersectstruct * intst...
function shadow_intersection (line 159) | int shadow_intersection(intersectstruct * intstruct, flt maxdist) {
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/src/jpeg.cpp
function readjpeg (line 69) | int readjpeg(char * name, int * xres, int * yres, unsigned char **imgdat...
function readjpeg (line 77) | int readjpeg(char * name, int * xres, int * yres, unsigned char **imgdat...
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/src/light.cpp
function point_light (line 71) | point_light * newlight(void * tex, vector ctr, flt rad) {
function light_bbox (line 85) | static int light_bbox(void * obj, vector * min, vector * max) {
function light_intersect (line 89) | static void light_intersect(point_light * l, ray * ry) {
function light_normal (line 116) | static void light_normal(point_light * l, vector * pnt, ray * incident, ...
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/src/light.h
type point_light (line 56) | typedef struct {
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/src/main.cpp
class tachyon_video (line 81) | class tachyon_video
function initoptions (line 97) | void initoptions(argoptions * opt) {
function CreateScene (line 110) | int CreateScene() {
function example_main (line 132) | unsigned int __stdcall example_main(void *)
function CreateScene (line 181) | int CreateScene() {
function main (line 207) | int main (int argc, char *argv[]) {
function useoptions (line 258) | int useoptions(argoptions * opt, SceneHandle scene) {
function argoptions (line 286) | argoptions ParseCommandLine(int argc, const char *argv[]) {
function CreateScene (line 313) | int CreateScene(argoptions &opt) {
function main (line 352) | int main (int argc, char *argv[]) {
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/src/objbound.cpp
function globalbound (line 63) | static void globalbound(object ** rootlist, vector * gmin, vector * gmax) {
function objinside (line 92) | static int objinside(object * obj, vector * min, vector * max) {
function countobj (line 107) | static int countobj(object * root) {
function movenextobj (line 121) | static void movenextobj(object * thisobj, object ** root) {
function octreespace (line 137) | static void octreespace(object ** rootlist, int maxoctnodes) {
function dividespace (line 320) | void dividespace(int maxoctnodes, object **toplist) {
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/src/parse.cpp
function stringcmp (line 87) | static int stringcmp(const char * a, const char * b) {
function reset_tex_table (line 104) | static void reset_tex_table(void) {
function errcode (line 122) | static errcode add_texture(void * tex, char name[TEXNAMELEN]) {
function apiflt (line 147) | apiflt degtorad(apiflt deg) {
function degvectoradvec (line 153) | static void degvectoradvec(vector * degvec) {
function InitRot3d (line 162) | static void InitRot3d(RotMat * rot, apiflt x, apiflt y, apiflt z) {
function Rotate3d (line 176) | static void Rotate3d(RotMat * rot, vector * vec) {
function Scale3d (line 184) | static void Scale3d(vector * scale, vector * vec) {
function Trans3d (line 190) | static void Trans3d(vector * trans, vector * vec) {
function errcode (line 196) | static errcode GetString(FILE * dfile, const char * string) {
function readmodel (line 209) | unsigned int readmodel(char * modelfile, SceneHandle scene) {
function errcode (line 246) | static errcode GetScenedefs(FILE * dfile, SceneHandle scene) {
function errcode (line 316) | static errcode GetObject(FILE * dfile, SceneHandle scene) {
function errcode (line 376) | static errcode GetVector(FILE * dfile, vector * v1) {
function errcode (line 387) | static errcode GetColor(FILE * dfile, color * c1) {
function errcode (line 400) | static errcode GetTexDef(FILE * dfile) {
function errcode (line 409) | static errcode GetTexAlias(FILE * dfile) {
function errcode (line 421) | static errcode GetTexture(FILE * dfile, void ** tex) {
function errcode (line 513) | static errcode GetLight(FILE * dfile) {
function errcode (line 535) | static errcode GetBackGnd(FILE * dfile) {
function errcode (line 547) | static errcode GetCylinder(FILE * dfile) {
function errcode (line 568) | static errcode GetFCylinder(FILE * dfile) {
function errcode (line 596) | static errcode GetPolyCylinder(FILE * dfile) {
function errcode (line 626) | static errcode GetSphere(FILE * dfile) {
function errcode (line 646) | static errcode GetPlane(FILE * dfile) {
function errcode (line 663) | static errcode GetVol(FILE * dfile) {
function errcode (line 685) | static errcode GetBox(FILE * dfile) {
function errcode (line 701) | static errcode GetRing(FILE * dfile) {
function errcode (line 723) | static errcode GetTri(FILE * dfile) {
function errcode (line 744) | static errcode GetSTri(FILE * dfile) {
function errcode (line 774) | static errcode GetLandScape(FILE * dfile) {
function errcode (line 800) | static errcode GetTPolyFile(FILE * dfile) {
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/src/parse.h
type RotMat (line 69) | typedef struct {
type texentry (line 75) | typedef struct {
type errcode (line 83) | typedef unsigned int errcode;
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/src/plane.cpp
function object (line 71) | object * newplane(void * tex, vector ctr, vector norm) {
function plane_bbox (line 86) | static int plane_bbox(void * obj, vector * min, vector * max) {
function plane_intersect (line 90) | static void plane_intersect(plane * pln, ray * ry) {
function plane_normal (line 102) | static void plane_normal(plane * pln, vector * pnt, ray * incident, vec...
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/src/plane.h
type plane (line 60) | typedef struct {
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/src/ppm.cpp
function getint (line 79) | static int getint(FILE * dfile) {
function readppm (line 95) | int readppm(char * name, int * xres, int * yres, unsigned char **imgdata) {
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/src/pthread.cpp
function pthread_create (line 59) | int
function pthread_join (line 85) | int
function pthread_exit (line 115) | void
function pthread_mutex_init (line 129) | int
function pthread_mutex_destroy (line 136) | int
function pthread_mutex_lock (line 142) | int
function pthread_mutex_unlock (line 149) | int
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/src/pthread_w.h
type pthread_s (line 72) | struct pthread_s {
type pthread_s (line 76) | struct pthread_s
type pthread_attr_t (line 78) | typedef struct {
type pthread_mutexattr_t (line 86) | typedef struct {
type pthread_mutex_t (line 90) | typedef struct {
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/src/quadric.cpp
function quadric_bbox (line 62) | int quadric_bbox(void * obj, vector * min, vector * max) {
function quadric (line 73) | quadric * newquadric() {
function quadric_intersect (line 86) | void quadric_intersect(quadric * q, ray * ry) {
function quadric_normal (line 147) | void quadric_normal(quadric * q, vector * pnt, ray * incident, vector * ...
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/src/quadric.h
type quadmatrix (line 56) | typedef struct {
type quadric (line 63) | typedef struct {
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/src/render.cpp
function renderscene (line 71) | void renderscene(scenedef scene) {
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/src/ring.cpp
function object (line 71) | object * newring(void * tex, vector ctr, vector norm, flt inrad, flt out...
function ring_bbox (line 87) | static int ring_bbox(void * obj, vector * min, vector * max) {
function ring_intersect (line 100) | static void ring_intersect(ring * rng, ray * ry) {
function ring_normal (line 122) | static void ring_normal(ring * rng, vector * pnt, ray * incident, vecto...
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/src/ring.h
type ring (line 59) | typedef struct {
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/src/shade.cpp
function reset_lights (line 64) | void reset_lights(void) {
function add_light (line 68) | void add_light(point_light * li) {
function color (line 73) | color shader(ray * incident) {
function color (line 187) | color shade_reflection(ray * incident, vector * hit, vector * N, flt spe...
function color (line 216) | color shade_transmission(ray * incident, vector * hit, flt trans) {
function flt (line 239) | flt shade_phong(ray * incident, vector * hit,
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/src/sphere.cpp
function object (line 71) | object * newsphere(void * tex, vector ctr, flt rad) {
function sphere_bbox (line 85) | static int sphere_bbox(void * obj, vector * min, vector * max) {
function sphere_intersect (line 98) | static void sphere_intersect(sphere * spr, ray * ry) {
function sphere_normal (line 121) | static void sphere_normal(sphere * spr, vector * pnt, ray * incident, ve...
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/src/sphere.h
type sphere (line 60) | typedef struct {
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/src/tachyon_video.cpp
function rt_finalize (line 111) | void rt_finalize(void) {
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/src/tachyon_video.h
function class (line 52) | class tachyon_video : public video
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/src/texture.cpp
function color (line 64) | color standard_texture(vector * hit, texture * tex, ray * ry) {
function color (line 69) | color image_cyl_texture(vector * hit, texture * tex, ray * ry) {
function color (line 93) | color image_sphere_texture(vector * hit, texture * tex, ray * ry) {
function color (line 117) | color image_plane_texture(vector * hit, texture * tex, ray * ry) {
function color (line 147) | color grit_texture(vector * hit, texture * tex, ray * ry) {
function color (line 162) | color checker_texture(vector * hit, texture * tex, ray * ry) {
function color (line 191) | color cyl_checker_texture(vector * hit, texture * tex, ray * ry) {
function color (line 223) | color wood_texture(vector * hit, texture * tex, ray * ry) {
function InitNoise (line 260) | void InitNoise(void) {
function Noise (line 283) | int Noise(flt x, flt y, flt z) {
function color (line 332) | color marble_texture(vector * hit, texture * tex, ray * ry) {
function color (line 363) | color gnoise_texture(vector * hit, texture * tex, ray * ry) {
function InitTextures (line 381) | void InitTextures(void) {
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/src/tgafile.cpp
function createtgafile (line 61) | void createtgafile(char *name, unsigned short width, unsigned short heig...
function writetgaregion (line 120) | void writetgaregion(void * voidofp,
function readtga (line 155) | int readtga(char * name, int * xres, int * yres, unsigned char **imgdata) {
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/src/trace.h
type thr_parms (line 58) | typedef struct {
type patch (line 69) | typedef struct {
type thr_io_parms (line 76) | typedef struct {
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/src/trace.serial.cpp
function color_t (line 75) | static color_t render_one_pixel (int x, int y, unsigned int *local_mbox,...
function parallel_thread (line 144) | static void parallel_thread (void)
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/src/trace.simple.cpp
function color_t (line 75) | static color_t render_one_pixel (int x, int y, unsigned int *local_mbox,...
function parallel_thread (line 132) | static void parallel_thread(void)
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/src/trace.tbb.cpp
function color_t (line 104) | static color_t render_one_pixel (int x, int y, unsigned int *local_mbox,...
class parallel_task (line 183) | class parallel_task {
method parallel_task (line 227) | parallel_task () {}
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/src/trace.tbb1d.cpp
function color_t (line 82) | static color_t render_one_pixel (int x, int y, unsigned int *local_mbox,...
class parallel_task (line 152) | class parallel_task {
method parallel_task (line 172) | parallel_task () {}
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/src/trace_rest.cpp
function color (line 70) | color trace(ray * primary) {
function trace_shm (line 94) | void trace_shm(scenedef scene, /*char * buffer, */ int startx, int stop...
function trace_region (line 113) | void trace_region(scenedef scene, void * tga, int startx, int starty, in...
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/src/triangle.cpp
function object (line 78) | object * newtri(void * tex, vector v0, vector v1, vector v2) {
function object (line 108) | object * newstri(void * tex, vector v0, vector v1, vector v2,
function tri_bbox (line 153) | static int tri_bbox(void * obj, vector * min, vector * max) {
function tri_intersect (line 171) | static void tri_intersect(tri * trn, ray * ry) {
function tri_normal (line 209) | static void tri_normal(tri * trn, vector * pnt, ray * incident, vector ...
function stri_normal (line 222) | static void stri_normal(stri * trn, vector * pnt, ray * incident, vecto...
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/src/triangle.h
type tri (line 65) | typedef struct {
type stri (line 75) | typedef struct {
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/src/types.h
type flt (line 95) | typedef float flt;
type flt (line 97) | typedef double flt;
type byte (line 100) | typedef unsigned char byte;
type word (line 101) | typedef signed int word;
type vector (line 103) | typedef struct {
type color (line 109) | typedef struct {
type bytecolor (line 115) | typedef struct {
type rawimage (line 121) | typedef struct { /* Raw 24 bit image structure, for tga, ppm etc */
type scalarvol (line 130) | typedef struct { /* Scalar Volume Data */
type texture (line 140) | typedef struct {
type object_methods (line 161) | typedef struct {
type object (line 168) | typedef struct {
type intersection (line 175) | typedef struct {
type intersectstruct (line 180) | typedef struct {
type scenedef (line 186) | typedef struct {
type ray (line 206) | typedef struct {
type rpcmsg (line 221) | typedef struct {
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/src/ui.cpp
function set_rt_ui_message (line 66) | void set_rt_ui_message(void (* func) (int, const char *)) {
function set_rt_ui_progress (line 70) | void set_rt_ui_progress(void (* func) (int)) {
function rt_ui_message (line 74) | void rt_ui_message(int level, const char * msg) {
function rt_ui_progress (line 85) | void rt_ui_progress(int percent) {
function rt_ui_checkaction (line 96) | int rt_ui_checkaction(void) {
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/src/util.cpp
function rt_sleep (line 68) | void rt_sleep(int msec) {
function rt_sleep (line 77) | void rt_sleep(int msec) {
function timer (line 86) | timer gettimer(void) {
function flt (line 90) | flt timertime(timer st, timer fn) {
type timezone (line 103) | struct timezone
function timer (line 105) | timer gettimer(void) {
function flt (line 111) | flt timertime(timer st, timer fn) {
function timer (line 126) | timer gettimer(void) {
function flt (line 130) | flt timertime(timer st, timer fn) {
function rt_meminuse (line 138) | int rt_meminuse(void) {
function rt_freemem (line 155) | unsigned int rt_freemem(void * addr) {
function rtbomb (line 165) | void rtbomb(const char * msg) {
function rtmesg (line 173) | void rtmesg(const char * msg) {
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/src/util.h
type ULONGLONG (line 63) | typedef ULONGLONG timer;
type DWORD (line 69) | typedef DWORD timer;
type timeval (line 75) | typedef timeval timer;
type time_t (line 77) | typedef time_t timer;
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/src/vector.cpp
function flt (line 58) | flt VDot(vector *a, vector *b) {
function VCross (line 62) | void VCross(vector * a, vector * b, vector * c) {
function flt (line 68) | flt VLength(vector * a) {
function VNorm (line 72) | void VNorm(vector * a) {
function VAdd (line 83) | void VAdd(vector * a, vector * b, vector * c) {
function VSub (line 89) | void VSub(vector * a, vector * b, vector * c) {
function VAddS (line 95) | void VAddS(flt a, vector * A, vector * B, vector * C) {
function vector (line 101) | vector Raypnt(ray * a, flt t) {
function VScale (line 111) | void VScale(vector * a, flt s) {
function ColorAddS (line 117) | void ColorAddS(color * a, color * b, flt s) {
function ColorAccum (line 123) | void ColorAccum(color * a, color * b) {
function ColorScale (line 129) | void ColorScale(color * a, flt s) {
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_for/tachyon/src/vol.cpp
function scalarvol_bbox (line 67) | int scalarvol_bbox(void * obj, vector * min, vector * max) {
function color (line 128) | color VoxelColor(flt scalar) {
function color (line 158) | color scalar_volume_texture(vector * hit, texture * tex, ray * ry) {
function LoadVol (line 280) | void LoadVol(scalarvol * vol) {
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_reduce/convex_hull/convex_hull.h
function namespace (line 42) | namespace cfg {
function namespace (line 53) | namespace util {
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_reduce/convex_hull/convex_hull_bench.cpp
class FindXExtremum (line 44) | class FindXExtremum : public std::unary_function<const point_t&, void> {
method FindXExtremum (line 50) | FindXExtremum(const point_t& frstPoint, extremumType exType_)
method closerToExtremum (line 66) | bool closerToExtremum(const point_t &p) const {
method FindXExtremum (line 320) | FindXExtremum(const pointVec_t& points_, extremumType exType_)
method FindXExtremum (line 323) | FindXExtremum(const FindXExtremum& fxex, tbb::split)
method join (line 337) | void join(const FindXExtremum &rhs) {
method point_t (line 343) | point_t extremeXPoint() {
method closerToExtremum (line 351) | bool closerToExtremum(const point_t &p) const {
function point_t (line 78) | point_t extremum(const pointVec_t &points) {
class SplitByCP (line 83) | class SplitByCP : public std::unary_function<const point_t&, void> {
method SplitByCP (line 90) | SplitByCP( point_t _p1, point_t _p2, pointVec_t &_reducedSet)
method SplitByCP (line 381) | SplitByCP( point_t _p1, point_t _p2,
method SplitByCP (line 388) | SplitByCP( SplitByCP& sbcp, tbb::split )
method join (line 417) | void join(const SplitByCP& rhs) {
method point_t (line 424) | point_t farthestPoint() const {
function point_t (line 112) | point_t divide(const pointVec_t &P, pointVec_t &P_reduced, const point_t...
function divide_and_conquer (line 127) | void divide_and_conquer(const pointVec_t &P, pointVec_t &H, point_t p1, ...
function quickhull (line 145) | void quickhull(const pointVec_t &points, pointVec_t &hull) {
function main (line 161) | int main(int argc, char* argv[]) {
function appendVector (line 194) | void appendVector(const point_t* src, size_t srcSize, pointVec_t& dest) {
function appendVector (line 198) | void appendVector(const pointVec_t& src, pointVec_t& dest) {
function grow_vector_to_at_least (line 202) | void grow_vector_to_at_least(pointVec_t& vect, size_t size) {
function appendVector (line 211) | void appendVector(mutex_t& insertMutex, const pointVec_t& src, pointVec_...
function appendVector (line 216) | void appendVector(mutex_t& insertMutex, const point_t* src, size_t srcSize,
function grow_vector_to_at_least (line 222) | void grow_vector_to_at_least(mutex_t& mutex, pointVec_t& vect, size_t si...
class FillRNDPointsVector (line 230) | class FillRNDPointsVector {
method FillRNDPointsVector (line 238) | explicit FillRNDPointsVector(pointVec_t& _points)
class FillRNDPointsVector_buf (line 257) | class FillRNDPointsVector_buf {
method FillRNDPointsVector_buf (line 265) | explicit FillRNDPointsVector_buf(pointVec_t& _points)
function initialize (line 292) | void initialize(pointVec_t &points) {
class FindXExtremum (line 312) | class FindXExtremum {
method FindXExtremum (line 50) | FindXExtremum(const point_t& frstPoint, extremumType exType_)
method closerToExtremum (line 66) | bool closerToExtremum(const point_t &p) const {
method FindXExtremum (line 320) | FindXExtremum(const pointVec_t& points_, extremumType exType_)
method FindXExtremum (line 323) | FindXExtremum(const FindXExtremum& fxex, tbb::split)
method join (line 337) | void join(const FindXExtremum &rhs) {
method point_t (line 343) | point_t extremeXPoint() {
method closerToExtremum (line 351) | bool closerToExtremum(const point_t &p) const {
function point_t (line 363) | point_t extremum(const pointVec_t &P) {
class SplitByCP (line 369) | class SplitByCP {
method SplitByCP (line 90) | SplitByCP( point_t _p1, point_t _p2, pointVec_t &_reducedSet)
method SplitByCP (line 381) | SplitByCP( point_t _p1, point_t _p2,
method SplitByCP (line 388) | SplitByCP( SplitByCP& sbcp, tbb::split )
method join (line 417) | void join(const SplitByCP& rhs) {
method point_t (line 424) | point_t farthestPoint() const {
class SplitByCP_buf (line 429) | class SplitByCP_buf {
method SplitByCP_buf (line 441) | SplitByCP_buf( point_t _p1, point_t _p2,
method SplitByCP_buf (line 447) | SplitByCP_buf(SplitByCP_buf& sbcp, tbb::split)
method join (line 477) | void join(const SplitByCP_buf& rhs) {
method point_t (line 484) | point_t farthestPoint() const {
function point_t (line 495) | point_t divide(const pointVec_t &P, pointVec_t &P_reduced,
function divide_and_conquer (line 513) | void divide_and_conquer(const pointVec_t &P, pointVec_t &H,
function quickhull (line 548) | void quickhull(const pointVec_t &points, pointVec_t &hull, bool buffered) {
function main (line 572) | int main(int argc, char* argv[]) {
function serial_initialize (line 628) | void serial_initialize(pointVec_t &points) {
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_reduce/convex_hull/convex_hull_sample.cpp
function appendVector (line 42) | void appendVector(const point_t* src, size_t srcSize, pointVec_t& dest) {
function appendVector (line 46) | void appendVector(const pointVec_t& src, pointVec_t& dest) {
class FillRNDPointsVector_buf (line 49) | class FillRNDPointsVector_buf {
method FillRNDPointsVector_buf (line 54) | explicit FillRNDPointsVector_buf(pointVec_t& _points)
function initialize (line 76) | void initialize(pointVec_t &points) {
class FindXExtremum (line 95) | class FindXExtremum {
method FindXExtremum (line 103) | FindXExtremum(const pointVec_t& points_, extremumType exType_)
method FindXExtremum (line 106) | FindXExtremum(const FindXExtremum& fxex, tbb::split)
method join (line 122) | void join(const FindXExtremum &rhs) {
method point_t (line 128) | point_t extremeXPoint() {
method closerToExtremum (line 136) | bool closerToExtremum(const point_t &p) const {
function point_t (line 148) | point_t extremum(const pointVec_t &P) {
class SplitByCP_buf (line 154) | class SplitByCP_buf {
method SplitByCP_buf (line 163) | SplitByCP_buf( point_t _p1, point_t _p2,
method SplitByCP_buf (line 169) | SplitByCP_buf(SplitByCP_buf& sbcp, tbb::split)
method join (line 195) | void join(const SplitByCP_buf& rhs) {
method point_t (line 202) | point_t farthestPoint() const {
function point_t (line 207) | point_t divide(const pointVec_t &P, pointVec_t &P_reduced,
function divide_and_conquer (line 225) | void divide_and_conquer(const pointVec_t &P, pointVec_t &H,
function quickhull (line 244) | void quickhull(const pointVec_t &points, pointVec_t &hull) {
function main (line 261) | int main(int argc, char* argv[]) {
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_reduce/primes/main.cpp
type RunOptions (line 33) | struct RunOptions{
method RunOptions (line 45) | RunOptions(utility::thread_number_range threads_, NumberType grainSize...
function do_get_default_num_threads (line 50) | int do_get_default_num_threads() {
function get_default_num_threads (line 59) | int get_default_num_threads() {
function RunOptions (line 65) | static RunOptions ParseCommandLine( int argc, const char* argv[] ) {
method RunOptions (line 45) | RunOptions(utility::thread_number_range threads_, NumberType grainSize...
function main (line 86) | int main( int argc, const char* argv[] ) {
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_reduce/primes/primes.cpp
class Multiples (line 48) | class Multiples {
method NumberType (line 49) | inline NumberType strike( NumberType start, NumberType limit, NumberTy...
method Multiples (line 71) | Multiples( NumberType n ) {
method NumberType (line 92) | NumberType find_primes_in_window( NumberType start, NumberType window_...
method Multiples (line 119) | Multiples( const Multiples& f, tbb::split ) :
method is_initialized (line 127) | bool is_initialized() const {
method initialize (line 131) | void initialize( NumberType start ) {
method move (line 144) | void move( Multiples& other ) {
function NumberType (line 162) | NumberType SerialCountPrimes( NumberType n ) {
class SieveRange (line 181) | class SieveRange {
method assert_okay (line 194) | bool assert_okay() const {
method is_divisible (line 204) | bool is_divisible() const {return my_end-my_begin>my_grainsize;}
method empty (line 205) | bool empty() const {return my_end<=my_begin;}
method SieveRange (line 206) | SieveRange( SieveRange& r, tbb::split ) :
method NumberType (line 223) | NumberType begin() const {return my_begin;}
method NumberType (line 224) | NumberType end() const {return my_end;}
method SieveRange (line 225) | SieveRange( NumberType begin, NumberType end, NumberType stride, Numbe...
class Sieve (line 238) | class Sieve {
method Sieve (line 247) | Sieve( NumberType n ) :
method join (line 274) | void join( Sieve& other ) {
method Sieve (line 280) | Sieve( Sieve& other, tbb::split ) :
function NumberType (line 291) | NumberType ParallelCountPrimes( NumberType n , int number_of_threads, Nu...
FILE: isosurface/tbb/tbb-2018_U6/examples/parallel_reduce/primes/primes.h
type std (line 30) | typedef std::size_t NumberType;
FILE: isosurface/tbb/tbb-2018_U6/examples/pipeline/square/gen_input.cpp
function gen_input (line 38) | void gen_input( const char *fname ) {
function generate_if_needed (line 59) | void generate_if_needed( const char *fname ) {
FILE: isosurface/tbb/tbb-2018_U6/examples/pipeline/square/square.cpp
class TextSlice (line 42) | class TextSlice {
method TextSlice (line 49) | static TextSlice* allocate( size_t max_size ) {
method free (line 57) | void free() {
method size (line 65) | size_t size() const {return logical_end-(char*)(this+1);}
method avail (line 67) | size_t avail() const {return physical_end-logical_end;}
method append (line 69) | void append( char* first, char* last ) {
method set_end (line 74) | void set_end( char* p ) {logical_end=p;}
class MyInputFilter (line 81) | class MyInputFilter: public tbb::filter {
class MyTransformFilter (line 126) | class MyTransformFilter: public tbb::filter {
class MyOutputFilter (line 162) | class MyOutputFilter: public tbb::filter {
function run_pipeline (line 188) | int run_pipeline( int nthreads )
function main (line 231) | int main( int argc, char* argv[] ) {
FILE: isosurface/tbb/tbb-2018_U6/examples/task/tree_sum/OptimizedParallelSumTree.cpp
class OptimizedSumTask (line 24) | class OptimizedSumTask: public tbb::task {
method OptimizedSumTask (line 30) | OptimizedSumTask( TreeNode* root_, Value* sum_ ) : root(root_), sum(su...
function Value (line 63) | Value OptimizedParallelSumTree( TreeNode* root ) {
FILE: isosurface/tbb/tbb-2018_U6/examples/task/tree_sum/SerialSumTree.cpp
function Value (line 23) | Value SerialSumTree( TreeNode* root ) {
FILE: isosurface/tbb/tbb-2018_U6/examples/task/tree_sum/SimpleParallelSumTree.cpp
class SimpleSumTask (line 24) | class SimpleSumTask: public tbb::task {
method SimpleSumTask (line 28) | SimpleSumTask( TreeNode* root_, Value* sum_ ) : root(root_), sum(sum_) {}
method task (line 29) | task* execute() /*override*/ {
function Value (line 56) | Value SimpleParallelSumTree( TreeNode* root ) {
FILE: isosurface/tbb/tbb-2018_U6/examples/task/tree_sum/TreeMaker.h
function class (line 35) | class SubTreeCreationTask: public tbb::task {
function TreeNode (line 74) | static TreeNode* do_in_one_thread( long number_of_nodes ) {
function TreeNode (line 88) | static TreeNode* do_in_parallel( long number_of_nodes ) {
FILE: isosurface/tbb/tbb-2018_U6/examples/task/tree_sum/common.h
type Value (line 21) | typedef float Value;
type TreeNode (line 23) | struct TreeNode {
FILE: isosurface/tbb/tbb-2018_U6/examples/task/tree_sum/main.cpp
function Run (line 46) | void Run( const char* which, Value(*SumTree)(TreeNode*), TreeNode* root,...
function main (line 53) | int main( int argc, const char *argv[] ) {
FILE: isosurface/tbb/tbb-2018_U6/examples/task_arena/fractal/fractal.cpp
function color_t (line 41) | color_t fractal::calc_one_pixel( int x0, int y0 ) const {
class fractal_body (line 126) | class fractal_body {
method fractal_body (line 134) | fractal_body( fractal &_f ) : f(_f) {
class task_group_body (line 199) | class task_group_body {
method task_group_body (line 202) | task_group_body(fractal_group &_fg) : fg(_fg) { }
class arena_body (line 207) | class arena_body {
method arena_body (line 211) | arena_body( task_group_body &_tg_body, tbb::task_group &_task_group )
class arena_body_wait (line 217) | class arena_body_wait {
method arena_body_wait (line 220) | arena_body_wait( tbb::task_group &gr ) : group(gr) { }
FILE: isosurface/tbb/tbb-2018_U6/examples/task_arena/fractal/fractal.h
function class (line 31) | class fractal {
function class (line 85) | class fractal_group {
FILE: isosurface/tbb/tbb-2018_U6/examples/task_arena/fractal/fractal_video.h
function class (line 30) | class fractal_video : public video
FILE: isosurface/tbb/tbb-2018_U6/examples/task_arena/fractal/main.cpp
function main (line 39) | int main(int argc, char *argv[])
FILE: isosurface/tbb/tbb-2018_U6/examples/task_group/sudoku/sudoku.cpp
function read_board (line 56) | void read_board(const char *filename) {
function print_board (line 75) | void print_board(board_element *b) {
function print_potential_board (line 86) | void print_potential_board(board_element *b) {
function init_board (line 101) | void init_board(board_element *b) {
function init_board (line 106) | void init_board(board_element *b, unsigned short arr[81]) {
function init_potentials (line 113) | void init_potentials(board_element *b) {
function copy_board (line 118) | void copy_board(board_element *src, board_element *dst) {
function fixed_board (line 123) | bool fixed_board(board_element *b) {
function in_row (line 129) | bool in_row(board_element *b, unsigned row, unsigned col, unsigned short...
function in_col (line 135) | bool in_col(board_element *b, unsigned row, unsigned col, unsigned short...
function in_block (line 141) | bool in_block(board_element *b, unsigned row, unsigned col, unsigned sho...
function calculate_potentials (line 149) | void calculate_potentials(board_element *b) {
function valid_board (line 163) | bool valid_board(board_element *b) {
function examine_potentials (line 175) | bool examine_potentials(board_element *b, bool *progress) {
class PartialSolveBoard (line 199) | class PartialSolveBoard {
method PartialSolveBoard (line 203) | PartialSolveBoard(board_element *_b, unsigned fps) :
function partial_solve (line 211) | void partial_solve(board_element *b, unsigned first_potential_set) {
function solve (line 248) | unsigned solve(int p) {
function do_get_default_num_threads (line 266) | int do_get_default_num_threads() {
function get_default_num_threads (line 275) | int get_default_num_threads() {
function main (line 280) | int main(int argc, char *argv[]) {
FILE: isosurface/tbb/tbb-2018_U6/examples/test_all/fibonacci/Fibonacci.cpp
type Matrix2x2 (line 64) | struct Matrix2x2
method Matrix2x2 (line 68) | Matrix2x2() {}
method Matrix2x2 (line 69) | Matrix2x2(value v00, value v01, value v10, value v11) {
function value (line 84) | value SerialFib(int n)
function value (line 96) | value SerialMatrixFib(int n)
function value (line 107) | value SerialRecursiveFib(int n)
function value (line 117) | value SerialQueueFib(int n)
function value (line 132) | value SerialVectorFib(int n)
class SharedSerialFibBody (line 154) | class SharedSerialFibBody {
method SharedSerialFibBody (line 157) | SharedSerialFibBody( M &m ) : mutex( m ) {}
function value (line 172) | value SharedSerialFib(int n)
type IntHashCompare (line 182) | struct IntHashCompare {
method equal (line 183) | bool equal( const int j, const int k ) const { return j == k; }
method hash (line 184) | unsigned long hash( const int k ) const { return (unsigned long)k; }
class ConcurrentHashSerialFibTask (line 189) | class ConcurrentHashSerialFibTask: public task {
method ConcurrentHashSerialFibTask (line 194) | ConcurrentHashSerialFibTask( NumbersTable &cht, int n ) : Fib(cht), my...
method task (line 196) | task* execute() /*override*/ {
function value (line 214) | value ConcurrentHashSerialFib(int n)
type QueueStream (line 235) | struct QueueStream {
method pop_if_present (line 239) | bool pop_if_present( pair<Matrix2x2, Matrix2x2> &mm ) {
type parallel_forFibBody (line 252) | struct parallel_forFibBody {
method parallel_forFibBody (line 255) | parallel_forFibBody(QueueStream &s) : my_stream(s) { }
class parallel_whileFibBody (line 265) | class parallel_whileFibBody
method parallel_whileFibBody (line 272) | parallel_whileFibBody(parallel_while<parallel_whileFibBody> &w, QueueS...
type QueueInsertTask (line 285) | struct QueueInsertTask: public task {
method QueueInsertTask (line 289) | QueueInsertTask( int n, QueueStream &s ) : my_n(n), my_stream(s) { }
method task (line 291) | task* execute() /*override*/ {
type QueueProcessTask (line 299) | struct QueueProcessTask: public task {
method QueueProcessTask (line 302) | QueueProcessTask( QueueStream &s ) : my_stream(s) { }
method task (line 304) | task* execute() /*override*/ {
function value (line 313) | value ParallelQueueFib(int n)
class InputFilter (line 333) | class InputFilter: public filter {
method InputFilter (line 338) | InputFilter( int n ) : filter(false /*is not serial*/) { N = n; }
class MultiplyFilter (line 348) | class MultiplyFilter: public filter {
method MultiplyFilter (line 350) | MultiplyFilter( ) : filter(false /*is not serial*/) { }
function value (line 364) | value ParallelPipeFib(int n)
type parallel_reduceFibBody (line 389) | struct parallel_reduceFibBody {
method parallel_reduceFibBody (line 393) | parallel_reduceFibBody() : sum( Matrix1110 ), splitted(0) { }
method parallel_reduceFibBody (line 395) | parallel_reduceFibBody( parallel_reduceFibBody& other, split ) : sum( ...
method join (line 397) | void join( parallel_reduceFibBody &s ) {
function value (line 408) | value parallel_reduceFib(int n)
type parallel_scanFibBody (line 418) | struct parallel_scanFibBody {
method parallel_scanFibBody (line 425) | parallel_scanFibBody(value* output_) : product( MatrixIdentity ), outp...
method parallel_scanFibBody (line 427) | parallel_scanFibBody( parallel_scanFibBody &b, split) : product( Matri...
method reverse_join (line 429) | void reverse_join( parallel_scanFibBody &a ) {
method assign (line 437) | void assign( parallel_scanFibBody &b ) {
function value (line 455) | value parallel_scanFib(int n)
type FibTask (line 470) | struct FibTask: public task {
method FibTask (line 476) | FibTask( int n_, value& sum_ ) :
method task (line 480) | task* execute() /*override*/ {
function value (line 501) | value ParallelTaskFib(int n) {
type IntRange (line 511) | struct IntRange {
method IntRange (line 515) | IntRange( int low_, int high_ ) : low(low_), high(high_) {}
function value (line 540) | value Measure(const char *name, MeasureFunc func, int n)
function main (line 552) | int main(int argc, char* argv[])
function Matrix2x2Multiply (line 597) | void Matrix2x2Multiply(const value a[2][2], const value b[2][2], value c...
function Matrix2x2 (line 604) | Matrix2x2 Matrix2x2::operator *(const Matrix2x2 &to) const
method Matrix2x2 (line 68) | Matrix2x2() {}
method Matrix2x2 (line 69) | Matrix2x2(value v00, value v01, value v10, value v11) {
FILE: isosurface/tbb/tbb-2018_U6/include/serial/tbb/parallel_for.h
function namespace (line 41) | namespace interface9 {
FILE: isosurface/tbb/tbb-2018_U6/include/tbb/aggregator.h
function namespace (line 31) | namespace tbb {
FILE: isosurface/tbb/tbb-2018_U6/include/tbb/aligned_space.h
function namespace (line 27) | namespace tbb {
FILE: isosurface/tbb/tbb-2018_U6/include/tbb/atomic.h
function namespace (line 40) | namespace tbb {
type atomic (line 503) | struct atomic
function namespace (line 526) | namespace interface6{
function namespace (line 537) | namespace internal {
FILE: isosurface/tbb/tbb-2018_U6/include/tbb/blocked_range.h
function namespace (line 26) | namespace tbb {
FILE: isosurface/tbb/tbb-2018_U6/include/tbb/blocked_range2d.h
function namespace (line 27) | namespace tbb {
FILE: isosurface/tbb/tbb-2018_U6/include/tbb/blocked_range3d.h
function namespace (line 27) | namespace tbb {
FILE: isosurface/tbb/tbb-2018_U6/include/tbb/blocked_rangeNd.h
function namespace (line 41) | namespace tbb {
FILE: isosurface/tbb/tbb-2018_U6/include/tbb/cache_aligned_allocator.h
function namespace (line 30) | namespace tbb {
type value_type (line 123) | typedef void value_type;
type cache_aligned_allocator (line 125) | typedef cache_aligned_allocator<U> other;
FILE: isosurface/tbb/tbb-2018_U6/include/tbb/combinable.h
function namespace (line 27) | namespace tbb {
FILE: isosurface/tbb/tbb-2018_U6/include/tbb/compat/ppl.h
function namespace (line 33) | namespace Concurrency {
FILE: isosurface/tbb/tbb-2018_U6/include/tbb/concurrent_hash_map.h
function namespace (line 47) | namespace tbb {
type typename (line 415) | typedef typename Iterator::map_type map_type;
type typename (line 426) | typedef typename Iterator::value_type value_type;
type typename (line 427) | typedef typename Iterator::reference reference;
type typename (line 428) | typedef typename Iterator::difference_type difference_type;
type Iterator (line 429) | typedef Iterator iterator;
type T (line 540) | typedef T mapped_type;
type std (line 541) | typedef std::pair<const Key,T> value_type;
type hash_map_base (line 542) | typedef hash_map_base::size_type size_type;
type difference_type (line 543) | typedef ptrdiff_t difference_type;
type value_type (line 544) | typedef value_type *pointer;
type value_type (line 545) | typedef const value_type *const_pointer;
type value_type (line 546) | typedef value_type &reference;
type value_type (line 547) | typedef const value_type &const_reference;
type internal (line 548) | typedef internal::hash_map_iterator<concurrent_hash_map,value_type> iter...
type internal (line 549) | typedef internal::hash_map_iterator<concurrent_hash_map,const
type internal (line 550) | typedef internal::hash_map_range<iterator> range_type;
type internal (line 551) | typedef internal::hash_map_range<const_iterator> const_range_type;
type Allocator (line 552) | typedef Allocator allocator_type;
type node (line 556) | struct node
type typename (line 557) | typedef typename Allocator::template rebind<node>::other node_allocator_...
function node_base (line 561) | struct node : public node_base {
function delete_node (line 589) | void delete_node( node_base *n ) {
function node (line 594) | static node* allocate_node_copy_construct(node_allocator_type& allocator...
function node (line 599) | static node* allocate_node_move_construct(node_allocator_type& allocator...
function node (line 610) | static node* allocate_node_default_construct(node_allocator_type& alloca...
function node (line 614) | static node* do_not_allocate_node(node_allocator_type& , const Key &, co...
function node (line 619) | node *search_bucket( const key_type &key, bucket *b ) const {
function class (line 628) | class bucket_accessor : public bucket::scoped_t {
function is_writer (line 645) | bool is_writer() { return bucket::scoped_t::is_writer; }
function bucket (line 647) | bucket *operator() () { return my_b; }
function rehash_bucket (line 651) | void rehash_bucket( bucket *b_new, const hashcode_t h ) {
function call_clear_on_leave (line 683) | struct call_clear_on_leave {
function class (line 697) | class const_accessor : private node::scoped_t /*which derived from no_co...
function class (line 740) | class accessor: public const_accessor {
function my_allocator (line 803) | my_allocator(a)
type typename (line 835) | typedef typename tbb::internal::allocator_traits<allocator_type>::propag...
function iterator (line 884) | iterator begin() { return iterator( *this, 0, my_embedded_segment, my_em...
function iterator (line 885) | iterator end() { return iterator( *this, 0, 0, 0 ); }
function size_type (line 914) | size_type count( const Key &key ) const {
function find (line 920) | bool find( const_accessor &result, const Key &key ) const {
function find (line 927) | bool find( accessor &result, const Key &key ) {
function insert (line 934) | bool insert( const_accessor &result, const Key &key ) {
function insert (line 941) | bool insert( accessor &result, const Key &key ) {
function insert (line 948) | bool insert( const_accessor &result, const value_type &value ) {
function insert (line 955) | bool insert( accessor &result, const value_type &value ) {
function insert (line 962) | bool insert( const value_type &value ) {
function insert (line 969) | bool insert( const_accessor &result, value_type && value ) {
function insert (line 975) | bool insert( accessor &result, value_type && value ) {
function insert (line 981) | bool insert( value_type && value ) {
function insert (line 1018) | void insert( std::initializer_list<value_type> il ) {
function erase (line 1029) | bool erase( const_accessor& item_accessor ) {
function erase (line 1035) | bool erase( accessor& item_accessor ) {
type accessor_not_used (line 1043) | struct accessor_not_used { void release(){}};
function friend (line 1047) | friend bool is_write_access_needed( accessor const& ) { return...
function friend (line 1048) | friend bool is_write_access_needed( const_accessor const& ) { return...
function friend (line 1049) | friend bool is_write_access_needed( accessor_not_used const& ) { return...
function const_pointer (line 1084) | const_pointer internal_fast_find( const Key& key ) const {
FILE: isosurface/tbb/tbb-2018_U6/include/tbb/concurrent_lru_cache.h
function namespace (line 40) | namespace tbb{
FILE: isosurface/tbb/tbb-2018_U6/include/tbb/concurrent_priority_queue.h
function namespace (line 43) | namespace tbb {
FILE: isosurface/tbb/tbb-2018_U6/include/tbb/concurrent_queue.h
function namespace (line 26) | namespace tbb {
type typename (line 205) | typedef typename A::template
type typename (line 208) | typedef typename concurrent_queue_base_v3::padded_page<T> padded_page;
type typename (line 209) | typedef typename concurrent_queue_base_v3::copy_specifics copy_specifics;
function class (line 212) | class destroyer: internal::no_copy {
function virtual (line 258) | virtual page *allocate_page() __TBB_override {
function virtual (line 266) | virtual void deallocate_page( page *p ) __TBB_override {
type A (line 276) | typedef A allocator_type;
type T (line 279) | typedef T& reference;
type T (line 282) | typedef const T& const_reference;
type std (line 287) | typedef std::ptrdiff_t size_type;
type std (line 290) | typedef std::ptrdiff_t difference_type;
function push (line 342) | void push( const T& source ) {
function push (line 348) | void push( T&& source ) {
function pop (line 362) | void pop( T& destination ) {
function abort (line 368) | void abort() {
function try_push (line 376) | bool try_push( const T& source ) {
function try_push (line 384) | bool try_push( T&& source ) {
function try_pop (line 398) | bool try_pop( T& destination ) {
function set_capacity (line 419) | void set_capacity( size_type new_capacity ) {
type internal (line 429) | typedef internal::concurrent_queue_iterator<concurrent_bounded_queue,T> ...
type internal (line 430) | typedef internal::concurrent_queue_iterator<concurrent_bounded_queue,const
function iterator (line 435) | iterator unsafe_begin() {return iterator(*this);}
function iterator (line 436) | iterator unsafe_end() {return iterator();}
FILE: isosurface/tbb/tbb-2018_U6/include/tbb/concurrent_unordered_map.h
type Key (line 40) | typedef Key key_type;
type Hash_compare (line 41) | typedef Hash_compare hash_compare;
type typename (line 42) | typedef typename Allocator::template rebind<value_type>::other allocator...
function my_hash_compare (line 46) | concurrent_unordered_map_traits(const hash_compare& hc) : my_hash_compar...
type concurrent_unordered_map_traits (line 64) | typedef concurrent_unordered_map_traits<Key, T, hash_compare, Allocator,...
type internal (line 65) | typedef internal::concurrent_unordered_base< traits_type > base_type;
type Key (line 76) | typedef Key key_type;
type typename (line 77) | typedef typename base_type::value_type value_type;
type T (line 78) | typedef T mapped_type;
type Hasher (line 79) | typedef Hasher hasher;
type Key_equality (line 80) | typedef Key_equality key_equal;
type hash_compare (line 81) | typedef hash_compare key_compare;
type typename (line 83) | typedef typename base_type::allocator_type allocator_type;
type typename (line 84) | typedef typename base_type::pointer pointer;
type typename (line 85) | typedef typename base_type::const_pointer const_pointer;
type typename (line 86) | typedef typename base_type::reference reference;
type typename (line 87) | typedef typename base_type::const_reference const_reference;
type typename (line 89) | typedef typename base_type::size_type size_type;
type typename (line 90) | typedef typename base_type::difference_type difference_type;
type typename (line 92) | typedef typename base_type::iterator iterator;
type typename (line 93) | typedef typename base_type::const_iterator const_iterator;
type typename (line 94) | typedef typename base_type::iterator local_iterator;
type typename (line 95) | typedef typename base_type::const_iterator const_local_iterator;
function explicit (line 104) | explicit concurrent_unordered_map(const Allocator& a) : base_type(base_t...
function base_type (line 129) | concurrent_unordered_map(const concurrent_unordered_map& table)
function mapped_type (line 181) | const mapped_type& at(const key_type& key) const
type concurrent_unordered_map_traits (line 202) | typedef concurrent_unordered_map_traits<Key, T, hash_compare, Allocator,...
type internal (line 203) | typedef internal::concurrent_unordered_base<traits_type> base_type;
type Key (line 212) | typedef Key key_type;
type typename (line 213) | typedef typename base_type::value_type value_type;
type T (line 214) | typedef T mapped_type;
type Hasher (line 215) | typedef Hasher hasher;
type Key_equality (line 216) | typedef Key_equality key_equal;
type hash_compare (line 217) | typedef hash_compare key_compare;
type typename (line 219) | typedef typename base_type::allocator_type allocator_type;
type typename (line 220) | typedef typename base_type::pointer pointer;
type typename (line 221) | typedef typename base_type::const_pointer const_pointer;
type typename (line 222) | typedef typename base_type::reference reference;
type typename (line 223) | typedef typename base_type::const_reference const_reference;
type typename (line 225) | typedef typename base_type::size_type size_type;
type typename (line 226) | typedef typename base_type::difference_type difference_type;
type typename (line 228) | typedef typename base_type::iterator iterator;
type typename (line 229) | typedef typename base_type::const_iterator const_iterator;
type typename (line 230) | typedef typename base_type::iterator local_iterator;
type typename (line 231) | typedef typename base_type::const_iterator const_local_iterator;
function explicit (line 240) | explicit concurrent_unordered_multimap(const Allocator& a) : base_type(b...
function base_type (line 265) | concurrent_unordered_multimap(const concurrent_unordered_multimap& table)
FILE: isosurface/tbb/tbb-2018_U6/include/tbb/concurrent_unordered_set.h
type Key (line 40) | typedef Key key_type;
type Hash_compare (line 41) | typedef Hash_compare hash_compare;
type typename (line 42) | typedef typename Allocator::template rebind<value_type>::other allocator...
function my_hash_compare (line 46) | concurrent_unordered_set_traits(const hash_compare& hc) : my_hash_compar...
function Key (line 48) | static const Key& get_key(const value_type& value) {
type concurrent_unordered_set_traits (line 60) | typedef concurrent_unordered_set_traits<Key, hash_compare, Allocator, fa...
type internal (line 61) | typedef internal::concurrent_unordered_base< traits_type > base_type;
type Key (line 70) | typedef Key key_type;
type typename (line 71) | typedef typename base_type::value_type value_type;
type Key (line 72) | typedef Key mapped_type;
type Hasher (line 73) | typedef Hasher hasher;
type Key_equality (line 74) | typedef Key_equality key_equal;
type hash_compare (line 75) | typedef hash_compare key_compare;
type typename (line 77) | typedef typename base_type::allocator_type allocator_type;
type typename (line 78) | typedef typename base_type::pointer pointer;
type typename (line 79) | typedef typename base_type::const_pointer const_pointer;
type typename (line 80) | typedef typename base_type::reference reference;
type typename (line 81) | typedef typename base_type::const_reference const_reference;
type typename (line 83) | typedef typename base_type::size_type size_type;
type typename (line 84) | typedef typename base_type::difference_type difference_type;
type typename (line 86) | typedef typename base_type::iterator iterator;
type typename (line 87) | typedef typename base_type::const_iterator const_iterator;
type typename (line 88) | typedef typename base_type::iterator local_iterator;
type typename (line 89) | typedef typename base_type::const_iterator const_local_iterator;
function explicit (line 97) | explicit concurrent_unordered_set(const Allocator& a) : base_type(base_t...
function base_type (line 120) | concurrent_unordered_set(const concurrent_unordered_set& table)
type concurrent_unordered_set_traits (line 158) | typedef concurrent_unordered_set_traits<Key, hash_compare, Allocator, tr...
type internal (line 159) | typedef internal::concurrent_unordered_base< traits_type > base_type;
type Key (line 168) | typedef Key key_type;
type typename (line 169) | typedef typename base_type::value_type value_type;
type Key (line 170) | typedef Key mapped_type;
type Hasher (line 171) | typedef Hasher hasher;
type Key_equality (line 172) | typedef Key_equality key_equal;
type hash_compare (line 173) | typedef hash_compare key_compare;
type typename (line 175) | typedef typename base_type::allocator_type allocator_type;
type typename (line 176) | typedef typename base_type::pointer pointer;
type typename (line 177) | typedef typename base_type::const_pointer const_pointer;
type typename (line 178) | typedef typename base_type::reference reference;
type typename (line 179) | typedef typename base_type::const_reference const_reference;
type typename (line 181) | typedef typename base_type::size_type size_type;
type typename (line 182) | typedef typename base_type::difference_type difference_type;
type typename (line 184) | typedef typename base_type::iterator iterator;
type typename (line 185) | typedef typename base_type::const_iterator const_iterator;
type typename (line 186) | typedef typename base_type::iterator local_iterator;
type typename (line 187) | typedef typename base_type::const_iterator const_local_iterator;
function explicit (line 196) | explicit concurrent_unordered_multiset(const Allocator& a) : base_type(b...
function base_type (line 220) | concurrent_unordered_multiset(const concurrent_unordered_multiset& table)
FILE: isosurface/tbb/tbb-2018_U6/include/tbb/concurrent_vector.h
function namespace (line 60) | namespace tbb {
type difference_type (line 420) | typedef ptrdiff_t difference_type;
type Value (line 421) | typedef Value value_type;
type Value (line 422) | typedef Value* pointer;
type Value (line 423) | typedef Value& reference;
type std (line 424) | typedef std::random_access_iterator_tag iterator_category;
function my_allocator (line 474) | my_allocator(a) {}
type T (line 551) | typedef T& reference;
type T (line 552) | typedef const T& const_reference;
type I (line 553) | typedef I iterator;
type difference_type (line 554) | typedef ptrdiff_t difference_type;
type typename (line 569) | typedef typename internal::allocator_base<T, A>::allocator_type allocato...
type T (line 571) | typedef T value_type;
type difference_type (line 572) | typedef ptrdiff_t difference_type;
type T (line 573) | typedef T& reference;
type T (line 574) | typedef const T& const_reference;
type T (line 575) | typedef T *pointer;
type T (line 576) | typedef const T *const_pointer;
type internal (line 578) | typedef internal::vector_iterator<concurrent_vector,T> iterator;
type internal (line 579) | typedef internal::vector_iterator<concurrent_vector,const
type std (line 583) | typedef std::reverse_iterator<iterator> reverse_iterator;
type std (line 584) | typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
type std (line 587) | typedef std::reverse_iterator<iterator,T,T&,T*> reverse_iterator;
type std (line 588) | typedef std::reverse_iterator<const_iterator,T,const
type generic_range_type (line 594) | typedef generic_range_type<iterator> range_type;
type generic_range_type (line 595) | typedef generic_range_type<const_iterator> const_range_type;
function explicit (line 688) | explicit concurrent_vector(size_type n)
type typename (line 741) | typedef typename tbb::internal::allocator_traits<A>::propagate_on_contai...
function iterator (line 779) | iterator grow_by( size_type delta ) {
function iterator (line 785) | iterator grow_by( size_type delta, const_reference t ) {
function iterator (line 800) | iterator grow_by( std::initializer_list<T> init_list ) {
function iterator (line 810) | iterator grow_to_at_least( size_type n ) {
function iterator (line 821) | iterator grow_to_at_least( size_type n, const_reference t ) {
function iterator (line 832) | iterator push_back( const_reference item )
function iterator (line 842) | iterator push_back( T&& item )
function reference (line 863) | reference operator[]( size_type index ) {
function const_reference (line 868) | const_reference operator[]( size_type index ) const {
function reference (line 873) | reference at( size_type index ) {
function const_reference (line 878) | const_reference at( size_type index ) const {
function size_type (line 896) | size_type size() const {
function reserve (line 910) | void reserve( size_type n ) {
function resize (line 916) | void resize( size_type n ) {
function resize (line 921) | void resize( size_type n, const_reference t ) {
function iterator (line 936) | iterator begin() {return iterator(*this,0);}
function iterator (line 938) | iterator end() {return iterator(*this,size());}
function reverse_iterator (line 948) | reverse_iterator rbegin() {return reverse_iterator(end());}
function reverse_iterator (line 950) | reverse_iterator rend() {return reverse_iterator(begin());}
function const_reverse_iterator (line 952) | const_reverse_iterator rbegin() const {return const_reverse_iterator(end...
function const_reverse_iterator (line 956) | const_reverse_iterator crbegin() const {return const_reverse_iterator(en...
function reference (line 960) | reference front() {
function const_reference (line 966) | const_reference front() const {
function assign (line 985) | void assign(size_type n, const_reference t) {
function assign (line 998) | void assign(std::initializer_list<T> init_list) {
function swap (line 1004) | void swap(concurrent_vector &vector) {
function clear (line 1014) | void clear() {
function internal_assign_n (line 1041) | void internal_assign_n(size_type n, const_pointer p) {
function T (line 1102) | static const T* as_const_pointer(const void *ptr) { return static_cast<c...
function T (line 1103) | static T* as_pointer(const void *src) { return static_cast<T*>(const_cas...
function copy (line 1109) | void copy(const void *src) { for(; i < n; ++i) new( &array[i] ) T(as_con...
function assign (line 1110) | void assign(const void *src) { for(; i < n; ++i) array[i] = as_const_poi...
function move_assign (line 1112) | void move_assign(const void *src) { for(; i < n; ++i) array[i] ...
function move_construct (line 1113) | void move_construct(const void *src) { for(; i < n; ++i) new( &array[...
function move_construct_if_noexcept (line 1116) | void move_construct_if_noexcept(const void *src) { for(; i < n; ++i) ...
function no_copy (line 1128) | struct push_back_helper : internal::no_copy{
FILE: isosurface/tbb/tbb-2018_U6/include/tbb/critical_section.h
function namespace (line 37) | namespace tbb {
FILE: isosurface/tbb/tbb-2018_U6/include/tbb/enumerable_thread_specific.h
function namespace (line 45) | namespace tbb {
type Value (line 410) | typedef Value& reference;
type std (line 411) | typedef std::random_access_iterator_tag iterator_category;
type typename (line 488) | typedef typename SegmentedContainer::value_type InnerContainer;
type typename (line 489) | typedef typename InnerContainer::iterator inner_iterator;
type difference_type (line 492) | typedef ptrdiff_t difference_type;
type Value (line 493) | typedef Value value_type;
type typename (line 494) | typedef typename SegmentedContainer::size_type size_type;
type Value (line 495) | typedef Value* pointer;
type Value (line 496) | typedef Value& reference;
type std (line 497) | typedef std::input_iterator_tag iterator_category;
function reference (line 559) | reference operator*() const {
function pointer (line 567) | pointer operator->() const { return &operator*();}
function advance_me (line 574) | void advance_me() {
function construct (line 604) | void construct(void*where) {new(where) T();}
function construct_by_default (line 605) | construct_by_default( int ) {}
function construct (line 611) | void construct(void*where) {new(where) T(exemplar);}
function exemplar (line 612) | construct_by_exemplar( const T& t ) : exemplar(t) {}
function construct (line 621) | void construct(void* where) {new(where) T(f());}
function f (line 622) | construct_by_finit( const Finit& f_ ) : f(f_) {}
function construct (line 632) | void construct(void* where) {
function virtual (line 651) | virtual ~callback_base() { }
function Constructor (line 661) | Constructor(x) {}
type typename (line 664) | typedef typename tbb::tbb_allocator<callback_leaf> my_allocator_type;
function __TBB_override (line 666) | const __TBB_override {
function destroy (line 670) | void destroy() __TBB_override {
function construct (line 675) | void construct(void* where) __TBB_override {
function U (line 708) | U* value() { return my_space.begin(); }
function U (line 709) | U* value_committed() { is_built = true; return my_space.begin(); }
type internal (line 770) | typedef internal::padded< internal::ets_element<T> > padded_element;
type T (line 777) | typedef T& reference;
type T (line 778) | typedef const T& const_reference;
type I (line 779) | typedef I iterator;
type difference_type (line 780) | typedef ptrdiff_t difference_type;
type typename (line 787) | typedef typename Allocator::template rebind< padded_element >::other pad...
type tbb (line 788) | typedef tbb::concurrent_vector< padded_element, padded_allocator_type > ...
type typename (line 818) | typedef typename Allocator::template rebind< uintptr_t >::other array_al...
function free_array (line 826) | void free_array( void* _ptr, size_t _size) __TBB_override {
type T (line 835) | typedef T value_type;
type T (line 836) | typedef T& reference;
type T (line 837) | typedef const T& const_reference;
type T (line 838) | typedef T* pointer;
type T (line 839) | typedef const T* const_pointer;
type typename (line 840) | typedef typename internal_collection_type::size_type size_type;
type typename (line 841) | typedef typename internal_collection_type::difference_type difference_type;
type typename (line 844) | typedef typename internal::enumerable_thread_specific_iterator< internal...
type typename (line 845) | typedef typename internal::enumerable_thread_specific_iterator< internal...
type generic_range_type (line 848) | typedef generic_range_type< iterator > range_type;
type generic_range_type (line 849) | typedef generic_range_type< const_iterator > const_range_type;
function explicit (line 867) | explicit enumerable_thread_specific( const T& exemplar ) : my_construct_...
function explicit (line 872) | explicit enumerable_thread_specific( T&& exemplar ) : my_construct_callb...
function reference (line 895) | reference local() {
function reference (line 901) | reference local(bool& exists) {
function iterator (line 913) | iterator begin() { return iterator( my_locals, 0 ); }
function iterator (line 915) | iterator end() { return iterator(my_locals, my_locals.size() ); }
function clear (line 930) | void clear() {
function internal_swap (line 951) | void internal_swap(enumerable_thread_specific& other) {
type typename (line 1071) | typedef typename Container::value_type conval_type;
type typename (line 1077) | typedef typename conval_type::difference_type difference_type;
type typename (line 1078) | typedef typename conval_type::allocator_type allocator_type;
type typename (line 1079) | typedef typename conval_type::value_type value_type;
type typename (line 1080) | typedef typename conval_type::reference reference;
type typename (line 1081) | typedef typename conval_type::const_reference const_reference;
type typename (line 1082) | typedef typename conval_type::pointer pointer;
type typename (line 1083) | typedef typename conval_type::const_pointer const_pointer;
type typename (line 1085) | typedef typename internal::segmented_iterator<Container, value_type> ite...
type typename (line 1086) | typedef typename internal::segmented_iterator<Container, const
function iterator (line 1094) | iterator begin() { return iterator(*my_container) = my_begin; }
function iterator (line 1095) | iterator end() { return iterator(*my_container) = my_end; }
function size_type (line 1099) | size_type size() const {
function namespace (line 1127) | namespace internal {
FILE: isosurface/tbb/tbb-2018_U6/include/tbb/flow_graph.h
function namespace (line 60) | namespace tbb {
function namespace (line 85) | namespace tbb {
function tbb (line 172) | static inline tbb::task *combine_tasks(graph& g, tbb::task * left, tbb::...
type async_msg (line 197) | typedef async_msg<T> async_type;
type T (line 198) | typedef T filtered_type;
function T (line 210) | static const T& from_void_ptr(const void* p) {
function T (line 214) | static T& from_void_ptr(void* p) {
function task (line 218) | static task* try_put_task_wrapper_impl(receiver<T>* const this_recv, con...
type T (line 238) | typedef T async_type;
type typename (line 239) | typedef typename T::async_msg_data_type filtered_type;
function T (line 253) | static const T& from_void_ptr(const void* p) {
function T (line 257) | static T& from_void_ptr(void* p) {
function task (line 262) | static task* try_put_task_wrapper_impl(receiver<T>* const this_recv, con...
function class (line 279) | class untyped_sender {
function class (line 331) | class untyped_receiver {
type receiver (line 474) | typedef receiver<T> successor_type;
function virtual (line 476) | virtual ~sender() {}
type sender (line 518) | typedef sender<T> predecessor_type;
function virtual (line 521) | virtual ~receiver() {}
function try_put (line 524) | bool try_put( const T& t ) {
type receiver (line 581) | typedef receiver<input_type>::predecessor_type predecessor_type;
function namespace (line 708) | namespace interface10 {
FILE: isosurface/tbb/tbb-2018_U6/include/tbb/flow_graph_abstractions.h
function namespace (line 24) | namespace tbb {
FILE: isosurface/tbb/tbb-2018_U6/include/tbb/flow_graph_opencl_node.h
function namespace (line 43) | namespace tbb {
function class (line 257) | class opencl_device_list {
function namespace (line 281) | namespace internal {
function namespace (line 325) | namespace opencl_info {
function class (line 336) | class callback_base : tbb::internal::no_copy {
function cl_event (line 429) | cl_event const * get_event() const { return my_is_event ? &my_event : NU...
function set_event (line 430) | void set_event( cl_event e ) const {
function mutable (line 467) | register_callback([a](const T& t) mutable {
function Factory (line 529) | Factory *factory() const { return my_factory; }
function map_memory (line 613) | void map_memory( opencl_device device, opencl_async_msg<void*, Factory> ...
type access_type (line 623) | enum access_type {
type opencl_buffer (line 636) | typedef opencl_buffer memory_object_type;
type Factory (line 637) | typedef Factory opencl_factory_type;
function T (line 648) | T* data() const { return &access<read_write>()[0]; }
function receive (line 679) | void receive( const opencl_async_msg<opencl_buffer, Factory> &dependency...
type opencl_buffer_impl (line 692) | typedef opencl_buffer_impl<Factory> impl_type;
type typename (line 749) | typedef typename T::memory_object_type mem_obj_t;
type typename (line 772) | typedef typename T::memory_object_type mem_obj_t;
function class (line 783) | class opencl_range {
type opencl_device (line 814) | typedef opencl_device device_type;
function class (line 816) | class kernel : tbb::internal::no_assign {
type kernel (line 856) | typedef kernel kernel_type;
type opencl_range (line 860) | typedef opencl_range range_type;
function init (line 872) | bool init( const opencl_device_list &device_list ) {
function update_arg_list (line 950) | void update_arg_list( cl_event ) {}
function send_data (line 975) | void send_data(opencl_device) {}
function no_assign (line 1026) | struct finalize_fn : tbb::internal::no_assign {
function my_fn (line 1034) | finalize_fn_leaf(Fn fn) : my_fn(fn) {}
function __TBB_override (line 1035) | void operator() () __TBB_override { my_fn(); }
function finalize_callback (line 1038) | static void CL_CALLBACK finalize_callback(cl_event, cl_int event_command...
function opencl_device_list (line 1062) | const opencl_device_list& devices() {
function cl_context (line 1079) | cl_context context() {
function init_once (line 1084) | void init_once() {
function namespace (line 1169) | namespace opencl_info {
function default_opencl_factory (line 1204) | inline default_opencl_factory& default_factory() {
function opencl_program_type (line 1215) | enum class opencl_program_type {
type opencl_node (line 1436) | typedef opencl_node < tuple<Ports...>, JP, opencl_info::default_opencl_f...
type opencl_node (line 1452) | typedef opencl_node < tuple<Ports...>, queueing, opencl_info::default_op...
FILE: isosurface/tbb/tbb-2018_U6/include/tbb/gfx_factory.h
function namespace (line 37) | namespace tbb {
function class (line 227) | class dummy_device_selector {
function share_data (line 264) | share_data(T) {}
function send_arg (line 272) | send_arg(T) {}
function send_data_impl (line 279) | void send_data_impl() {}
function set_kernel_id (line 299) | void set_kernel_id(kernel_id_type) {}
function unshare_data (line 314) | unshare_data(T) {}
function receive_arg (line 322) | receive_arg(T) {}
function receive_data (line 330) | void receive_data() {}
FILE: isosurface/tbb/tbb-2018_U6/include/tbb/global_control.h
function namespace (line 30) | namespace tbb {
FILE: isosurface/tbb/tbb-2018_U6/include/tbb/internal/_aggregator_impl.h
function namespace (line 29) | namespace tbb {
function namespace (line 175) | namespace internal {
FILE: isosurface/tbb/tbb-2018_U6/include/tbb/internal/_concurrent_queue_impl.h
function namespace (line 39) | namespace tbb {
type concurrent_queue_rep_base (line 364) | typedef concurrent_queue_rep_base::page page;
function index (line 409) | static size_t index( ticket k ) {
type typename (line 440) | typedef typename micro_queue<T>::item_constructor_t item_constructor_t;
function virtual (line 442) | virtual page *allocate_page() __TBB_override {
function virtual (line 448) | virtual void deallocate_page( concurrent_queue_rep_base::page *p ) __TBB...
function virtual (line 463) | virtual ~concurrent_queue_base_v3() {
function internal_push (line 473) | void internal_push( const void* src, item_constructor_t construct_item ) {
function internal_size (line 484) | size_t internal_size() const ;
function internal_swap (line 503) | void internal_swap( concurrent_queue_base_v3& src ) {
type typename (line 616) | typedef typename micro_queue<T>::padded_page padded_page;
type T (line 738) | typedef T type;
type T (line 739) | typedef T type;
type T (line 740) | typedef T type;
type T (line 741) | typedef T type;
function explicit (line 756) | explicit concurrent_queue_iterator( const concurrent_queue_base_v3<typen...
function namespace (line 815) | namespace internal {
FILE: isosurface/tbb/tbb-2018_U6/include/tbb/internal/_concurrent_unordered_impl.h
function namespace (line 49) | namespace tbb {
type sokey_t (line 179) | typedef size_t sokey_t;
type typename (line 188) | typedef typename Allocator::template rebind<T>::other allocator_type;
type node (line 189) | struct node
type node (line 190) | typedef node *nodeptr_t;
type typename (line 192) | typedef typename allocator_type::size_type size_type;
type typename (line 193) | typedef typename allocator_type::difference_type difference_type;
type typename (line 194) | typedef typename allocator_type::pointer pointer;
type typename (line 195) | typedef typename allocator_type::const_pointer const_pointer;
type typename (line 196) | typedef typename allocator_type::reference reference;
type typename (line 197) | typedef typename allocator_type::const_reference const_reference;
type typename (line 198) | typedef typename allocator_type::value_type value_type;
type solist_iterator (line 200) | typedef solist_iterator<self_type, const
type solist_iterator (line 201) | typedef solist_iterator<self_type, value_type> iterator;
type flist_iterator (line 202) | typedef flist_iterator<self_type, const
type flist_iterator (line 203) | typedef flist_iterator<self_type, value_type> raw_iterator;
function no_assign (line 206) | struct node : tbb::internal::no_assign
function nodeptr_t (line 224) | nodeptr_t atomic_set_next(nodeptr_t new_node, nodeptr_t current_node)
function nodeptr_t (line 254) | nodeptr_t create_node(sokey_t order_key) {
function create_node_v (line 288) | create_node_v( __TBB_FORWARDING_REF(Args) __TBB_PARAMETER_PACK args){
function clear (line 330) | void clear() {
function iterator (line 350) | iterator begin() {
function iterator (line 359) | iterator end() {
function swap (line 391) | void swap(self_type& other)
function raw_iterator (line 406) | raw_iterator raw_begin() {
function raw_iterator (line 415) | raw_iterator raw_end() {
function sokey_t (line 423) | static sokey_t get_order_key(const raw_const_iterator& it) {
function sokey_t (line 427) | static sokey_t get_safe_order_key(const raw_const_iterator& it) {
function iterator (line 434) | iterator get_iterator(raw_iterator it) {
function const_iterator (line 441) | const_iterator get_iterator(raw_const_iterator it) const {
function raw_iterator (line 447) | raw_iterator get_iterator(raw_const_iterator it) {
function iterator (line 452) | static iterator get_iterator(const_iterator it) {
function iterator (line 458) | iterator first_real_iterator(raw_iterator it)
function const_iterator (line 469) | const_iterator first_real_iterator(raw_const_iterator it) const
function destroy_node (line 479) | void destroy_node(nodeptr_t pnode) {
function nodeptr_t (line 486) | static nodeptr_t try_insert_atomic(nodeptr_t previous, nodeptr_t new_nod...
function raw_iterator (line 510) | raw_iterator insert_dummy(raw_iterator it, sokey_t order_key)
function erase_node (line 568) | void erase_node(raw_iterator previous, raw_const_iterator& where)
function iterator (line 579) | iterator erase_node(raw_iterator previous, const_iterator where)
function move_all (line 589) | void move_all(self_type& source)
function check_range (line 621) | void check_range( raw_iterator first, raw_iterator last )
function check_range (line 635) | void check_range()
type typename (line 658) | typedef typename Traits::value_type value_type;
type typename (line 659) | typedef typename Traits::key_type key_type;
type typename (line 660) | typedef typename Traits::hash_compare hash_compare;
type typename (line 661) | typedef typename Traits::allocator_type allocator_type;
type typename (line 662) | typedef typename hash_compare::hasher hasher;
type typename (line 663) | typedef typename hash_compare::key_equal key_equal;
type typename (line 664) | typedef typename allocator_type::pointer pointer;
type typename (line 665) | typedef typename allocator_type::const_pointer const_pointer;
type typename (line 666) | typedef typename allocator_type::reference reference;
type typename (line 667) | typedef typename allocator_type::const_reference const_reference;
type typename (line 668) | typedef typename allocator_type::size_type size_type;
type typename (line 669) | typedef typename allocator_type::difference_type difference_type;
type split_ordered_list (line 670) | typedef split_ordered_list<value_type, typename
type typename (line 671) | typedef typename solist_t::nodeptr_t nodeptr_t;
type typename (line 673) | typedef typename solist_t::raw_iterator raw_iterator;
type typename (line 674) | typedef typename solist_t::raw_const_iterator raw_const_iterator;
type typename (line 675) | typedef typename solist_t::iterator iterator;
type typename (line 676) | typedef typename solist_t::const_iterator const_iterator;
type iterator (line 677) | typedef iterator local_iterator;
type const_iterator (line 678) | typedef const_iterator const_local_iterator;
type std (line 686) | typedef std::pair<const_iterator, const_iterator> paircc_t;
function call_internal_clear_on_exit (line 691) | struct call_internal_clear_on_exit{
type typename (line 787) | typedef typename tbb::internal::allocator_traits<allocator_type>::propag...
function iterator (line 842) | iterator begin() {
function iterator (line 850) | iterator end() {
function class (line 867) | class const_range_type : tbb::internal::no_assign {
function class (line 937) | class range_type : public const_range_type {
function range_type (line 949) | range_type range() {
function iterator (line 962) | iterator insert(const_iterator, const value_type& value) {
function iterator (line 972) | iterator insert(const_iterator, value_type&& value) {
function insert (line 1005) | void insert(std::initializer_list<value_type> il) {
function iterator (line 1010) | iterator unsafe_erase(const_iterator where) {
function iterator (line 1014) | iterator unsafe_erase(const_iterator first, const_iterator last) {
function size_type (line 1020) | size_type unsafe_erase(const key_type& key) {
function swap (line 1027) | void swap(concurrent_unordered_base& right) {
function clear (line 1046) | void clear() {
function iterator (line 1060) | iterator find(const key_type& key) {
function const_iterator (line 1064) | const_iterator find(const key_type& key) const {
function size_type (line 1068) | size_type count(const key_type& key) const {
function size_type (line 1095) | size_type unsafe_bucket_size(size_type bucket) {
function size_type (line 1106) | size_type unsafe_bucket(const key_type& key) const {
function local_iterator (line 1113) | local_iterator unsafe_begin(size_type bucket) {
function const_local_iterator (line 1122) | const_local_iterator unsafe_begin(size_type bucket) const
function local_iterator (line 1133) | local_iterator unsafe_end(size_type bucket)
function const_local_iterator (line 1150) | const_local_iterator unsafe_end(size_type bucket) const
function const_local_iterator (line 1165) | const_local_iterator unsafe_cbegin(size_type bucket) const {
function const_local_iterator (line 1169) | const_local_iterator unsafe_cend(size_type bucket) const {
function max_load_factor (line 1182) | void max_load_factor(float newmax) {
function rehash (line 1191) | void rehash(size_type buckets) {
function internal_clear (line 1210) | void internal_clear() {
function internal_copy (line 1222) | void internal_copy(const self_type& right) {
function internal_swap_buckets (line 1237) | void internal_swap_buckets(concurrent_unordered_base& right)
function size_type (line 1250) | static size_type internal_distance(const_iterator first, const_iterator ...
function iterator (line 1320) | iterator internal_find(const key_type& key)
function iterator (line 1348) | iterator internal_erase(const_iterator it)
function pairii_t (line 1367) | pairii_t internal_equal_range(const key_type& key)
function init_bucket (line 1394) | void init_bucket(size_type bucket)
function adjust_table_size (line 1412) | void adjust_table_size(size_type total_elements, size_type current_size)
function size_type (line 1424) | size_type get_parent(size_type bucket) const
function size_type (line 1434) | static size_type segment_index_of( size_type index ) {
function size_type (line 1439) | static size_type segment_base( size_type k ) {
function size_type (line 1444) | static size_type segment_size( size_type k ) {
function raw_iterator (line 1448) | raw_iterator get_bucket(size_type bucket) const {
function raw_iterator (line 1455) | raw_iterator prepare_bucket(sokey_t hash_key) {
function set_bucket (line 1464) | void set_bucket(size_type bucket, raw_iterator dummy_head) {
function is_initialized (line 1480) | bool is_initialized(size_type bucket) const {
function sokey_t (line 1494) | sokey_t split_order_key_regular(sokey_t order_key) const {
function sokey_t (line 1499) | sokey_t split_order_key_dummy(sokey_t order_key) const {
FILE: isosurface/tbb/tbb-2018_U6/include/tbb/internal/_flow_graph_async_msg_impl.h
function namespace (line 28) | namespace internal {
type internal (line 127) | struct internal
function virtual (line 137) | virtual ~async_msg() {}
function set (line 139) | void set(const T& t) {
function set (line 143) | void set(T&& t) {
FILE: isosurface/tbb/tbb-2018_U6/include/tbb/internal/_flow_graph_body_impl.h
function namespace (line 30) | namespace internal {
function body (line 168) | function_body_leaf( const B &_body ) : body(_body) { }
function continue_msg (line 169) | continue_msg operator()(const Input &i) __TBB_override {
function B (line 173) | B get_body() { return body; }
function function_body_leaf (line 174) | function_body_leaf* clone() __TBB_override {
function body (line 185) | function_body_leaf( const B &_body ) : body(_body) { }
function Output (line 186) | Output operator()(const continue_msg &i) __TBB_override {
function B (line 189) | B get_body() { return body; }
function function_body_leaf (line 190) | function_body_leaf* clone() __TBB_override {
function __TBB_override (line 212) | void operator()(const Input &input, OutputSet &oset) __TBB_override {
function multifunction_body_leaf (line 216) | multifunction_body_leaf* clone() __TBB_override {
function Output (line 247) | Output operator()(const Input &i) __TBB_override { return body(i); }
function B (line 248) | B get_body() { return body; }
function type_to_key_function_body_leaf (line 249) | type_to_key_function_body_leaf* clone() __TBB_override {
function body (line 259) | type_to_key_function_body_leaf( const B &_body ) : body(_body) { }
function Output (line 260) | const Output& operator()(const Input &i) __TBB_override {
function B (line 263) | B get_body() { return body; }
function type_to_key_function_body_leaf (line 264) | type_to_key_function_body_leaf* clone() __TBB_override {
function task (line 285) | task *execute() __TBB_override {
function task (line 304) | task *execute() __TBB_override {
function task (line 321) | task *execute() __TBB_override {
function Output (line 333) | Output operator()( const Input & ) const { return Output(); }
function task (line 341) | task *execute() __TBB_override {
type continue_msg (line 354) | typedef continue_msg output_type;
function set_owner (line 356) | void set_owner( T *node ) { my_node = node; }
FILE: isosurface/tbb/tbb-2018_U6/include/tbb/internal/_flow_graph_cache_impl.h
function empty (line 39) | bool empty() {
function add (line 44) | void add( T &n ) {
function remove (line 49) | void remove( T &n ) {
function clear (line 58) | void clear() {
type typename (line 69) | typedef typename edge_container<T>::edge_list_type predecessor_list_type;
function internal_add_built_predecessor (line 70) | void internal_add_built_predecessor( T &n ) {
function internal_delete_built_predecessor (line 75) | void internal_delete_built_predecessor( T &n ) {
function copy_predecessors (line 80) | void copy_predecessors( predecessor_list_type &v) {
function predecessor_count (line 85) | size_t predecessor_count() {
function internal_empty (line 101) | inline bool internal_empty( ) {
function size_type (line 106) | inline size_type internal_size( ) {
function internal_push (line 111) | inline void internal_push( T &n ) {
function T (line 116) | inline T &internal_pop() {
type T (line 134) | typedef T output_type;
type untyped_sender (line 136) | typedef untyped_sender predecessor_type;
type untyped_receiver (line 137) | typedef untyped_receiver successor_type;
type sender (line 139) | typedef sender<output_type> predecessor_type;
type receiver (line 140) | typedef receiver<output_type> successor_type;
function my_owner (line 143) | my_owner( NULL ) { }
function set_owner (line 145) | void set_owner( successor_type *owner ) { my_owner = owner; }
function get_item (line 147) | bool get_item( output_type &v ) {
function reset (line 177) | void reset() {
type T (line 204) | typedef T output_type;
type untyped_sender (line 206) | typedef untyped_sender predecessor_type;
type untyped_receiver (line 207) | typedef untyped_receiver successor_type;
type sender (line 209) | typedef sender<T> predecessor_type;
type receiver (line 210) | typedef receiver<T> successor_type;
function reserved_src (line 213) | reserved_src(NULL) { }
function try_reserve (line 215) | bool
function try_release (line 245) | bool
function try_consume (line 252) | bool
function reset (line 259) | void reset( ) {
function clear (line 264) | void clear() {
type untyped_receiver (line 284) | typedef untyped_receiver successor_type;
type untyped_receiver (line 285) | typedef untyped_receiver *pointer_type;
type untyped_sender (line 286) | typedef untyped_sender owner_type;
type receiver (line 288) | typedef receiver<T> successor_type;
type receiver (line 289) | typedef receiver<T> *pointer_type;
type sender (line 290) | typedef sender<T> owner_type;
type std (line 292) | typedef std::list< pointer_type > successors_type;
type typename (line 302) | typedef typename edge_container<successor_type>::edge_list_type successo...
function internal_add_built_successor (line 306) | void internal_add_built_successor( successor_type &r) {
function internal_delete_built_successor (line 311) | void internal_delete_built_successor( successor_type &r) {
function copy_successors (line 316) | void copy_successors( successor_list_type &v) {
function successor_count (line 321) | size_t successor_count() {
function my_owner (line 328) | my_owner(NULL) {}
function set_owner (line 330) | void set_owner( owner_type *owner ) { my_owner = owner; }
function virtual (line 332) | virtual ~successor_cache() {}
function register_successor (line 334) | void register_successor( successor_type &r ) {
function remove_successor (line 339) | void remove_successor( successor_type &r ) {
function empty (line 350) | bool empty() {
function clear (line 355) | void clear() {
type untyped_receiver (line 376) | typedef untyped_receiver successor_type;
type untyped_receiver (line 377) | typedef untyped_receiver *pointer_type;
type receiver (line 379) | typedef receiver<continue_msg> successor_type;
type receiver (line 380) | typedef receiver<continue_msg> *pointer_type;
type std (line 382) | typedef std::list< pointer_type > successors_type;
function internal_add_built_successor (line 397) | void internal_add_built_successor( successor_type &r) {
function internal_delete_built_successor (line 402) | void internal_delete_built_successor( successor_type &r) {
function copy_successors (line 407) | void copy_successors( successor_list_type &v) {
function successor_count (line 412) | size_t successor_count() {
function my_owner (line 419) | my_owner(NULL) {}
function set_owner (line 421) | void set_owner( sender<continue_msg> *owner ) { my_owner = owner; }
function virtual (line 423) | virtual ~successor_cache() {}
function register_successor (line 425) | void register_successor( successor_type &r ) {
function remove_successor (line 433) | void remove_successor( successor_type &r ) {
function empty (line 448) | bool empty() {
function clear (line 453) | void clear() {
type M (line 470) | typedef M mutex_type;
type typename (line 471) | typedef typename successor_cache<T,M>::successors_type successors_type;
function task (line 482) | task * try_put_task( const T &t ) __TBB_override {
type M (line 518) | typedef M mutex_type;
type typename (line 519) | typedef typename successor_cache<T,M>::successors_type successors_type;
function size_type (line 525) | size_type size() {
function task (line 534) | task *try_put_task( const T &t ) __TBB_override {
FILE: isosurface/tbb/tbb-2018_U6/include/tbb/internal/_flow_graph_impl.h
function namespace (line 37) | namespace tbb {
FILE: isosurface/tbb/tbb-2018_U6/include/tbb/internal/_flow_graph_indexer_impl.h
function namespace (line 30) | namespace internal {
type task (line 90) | typedef task* (* forward_function_ptr)(T const &, void* );
type typename (line 94) | typedef typename receiver<T>::built_predecessors_type built_predecessors...
function set_up (line 104) | void set_up(void* p, forward_function_ptr f, graph& g) {
type typename (line 110) | typedef typename receiver<T>::predecessor_list_type predecessor_list_type;
type typename (line 111) | typedef typename receiver<T>::predecessor_type predecessor_type;
function predecessor_count (line 115) | size_t predecessor_count() __TBB_override {
function internal_add_built_predecessor (line 119) | void internal_add_built_predecessor(predecessor_type &p) __TBB_override {
function internal_delete_built_predecessor (line 123) | void internal_delete_built_predecessor(predecessor_type &p) __TBB_overri...
function copy_predecessors (line 127) | void copy_predecessors( predecessor_list_type &v) __TBB_override {
function task (line 136) | task *try_put_task(const T &v) __TBB_override {
function reset_receiver (line 146) | void reset_receiver(reset_flags f) __TBB_override { if(f&rf_clear_edges)...
function reset_receiver (line 148) | void reset_receiver(reset_flags /*f*/) __TBB_override { }
function extract_receiver (line 152) | void extract_receiver() { my_built_predecessors.receiver_extract(*this); }
type OutputType (line 160) | typedef OutputType output_type;
type InputTuple (line 161) | typedef InputTuple input_type;
type OutputType (line 179) | typedef OutputType output_type;
type StructTypes (line 180) | typedef StructTypes tuple_types;
type typename (line 181) | typedef typename sender<output_type>::successor_type successor_type;
type indexer_node_FE (line 182) | typedef indexer_node_FE<InputTuple, output_type,StructTypes> input_ports...
type indexer_node_base (line 196) | typedef indexer_node_base<InputTuple,output_type,StructTypes> class_type;
function class (line 198) | class indexer_node_base_operation : public aggregated_operation<indexer_...
function register_successor (line 277) | bool register_successor(successor_type &r) __TBB_override {
function remove_successor (line 283) | bool remove_successor( successor_type &r) __TBB_override {
function task (line 289) | task * try_put_task(output_type const *v) { // not a virtual method in t...
function internal_add_built_successor (line 299) | void internal_add_built_successor( successor_type &r) __TBB_override {
function internal_delete_built_successor (line 304) | void internal_delete_built_successor( successor_type &r) __TBB_override {
function successor_count (line 309) | size_t successor_count() __TBB_override {
function copy_successors (line 315) | void copy_successors( successor_list_type &v) __TBB_override {
function extract (line 320) | void extract() __TBB_override {
type typename (line 343) | typedef typename internal::tagged_msg<size_t, first_type > type;
type typename (line 350) | typedef typename internal::tagged_msg<size_t, first_type, second_type> t...
type typename (line 358) | typedef typename internal::tagged_msg<size_t, first_type, second_type, t...
type typename (line 367) | typedef typename internal::tagged_msg<size_t, first_type, second_type, t...
type typename (line 378) | typedef typename internal::tagged_msg<size_t, first_type, second_type, t...
type typename (line 390) | typedef typename internal::tagged_msg<size_t, first_type, second_type, t...
type typename (line 403) | typedef typename internal::tagged_msg<size_t, first_type, second_type, t...
type typename (line 419) | typedef typename internal::tagged_msg<size_t, first_type, second_type, t...
type typename (line 436) | typedef typename internal::tagged_msg<size_t, first_type, second_type, t...
type typename (line 453) | typedef typename internal::tagged_msg<size_t, first_type, second_type, t...
type typename (line 463) | typedef typename input_types<N, OutputTuple>::type output_type;
type typename (line 464) | typedef typename wrap_tuple_elements<N,indexer_input_port,OutputTuple>::...
type internal (line 465) | typedef internal::indexer_node_FE<input_ports_type,output_type,OutputTup...
type internal (line 466) | typedef internal::indexer_node_base<input_ports_type, output_type, Outpu...
type OutputTuple (line 473) | typedef OutputTuple tuple_types;
type typename (line 474) | typedef typename indexer_types<OutputTuple>::output_type output_type;
function base_type (line 479) | unfolded_indexer_node(const unfolded_indexer_node &other) : base_type(ot...
FILE: isosurface/tbb/tbb-2018_U6/include/tbb/internal/_flow_graph_item_buffer_impl.h
function namespace (line 41) | namespace internal {
function reserve_item (line 148) | void reserve_item(size_type i) { __TBB_ASSERT(my_item_valid(i) && !my_it...
function release_item (line 149) | void release_item(size_type i) { __TBB_ASSERT(my_item_reserved(i), "item...
function destroy_front (line 151) | void destroy_front() { destroy_item(my_head); ++my_head; }
function destroy_back (line 152) | void destroy_back() { destroy_item(my_tail-1); --my_tail; }
function size_type (line 157) | size_type capacity() { return my_array_size; }
function buffer_full (line 160) | bool buffer_full() { return size() >= capacity(); }
function grow_my_array (line 163) | void grow_my_array( size_t minimum_size ) {
function push_back (line 190) | bool push_back(item_type &v) {
function pop_back (line 199) | bool pop_back(item_type &v) {
function pop_front (line 208) | bool pop_front(item_type &v) {
function clean_up_buffer (line 219) | void clean_up_buffer(bool reset_pointers) {
function reset (line 244) | void reset() { clean_up_buffer(/*reset_pointers*/true); grow_my_array(in...
function reset (line 259) | void reset() {my_reserved = false; item_buffer<T,A>::reset(); }
function consume_front (line 271) | void consume_front() {
function release_front (line 277) | void release_front() {
FILE: isosurface/tbb/tbb-2018_U6/include/tbb/internal/_flow_graph_join_impl.h
function no_assign (line 30) | struct forwarding_base : tbb::internal::no_assign {
type typename (line 45) | typedef typename tbb::internal::strip<KeyType>::type current_key_type;
function forwarding_base (line 46) | forwarding_base(g) { }
function set_join_node_pointer (line 55) | inline void set_join_node_pointer(TupleType &my_input, PortType *port) {
function consume_reservations (line 60) | inline void consume_reservations( TupleType &my_input ) {
function release_my_reservation (line 66) | inline void release_my_reservation( TupleType &my_input ) {
function release_reservations (line 71) | inline void release_reservations( TupleType &my_input) {
function reserve (line 77) | inline bool reserve( InputTuple &my_input, OutputTuple &out) {
function get_my_item (line 87) | inline bool get_my_item( InputTuple &my_input, OutputTuple &out) {
function get_items (line 93) | inline bool get_items(InputTuple &my_input, OutputTuple &out) {
function reset_my_port (line 98) | inline void reset_my_port(InputTuple &my_input) {
function reset_ports (line 104) | inline void reset_ports(InputTuple& my_input) {
function set_key_functors (line 109) | inline void set_key_functors(InputTuple &my_input, KeyFuncTuple &my_key_...
function copy_key_functors (line 116) | inline void copy_key_functors(KeyFuncTuple &my_inputs, KeyFuncTuple &oth...
function reset_inputs (line 124) | inline void reset_inputs(InputTuple &my_input, reset_flags f) {
function extract_inputs (line 131) | inline void extract_inputs(InputTuple &my_input) {
type join_helper (line 139) | struct join_helper
function set_join_node_pointer (line 142) | inline void set_join_node_pointer(TupleType &my_input, PortType *port) {
function consume_reservations (line 147) | inline void consume_reservations( TupleType &my_input ) {
function release_my_reservation (line 152) | inline void release_my_reservation( TupleType &my_input ) {
function release_reservations (line 157) | inline void release_reservations( TupleType &my_input) {
function reserve (line 162) | inline bool reserve( InputTuple &my_input, OutputTuple &out) {
function get_my_item (line 167) | inline bool get_my_item( InputTuple &my_input, OutputTuple &out) {
function get_items (line 172) | inline bool get_items(InputTuple &my_input, OutputTuple &out) {
function reset_my_port (line 177) | inline void reset_my_port(InputTuple &my_input) {
function reset_ports (line 182) | inline void reset_ports(InputTuple& my_input) {
function set_key_functors (line 187) | inline void set_key_functors(InputTuple &my_input, KeyFuncTuple &my_key_...
function copy_key_functors (line 193) | inline void copy_key_functors(KeyFuncTuple &my_inputs, KeyFuncTuple &oth...
function reset_inputs (line 199) | inline void reset_inputs(InputTuple &my_input, reset_flags f) {
function extract_inputs (line 205) | inline void extract_inputs(InputTuple &my_input) {
type typename (line 216) | typedef typename receiver<input_type>::predecessor_type predecessor_type;
type op_stat (line 228) | enum op_stat {WAIT=0, SUCCEEDED, FAILED}
type reserving_port (line
Copy disabled (too large)
Download .json
Condensed preview — 2358 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (37,938K chars).
[
{
"path": ".gitignore",
"chars": 78,
"preview": "*.xml\n*.pyc\n.idea/\n*.o\nmodels/CNN/pretrained_model/\ncheckpoint/\nlog/\npnt_vis/\n"
},
{
"path": "README.md",
"chars": 11216,
"preview": "# DISN: Deep Implicit Surface Network for High-quality Single-view 3D Reconstruction <img src=\"image"
},
{
"path": "cam_est/model_cam.py",
"chars": 14536,
"preview": "import tensorflow as tf\nimport numpy as np\nimport os\nimport tensorflow.contrib.slim as slim\nfrom tensorflow.contrib.slim"
},
{
"path": "cam_est/model_cam_old.py",
"chars": 10792,
"preview": "import tensorflow as tf\nimport numpy as np\nimport os\nimport tensorflow.contrib.slim as slim\nfrom tensorflow.contrib.slim"
},
{
"path": "cam_est/train_sdf_cam.py",
"chars": 30470,
"preview": "import argparse\nimport math\nfrom datetime import datetime\nimport numpy as np\nimport random\nimport tensorflow as tf\nimpor"
},
{
"path": "data/data_sdf_h5_queue.py",
"chars": 16265,
"preview": "import numpy as np\nimport cv2\nimport random\nimport math\nimport os\nimport threading\nimport queue\nimport sys\nimport h5py\ni"
},
{
"path": "data/data_sdf_h5_queue_mask_imgh5_cammat.py",
"chars": 20809,
"preview": "import numpy as np\nimport math\nimport os\nimport threading\nimport queue\nimport sys\nimport h5py\nimport copy\nimport random\n"
},
{
"path": "data/filelists/02691156_test.lst",
"chars": 26139,
"preview": "521eab9363fdc2a07209009cfb89d4bd\n50da48c8e7644508fca1f1143bb6bc17\n43abe330362164e99be82ec29531a70f\n4ad92be763c2ded8fca1f"
},
{
"path": "data/filelists/02691156_train.lst",
"chars": 104212,
"preview": "a98038807a61926abce962d6c4b37336\n25ae9c70ded5640ac2a9d7232db0ed61\n89b6f678789287a3d3128304aa2279ec\n36d2cda57906072c1e08b"
},
{
"path": "data/filelists/02828884_test.lst",
"chars": 11920,
"preview": "131edf0948b60ee6372c8cd7d07d8ddc\nc96afd58ad067a6871b66f80cfaa9877\ndd97603ce7538c15be5bbc844e6db7e\nc6dbedf2028735ccd2b12a"
},
{
"path": "data/filelists/02828884_train.lst",
"chars": 47438,
"preview": "b625936e3db6af6318df1fa50d2b64c\n17b7a0e3c70dbc3d90a6b1b2b5522960\na6947bdac4ebc97517b431cae0dd70ed\n96ab21db41e4da2d848b05"
},
{
"path": "data/filelists/02933112_test.lst",
"chars": 10363,
"preview": "115e4c9a9150fe8e99dd23ec22c4943b\n480a381b676003df4da5feafe6f1c8fc\n6b7123a3631583c612de5317fe5b354f\n63397b0df482d51ad7838"
},
{
"path": "data/filelists/02933112_train.lst",
"chars": 40399,
"preview": "6ab14d89360d0a55ff3ea34d08547895\n97cfa011875acc33532e8683617554c4\nd410c925c5e8ebd65b7f630bf166b499\n4b2bedb7014636afd3891"
},
{
"path": "data/filelists/02958343_test.lst",
"chars": 20595,
"preview": "71a1122469df0bb8cc8ad0deed05da5c\n323c9dc2a8911e146f2f07de403e98d8\n125a4780c2d5095d19454008aa267bf\n1be075751d7cfbf9ee8e9b"
},
{
"path": "data/filelists/02958343_train.lst",
"chars": 80982,
"preview": "a53c3515eff9f3bc2f732d6dce34e9b3\n70b8730b003c345159139efcde1fedcb\n78c3bf6ae1bdf75419b43924bf120208\nb0801e9d8e004e7758dbd"
},
{
"path": "data/filelists/03001627_test.lst",
"chars": 43105,
"preview": "ed751e0c20f48b3226fc87e2982c8a2b\nd72f27e4240bd7d0283b00891f680579\n5fa533f71e7e041efebad4f49b26ec52\n8bb332c5afe67f8d917b9"
},
{
"path": "data/filelists/03001627_train.lst",
"chars": 173225,
"preview": "c763d59c0b5c73394925bc492489de9c\n19f597c6dbff03c114038d588fd1342f\naa300965dead4fa33f09c790ddd20f8c\n86e15a077ee6f43891097"
},
{
"path": "data/filelists/03211117_test.lst",
"chars": 7193,
"preview": "b9cc669597085c028766390809048ebc\n534d3c5dca2d44641af9a5a7008cc3ec\nd32688a505930c96e2c8e43c97ec5a85\nd10dcdae2d7645ebcfe78"
},
{
"path": "data/filelists/03211117_train.lst",
"chars": 28749,
"preview": "ea7dc70f0ef4b04bcbe0b8af4aec5d6c\ne2cc0d50d6953e760a25ec0f32e89e3\n301148e373839ecc37ab55b97a5e9f9\n3bb7a8505b99216a53227dc"
},
{
"path": "data/filelists/03636649_test.lst",
"chars": 15250,
"preview": "845542d0f578a9db1ec48bc3c478566d\n7fa0f8d0da975ea0f323a65d99f15033\n9dad7ce60aa168d72cd2160e449d45ae\n7bc1b202ebf000625949e"
},
{
"path": "data/filelists/03636649_train.lst",
"chars": 60892,
"preview": "d526a340408764d8ec0f2eef0b7e551e\ne7b9477eaf6e2b64fe755e3418b63110\n1e9b2d5d65a8b7c29fe8663d47f73813\nda64c56e36024add5b903"
},
{
"path": "data/filelists/03691459_test.lst",
"chars": 10520,
"preview": "8c18ef2a9170a8144884161c20b458b0\n7ba65164444ed5be3df08ed7d70af1ee\n710014b815369e1c2bcea2cd4cc7b042\n3e21834bd08c078963de4"
},
{
"path": "data/filelists/03691459_train.lst",
"chars": 41866,
"preview": "b10f7a407b4a3722296ecd3bbf65f1a3\n48a2091454502770408d050f12518231\na88fabb4286706afbb9b205a4c97698a\nc3fbe6332f413bd2bddb0"
},
{
"path": "data/filelists/04090263_test.lst",
"chars": 15627,
"preview": "c518e4b872a0841e0652a919e7ad7e6\n9af23e8759e070ef35d753857de68a9a\nd2b09323f863db7a71ed4e55cca1417d\n74a38b74bb57a2af6a405a"
},
{
"path": "data/filelists/04090263_train.lst",
"chars": 62329,
"preview": "5909ebf625e0d04dfd6d10d22bbd142\n4c41c172046a4a5e9a6e43b878d5b335\ndecdf532717c45767a9bdfb16682d944\n528bc52f211ff34ed2a72b"
},
{
"path": "data/filelists/04256520_test.lst",
"chars": 20734,
"preview": "3b8f2b955ee9a904b3c42e318f3affc\n3a98a93f381ff5fb4b3c42e318f3affc\n9d5461070e008c453bdc60e3df3aace8\na7f45bd27efe50af4dbf8d"
},
{
"path": "data/filelists/04256520_train.lst",
"chars": 83077,
"preview": "fbe08af112773184e6fe3612af521500\n8180afee86f2075519fb4103277a6b93\nad023095f1868d3019fb4103277a6b93\ndfda3c467eb6066fe6fe3"
},
{
"path": "data/filelists/04379243_test.lst",
"chars": 55182,
"preview": "8343d98e3710f5bee1b32bbe69d5bc15\nb7cead95e18b570d2c97486f63c12d76\n86b48365b2bd587e61830bc1b4d6c5ea\n237e15796ba16d86e1b32"
},
{
"path": "data/filelists/04379243_train.lst",
"chars": 220388,
"preview": "7ec59be3e55081f788292be2b58381eb\n69d4ba3043aee963dc2bc8a782be94b8\n3398658268644c2539eff6a5994f7472\nf18c9ab4ebdcdb8ac8595"
},
{
"path": "data/filelists/04401088_test.lst",
"chars": 7102,
"preview": "45301b15dce2724e483a0f6665d9ffe0\nc4b66fac952d4ef7d9039fb3a1715e96\neaf85cce060622c88de42b14089e0e7c\nacda976ba347a3e58ba35"
},
{
"path": "data/filelists/04401088_train.lst",
"chars": 11381,
"preview": "611afaaa1671ac8cc56f78d9daf213b\n9f3ad4e5f16f40b3d0f9f958bc79097c\n21a7e90867b64433316979ee2b237f2b\n74e5759913a2ac208b0d3d"
},
{
"path": "data/filelists/04530566_test.lst",
"chars": 12393,
"preview": "b497c390de93b4dcba21fe79619ae253\nc991fc4636615e64ed01ae0c90548352\n5a0ca7a6df97542e69c3c818538357ad\n2fb7d918e4a738fd97556"
},
{
"path": "data/filelists/04530566_train.lst",
"chars": 48443,
"preview": "98a61aa6d78f6f49de91bdb310db8e7e\n82be57a43d5d1e14fa286e2f06a75d07\n54daf1472c51bb47a97a590141e0046\nf4923b4ce88bdda3a9142e"
},
{
"path": "demo/demo.py",
"chars": 18114,
"preview": "import argparse\nfrom datetime import datetime\nimport numpy as np\nimport random\nimport tensorflow as tf\nimport socket\nimp"
},
{
"path": "demo/result.obj",
"chars": 5699407,
"preview": "# Generated by the TriMeshRef class\n# Number of vertices: 82584\n# Number of faces: 165196\nv 0.46875 -0.179688 -0.382966\n"
},
{
"path": "isosurface/LIB_PATH",
"chars": 230,
"preview": "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:./isosurface/:/home/xharlie/dev/isosurface/tbb/tbb2018_20180822oss/lib/intel64/g"
},
{
"path": "isosurface/tbb/pstl2018_20180822oss/CHANGES",
"chars": 5652,
"preview": "------------------------------------------------------------------------\nThe list of most significant changes made over "
},
{
"path": "isosurface/tbb/pstl2018_20180822oss/CMakeLists.txt",
"chars": 2649,
"preview": "# Copyright (c) 2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not"
},
{
"path": "isosurface/tbb/pstl2018_20180822oss/ParallelSTLConfig.cmake.in",
"chars": 832,
"preview": "# Copyright (c) 2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not"
},
{
"path": "isosurface/tbb/pstl2018_20180822oss/bin/pstlvars.csh",
"chars": 2193,
"preview": "#!/bin/csh\n#\n# Copyright (c) 2017-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"Licens"
},
{
"path": "isosurface/tbb/pstl2018_20180822oss/bin/pstlvars.sh",
"chars": 1975,
"preview": "#!/bin/sh\n#\n# Copyright (c) 2017-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License"
},
{
"path": "isosurface/tbb/pstl2018_20180822oss/build/CMakeCache.txt",
"chars": 12583,
"preview": "# This is the CMakeCache file.\n# For build in directory: /media/ssd/projects/Deformation/Packages/isosurface/tbb/pstl201"
},
{
"path": "isosurface/tbb/pstl2018_20180822oss/build/CMakeFiles/3.12.0/CMakeCXXCompiler.cmake",
"chars": 4886,
"preview": "set(CMAKE_CXX_COMPILER \"/usr/bin/c++\")\nset(CMAKE_CXX_COMPILER_ARG1 \"\")\nset(CMAKE_CXX_COMPILER_ID \"GNU\")\nset(CMAKE_CXX_CO"
},
{
"path": "isosurface/tbb/pstl2018_20180822oss/build/CMakeFiles/3.12.0/CMakeSystem.cmake",
"chars": 398,
"preview": "set(CMAKE_HOST_SYSTEM \"Linux-4.4.0-87-generic\")\nset(CMAKE_HOST_SYSTEM_NAME \"Linux\")\nset(CMAKE_HOST_SYSTEM_VERSION \"4.4.0"
},
{
"path": "isosurface/tbb/pstl2018_20180822oss/build/CMakeFiles/3.12.0/CompilerIdCXX/CMakeCXXCompilerId.cpp",
"chars": 18524,
"preview": "/* This source file must have a .cpp extension so that all C++ compilers\n recognize the extension without flags. Borl"
},
{
"path": "isosurface/tbb/pstl2018_20180822oss/build/CMakeFiles/CMakeOutput.log",
"chars": 30640,
"preview": "The system is: Linux - 4.4.0-87-generic - x86_64\nCompiling the CXX compiler identification source file \"CMakeCXXCompiler"
},
{
"path": "isosurface/tbb/pstl2018_20180822oss/build/CMakeFiles/cmake.check_cache",
"chars": 85,
"preview": "# This file is generated by cmake for dependency checking of the CMakeCache.txt file\n"
},
{
"path": "isosurface/tbb/pstl2018_20180822oss/build/CMakeFiles/feature_tests.cxx",
"chars": 10011,
"preview": "\n const char features[] = {\"\\n\"\n\"CXX_FEATURE:\"\n#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 500 && __cplusplus >= 201402L\n\""
},
{
"path": "isosurface/tbb/pstl2018_20180822oss/doc/Release_Notes.txt",
"chars": 3670,
"preview": "------------------------------------------------------------------------\n Parallel STL \n------"
},
{
"path": "isosurface/tbb/pstl2018_20180822oss/examples/convex_hull/Makefile",
"chars": 1436,
"preview": "# Copyright (c) 2017-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you ma"
},
{
"path": "isosurface/tbb/pstl2018_20180822oss/examples/convex_hull/convex_hull.cpp",
"chars": 6863,
"preview": "/*\n Copyright (c) 2017-2018 Intel Corporation\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n "
},
{
"path": "isosurface/tbb/pstl2018_20180822oss/examples/convex_hull/readme.html",
"chars": 11466,
"preview": "<!DOCTYPE html>\n<html xmlns:mso=\"urn:schemas-microsoft-com:office:office\" xmlns:msdt=\"uuid:C2F41010-65B3-11d1-A29F-00AA0"
},
{
"path": "isosurface/tbb/pstl2018_20180822oss/examples/convex_hull/utils.h",
"chars": 2267,
"preview": "/*\n Copyright (c) 2017-2018 Intel Corporation\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n "
},
{
"path": "isosurface/tbb/pstl2018_20180822oss/examples/dot_product/Makefile",
"chars": 1436,
"preview": "# Copyright (c) 2017-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you ma"
},
{
"path": "isosurface/tbb/pstl2018_20180822oss/examples/dot_product/dot_product.cpp",
"chars": 1723,
"preview": "/*\n Copyright (c) 2017-2018 Intel Corporation\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n "
},
{
"path": "isosurface/tbb/pstl2018_20180822oss/examples/dot_product/readme.html",
"chars": 10862,
"preview": "<!DOCTYPE html>\n<html xmlns:mso=\"urn:schemas-microsoft-com:office:office\" xmlns:msdt=\"uuid:C2F41010-65B3-11d1-A29F-00AA0"
},
{
"path": "isosurface/tbb/pstl2018_20180822oss/examples/gamma_correction/Makefile",
"chars": 1441,
"preview": "# Copyright (c) 2017-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you ma"
},
{
"path": "isosurface/tbb/pstl2018_20180822oss/examples/gamma_correction/gamma_correction.cpp",
"chars": 2728,
"preview": "/*\n Copyright (c) 2017-2018 Intel Corporation\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n "
},
{
"path": "isosurface/tbb/pstl2018_20180822oss/examples/gamma_correction/readme.html",
"chars": 11720,
"preview": "<!DOCTYPE html>\n<html xmlns:mso=\"urn:schemas-microsoft-com:office:office\" xmlns:msdt=\"uuid:C2F41010-65B3-11d1-A29F-00AA0"
},
{
"path": "isosurface/tbb/pstl2018_20180822oss/examples/gamma_correction/utils.cpp",
"chars": 2792,
"preview": "/*\n Copyright (c) 2017-2018 Intel Corporation\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n "
},
{
"path": "isosurface/tbb/pstl2018_20180822oss/examples/gamma_correction/utils.h",
"chars": 2944,
"preview": "/*\n Copyright (c) 2017-2018 Intel Corporation\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n "
},
{
"path": "isosurface/tbb/pstl2018_20180822oss/include/pstl/algorithm",
"chars": 1030,
"preview": "/*\n Copyright (c) 2017-2018 Intel Corporation\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n "
},
{
"path": "isosurface/tbb/pstl2018_20180822oss/include/pstl/execution",
"chars": 1439,
"preview": "/*\n Copyright (c) 2017-2018 Intel Corporation\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n "
},
{
"path": "isosurface/tbb/pstl2018_20180822oss/include/pstl/internal/algorithm_impl.h",
"chars": 114952,
"preview": "/*\n Copyright (c) 2017-2018 Intel Corporation\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n "
},
{
"path": "isosurface/tbb/pstl2018_20180822oss/include/pstl/internal/bricks_impl.h",
"chars": 1945,
"preview": "/*\r\n Copyright (c) 2017-2018 Intel Corporation\r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");"
},
{
"path": "isosurface/tbb/pstl2018_20180822oss/include/pstl/internal/execution_defs.h",
"chars": 3397,
"preview": "/*\n Copyright (c) 2017-2018 Intel Corporation\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n "
},
{
"path": "isosurface/tbb/pstl2018_20180822oss/include/pstl/internal/execution_impl.h",
"chars": 4574,
"preview": "/*\n Copyright (c) 2017-2018 Intel Corporation\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n "
},
{
"path": "isosurface/tbb/pstl2018_20180822oss/include/pstl/internal/glue_algorithm_defs.h",
"chars": 29439,
"preview": "/*\n Copyright (c) 2017-2018 Intel Corporation\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n "
},
{
"path": "isosurface/tbb/pstl2018_20180822oss/include/pstl/internal/glue_algorithm_impl.h",
"chars": 53008,
"preview": "/*\n Copyright (c) 2017-2018 Intel Corporation\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n "
},
{
"path": "isosurface/tbb/pstl2018_20180822oss/include/pstl/internal/glue_execution_defs.h",
"chars": 1864,
"preview": "/*\n Copyright (c) 2017-2018 Intel Corporation\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n "
},
{
"path": "isosurface/tbb/pstl2018_20180822oss/include/pstl/internal/glue_memory_defs.h",
"chars": 3838,
"preview": "/*\n Copyright (c) 2017-2018 Intel Corporation\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n "
},
{
"path": "isosurface/tbb/pstl2018_20180822oss/include/pstl/internal/glue_memory_impl.h",
"chars": 12874,
"preview": "/*\n Copyright (c) 2017-2018 Intel Corporation\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n "
},
{
"path": "isosurface/tbb/pstl2018_20180822oss/include/pstl/internal/glue_numeric_defs.h",
"chars": 6018,
"preview": "/*\n Copyright (c) 2017-2018 Intel Corporation\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n "
},
{
"path": "isosurface/tbb/pstl2018_20180822oss/include/pstl/internal/glue_numeric_impl.h",
"chars": 9728,
"preview": "/*\n Copyright (c) 2017-2018 Intel Corporation\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n "
},
{
"path": "isosurface/tbb/pstl2018_20180822oss/include/pstl/internal/memory_impl.h",
"chars": 1932,
"preview": "/*\n Copyright (c) 2017-2018 Intel Corporation\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n "
},
{
"path": "isosurface/tbb/pstl2018_20180822oss/include/pstl/internal/numeric_impl.h",
"chars": 13979,
"preview": "/*\n Copyright (c) 2017-2018 Intel Corporation\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n "
},
{
"path": "isosurface/tbb/pstl2018_20180822oss/include/pstl/internal/parallel_backend.h",
"chars": 870,
"preview": "/*\n Copyright (c) 2017-2018 Intel Corporation\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n "
},
{
"path": "isosurface/tbb/pstl2018_20180822oss/include/pstl/internal/parallel_backend_tbb.h",
"chars": 20912,
"preview": "/*\n Copyright (c) 2017-2018 Intel Corporation\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n "
},
{
"path": "isosurface/tbb/pstl2018_20180822oss/include/pstl/internal/parallel_backend_utils.h",
"chars": 4940,
"preview": "/*\n Copyright (c) 2017-2018 Intel Corporation\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n "
},
{
"path": "isosurface/tbb/pstl2018_20180822oss/include/pstl/internal/parallel_impl.h",
"chars": 3164,
"preview": "/*\n Copyright (c) 2017-2018 Intel Corporation\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n "
},
{
"path": "isosurface/tbb/pstl2018_20180822oss/include/pstl/internal/pstl_config.h",
"chars": 5131,
"preview": "/*\n Copyright (c) 2017-2018 Intel Corporation\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n "
},
{
"path": "isosurface/tbb/pstl2018_20180822oss/include/pstl/internal/unseq_backend_simd.h",
"chars": 16540,
"preview": "/*\n Copyright (c) 2017-2018 Intel Corporation\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n "
},
{
"path": "isosurface/tbb/pstl2018_20180822oss/include/pstl/internal/utils.h",
"chars": 4379,
"preview": "/*\n Copyright (c) 2017-2018 Intel Corporation\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n "
},
{
"path": "isosurface/tbb/pstl2018_20180822oss/include/pstl/iterators.h",
"chars": 7671,
"preview": "/*\n Copyright (c) 2017-2018 Intel Corporation\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n "
},
{
"path": "isosurface/tbb/pstl2018_20180822oss/include/pstl/memory",
"chars": 1012,
"preview": "/*\n Copyright (c) 2017-2018 Intel Corporation\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n "
},
{
"path": "isosurface/tbb/pstl2018_20180822oss/include/pstl/numeric",
"chars": 1018,
"preview": "/*\n Copyright (c) 2017-2018 Intel Corporation\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n "
},
{
"path": "isosurface/tbb/tbb-2018_U6/.gitattributes",
"chars": 790,
"preview": "# Set the default behavior, in case people don't have core.autocrlf set.\n* text=auto\n\n# Explicitly declare text files yo"
},
{
"path": "isosurface/tbb/tbb-2018_U6/.gitignore",
"chars": 1036,
"preview": "# Ignore the debug and release directories created with Makefile builds #\n##############################################"
},
{
"path": "isosurface/tbb/tbb-2018_U6/CHANGES",
"chars": 101273,
"preview": "------------------------------------------------------------------------\nThe list of most significant changes made over "
},
{
"path": "isosurface/tbb/tbb-2018_U6/LICENSE",
"chars": 11357,
"preview": " Apache License\n Version 2.0, January 2004\n "
},
{
"path": "isosurface/tbb/tbb-2018_U6/Makefile",
"chars": 3132,
"preview": "# Copyright (c) 2005-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you ma"
},
{
"path": "isosurface/tbb/tbb-2018_U6/README",
"chars": 353,
"preview": "Intel(R) Threading Building Blocks - README\n\nSee index.html for directions and documentation.\n\nIf source is present (./M"
},
{
"path": "isosurface/tbb/tbb-2018_U6/README.md",
"chars": 1750,
"preview": "# Threading Building Blocks 2018 Update 6\n[](ht"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/AIX.gcc.inc",
"chars": 2163,
"preview": "# Copyright (c) 2005-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you ma"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/AIX.inc",
"chars": 1691,
"preview": "# Copyright (c) 2005-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you ma"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/FreeBSD.clang.inc",
"chars": 3000,
"preview": "# Copyright (c) 2005-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you ma"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/FreeBSD.gcc.inc",
"chars": 2744,
"preview": "# Copyright (c) 2005-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you ma"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/FreeBSD.inc",
"chars": 2010,
"preview": "# Copyright (c) 2005-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you ma"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/Makefile.rml",
"chars": 6761,
"preview": "# Copyright (c) 2005-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you ma"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/Makefile.tbb",
"chars": 3622,
"preview": "# Copyright (c) 2005-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you ma"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/Makefile.tbbmalloc",
"chars": 10928,
"preview": "# Copyright (c) 2005-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you ma"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/Makefile.tbbproxy",
"chars": 3911,
"preview": "# Copyright (c) 2005-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you ma"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/Makefile.test",
"chars": 13452,
"preview": "# Copyright (c) 2005-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you ma"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/SunOS.gcc.inc",
"chars": 2683,
"preview": "# Copyright (c) 2005-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you ma"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/SunOS.inc",
"chars": 2246,
"preview": "# Copyright (c) 2005-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you ma"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/SunOS.suncc.inc",
"chars": 3174,
"preview": "# Copyright (c) 2005-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you ma"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/android.clang.inc",
"chars": 4005,
"preview": "# Copyright (c) 2005-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you ma"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/android.gcc.inc",
"chars": 3516,
"preview": "# Copyright (c) 2005-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you ma"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/android.icc.inc",
"chars": 3537,
"preview": "# Copyright (c) 2005-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you ma"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/android.inc",
"chars": 2060,
"preview": "# Copyright (c) 2005-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you ma"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/android.linux.inc",
"chars": 2161,
"preview": "# Copyright (c) 2005-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you ma"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/android.linux.launcher.sh",
"chars": 6488,
"preview": "#!/bin/sh\n#\n# Copyright (c) 2005-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/android.macos.inc",
"chars": 2260,
"preview": "# Copyright (c) 2005-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you ma"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/android.windows.inc",
"chars": 2410,
"preview": "# Copyright (c) 2005-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you ma"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/big_iron.inc",
"chars": 2608,
"preview": "# Copyright (c) 2005-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you ma"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/build.py",
"chars": 8400,
"preview": "#!/usr/bin/env python\n#\n# Copyright (c) 2017-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 ("
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/codecov.txt",
"chars": 94,
"preview": "src/tbb\nsrc/tbbmalloc\ninclude/tbb\nsrc/rml/server\nsrc/rml/client\nsrc/rml/include\nsource/malloc\n"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/common.inc",
"chars": 5458,
"preview": "# Copyright (c) 2005-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you ma"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/common_rules.inc",
"chars": 5711,
"preview": "# Copyright (c) 2005-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you ma"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/detect.js",
"chars": 7497,
"preview": "// Copyright (c) 2005-2018 Intel Corporation\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// yo"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/generate_tbbvars.bat",
"chars": 2614,
"preview": "@echo off\r\nREM\r\nREM Copyright (c) 2005-2018 Intel Corporation\r\nREM\r\nREM Licensed under the Apache License, Version 2.0 ("
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/generate_tbbvars.sh",
"chars": 2092,
"preview": "#!/bin/bash\n#\n# Copyright (c) 2005-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"Licen"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/index.html",
"chars": 15806,
"preview": "<HTML>\n<BODY>\n\n<H2>Overview</H2>\nThis directory contains the internal Makefile infrastructure for Intel® Threading B"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/ios.clang.inc",
"chars": 770,
"preview": "# Copyright (c) 2005-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you ma"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/ios.macos.inc",
"chars": 1322,
"preview": "# Copyright (c) 2005-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you ma"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/linux.clang.inc",
"chars": 3186,
"preview": "# Copyright (c) 2005-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you ma"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/linux.gcc.inc",
"chars": 4743,
"preview": "# Copyright (c) 2005-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you ma"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/linux.icc.inc",
"chars": 3687,
"preview": "# Copyright (c) 2005-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you ma"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/linux.inc",
"chars": 4258,
"preview": "# Copyright (c) 2005-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you ma"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/linux.pathcc.inc",
"chars": 2672,
"preview": "# Copyright (c) 2005-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you ma"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/linux.xl.inc",
"chars": 3329,
"preview": "# Copyright (c) 2005-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you ma"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/macos.clang.inc",
"chars": 3539,
"preview": "# Copyright (c) 2005-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you ma"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/macos.gcc.inc",
"chars": 3760,
"preview": "# Copyright (c) 2005-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you ma"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/macos.icc.inc",
"chars": 3131,
"preview": "# Copyright (c) 2005-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you ma"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/macos.inc",
"chars": 2958,
"preview": "# Copyright (c) 2005-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you ma"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/mic.icc.inc",
"chars": 2280,
"preview": "# Copyright (c) 2005-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you ma"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/mic.linux.inc",
"chars": 1316,
"preview": "# Copyright (c) 2005-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you ma"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/mic.linux.launcher.sh",
"chars": 6301,
"preview": "#!/bin/bash\n#\n# Copyright (c) 2005-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"Licen"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/mic.offload.inc",
"chars": 4786,
"preview": "# Copyright (c) 2005-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you ma"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/suncc.map.pause",
"chars": 19,
"preview": "hwcap_1 = OVERRIDE;"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/test_launcher.bat",
"chars": 2270,
"preview": "@echo off\r\nREM\r\nREM Copyright (c) 2005-2018 Intel Corporation\r\nREM\r\nREM Licensed under the Apache License, Version 2.0 ("
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/test_launcher.sh",
"chars": 3705,
"preview": "#!/bin/sh\n#\n# Copyright (c) 2005-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/version_info_aix.sh",
"chars": 1564,
"preview": "#!/bin/sh\n#\n# Copyright (c) 2005-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/version_info_android.sh",
"chars": 1497,
"preview": "#!/bin/sh\n#\n# Copyright (c) 2005-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/version_info_linux.sh",
"chars": 1564,
"preview": "#!/bin/sh\n#\n# Copyright (c) 2005-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/version_info_macos.sh",
"chars": 1328,
"preview": "#!/bin/sh\n#\n# Copyright (c) 2005-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/version_info_sunos.sh",
"chars": 1169,
"preview": "#!/bin/sh\n#\n# Copyright (c) 2005-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/version_info_windows.js",
"chars": 3291,
"preview": "// Copyright (c) 2005-2018 Intel Corporation\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// yo"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/vs2013/index.html",
"chars": 875,
"preview": "<HTML>\n<BODY>\n\n<H2>Overview</H2>\nThis directory contains the Visual Studio* 2013 solution to build Intel® Threading "
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/vs2013/makefile.sln",
"chars": 5190,
"preview": "Microsoft Visual Studio Solution File, Format Version 12.00\r\n# Visual Studio 2013\r\nVisualStudioVersion = 12.0.40629.0\r\nM"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/vs2013/tbb.vcxproj",
"chars": 54867,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project DefaultTargets=\"Build\" ToolsVersion=\"12.0\" xmlns=\"http://schemas.micros"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/vs2013/tbbmalloc.vcxproj",
"chars": 43258,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project DefaultTargets=\"Build\" ToolsVersion=\"12.0\" xmlns=\"http://schemas.micros"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/vs2013/tbbmalloc_proxy.vcxproj",
"chars": 28010,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project DefaultTargets=\"Build\" ToolsVersion=\"12.0\" xmlns=\"http://schemas.micros"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/vs2013/version_string.ver",
"chars": 41,
"preview": "#define __TBB_VERSION_STRINGS(N) \"Empty\"\n"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/windows.cl.inc",
"chars": 5353,
"preview": "# Copyright (c) 2005-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you ma"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/windows.gcc.inc",
"chars": 4362,
"preview": "# Copyright (c) 2005-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you ma"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/windows.icl.inc",
"chars": 5973,
"preview": "# Copyright (c) 2005-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you ma"
},
{
"path": "isosurface/tbb/tbb-2018_U6/build/windows.inc",
"chars": 3472,
"preview": "# Copyright (c) 2005-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you ma"
},
{
"path": "isosurface/tbb/tbb-2018_U6/cmake/README.rst",
"chars": 16665,
"preview": ".. contents::\n\nIntroduction\n------------\nMany developers use CMake to manage their development projects, so the Intel(R)"
},
{
"path": "isosurface/tbb/tbb-2018_U6/cmake/TBBBuild.cmake",
"chars": 7621,
"preview": "# Copyright (c) 2017-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you ma"
},
{
"path": "isosurface/tbb/tbb-2018_U6/cmake/TBBGet.cmake",
"chars": 11071,
"preview": "# Copyright (c) 2017-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you ma"
},
{
"path": "isosurface/tbb/tbb-2018_U6/cmake/TBBMakeConfig.cmake",
"chars": 7030,
"preview": "# Copyright (c) 2017-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you ma"
},
{
"path": "isosurface/tbb/tbb-2018_U6/cmake/tbb_config_generator.cmake",
"chars": 1500,
"preview": "# Copyright (c) 2017-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you ma"
},
{
"path": "isosurface/tbb/tbb-2018_U6/cmake/templates/TBBConfig.cmake.in",
"chars": 3483,
"preview": "# Copyright (c) 2017-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you ma"
},
{
"path": "isosurface/tbb/tbb-2018_U6/cmake/templates/TBBConfigForSource.cmake.in",
"chars": 3425,
"preview": "# Copyright (c) 2017-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you ma"
},
{
"path": "isosurface/tbb/tbb-2018_U6/cmake/templates/TBBConfigVersion.cmake.in",
"chars": 920,
"preview": "# Copyright (c) 2017-2018 Intel Corporation\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you ma"
},
{
"path": "isosurface/tbb/tbb-2018_U6/doc/Release_Notes.txt",
"chars": 4836,
"preview": "------------------------------------------------------------------------\nIntel(R) Threading Building Blocks - Release No"
},
{
"path": "isosurface/tbb/tbb-2018_U6/doc/html/a00002.html",
"chars": 2940,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "isosurface/tbb/tbb-2018_U6/doc/html/a00004.html",
"chars": 2667,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "isosurface/tbb/tbb-2018_U6/doc/html/a00006.html",
"chars": 2963,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "isosurface/tbb/tbb-2018_U6/doc/html/a00008.html",
"chars": 1959,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "isosurface/tbb/tbb-2018_U6/doc/html/a00010.html",
"chars": 3310,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "isosurface/tbb/tbb-2018_U6/doc/html/a00012.html",
"chars": 2759,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "isosurface/tbb/tbb-2018_U6/doc/html/a00014.html",
"chars": 3288,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "isosurface/tbb/tbb-2018_U6/doc/html/a00016.html",
"chars": 2333,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "isosurface/tbb/tbb-2018_U6/doc/html/a00017.html",
"chars": 13944,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "isosurface/tbb/tbb-2018_U6/doc/html/a00018.html",
"chars": 3368,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "isosurface/tbb/tbb-2018_U6/doc/html/a00019.html",
"chars": 5274,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "isosurface/tbb/tbb-2018_U6/doc/html/a00020.html",
"chars": 7599,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "isosurface/tbb/tbb-2018_U6/doc/html/a00021.html",
"chars": 7470,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "isosurface/tbb/tbb-2018_U6/doc/html/a00022.html",
"chars": 4590,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "isosurface/tbb/tbb-2018_U6/doc/html/a00023.html",
"chars": 6688,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "isosurface/tbb/tbb-2018_U6/doc/html/a00024.html",
"chars": 6997,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "isosurface/tbb/tbb-2018_U6/doc/html/a00025.html",
"chars": 3119,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "isosurface/tbb/tbb-2018_U6/doc/html/a00026.html",
"chars": 2685,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "isosurface/tbb/tbb-2018_U6/doc/html/a00027.html",
"chars": 4732,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "isosurface/tbb/tbb-2018_U6/doc/html/a00028.html",
"chars": 5081,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "isosurface/tbb/tbb-2018_U6/doc/html/a00029.html",
"chars": 2913,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "isosurface/tbb/tbb-2018_U6/doc/html/a00030.html",
"chars": 3714,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "isosurface/tbb/tbb-2018_U6/doc/html/a00031.html",
"chars": 3293,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "isosurface/tbb/tbb-2018_U6/doc/html/a00032.html",
"chars": 7350,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "isosurface/tbb/tbb-2018_U6/doc/html/a00033.html",
"chars": 7302,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "isosurface/tbb/tbb-2018_U6/doc/html/a00034.html",
"chars": 20964,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "isosurface/tbb/tbb-2018_U6/doc/html/a00035.html",
"chars": 10053,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "isosurface/tbb/tbb-2018_U6/doc/html/a00036.html",
"chars": 11414,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "isosurface/tbb/tbb-2018_U6/doc/html/a00037.html",
"chars": 2589,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "isosurface/tbb/tbb-2018_U6/doc/html/a00038.html",
"chars": 5408,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "isosurface/tbb/tbb-2018_U6/doc/html/a00039.html",
"chars": 2697,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "isosurface/tbb/tbb-2018_U6/doc/html/a00040.html",
"chars": 6542,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
},
{
"path": "isosurface/tbb/tbb-2018_U6/doc/html/a00041.html",
"chars": 12782,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\""
}
]
// ... and 2158 more files (download for full content)
About this extraction
This page contains the full source code of the Xharlie/DISN GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 2358 files (43.8 MB), approximately 9.0M tokens, and a symbol index with 11646 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.