text:
@electronic{gkk:DHL,
	Author = {DHL},
	Date-Added = {2014-03-29 19:23:03 +0000},
	Date-Modified = {2014-03-29 19:28:03 +0000},
	Title = {Packing Material},
	Url = {https://www.dhl.de/en/paket/pakete-versenden/deutschlandweit-versenden/verpacken.html},
	Bdsk-Url-1 = {https://www.dhl.de/en/paket/pakete-versenden/deutschlandweit-versenden/verpacken.html}}

@misc{gkk:Veloso+Stone:IROSvideo:2012,
	Abstract = {
                  This video documents technical progress in four
                  RoboCup soccer leagues from 1997 until 2011.  The
                  leagues represented are the small size league, the
                  middle size league, the standard platform leage, and
                  the humanoid league.
        },
	Author = {Manuela Veloso and Peter Stone},
	Booktitle = {Proceedings of IROS 2012-IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)},
	Date-Added = {2013-07-24 01:01:08 +0000},
	Date-Modified = {2013-07-24 01:01:40 +0000},
	Month = {October},
	Note = {Available from \url{http://www.robocup.org/2012/10/robocup-video-finalist-for-best-video-award-at-iros-2012/}},
	Title = {Video: RoboCup Robot Soccer History 1997 -- 2011},
	Wwwnote = {http://www.robocup.org/2012/10/robocup-video-finalist-for-best-video-award-at-iros-2012/},
	Year = {2012}}

@misc{gkk:KIVAsystems,
	Author = {Kiva Systems},
	Date-Added = {2013-07-24 00:25:29 +0000},
	Date-Modified = {2013-07-24 00:28:50 +0000},
	Howpublished = {http://www.kivasystems.com/industries/ecommerce},
	Title = {eCommerce},
	Url = {http://www.kivasystems.com},
	Urldate = {Last accessed July 20},
	Year = {2013},
	Bdsk-Url-1 = {http://www.kivasystems.com}}

@techreport{gkk:COLLADA,
	Author = {Mark Barnes and Ellen Levy Finch},
	Date-Added = {2013-07-23 21:44:56 +0000},
	Date-Modified = {2013-07-23 21:48:19 +0000},
	Institution = {Sony Computer Entertainment Inc., Tokyo, Japan},
	Month = {April},
	Title = {{COLLADA} -- Digital Asset Schema Release 1.5.0},
	Type = {Specification},
	Url = {http://www.khronos.org/files/collada_spec_1_5.pdf},
	Year = {2008},
	Bdsk-Url-1 = {http://www.khronos.org/files/collada_spec_1_5.pdf}}

@article{gkk:Anderson++:2011,
	Author = {Monica Anderson and Odest Chadwick Jenkins and Sarah Osentoski},
	Date-Added = {2013-07-21 16:20:48 +0000},
	Date-Modified = {2013-07-21 16:26:10 +0000},
	Journal = {Robotics Automation Magazine, IEEE},
	Month = {June},
	Number = {2},
	Pages = {10--11},
	Title = {Recasting Robotics Challenges as Experiments},
	Volume = {18},
	Year = {2011}}

@article{gkk:Cohn++:2011,
	Author = {Anthony G. Cohn and Rina Dechter and Gerhard Lakemeyer},
	Date-Added = {2013-07-21 15:54:11 +0000},
	Date-Modified = {2013-07-21 15:58:59 +0000},
	Doi = {http://dx.doi.org/10.1016/S0004-3702(11)00060-9},
	Journal = {Artificial Intelligence},
	Number = {9--10},
	Title = {The Competition Section: A New Paper Category},
	Url = {http://www.sciencedirect.com/science/article/pii/S0004370211000609},
	Volume = {175},
	Year = {2011},
	Bdsk-Url-1 = {http://www.sciencedirect.com/science/article/pii/S0004370211000609},
	Bdsk-Url-2 = {http://dx.doi.org/10.1016/S0004-3702(11)00060-9}}

@article{gkk:Thrun:2006,
	Author = {S. Thrun and M. Montemerlo and H. Dahlkamp and D. Stavens and A. Aron and J. Diebel and P. Fong and J. Gale and M. Halpenny and G. Hoffmann and K. Lau and C. Oakley and M. Palatucci and V. Pratt and P. Stang and S. Strohband and C. Dupont and L.-E. Jendrossek and C. Koelen and C. Markey and C. Rummel and J. van Niekerk and E. Jensen and P. Alessandrini and G. Bradski and B. Davies and S. Ettinger and A. Kaehler and A. Nefian and P. Mahoney},
	Date-Added = {2013-07-21 10:10:55 +0000},
	Date-Modified = {2013-07-21 10:11:07 +0000},
	Journal = {Journal of Field Robotics},
	Note = {accepted for publication},
	Title = {Winning the DARPA Grand Challenge},
	Year = {2006}}

@electronic{gkk:baxter,
	Author = {Rethink Robotics},
	Date-Added = {2013-07-21 09:53:07 +0000},
	Date-Modified = {2013-07-21 09:54:33 +0000},
	Keywords = {Baxter},
	Title = {Meet your new lab partner},
	Url = {http://www.rethinkrobotics.com/files/8713/6694/8748/BRR_004.20.13.pdf},
	Urldate = {Last accessed July 21, 2013},
	Bdsk-Url-1 = {http://www.rethinkrobotics.com/files/8713/6694/8748/BRR_004.20.13.pdf}}

@electronic{gkk:indianChefsCrisisUk,
	Author = {PRI Public Radio International},
	Date-Added = {2013-07-20 09:40:38 +0000},
	Date-Modified = {2013-07-20 09:42:11 +0000},
	Title = {British cry foul over shortage of trained curry chefs in the U.K.},
	Url = {http://www.pri.org/stories/politics-society/british-cry-foul-over-shortage-of-trained-curry-chefs-in-the-u-k-7298.html},
	Urldate = {Last accessed July 20},
	Bdsk-Url-1 = {http://www.pri.org/stories/politics-society/british-cry-foul-over-shortage-of-trained-curry-chefs-in-the-u-k-7298.html}}

@electronic{gkk:indianChefsUkReuters,
	Author = {anonymous},
	Date-Added = {2013-07-20 09:34:55 +0000},
	Date-Modified = {2013-07-20 09:35:56 +0000},
	Title = {Chef shortage heats up UK curry crisis},
	Url = {http://www.reuters.com/video/2013/06/03/chef-shortage-heats-up-uk-curry-crisis?videoId=243112928},
	Urldate = {Last accessed July 20, 2013},
	Bdsk-Url-1 = {http://www.reuters.com/video/2013/06/03/chef-shortage-heats-up-uk-curry-crisis?videoId=243112928}}

@electronic{gkk:UniversalRobots,
	Author = {Universal Robots},
	Date-Added = {2013-07-19 20:04:58 +0000},
	Date-Modified = {2013-07-19 20:08:04 +0000},
	Title = {Collaborative Robot Solutions},
	Url = {http://www.universal-robots.com/GB/Products.aspx},
	Urldate = {Last accessed July19},
	Bdsk-Url-1 = {http://www.universal-robots.com/GB/Products.aspx}}

@electronic{gkk:BioRob,
	Author = {Bionic Robotics GmbH},
	Date-Added = {2013-07-19 19:52:18 +0000},
	Date-Modified = {2013-07-19 19:54:52 +0000},
	Title = {BioRob Arm},
	Url = {http://www.bionic-robotics.de/en/company/biorob-arm.html},
	Urldate = {Last accessed July19, 2013},
	Bdsk-Url-1 = {http://www.bionic-robotics.de/en/company/biorob-arm.html}}

@electronic{gkk:redwoodRobotics,
	Author = {Evan Ackerman},
	Date-Added = {2013-07-19 19:50:30 +0000},
	Date-Modified = {2013-07-19 19:51:55 +0000},
	Title = {Redwood Robotics Brings Big Names to Next Gen Robot Arms},
	Url = {http://spectrum.ieee.org/automaton/robotics/industrial-robots/redwood-robotics-brings-big-names-to-next-gen-robot-arms},
	Urldate = {Posted May 7, 2012},
	Bdsk-Url-1 = {http://spectrum.ieee.org/automaton/robotics/industrial-robots/redwood-robotics-brings-big-names-to-next-gen-robot-arms}}

@electronic{fhe:tumKitchenRobots,
	Date-Added = {2013-07-19 14:29:56 +0000},
	Date-Modified = {2013-07-19 19:26:24 +0000},
	Owner = {fred},
	Timestamp = {2013.07.19},
	Title = {robots\_top.png},
	Url = {http://asset2.cbsistatic.com/cnwk.1d/i/tim/2011/06/13/robots_top.png},
	Bdsk-Url-1 = {http://asset2.cbsistatic.com/cnwk.1d/i/tim/2011/06/13/robots_top.png}}

@electronic{fhe:tecnaliaRobot,
	Date-Added = {2013-07-19 14:29:56 +0000},
	Date-Modified = {2013-07-19 14:29:56 +0000},
	Owner = {fred},
	Timestamp = {2013.07.18},
	Title = {FactorOfFuture.jpg},
	Url = {http://www.ros.org/news/2013/01/29/FactorOfFuture.jpg},
	Bdsk-Url-1 = {http://www.ros.org/news/2013/01/29/FactorOfFuture.jpg}}

@electronic{fhe:teaParty,
	Date-Added = {2013-07-19 14:29:56 +0000},
	Date-Modified = {2013-07-19 14:29:56 +0000},
	Owner = {fred},
	Timestamp = {2013.07.19},
	Title = {tea-party-whole-table2.jpg},
	Url = {http://onecharmingparty.com/wordpress/wp-content/uploads/2009/09/tea-party-whole-table2.jpg},
	Bdsk-Url-1 = {http://onecharmingparty.com/wordpress/wp-content/uploads/2009/09/tea-party-whole-table2.jpg}}

@electronic{fhe:subaru2,
	Date-Added = {2013-07-19 14:29:56 +0000},
	Date-Modified = {2013-07-19 21:10:50 +0000},
	Owner = {fred},
	Timestamp = {2013.07.19},
	Title = {Subaru-cargo-photo\_2.jpg},
	Url = {http://www.plasticpals.com/http://www.plasticpals.com/wp-content/uploads//2009/10/Subaru-cargo-photo_2.jpg},
	Bdsk-Url-1 = {http://www.plasticpals.com/http://www.plasticpals.com/wp-content/uploads//2009/10/Subaru-cargo-photo_2.jpg}}

@electronic{fhe:subaru1,
	Date-Added = {2013-07-19 14:29:56 +0000},
	Date-Modified = {2013-07-19 21:10:40 +0000},
	Owner = {fred},
	Timestamp = {2013.07.19},
	Title = {Subaru-cargo-photo\_1.jpg},
	Url = {http://www.plasticpals.com/http://www.plasticpals.com/wp-content/uploads//2009/10/Subaru-cargo-photo_1.jpg},
	Bdsk-Url-1 = {http://www.plasticpals.com/http://www.plasticpals.com/wp-content/uploads//2009/10/Subaru-cargo-photo_1.jpg}}

@electronic{fhe:silicone,
	Date-Added = {2013-07-19 14:29:56 +0000},
	Date-Modified = {2013-07-19 19:26:13 +0000},
	Owner = {fred},
	Timestamp = {2013.07.19},
	Title = {400px-771.11\_Bridge\_Joint\_Sealing\_-\_Silicone3.jpg},
	Url = {http://epg.modot.org/files/thumb/9/92/771.11_Bridge_Joint_Sealing_-_Silicone3.jpg/400px-771.11_Bridge_Joint_Sealing_-_Silicone3.jpg},
	Bdsk-Url-1 = {http://epg.modot.org/files/thumb/9/92/771.11_Bridge_Joint_Sealing_-_Silicone3.jpg/400px-771.11_Bridge_Joint_Sealing_-_Silicone3.jpg}}

@electronic{fhe:painting,
	Date-Added = {2013-07-19 14:29:56 +0000},
	Date-Modified = {2013-07-19 14:29:56 +0000},
	Owner = {fred},
	Timestamp = {2013.07.19},
	Title = {senseless-bot-robot-kanno-so-takihiro-yamaguchi.jpg},
	Url = {http://www.tokyoartbeat.com/tablog/entries.en/wp-content/uploads/2011/10/senseless-bot-robot-kanno-so-takihiro-yamaguchi.jpg},
	Bdsk-Url-1 = {http://www.tokyoartbeat.com/tablog/entries.en/wp-content/uploads/2011/10/senseless-bot-robot-kanno-so-takihiro-yamaguchi.jpg}}

@electronic{fhe:neobotix,
	Date-Added = {2013-07-19 14:29:56 +0000},
	Date-Modified = {2013-07-19 14:29:56 +0000},
	Owner = {fred},
	Timestamp = {2013.07.19},
	Title = {http://www.neobotix-robots.com/fileadmin/files/produkte/Transportroboter/MT-400/Transportroboter-MT-400-Ansicht-A-b.jpg},
	Url = {Transportroboter-MT-400-Ansicht-A-b.jpg},
	Bdsk-Url-1 = {Transportroboter-MT-400-Ansicht-A-b.jpg}}

@electronic{fhe:manLogistics,
	Date-Added = {2013-07-19 14:29:56 +0000},
	Date-Modified = {2013-07-19 14:29:56 +0000},
	Owner = {fred},
	Timestamp = {2013.07.18},
	Title = {slide04.jpg},
	Url = {http://content.presentermedia.com/files/pres/00009000/9014/slide04.jpg},
	Bdsk-Url-1 = {http://content.presentermedia.com/files/pres/00009000/9014/slide04.jpg}}

@electronic{fhe:greenBookshelf,
	Date-Added = {2013-07-19 14:29:56 +0000},
	Date-Modified = {2013-07-19 14:29:56 +0000},
	Owner = {fred},
	Timestamp = {2013.07.19},
	Title = {Green-Bookshelf.jpg},
	Url = {http://nationalfurnituresupply.com/blog/wp-content/uploads/2012/12/Green-Bookshelf.jpg},
	Bdsk-Url-1 = {http://nationalfurnituresupply.com/blog/wp-content/uploads/2012/12/Green-Bookshelf.jpg}}

@electronic{fhe:floorTiling,
	Date-Added = {2013-07-19 14:29:56 +0000},
	Date-Modified = {2013-07-19 14:29:56 +0000},
	Owner = {fred},
	Timestamp = {2013.07.19},
	Title = {floor-tiling.jpg},
	Url = {http://www.forcebeyondcapacity.com/wp-content/uploads/2012/06/floor-tiling.jpg},
	Bdsk-Url-1 = {http://www.forcebeyondcapacity.com/wp-content/uploads/2012/06/floor-tiling.jpg}}

@electronic{fhe:bridgeRound,
	Date-Added = {2013-07-19 14:29:56 +0000},
	Date-Modified = {2013-07-19 19:29:22 +0000},
	Owner = {fred},
	Timestamp = {2013.07.19},
	Title = {AMMERLAND\_BAD\_ZWISCHENAHN\_1\_2f1843d2-988e-40bb-ac87-64dcb8d5869a--498x337.jpg},
	Url = {http://www.nwzonline.de/rf/image_online/NWZ_CMS/NWZ/2011-2013/Produktion/2012/09/17/AMMERLAND/BAD_ZWISCHENAHN_1/Bilder/AMMERLAND_BAD_ZWISCHENAHN_1_2f1843d2-988e-40bb-ac87-64dcb8d5869a--498x337.jpg},
	Bdsk-Url-1 = {http://www.nwzonline.de/rf/image_online/NWZ_CMS/NWZ/2011-2013/Produktion/2012/09/17/AMMERLAND/BAD_ZWISCHENAHN_1/Bilder/AMMERLAND_BAD_ZWISCHENAHN_1_2f1843d2-988e-40bb-ac87-64dcb8d5869a--498x337.jpg}}

@electronic{fhe:breakfastTable,
	Date-Added = {2013-07-19 14:29:56 +0000},
	Date-Modified = {2013-07-19 14:29:56 +0000},
	Owner = {fred},
	Timestamp = {2013.07.19},
	Title = {breakfast-table.jpg},
	Url = {http://www.google.de/imgres?um=1&safe=off&hl=de&biw=1615&bih=891&tbm=isch&tbnid=ZDfLghIQTpHyNM:&imgrefurl=http://www.hoteligieapalermo.com/photo-gallery/p-g-5.htm&docid=8THAg4ZzPtyIHM&imgurl=http://www.hoteligieapalermo.com/images/breakfast-table.jpg&w=678&h=450&ei=9vzoUf-mG4TP4QS2qIDgCA&zoom=1&iact=rc&dur=352&page=1&tbnh=139&tbnw=217&start=0&ndsp=42&ved=1t:429,r:1,s:0,i:83&tx=132&ty=68},
	Bdsk-Url-1 = {http://www.google.de/imgres?um=1&safe=off&hl=de&biw=1615&bih=891&tbm=isch&tbnid=ZDfLghIQTpHyNM:&imgrefurl=http://www.hoteligieapalermo.com/photo-gallery/p-g-5.htm&docid=8THAg4ZzPtyIHM&imgurl=http://www.hoteligieapalermo.com/images/breakfast-table.jpg&w=678&h=450&ei=9vzoUf-mG4TP4QS2qIDgCA&zoom=1&iact=rc&dur=352&page=1&tbnh=139&tbnw=217&start=0&ndsp=42&ved=1t:429,r:1,s:0,i:83&tx=132&ty=68}}

@electronic{fhe:baxter,
	Date-Added = {2013-07-19 14:29:56 +0000},
	Date-Modified = {2013-07-19 19:28:58 +0000},
	Owner = {fred},
	Timestamp = {2013.07.18},
	Title = {\_62965017\_baxter2.jpg},
	Url = {http://news.bbcimg.co.uk/media/images/62965000/jpg/_62965017_baxter2.jpg},
	Bdsk-Url-1 = {http://news.bbcimg.co.uk/media/images/62965000/jpg/_62965017_baxter2.jpg}}

@electronic{ssc:Oliveira2012,
	Author = {Michael Oliveira},
	Date-Added = {2013-07-19 14:04:18 +0000},
	Date-Modified = {2013-07-19 14:04:18 +0000},
	Howpublished = {\url{http://thechronicleherald.ca/sites/default/files/imagecache/ch_article_main_image/articles/B97118368Z.120121209182006000GKK1TIKV.11.jpg}},
	Note = {[Online, accessed 18-07-2013]},
	Title = {A package lands on the conveyer belt to be sorted after arriving at a FedEx facility in Toronto},
	Url = {http://thechronicleherald.ca/sites/default/files/imagecache/ch_article_main_image/articles/B97118368Z.120121209182006000GKK1TIKV.11.jpg},
	Year = {2012},
	Bdsk-Url-1 = {http://thechronicleherald.ca/sites/default/files/imagecache/ch_article_main_image/articles/B97118368Z.120121209182006000GKK1TIKV.11.jpg}}

@electronic{ssc:Nurmi2003,
	Author = {Niko Nurmi},
	Date-Added = {2013-07-19 14:04:18 +0000},
	Date-Modified = {2013-07-19 14:04:18 +0000},
	Howpublished = {\url{http://www.tekes.fi/imageserver/images/en_content/picture_bank/products_and_productionk/conveyorbelts_0.jpg}},
	Note = {[Online, accessed 18-07-2013]},
	Organization = {Tekes},
	Title = {Logistics, parcels on conveyor belts},
	Url = {http://www.tekes.fi/imageserver/images/en_content/picture_bank/products_and_productionk/conveyorbelts_0.jpg},
	Year = {2003},
	Bdsk-Url-1 = {http://www.tekes.fi/imageserver/images/en_content/picture_bank/products_and_productionk/conveyorbelts_0.jpg}}

@electronic{ssc:DiamondLogistics2006,
	Author = {Diamond Logistics},
	Date-Added = {2013-07-19 14:04:18 +0000},
	Date-Modified = {2013-07-19 14:04:18 +0000},
	Howpublished = {\url{http://www.diamondlogistics.co.uk/wp-content/uploads/2012/05/parcels-on-conveyor-belt.jpg}},
	Note = {[Online, accessed 18-07-2013]},
	Organization = {Diamond Logistics},
	Title = {Parcels on conveyor belt},
	Url = {http://www.diamondlogistics.co.uk/wp-content/uploads/2012/05/parcels-on-conveyor-belt.jpg},
	Year = {2006},
	Bdsk-Url-1 = {http://www.diamondlogistics.co.uk/wp-content/uploads/2012/05/parcels-on-conveyor-belt.jpg}}

@electronic{ssc:CaliforniaStateUniversityLibrary2012,
	Author = {California State University, Fullerton},
	Date-Added = {2013-07-19 12:56:15 +0000},
	Date-Modified = {2013-07-19 12:56:15 +0000},
	Howpublished = {\url{http://philosophy.fullerton.edu/images/2012/Department%20Library%202.JPG}},
	Note = {[Online, accessed 18-07-2013]},
	Organization = {California State University, Fullerton},
	Title = {Department of Philosophy - Department Library},
	Url = {http://philosophy.fullerton.edu/images/2012/Department%20Library%202.JPG},
	Year = {2012},
	Bdsk-Url-1 = {http://philosophy.fullerton.edu/images/2012/Department%20Library%202.JPG}}

@electronic{ssc:Coetzee2011,
	Author = {Derrick Coetzee},
	Date-Added = {2013-07-19 12:56:15 +0000},
	Date-Modified = {2013-07-19 12:56:15 +0000},
	Howpublished = {\url{http://commons.wikimedia.org/wiki/File:Closeup_of_robotic_arm_in_StorageTek_tape_library_at_NERSC_%281%29.jpg}},
	Note = {[Online, accessed 18-07-2013]},
	Title = {File:Closeup of robotic arm in StorageTek tape library at NERSC (1).jpg},
	Url = {http://commons.wikimedia.org/wiki/File:Closeup_of_robotic_arm_in_StorageTek_tape_library_at_NERSC_%281%29.jpg},
	Year = {2011},
	Bdsk-Url-1 = {http://commons.wikimedia.org/wiki/File:Closeup_of_robotic_arm_in_StorageTek_tape_library_at_NERSC_%281%29.jpg}}

@electronic{ssc:GITLibrary2013,
	Author = {Karnatak Law Society's Gogte Institute of Technology},
	Date-Added = {2013-07-19 12:56:15 +0000},
	Date-Modified = {2013-07-19 12:56:15 +0000},
	Howpublished = {\url{http://git.edu/library/images/stories/books.jpg}},
	Note = {[Online, accessed 18-07-2013]},
	Organization = {Karnatak Law Society's Gogte Institute of Technology},
	Title = {Books},
	Url = {http://git.edu/library/images/stories/books.jpg},
	Year = {2013},
	Bdsk-Url-1 = {http://git.edu/library/images/stories/books.jpg}}

@inproceedings{ssc:Morales2007,
	Abstract = {Uncertainty is one of the main problems that have to deal robot manipulation
	systems in service environments. In this paper we propose a theoretical
	framework to program manipulation actions, that makes use of a priori
	defined manipulation primitives and sensory feedback to face uncertainty
	in the execution. It also takes into account the limitation of the
	robot gripper and the reactive execution of such actions. We describe
	the role of different sensory data in such scheme.

	Finally, a practical implementation of a manipulation primitive is
	presented which follows the principles of the theoretical framework.
	The task is the is the extraction of books from a bookshelf, with
	the UJI service robot.},
	Author = {Morales, Antonio and Prats, Mario and Sanz, Pedro and Pobil, Angel P.},
	Booktitle = {Robotics: Science and Systems (RSS). Workshop on Robot Manipulation: Sensing and Adapting to the Real World},
	Date-Added = {2013-07-19 12:56:15 +0000},
	Date-Modified = {2013-07-19 12:56:15 +0000},
	Title = {An Experiment in the Use of Manipulation Primitives and Tactile Perception for Reactive Grasping},
	Year = {2007}}

@electronic{ssc:Porter2006,
	Author = {Michael Porter},
	Date-Added = {2013-07-19 12:56:15 +0000},
	Date-Modified = {2013-07-19 12:56:15 +0000},
	Howpublished = {\url{http://www.flickr.com/photos/libraryman/292274709/}},
	Note = {[Online, accessed 18-07-2013]. CC BY-NC-ND 2.0},
	Title = {Bleep. Bloop. I am a library robot.},
	Url = {http://www.flickr.com/photos/libraryman/292274709/},
	Year = {2006},
	Bdsk-Url-1 = {http://www.flickr.com/photos/libraryman/292274709/}}

@electronic{ssc:Reeb2010,
	Author = {Matt Reeb},
	Date-Added = {2013-07-19 12:56:15 +0000},
	Date-Modified = {2013-07-19 12:56:15 +0000},
	Howpublished = {\url{http://media2.kshb.com//photo/2010/08/19/Photo08191338_20100819180151_640_480.JPG}},
	Note = {[Online, accessed 18-07-2013]},
	Organization = {KSHB},
	Title = {UMKC Library Robot},
	Url = {http://media2.kshb.com//photo/2010/08/19/Photo08191338_20100819180151_640_480.JPG},
	Year = {2010},
	Bdsk-Url-1 = {http://media2.kshb.com//photo/2010/08/19/Photo08191338_20100819180151_640_480.JPG}}

@electronic{ssc:SteacieLibrary2008,
	Author = {Wikipedia: The Free Encyclopedia. Wikimedia Foundation Inc.},
	Date-Added = {2013-07-19 12:56:15 +0000},
	Date-Modified = {2013-07-19 12:56:15 +0000},
	Howpublished = {\url{http://commons.wikimedia.org/wiki/File:SteacieLibrary.jpg}},
	Note = {[Online, accessed 18-07-2013]},
	Title = {File:SteacieLibrary.jpg.},
	Url = {http://commons.wikimedia.org/wiki/File:SteacieLibrary.jpg},
	Year = {2008},
	Bdsk-Url-1 = {http://commons.wikimedia.org/wiki/File:SteacieLibrary.jpg}}

@electronic{ssc:CleaningRobotContest2002Rules,
	Author = {GPS Gesellschaft f{\"u}r Produktionssysteme and Fraunhofer Institute for Manufacturing Engineering and Automation (IPA)},
	Date-Added = {2013-07-18 17:08:35 +0000},
	Date-Modified = {2013-07-18 17:08:35 +0000},
	Howpublished = {\url{http://web.archive.org/web/20040623170510/http://www.service-robots.org/cleaningrobotscontest/rules_details.php}},
	Note = {[Online; accessed 17-July-2013]},
	Organization = {GPS Gesellschaft f{\"u}r Produktionssysteme and Fraunhofer Institute for Manufacturing Engineering and Automation (IPA)},
	Title = {First International Cleaning Robot Contest},
	Url = {http://web.archive.org/web/20040623170510/http://www.service-robots.org/cleaningrobotscontest/rules_details.php},
	Year = {2002},
	Bdsk-Url-1 = {http://web.archive.org/web/20040623170510/http://www.service-robots.org/cleaningrobotscontest/rules_details.php}}

@electronic{ssc:GrandChallenge2004,
	Author = {Defense Advanced Research Projects Agency},
	Date-Added = {2013-07-18 17:08:35 +0000},
	Date-Modified = {2013-07-18 17:08:35 +0000},
	Note = {[Online; accessed 16-July-2013]},
	Organization = {Defense Advanced Research Projects Agency},
	Title = {Grand Challenge Overview},
	Url = {http://archive.darpa.mil/grandchallenge04/},
	Year = {2004},
	Bdsk-Url-1 = {http://archive.darpa.mil/grandchallenge04/}}

@misc{ssc:GrandChallenge2004Brochure,
	Author = {Defense Advanced Research Projects Agency},
	Date-Added = {2013-07-18 17:08:35 +0000},
	Date-Modified = {2013-07-18 17:08:35 +0000},
	Howpublished = {\url{http://archive.darpa.mil/grandchallenge04/sponsor_toolkit/brochure.pdf}},
	Note = {[Online; accessed 16-July-2013]},
	Title = {The DARPA Grand Challenge. A Historic Demonstration of Autonomous Robotic Vehicles},
	Url = {http://archive.darpa.mil/grandchallenge04/sponsor_toolkit/brochure.pdf},
	Year = {2004},
	Bdsk-Url-1 = {http://archive.darpa.mil/grandchallenge04/sponsor_toolkit/brochure.pdf}}

@electronic{ssc:GrandChallenge2004Overview,
	Author = {Defense Advanced Research Projects Agency},
	Date-Added = {2013-07-18 17:08:35 +0000},
	Date-Modified = {2013-07-18 17:08:35 +0000},
	Note = {[Online; accessed 16-July-2013]},
	Organization = {Defense Advanced Research Projects Agency},
	Title = {DARPA Grand Challenge - Defense Advanced Research Projects Agency},
	Url = {http://archive.darpa.mil/grandchallenge04/overview_pres.pdf},
	Year = {2004},
	Bdsk-Url-1 = {http://archive.darpa.mil/grandchallenge04/overview_pres.pdf}}

@misc{ssc:GrandChallenge2004Rules,
	Author = {Defense Advanced Research Projects Agency},
	Date-Added = {2013-07-18 17:08:35 +0000},
	Date-Modified = {2013-07-18 17:08:35 +0000},
	Howpublished = {\url{http://web.archive.org/web/20040516171932/http://www.darpa.mil/GrandChallenge/rules.pdf}},
	Title = {Grand Challenge Rules},
	Url = {http://web.archive.org/web/20040516171932/http://www.darpa.mil/GrandChallenge/rules.pdf},
	Year = {2004},
	Bdsk-Url-1 = {http://web.archive.org/web/20040516171932/http://www.darpa.mil/GrandChallenge/rules.pdf}}

@electronic{ssc:GrandChallenge2004Schedule,
	Author = {Defense Advanced Research Projects Agency},
	Date-Added = {2013-07-18 17:08:35 +0000},
	Date-Modified = {2013-07-18 17:08:35 +0000},
	Howpublished = {\url{http://archive.darpa.mil/grandchallenge04/schedule.html}},
	Note = {[Online; accessed 16-July-2013]},
	Organization = {Defense Advanced Research Projects Agency},
	Title = {Grand Challenge Schedule/Events},
	Url = {http://archive.darpa.mil/grandchallenge04/schedule.html},
	Year = {2004},
	Bdsk-Url-1 = {http://archive.darpa.mil/grandchallenge04/schedule.html}}

@electronic{ssc:GrandChallenge2005Overview,
	Author = {Defense Advanced Research Projects Agency},
	Date-Added = {2013-07-18 17:08:35 +0000},
	Date-Modified = {2013-07-18 17:08:35 +0000},
	Howpublished = {\url{http://archive.darpa.mil/grandchallenge05/overview.html}},
	Note = {[Online; accessed 16-July-2013]},
	Organization = {Defense Advanced Research Projects Agency},
	Title = {DARPA Grand Challenge '05. Overview},
	Url = {http://archive.darpa.mil/grandchallenge05/overview.html},
	Year = {2007},
	Bdsk-Url-1 = {http://archive.darpa.mil/grandchallenge05/overview.html}}

@misc{ssc:GrandChallenge2005Rules,
	Author = {Defense Advanced Research Projects Agency},
	Date-Added = {2013-07-18 17:08:35 +0000},
	Date-Modified = {2013-07-18 17:08:35 +0000},
	Howpublished = {\url{http://archive.darpa.mil/grandchallenge05/Rules_8oct04.pdf}},
	Title = {DARPA Grand Challenge 2005 - Rules},
	Url = {http://archive.darpa.mil/grandchallenge05/Rules_8oct04.pdf},
	Year = {2004},
	Bdsk-Url-1 = {http://archive.darpa.mil/grandchallenge05/Rules_8oct04.pdf}}

@electronic{ssc:GrandChallenge2007,
	Author = {Defense Advanced Research Projects Agency},
	Date-Added = {2013-07-18 17:08:35 +0000},
	Date-Modified = {2013-07-18 17:08:35 +0000},
	Howpublished = {[Online; accessed 16-July-2013]},
	Organization = {Defense Advanced Research Projects Agency},
	Title = {DARPA Urban Challenge. Welcome},
	Url = {http://archive.darpa.mil/grandchallenge/},
	Year = {2007},
	Bdsk-Url-1 = {http://archive.darpa.mil/grandchallenge/}}

@misc{ssc:GrandChallenge2007Criteria,
	Author = {Defense Advanced Research Projects Agency},
	Date-Added = {2013-07-18 17:08:35 +0000},
	Date-Modified = {2013-07-18 17:08:35 +0000},
	Howpublished = {\url{http://archive.darpa.mil/grandchallenge/docs/Technical_Evaluation_Criteria_031607.pdf}},
	Title = {Urban Challenge - Technical Evaluation Criteria},
	Url = {http://archive.darpa.mil/grandchallenge/docs/Technical_Evaluation_Criteria_031607.pdf},
	Year = {2006},
	Bdsk-Url-1 = {http://archive.darpa.mil/grandchallenge/docs/Technical_Evaluation_Criteria_031607.pdf}}

@misc{ssc:GrandChallenge2007Rules,
	Author = {Defense Advanced Research Projects Agency},
	Date-Added = {2013-07-18 17:08:35 +0000},
	Date-Modified = {2013-07-18 17:08:35 +0000},
	Howpublished = {\url{http://archive.darpa.mil/grandchallenge/docs/Urban_Challenge_Rules_102707.pdf}},
	Title = {Urban Challenge - Rules},
	Url = {http://archive.darpa.mil/grandchallenge/docs/Urban_Challenge_Rules_102707.pdf},
	Year = {2007},
	Bdsk-Url-1 = {http://archive.darpa.mil/grandchallenge/docs/Urban_Challenge_Rules_102707.pdf}}

@electronic{ssc:GrandChallenge2007Schedule,
	Author = {Defense Advanced Research Projects Agency},
	Date-Added = {2013-07-18 17:08:35 +0000},
	Date-Modified = {2013-07-18 17:08:35 +0000},
	Howpublished = {\url{http://archive.darpa.mil/grandchallenge/schedule.asp}},
	Note = {[Online; accessed 16-July-2013]},
	Organization = {Defense Advanced Research Projects Agency},
	Title = {Schedule},
	Url = {http://archive.darpa.mil/grandchallenge/schedule.asp},
	Year = {2007},
	Bdsk-Url-1 = {http://archive.darpa.mil/grandchallenge/schedule.asp}}

@misc{ssc:Jacoff2013,
	Author = {Adam Jacoff and Raymond Sheh and Ann Virts and Dave Schmitt and Andy Moore and John Quinby and Jim Pippine},
	Date-Added = {2013-07-18 17:08:35 +0000},
	Date-Modified = {2013-07-18 17:08:35 +0000},
	Howpublished = {\url{http://www.theroboticschallenge.org/local/documents/DRC%20Trials%20Initial%20Task%20Descriptions%20DISTAR%20Case%2021473.pdf}},
	Title = {DARPA Robotics Challenge - DRC Trials 2013 - Initial Task Descriptions},
	Url = {http://www.theroboticschallenge.org/local/documents/DRC%20Trials%20Initial%20Task%20Descriptions%20DISTAR%20Case%2021473.pdf},
	Year = {2013},
	Bdsk-Url-1 = {http://www.theroboticschallenge.org/local/documents/DRC%20Trials%20Initial%20Task%20Descriptions%20DISTAR%20Case%2021473.pdf}}

@electronic{ssc:MobileManipulationChallenge2013,
	Author = {Sachin Chitta},
	Date-Added = {2013-07-18 17:08:35 +0000},
	Date-Modified = {2013-07-18 17:08:35 +0000},
	Howpublished = {\url{http://mobilemanipulationchallenge.org/}},
	Note = {[Online; accessed 16-July-2013]},
	Title = {The ICRA 2013 Mobile Manipulation Challenge},
	Url = {http://mobilemanipulationchallenge.org/},
	Year = {2013},
	Bdsk-Url-1 = {http://mobilemanipulationchallenge.org/}}

@electronic{ssc:PlanetaryRoboticContingency2010,
	Author = {Bill Smart and Mark Yim},
	Date-Added = {2013-07-18 17:08:35 +0000},
	Date-Modified = {2013-07-18 17:08:35 +0000},
	Howpublished = {\url{http://web.archive.org/web/20110830041817/http://icra.wustl.edu/?q=2010Contingency}},
	Note = {[Online; accessed 17-July-2013]},
	Title = {Planetary Robotic Contingency},
	Url = {http://web.archive.org/web/20110830041817/http://icra.wustl.edu/?q=2010Contingency},
	Year = {2010},
	Bdsk-Url-1 = {http://web.archive.org/web/20110830041817/http://icra.wustl.edu/?q=2010Contingency}}

@electronic{ssc:RoboticsChallenge2012,
	Author = {Defense Advanced Research Projects Agency},
	Date-Added = {2013-07-18 17:08:35 +0000},
	Date-Modified = {2013-07-18 17:08:35 +0000},
	Howpublished = {\url{http://www.theroboticschallenge.org/aboutprogram.aspx}},
	Note = {[Online; accessed 16-July-2013]},
	Title = {DARPA Robotics Challenge},
	Url = {http://www.theroboticschallenge.org/aboutprogram.aspx},
	Year = {2013},
	Bdsk-Url-1 = {http://www.theroboticschallenge.org/aboutprogram.aspx}}

@misc{ssc:RoboticsChallenge2013Rules,
	Author = {Defense Advanced Research Projects Agency},
	Date-Added = {2013-07-18 17:08:35 +0000},
	Date-Modified = {2013-07-18 17:08:35 +0000},
	Howpublished = {\url{http://www.theroboticschallenge.org/local/documents/VRC%20Rules%20Release%202%20DISTAR%20Case%2021064.pdf}},
	Title = {Virtual Robotics Challenge Rules. Release 2 on March 30, 2013. DISTAR Case 21064},
	Url = {http://www.theroboticschallenge.org/local/documents/VRC%20Rules%20Release%202%20DISTAR%20Case%2021064.pdf},
	Year = {2013},
	Bdsk-Url-1 = {http://www.theroboticschallenge.org/local/documents/VRC%20Rules%20Release%202%20DISTAR%20Case%2021064.pdf}}

@electronic{ssc:VacuumContest2002Rules,
	Author = {Atlanta Hobby Robot Club},
	Date-Added = {2013-07-18 17:08:35 +0000},
	Date-Modified = {2013-07-18 17:08:35 +0000},
	Howpublished = {\url{http://www.botlanta.org/Rally/vac_rules.html}},
	Note = {[Online; accessed 17-July-2013]},
	Organization = {Atlanta Hobby Robotics Club},
	Title = {Vacuum Contest - Robot Rally 2002},
	Url = {http://www.botlanta.org/Rally/vac_rules.html},
	Year = {2002},
	Bdsk-Url-1 = {http://www.botlanta.org/Rally/vac_rules.html}}

@article{fhe:AAAI1997,
	Author = {Holly A. Yanco},
	Date-Added = {2013-07-18 16:54:40 +0000},
	Date-Modified = {2013-07-18 16:54:40 +0000},
	Journal = {AI Magazine},
	Note = {[Online; accessed 16-July-2013]},
	Pages = {39--48},
	Title = {The 1997 AAAI Mobile Robot Exhibition},
	Url = {http://www.cs.uml.edu/~holly/publications/PDF/AIMag19-03-011.pdf},
	Volume = {19},
	Year = {1998},
	Bdsk-Url-1 = {http://www.cs.uml.edu/~holly/publications/PDF/AIMag19-03-011.pdf}}

@misc{fhe:AAAI1998,
	Date-Added = {2013-07-18 16:54:40 +0000},
	Date-Modified = {2013-07-18 16:54:40 +0000},
	Howpublished = {\url{http://www.aaai.org/Conferences/AAAI/1998/aaai98robotwinners.pdf}},
	Note = {[Online; accessed 16-July-2013]},
	Title = {Seventh Annual Mobile Robot Competition and Exhibition: Results and Awards},
	Url = {http://www.aaai.org/Conferences/AAAI/1998/aaai98robotwinners.pdf},
	Year = {1998},
	Bdsk-Url-1 = {http://www.aaai.org/Conferences/AAAI/1998/aaai98robotwinners.pdf}}

@electronic{fhe:AAAI1999,
	Date-Added = {2013-07-18 16:54:40 +0000},
	Date-Modified = {2013-07-18 16:54:40 +0000},
	Howpublished = {\url{http://web.archive.org/web/20010419184104/http://www.aic.nrl.navy.mil/~schultz/aaai99/awards.html}},
	Note = {[Online; accessed 17-July-2013]},
	Organization = {The American Association for Artifical Intelligence},
	Owner = {fred},
	Timestamp = {2013.07.17},
	Title = {Eight Annual Mobile Robot Competition and Exhibition: Results and Awards},
	Url = {http://web.archive.org/web/20010419184104/http://www.aic.nrl.navy.mil/~schultz/aaai99/awards.html},
	Year = {1999},
	Bdsk-Url-1 = {http://web.archive.org/web/20010419184104/http://www.aic.nrl.navy.mil/~schultz/aaai99/awards.html}}

@electronic{fhe:AAAI2005:OIE,
	Date-Added = {2013-07-18 16:54:40 +0000},
	Date-Modified = {2013-07-20 10:26:42 +0000},
	Howpublished = {\url{http://web.archive.org/web/20060716105002/http://palantir.swarthmore.edu/aaai05/openInteraction.htm}},
	Note = {[Online; accessed 17-July-2013]},
	Organization = {The American Association for Artifical Intelligence},
	Owner = {fred},
	Timestamp = {2013.07.17},
	Title = {AAAI 2005 Open Interaction Event},
	Url = {http://web.archive.org/web/20060716105002/http://palantir.swarthmore.edu/aaai05/openInteraction.htm},
	Year = {2005},
	Bdsk-Url-1 = {http://web.archive.org/web/20060716105002/http://palantir.swarthmore.edu/aaai05/openInteraction.htm}}

@electronic{fhe:AAAI2005:RCE,
	Date-Added = {2013-07-18 16:54:40 +0000},
	Date-Modified = {2013-07-20 10:27:04 +0000},
	Howpublished = {\url{http://web.archive.org/web/20060716104948/http://palantir.swarthmore.edu/aaai05/robotChallenge.htm}},
	Note = {[Online; accessed 17-July-2013]},
	Organization = {The American Association for Artifical Intelligence},
	Owner = {fred},
	Timestamp = {2013.07.17},
	Title = {AAAI 2005 Robot Challenge Event},
	Url = {http://web.archive.org/web/20060716104948/http://palantir.swarthmore.edu/aaai05/robotChallenge.htm},
	Year = {2005},
	Bdsk-Url-1 = {http://web.archive.org/web/20060716104948/http://palantir.swarthmore.edu/aaai05/robotChallenge.htm}}

@electronic{fhe:AAAI2005:Results,
	Date-Added = {2013-07-18 16:54:40 +0000},
	Date-Modified = {2013-07-20 10:26:57 +0000},
	Howpublished = {\url{http://web.archive.org/web/20060717204415/http://palantir.swarthmore.edu/aaai05/index.htm}},
	Note = {[Online; accessed 16-July-2013]},
	Organization = {The American Association for Artifical Intelligence},
	Owner = {fred},
	Timestamp = {2013.07.17},
	Title = {Fourteenth Annual Mobile Robot Competition and Exhibition: Results and Awards},
	Url = {http://web.archive.org/web/20060717204415/http://palantir.swarthmore.edu/aaai05/index.htm},
	Year = {2005},
	Bdsk-Url-1 = {http://web.archive.org/web/20060717204415/http://palantir.swarthmore.edu/aaai05/index.htm}}

@electronic{fhe:AAAI2006:HRIE,
	Date-Added = {2013-07-18 16:54:40 +0000},
	Date-Modified = {2013-07-20 10:27:18 +0000},
	Howpublished = {\url{http://web.archive.org/web/20060719124435/http://www.nd.edu/~mscheutz/humanrobotinteraction.html}},
	Note = {[Online; accessed 17-July-2013]},
	Organization = {The American Association for Artifical Intelligence},
	Owner = {fred},
	Timestamp = {2013.07.17},
	Title = {AAAI 2006 Human-Robot Interaction Event},
	Url = {http://web.archive.org/web/20060719124435/http://www.nd.edu/~mscheutz/humanrobotinteraction.html},
	Year = {2006},
	Bdsk-Url-1 = {http://web.archive.org/web/20060719124435/http://www.nd.edu/~mscheutz/humanrobotinteraction.html}}

@electronic{fhe:AAAI2006:SHE,
	Date-Added = {2013-07-18 16:54:40 +0000},
	Date-Modified = {2013-07-20 10:27:35 +0000},
	Howpublished = {\url{http://web.archive.org/web/20060506031138/http://www.cs.hmc.edu/~dodds/aaai06/}},
	Note = {[Online; accessed 17-July-2013]},
	Organization = {The American Association for Artifical Intelligence},
	Owner = {fred},
	Timestamp = {2013.07.17},
	Title = {AAAI 2006 Scavenger Hunt Event},
	Url = {http://web.archive.org/web/20060506031138/http://www.cs.hmc.edu/~dodds/aaai06/},
	Year = {2006},
	Bdsk-Url-1 = {http://web.archive.org/web/20060506031138/http://www.cs.hmc.edu/~dodds/aaai06/}}

@misc{fhe:AAAI2007,
	Date-Added = {2013-07-18 16:54:40 +0000},
	Date-Modified = {2013-07-18 16:54:40 +0000},
	Howpublished = {\url{http://www.aaai.org/Conferences/AAAI/2007/aaai07robotcall.pdf}},
	Note = {[Online; accessed 16-July-2013]},
	Title = {Call for Participation: Sixteenth Annual AAAI Mobile Robot Competition and Exhibition},
	Url = {http://www.aaai.org/Conferences/AAAI/2007/aaai07robotcall.pdf},
	Year = {2007},
	Bdsk-Url-1 = {http://www.aaai.org/Conferences/AAAI/2007/aaai07robotcall.pdf}}

@electronic{fhe:AAAI2008,
	Date-Added = {2013-07-18 16:54:40 +0000},
	Date-Modified = {2013-07-18 16:54:40 +0000},
	Howpublished = {\url{http://www.aaai.org/Conferences/AAAI/aaai08.php}},
	Note = {[Online; accessed 16-July-2013]},
	Organization = {Association for the Advancement of Artificial Intelligence},
	Title = {AAAI-08 Chicago},
	Url = {http://www.aaai.org/Conferences/AAAI/aaai08.php},
	Year = {2008},
	Bdsk-Url-1 = {http://www.aaai.org/Conferences/AAAI/aaai08.php}}

@article{fhe:Balch2002,
	Author = {Tucker Balch and Holly A. Yanco},
	Date-Added = {2013-07-18 16:54:40 +0000},
	Date-Modified = {2013-07-18 16:54:40 +0000},
	Journal = {AI Magazine},
	Note = {[Online; accessed 16-July-2013]},
	Pages = {13--22},
	Title = {Ten Years of the AAAI Mobile Robot Competition and Exhibition. Looking Back and to the Future},
	Url = {http://www.aaai.org/ojs/index.php/aimagazine/article/download/1603/1502},
	Volume = {23},
	Year = {2002},
	Bdsk-Url-1 = {http://www.aaai.org/ojs/index.php/aimagazine/article/download/1603/1502}}

@misc{fhe:Jacoff2009,
	Author = {Adam Jacoff},
	Date-Added = {2013-07-18 16:54:40 +0000},
	Date-Modified = {2013-07-18 16:54:40 +0000},
	Howpublished = {\url{http://www.isd.mel.nist.gov/projects/USAR/2009/RoboCupRescue_Robot_League_Overview_(2007-2008).pdf}},
	Note = {[Online; accessed 17-July-2013]},
	Owner = {fred},
	Timestamp = {2013.07.17},
	Title = {RoboCup Rescue Robot League - Progress Update and Future Directions},
	Url = {http://www.isd.mel.nist.gov/projects/USAR/2009/RoboCupRescue_Robot_League_Overview_(2007-2008).pdf},
	Year = {2009},
	Bdsk-Url-1 = {http://www.isd.mel.nist.gov/projects/USAR/2009/RoboCupRescue_Robot_League_Overview_(2007-2008).pdf}}

@article{fhe:Kitano2001,
	Author = {Hiroaki Kitano and Satoshi Tadokoro},
	Date-Added = {2013-07-18 16:54:40 +0000},
	Date-Modified = {2013-07-18 16:54:40 +0000},
	Journal = {AI Magazine},
	Note = {[Online; accessed 17-July-2013]},
	Owner = {fred},
	Pages = {39-52},
	Timestamp = {2013.07.17},
	Title = {RoboCup Rescue - A Grand Challenge for Multiagent and Intelligent Systems},
	Url = {http://www.aaai.org/ojs/index.php/aimagazine/article/view/1542/1441},
	Volume = {22},
	Year = {2001},
	Bdsk-Url-1 = {http://www.aaai.org/ojs/index.php/aimagazine/article/view/1542/1441}}

@electronic{fhe:RoboCup2013,
	Date-Added = {2013-07-18 16:54:40 +0000},
	Date-Modified = {2013-07-18 16:54:40 +0000},
	Howpublished = {\url{http://www.robocup.org/about-robocup/a-brief-history-of-robocup/}},
	Note = {[Online; accessed 16-July-2013]},
	Organization = {The Robocup Federation},
	Title = {A Brief History of RoboCup},
	Url = {http://www.robocup.org/about-robocup/a-brief-history-of-robocup/},
	Year = {2013},
	Bdsk-Url-1 = {http://www.robocup.org/about-robocup/a-brief-history-of-robocup/}}

@electronic{fhe:RoboCupHome2013,
	Date-Added = {2013-07-18 16:54:40 +0000},
	Date-Modified = {2013-07-18 16:54:40 +0000},
	Howpublished = {\url{http://www.robocupathome.org/}},
	Note = {[Online; accessed 16-July-2013]},
	Organization = {RoboCup@Home League},
	Owner = {fred},
	Timestamp = {2013.07.17},
	Title = {RoboCup@Home Website},
	Url = {http://www.robocupathome.org/},
	Year = {2013},
	Bdsk-Url-1 = {http://www.robocupathome.org/}}

@electronic{fhe:RoboCupHomeRulebook2013,
	Author = {Jean-Daniel Dessimoz and Peter Ford Dominey and Mohan Rajesh Elara and David Gossow and Dirk Holz and Luca Iocchi and Gerhard Kraetzschmar and Fariborz Mahmoudi and Daniele Nardi and Sven Olufs and Caleb Rascon and Javier Ruiz-del-Solar and Paul E. Rybski and Jesus Savage and Stefan Schiffer and J{\"o}rg St{\"u}ckler and Komei Sugiura and Tijn van der Zant and Sven Wachsmuth and Thomas Wisspeintner and Jiongkun Xie and Amin Yazdani},
	Date-Added = {2013-07-18 16:54:40 +0000},
	Date-Modified = {2013-07-18 16:54:40 +0000},
	Howpublished = {\url{http://purl.org/holz/2013_rulebook.pdf}},
	Note = {[Online; accessed 17-July-2013]},
	Organization = {RoboCup@Home league},
	Owner = {fred},
	Timestamp = {2013.07.17},
	Title = {RoboCup@Home Rulebook},
	Url = {http://purl.org/holz/2013_rulebook.pdf},
	Year = {2013},
	Bdsk-Url-1 = {http://purl.org/holz/2013_rulebook.pdf}}

@electronic{fhe:RoboCupLogistics2013,
	Date-Added = {2013-07-18 16:54:40 +0000},
	Date-Modified = {2013-07-18 16:54:40 +0000},
	Howpublished = {\url{http://www.robocup-logistics.org/}},
	Note = {[Online; accessed 17-July-2013]},
	Organization = {RoboCup Logistics League League},
	Owner = {fred},
	Timestamp = {2013.07.17},
	Title = {RoboCup Logistics League Website},
	Url = {http://www.robocup-logistics.org/},
	Year = {2013},
	Bdsk-Url-1 = {http://www.robocup-logistics.org/}}

@electronic{fhe:RoboCupLogisticsRulebook2013,
	Date-Added = {2013-07-18 16:54:40 +0000},
	Date-Modified = {2013-07-18 16:54:40 +0000},
	Howpublished = {\url{http://www.robocup-logistics.org/rules/rulebook2013.pdf?attredirects=0&d=1}},
	Note = {[Online; accessed 17-July-2013]},
	Organization = {RoboCup Logistics League},
	Owner = {fred},
	Timestamp = {2013.07.17},
	Title = {RoboCup Logistics Rulebook},
	Url = {http://www.robocup-logistics.org/rules/rulebook2013.pdf?attredirects=0&d=1},
	Year = {2013},
	Bdsk-Url-1 = {http://www.robocup-logistics.org/rules/rulebook2013.pdf?attredirects=0&d=1}}

@electronic{fhe:RoboCupRescue2013,
	Date-Added = {2013-07-18 16:54:40 +0000},
	Date-Modified = {2013-07-18 16:54:40 +0000},
	Howpublished = {\url{http://www.robocuprescue.org/}},
	Note = {[Online; accessed 17-July-2013]},
	Organization = {RoboCup Rescue League},
	Owner = {fred},
	Timestamp = {2013.07.17},
	Title = {RoboCup Rescue Website},
	Url = {http://www.robocuprescue.org/},
	Year = {2013},
	Bdsk-Url-1 = {http://www.robocuprescue.org/}}

@electronic{fhe:RoboCupRescueFields2013,
	Date-Added = {2013-07-18 16:54:40 +0000},
	Date-Modified = {2013-07-18 16:54:40 +0000},
	Howpublished = {\url{http://dl.dropboxusercontent.com/u/21976613/Detailed%20FIELD%20DESCRIPTION.pdf}},
	Note = {[Online; accessed 17-July-2013]},
	Organization = {RoboCup Rescue League},
	Owner = {fred},
	Timestamp = {2013.07.17},
	Title = {RoboCup Rescue Field Descriptions},
	Url = {http://dl.dropboxusercontent.com/u/21976613/Detailed%20FIELD%20DESCRIPTION.pdf},
	Year = {2013},
	Bdsk-Url-1 = {http://dl.dropboxusercontent.com/u/21976613/Detailed%20FIELD%20DESCRIPTION.pdf}}

@electronic{fhe:RoboCupRescueRulebook2013,
	Author = {J. Pellenz},
	Date-Added = {2013-07-18 16:54:40 +0000},
	Date-Modified = {2013-07-18 16:54:40 +0000},
	Howpublished = {\url{http://wiki.ssrrsummerschool.org/doku.php?id=rrl-rules-2013}},
	Note = {[Online; accessed 17-July-2013]},
	Organization = {RoboCup Rescue League},
	Owner = {fred},
	Timestamp = {2013.07.17},
	Title = {RoboCup Rescue Rulebook},
	Url = {http://wiki.ssrrsummerschool.org/doku.php?id=rrl-rules-2013},
	Year = {2013},
	Bdsk-Url-1 = {http://wiki.ssrrsummerschool.org/doku.php?id=rrl-rules-2013}}

@electronic{fhe:RoboCupWork2013,
	Date-Added = {2013-07-18 16:54:40 +0000},
	Date-Modified = {2013-07-18 16:54:40 +0000},
	Howpublished = {\url{http://www.robocupatwork.org/}},
	Note = {[Online; accessed 17-July-2013]},
	Organization = {RoboCup@Work League},
	Owner = {fred},
	Timestamp = {2013.07.17},
	Title = {RoboCup@Work Website},
	Url = {http://www.robocupatwork.org},
	Year = {2013},
	Bdsk-Url-1 = {http://www.robocupatwork.org}}

@electronic{fhe:RoboCupWorkRulebook2013,
	Author = {Gerhard Kraetzschmar and Walter Nowak and Nico Hochgeschwender and Rainer Bischoff and Daniel Kaczor and Frederik Hegger},
	Date-Added = {2013-07-18 16:54:40 +0000},
	Date-Modified = {2013-07-18 16:54:40 +0000},
	Howpublished = {\url{http://www.robocupatwork.org/download/rulebook-2013-06-08.pdf}},
	Note = {[Online; accessed 17-July-2013]},
	Organization = {RoboCup@Work League},
	Owner = {fred},
	Timestamp = {2013.07.17},
	Title = {RoboCup@Work Rulebook},
	Url = {http://www.robocupatwork.org/download/rulebook-2013-06-08.pdf},
	Year = {2013},
	Bdsk-Url-1 = {http://www.robocupatwork.org/download/rulebook-2013-06-08.pdf}}

@electronic{fhe:RoboCupWorkRulebook2016,
	Author = {Gerhard Kraetzschmar and Walter Nowak and Nico Hochgeschwender and Jan Carstensen and Sebastian Zug and Frederik Hegger},
	Date-Added = {2016-04-19 16:54:40 +0000},
	Date-Modified = {2016-04-19 16:54:40 +0000},
	Howpublished = {\url{http://www.robocupatwork.org/download/rulebook-2016-03-15.pdf}},
	Note = {[Online; accessed 19-April-2016]},
	Organization = {RoboCup@Work League},
	Owner = {fred},
	Timestamp = {2016.04.19},
	Title = {RoboCup@Work Rulebook},
	Url = {http://www.robocupatwork.org/download/rulebook-2016-03-15.pdf},
	Year = {2016},
	Bdsk-Url-1 = {http://www.robocupatwork.org/download/rulebook-2016-03-15.pdf}}

@periodical{rdw:FIRSTAnnual2011,
	Date-Added = {2013-07-16 22:58:41 +0000},
	Date-Modified = {2013-07-16 22:58:41 +0000},
	Owner = {rhama},
	Timestamp = {2013.07.16},
	Title = {FIRST Annual report},
	Url = {www.usfirst.org},
	Year = {2011},
	Bdsk-Url-1 = {www.usfirst.org}}

@electronic{rdw:FLLChallenges,
	Date-Added = {2013-07-16 22:58:41 +0000},
	Date-Modified = {2013-07-16 22:58:41 +0000},
	Note = {Online; accessed 16-July-2013},
	Organization = {FIRST Lego League},
	Owner = {rhama},
	Timestamp = {2013.07.16},
	Title = {FIRST Lego League Challenge},
	Url = {http://www.firstlegoleague.org/challenge/thechallenge},
	Bdsk-Url-1 = {http://www.firstlegoleague.org/challenge/thechallenge}}

@article{rdw:Calkins2011,
	Author = {Calkins, D.},
	Date-Added = {2013-07-16 22:49:36 +0000},
	Date-Modified = {2013-07-16 22:49:56 +0000},
	Doi = {10.1109/MRA.2010.940146},
	Issn = {1070-9932},
	Journal = {Robotics Automation Magazine, IEEE},
	Keywords = {mobile robots;multi-robot systems;sport;Guinness Book of Records;RoboGames;United States;robotics competition},
	Number = {1},
	Pages = {14-15},
	Title = {An Overview of RoboGames [Competitions]},
	Volume = {18},
	Year = {2011},
	Bdsk-Url-1 = {http://dx.doi.org/10.1109/MRA.2010.940146}}

@inproceedings{rdw:Lu2012,
	Author = {Lu, D.V. and Mead, R.},
	Booktitle = {Human-Robot Interaction (HRI), 2012 7th ACM/IEEE International Conference on},
	Date-Added = {2013-07-16 22:49:36 +0000},
	Date-Modified = {2013-07-16 22:49:49 +0000},
	Issn = {2167-2121},
	Keywords = {computer aided instruction;computer animation;human-robot interaction;mobile robots;robot programming;teaching;2011 Global Conference on Educational Robotics;Botball robotics competition;Expressive Robotics:Motion and Emotion;FIRST robotics competition;HRI;STEM-related activities;VEX robotics competition;human-robot interaction;iRobot Create;keyframe animation system;robot building;robot interactions;robot motion;robot programming;sociable robotics;Animation;Computer science;Conferences;Educational institutions;Humans;Robots;USA Councils;HRI;educational robotics;expressive robotics},
	Pages = {411-411},
	Title = {Introducing students grades 6-12 to expressive robotics},
	Year = {2012}}

@misc{fhe:AAAI1998:cfp,
	Date-Added = {2013-07-16 22:45:51 +0000},
	Date-Modified = {2013-07-18 16:55:43 +0000},
	Howpublished = {\url{http://www.aaai.org/Conferences/AAAI/1998/aaai98robotwinners.pdf}},
	Note = {[Online; accessed 16-July-2013]},
	Title = {Call for Participation: Seventh Annual Mobile Robot Competition and Exhibition},
	Url = {http://www.aaai.org/Conferences/AAAI/1998/aaai98robotwinners.pdf},
	Year = {1998},
	Bdsk-Url-1 = {http://www.aaai.org/Conferences/AAAI/1998/aaai98robotwinners.pdf}}

@misc{fhe:AAAI2006,
	Date-Added = {2013-07-16 22:45:51 +0000},
	Date-Modified = {2013-07-16 22:47:28 +0000},
	Howpublished = {\url{http://www.aaai.org/Conferences/AAAI/2006/aaai06robotcall.pdf}},
	Note = {[Online; accessed 16-July-2013]},
	Title = {Call for Participation: Fifteenth Annual AAAI Mobile Robot Competition \& Exhibition},
	Url = {http://www.aaai.org/Conferences/AAAI/2006/aaai06robotcall.pdf},
	Year = {2006},
	Bdsk-Url-1 = {http://www.aaai.org/Conferences/AAAI/2006/aaai06robotcall.pdf}}

@article{fhe:Yanco1998,
	Author = {Holly A. Yanco},
	Date-Added = {2013-07-16 22:45:51 +0000},
	Date-Modified = {2013-07-16 22:46:43 +0000},
	Journal = {AI Magazine},
	Pages = {39--48},
	Title = {The 1997 AAAI Mobile Robot Exhibition},
	Url = {http://www.cs.uml.edu/~holly/publications/PDF/AIMag19-03-011.pdf},
	Volume = {19},
	Year = {1998},
	Bdsk-Url-1 = {http://www.cs.uml.edu/~holly/publications/PDF/AIMag19-03-011.pdf}}

@electronic{gkk:wiki:FigureSkating,
	Author = {anonymous},
	Date-Added = {2013-07-16 15:32:24 +0000},
	Date-Modified = {2013-07-21 09:40:42 +0000},
	Keywords = {Figure Skating},
	Lastchecked = {July 16, 2013},
	Title = {Figure Skating},
	Url = {http://en.wikipedia.org/wiki/Figure_Skating},
	Urldate = {http://en.wikipedia.org/wiki/Figure_Skating},
	Bdsk-Url-1 = {http://en.wikipedia.org/wiki/Figure_Skating}}

@electronic{gkk:ISUrules,
	Author = {International Skating Union},
	Date-Added = {2013-07-16 15:29:57 +0000},
	Date-Modified = {2013-07-21 09:36:58 +0000},
	Lastchecked = {July 16, 2013},
	Title = {Summary of ISU Judging System},
	Url = {http://www.isu.org/vsite/vcontent/page/custom/0,8510,4844-152094-169310-31825-132302-custom-item,00.html},
	Urldate = {http://www.isu.org/vsite/vcontent/page/custom/0,8510,4844-152094-169310-31825-132302-custom-item,00.html},
	Bdsk-Url-1 = {http://www.isu.org/vsite/vcontent/page/custom/0,8510,4844-152094-169310-31825-132302-custom-item,00.html}}

@electronic{gkk:TunedItOrg,
	Author = {anonymous},
	Date-Added = {2013-07-14 22:30:35 +0000},
	Date-Modified = {2013-07-21 09:39:49 +0000},
	Keywords = {ML benchmark},
	Lastchecked = {July 14, 2013},
	Title = {Machine Learning and Data Mining Algorithms: Automated Tests, Repeatable Experiments, Meaningful Results},
	Url = {http://tunedit.org},
	Urldate = {http://tunedit.org},
	Bdsk-Url-1 = {http://tunedit.org}}

@electronic{gkk:PETS:2012,
	Author = {anonymous},
	Date-Added = {2013-07-14 22:19:45 +0000},
	Date-Modified = {2013-07-21 09:38:29 +0000},
	Keywords = {PETS},
	Lastchecked = {July 14, 2013},
	Title = {Fourteenth IEEE International Workshop on Performance Evaluation of Tracking and Surveillance},
	Url = {http://pets2012.net},
	Urldate = {http://pets2012.net},
	Bdsk-Url-1 = {http://pets2012.net}}

@electronic{gkk:CIG,
	Author = {anonymous},
	Date-Added = {2013-07-14 22:11:25 +0000},
	Date-Modified = {2013-07-21 09:36:16 +0000},
	Keywords = {CIG},
	Lastchecked = {July 14, 2013},
	Title = {IEEE Conference on Computational Intelligence in Games (CIG): Competitions},
	Url = {http://geneura.ugr.es/cig2012/competitions.html},
	Urldate = {http://geneura.ugr.es/cig2012/competitions.html},
	Bdsk-Url-1 = {http://geneura.ugr.es/cig2012/competitions.html}}

@electronic{gkk:TREC,
	Author = {NIST},
	Date-Added = {2013-07-14 22:07:56 +0000},
	Date-Modified = {2013-07-21 09:39:39 +0000},
	Keywords = {TREC},
	Lastchecked = {July 14, 2013},
	Title = {Text Retrieval Conference (TREC)},
	Url = {http://trec.nist.gov},
	Urldate = {http://trec.nist.gov},
	Bdsk-Url-1 = {http://trec.nist.gov}}

@electronic{gkk:wiki:CTF,
	Author = {Wikipedia},
	Date-Added = {2013-07-14 22:02:39 +0000},
	Date-Modified = {2013-07-21 09:40:11 +0000},
	Lastchecked = {July 14, 2013},
	Title = {Capture the Flag},
	Url = {https://en.wikipedia.org/wiki/Capture_the_flag},
	Urldate = {https://en.wikipedia.org/wiki/Capture_the_flag},
	Bdsk-Url-1 = {https://en.wikipedia.org/wiki/Capture_the_flag}}

@electronic{gkk:wiki:DEFCON,
	Author = {Wikipedia},
	Date-Added = {2013-07-14 22:00:39 +0000},
	Date-Modified = {2013-07-21 09:40:21 +0000},
	Keywords = {DEF CON CTF},
	Lastchecked = {July 14, 2013},
	Title = {DEF CON},
	Url = {https://en.wikipedia.org/wiki/DEF_CON_(convention)},
	Urldate = {https://en.wikipedia.org/wiki/DEF_CON_(convention)},
	Bdsk-Url-1 = {https://en.wikipedia.org/wiki/DEF_CON_(convention)}}

@electronic{gkk:ICAPScompetitions,
	Author = {anonymous},
	Date-Added = {2013-07-14 21:51:32 +0000},
	Date-Modified = {2013-07-21 09:36:48 +0000},
	Lastchecked = {July 14, 2013},
	Title = {ICAPS Competitions},
	Url = {http://www.icaps-conference.org/index.php/Main/Competitions},
	Urldate = {http://www.icaps-conference.org/index.php/Main/Competitions},
	Bdsk-Url-1 = {http://www.icaps-conference.org/index.php/Main/Competitions}}

@techreport{gkk:Ketter++:2011,
	Author = {Wolfgang Ketter and John Collins and Prashant P. Reddy and Christoph M. Flath},
	Date-Added = {2013-07-14 21:29:09 +0000},
	Date-Modified = {2013-07-14 21:32:39 +0000},
	Institution = {Soial Science Research Report},
	Keywords = {http://ssrn.com/abstract=1839139},
	Month = {May 17},
	Number = {Ref No ERS-2011-011-US},
	Title = {The Power Trading Agent Competition},
	Type = {ERIm Report Series},
	Year = {2011}}

@electronic{gkk:PowerTAC,
	Author = {anonymous},
	Date-Added = {2013-07-14 21:24:40 +0000},
	Date-Modified = {2013-07-21 09:38:40 +0000},
	Keywords = {PowerTAC},
	Lastchecked = {July 14, 2013},
	Title = {Power Agent Trading Competition},
	Url = {http://www.powertac.org/node/4},
	Urldate = {http://www.powertac.org/node/4},
	Bdsk-Url-1 = {http://www.powertac.org/node/4}}

@electronic{gkk:TAC,
	Author = {anonymous},
	Date-Added = {2013-07-14 19:50:55 +0000},
	Date-Modified = {2013-07-21 09:39:05 +0000},
	Keywords = {TAC},
	Lastchecked = {July 14, 2013},
	Title = {Trading Agent Competition},
	Url = {http://tac.sics.se/page.php?id=2},
	Urldate = {http://tac.sics.se/page.php?id=2},
	Bdsk-Url-1 = {http://tac.sics.se/page.php?id=2}}

@electronic{gkk:TAC:2013,
	Author = {anonymous},
	Date-Added = {2013-07-14 18:06:18 +0000},
	Date-Modified = {2013-07-21 09:39:18 +0000},
	Keywords = {TAC},
	Lastchecked = {July 14, 2013},
	Title = {Yearly Archives 2013},
	Url = {http://tradingagents.eecs.umich.edu/2013/},
	Urldate = {http://tradingagents.eecs.umich.edu/2013/},
	Bdsk-Url-1 = {http://tradingagents.eecs.umich.edu/2013/}}

@electronic{gkk:Passmark:2013,
	Author = {Passmark Software},
	Date-Added = {2013-07-14 17:56:42 +0000},
	Date-Modified = {2013-07-21 09:38:18 +0000},
	Keywords = {Passmark},
	Lastchecked = {July 14, 2013},
	Title = {Network benchmark - test your network speed},
	Url = {http://www.passmark.com/products/pt_advnet.htm},
	Urldate = {http://www.passmark.com/products/pt_advnet.htm},
	Bdsk-Url-1 = {http://www.passmark.com/products/pt_advnet.htm}}

@electronic{gkk:Netspec:2013,
	Author = {Roel Jonkman},
	Date-Added = {2013-07-14 17:52:04 +0000},
	Date-Modified = {2013-07-21 09:38:07 +0000},
	Keywords = {NetSpec},
	Lastchecked = {July 14, 2013},
	Title = {NetSpec: A Tool for Network Experimentation and Measurement},
	Url = {http://compnetworking.about.com/gi/o.htm?zi=1/XJ&zTi=1&sdn=compnetworking&cdn=compute&tm=469&f=00&tt=14&bt=8&bts=8&zu=http%3A//www.ittc.ku.edu/netspec/},
	Urldate = {http://compnetworking.about.com/gi/o.htm?zi=1/XJ&zTi=1&sdn=compnetworking&cdn=compute&tm=469&f=00&tt=14&bt=8&bts=8&zu=http%3A//www.ittc.ku.edu/netspec/},
	Bdsk-Url-1 = {http://compnetworking.about.com/gi/o.htm?zi=1/XJ&zTi=1&sdn=compnetworking&cdn=compute&tm=469&f=00&tt=14&bt=8&bts=8&zu=http%3A//www.ittc.ku.edu/netspec/}}

@electronic{gkk:NetperfOrg:2013,
	Author = {Rick Jones},
	Date-Added = {2013-07-14 17:50:23 +0000},
	Date-Modified = {2013-07-21 09:37:30 +0000},
	Keywords = {NetPerf},
	Lastchecked = {July 14, 2013},
	Title = {Netperf Homepage},
	Url = {http://www.netperf.org/netperf/},
	Urldate = {http://www.netperf.org/netperf/},
	Bdsk-Url-1 = {http://www.netperf.org/netperf/}}

@electronic{gkk:wiki:Netperf,
	Author = {Wikipedia},
	Date-Added = {2013-07-14 17:49:20 +0000},
	Date-Modified = {2013-07-21 09:41:10 +0000},
	Keywords = {NetPerf},
	Lastchecked = {July 14, 2013},
	Title = {Netperf},
	Url = {http://en.wikipedia.org/wiki/Netperf},
	Urldate = {http://en.wikipedia.org/wiki/Netperf},
	Bdsk-Url-1 = {http://en.wikipedia.org/wiki/Netperf}}

@electronic{gkk:CoremarkOrg:2013,
	Author = {EEMBC Embedded Microprocessor Benchmark Consortium},
	Date-Added = {2013-07-14 17:33:53 +0000},
	Date-Modified = {2013-07-21 09:36:32 +0000},
	Keywords = {Coremark},
	Lastchecked = {July 14, 2013},
	Title = {Coremark},
	Url = {http://coremark.org},
	Urldate = {http://coremark.org},
	Bdsk-Url-1 = {http://coremark.org}}

@electronic{gkk:SPECorg:2013,
	Author = {Standard Performance Evaluation Corporation},
	Date-Added = {2013-07-14 17:29:09 +0000},
	Date-Modified = {2013-07-21 09:38:53 +0000},
	Keywords = {SPEC},
	Lastchecked = {July 14, 2013},
	Title = {SPEC's Benchmarks and Published Results},
	Url = {http://www.spec.org/benchmarks.html},
	Urldate = {http://www.spec.org/benchmarks.html},
	Bdsk-Url-1 = {http://www.spec.org/benchmarks.html}}

@book{gkk:Kant:92,
	Author = {Kant, K.},
	Date-Added = {2013-07-14 17:27:39 +0000},
	Date-Modified = {2013-07-14 17:28:28 +0000},
	Isbn = {9780070335868},
	Keywords = {SPEC},
	Lccn = {lc91021266},
	Publisher = {McGraw-Hill},
	Series = {McGraw-Hill computer science series},
	Title = {Introduction to computer system performance evaluation},
	Url = {http://books.google.de/books?id=Ht5QAAAAMAAJ},
	Year = {1992},
	Bdsk-Url-1 = {http://books.google.de/books?id=Ht5QAAAAMAAJ}}

@electronic{gkk:Matlis:2005,
	Author = {Jan Matlis},
	Date-Added = {2013-07-14 17:21:17 +0000},
	Date-Modified = {2013-07-21 09:37:19 +0000},
	Journal = {Computer World},
	Keywords = {LINPACK},
	Lastchecked = {July 14, 2013},
	Month = {May 30},
	Title = {Sidebar: The Linpack Benchmark},
	Url = {http://www.computerworld.com/s/article/102050/Sidebar_The_Linpack_Benchmark},
	Urldate = {http://www.computerworld.com/s/article/102050/Sidebar_The_Linpack_Benchmark},
	Year = {2005},
	Bdsk-Url-1 = {http://www.computerworld.com/s/article/102050/Sidebar_The_Linpack_Benchmark}}

@phdthesis{gkk:Bienia:2011,
	Author = {Christian Bienia},
	Date-Added = {2013-07-14 17:15:51 +0000},
	Date-Modified = {2013-07-14 17:17:01 +0000},
	Keywords = {PARSEC},
	Month = {January},
	School = {Princeton University},
	Title = {Benchmarking Modern Multiprocessors},
	Year = {2011}}

@electronic{gkk:wiki:PARSEC,
	Author = {Princeton University},
	Date-Added = {2013-07-14 17:12:33 +0000},
	Date-Modified = {2013-07-21 09:35:36 +0000},
	Keywords = {PARSEC},
	Lastchecked = {July 14, 2013},
	Title = {PARSEC: A unit of measure},
	Url = {http://parsec.cs.princeton.edu},
	Urldate = {http://parsec.cs.princeton.edu},
	Bdsk-Url-1 = {http://parsec.cs.princeton.edu}}

@electronic{gkk:wiki:LINPACK,
	Author = {Wikipedia},
	Date-Added = {2013-07-14 17:11:44 +0000},
	Date-Modified = {2013-07-21 09:40:59 +0000},
	Keywords = {LINPACK},
	Lastchecked = {July 14, 2013},
	Title = {LINPACK},
	Url = {http://en.wikipedia.org/wiki/Linpack},
	Urldate = {http://en.wikipedia.org/wiki/Linpack},
	Bdsk-Url-1 = {http://en.wikipedia.org/wiki/Linpack}}

@electronic{gkk:wiki:Coremark,
	Author = {Wikipedia},
	Date-Added = {2013-07-14 17:11:00 +0000},
	Date-Modified = {2013-07-21 09:40:00 +0000},
	Keywords = {Coremark},
	Lastchecked = {July 14, 2013},
	Title = {Coremark},
	Url = {http://en.wikipedia.org/wiki/Coremark},
	Urldate = {http://en.wikipedia.org/wiki/Coremark},
	Bdsk-Url-1 = {http://en.wikipedia.org/wiki/Coremark}}

@electronic{gkk:wiki:SPEC,
	Author = {Wikipedia},
	Date-Added = {2013-07-14 17:09:32 +0000},
	Date-Modified = {2013-07-21 09:35:09 +0000},
	Keywords = {SPEC},
	Lastchecked = {July 14, 2013},
	Title = {Standard Performance Evaluation Corporation},
	Url = {http://en.wikipedia.org/wiki/Standard_Performance_Evaluation_Corporation},
	Urldate = {http://en.wikipedia.org/wiki/Standard_Performance_Evaluation_Corporation},
	Bdsk-Url-1 = {http://en.wikipedia.org/wiki/Standard_Performance_Evaluation_Corporation}}

@article{gkk:Weicker:84,
	Author = {Reinhold Weicker},
	Date-Added = {2013-07-14 17:03:54 +0000},
	Date-Modified = {2013-07-14 17:05:39 +0000},
	Journal = {Communications of the ACM},
	Keywords = {doi:10.1145/358274.358283},
	Number = {10},
	Pages = {1013--1030},
	Title = {Dhrystone: A Synthetic Systems Programming Benchmark},
	Volume = {27},
	Year = {1984}}

@electronic{gkk:wiki:dhrystone,
	Author = {Wikipedia},
	Date-Added = {2013-07-14 17:02:22 +0000},
	Date-Modified = {2013-07-21 09:40:33 +0000},
	Keywords = {Dhrystone},
	Lastchecked = {July 14, 2014},
	Title = {Dhrystone},
	Url = {http://en.wikipedia.org/wiki/Dhrystone},
	Urldate = {http://en.wikipedia.org/wiki/Dhrystone},
	Bdsk-Url-1 = {http://en.wikipedia.org/wiki/Dhrystone}}

@electronic{gkk:top-500-computers:2013,
	Author = {Hans Meuer and Erich Strohmaier and Jack Dongarra and Horst Simon},
	Date-Added = {2013-07-14 16:58:19 +0000},
	Date-Modified = {2013-07-21 09:39:28 +0000},
	Lastchecked = {July 14, 2013},
	Title = {Top 500 Supercomputer Sites, June 2013},
	Url = {http://www.top500.org/lists/2013/06/},
	Urldate = {http://www.top500.org/lists/2013/06/},
	Bdsk-Url-1 = {http://www.top500.org/lists/2013/06/}}

@electronic{gkk:wiki:whetstone,
	Author = {Wikipedia},
	Date-Added = {2013-07-14 16:51:29 +0000},
	Date-Modified = {2013-07-21 09:35:22 +0000},
	Keywords = {Whetstone},
	Lastchecked = {July 14, 2013},
	Title = {Whetstone (benchmark)},
	Url = {http://en.wikipedia.org/wiki/Whetstone_(benchmark)},
	Urldate = {http://en.wikipedia.org/wiki/Whetstone_(benchmark)},
	Bdsk-Url-1 = {http://en.wikipedia.org/wiki/Whetstone_(benchmark)}}

@article{gkk:Cumow+Wichman:76,
	Author = {Cumow, H.J. and Wichman, B.A.},
	Date-Added = {2013-07-14 16:22:18 +0000},
	Date-Modified = {2013-07-14 16:24:43 +0000},
	Journal = {Computer Journal},
	Keywords = {Whetstone},
	Number = {1},
	Pages = {43--49},
	Title = {A Synthetic Benchmark},
	Volume = {19},
	Year = {1976}}

@TechReport{rockin:D-2.1.4:2014nutshell,
	Title                    = {{RoCKIn@Work -- Innovation in Industrial Mobile Manipulation -- RoCKIn@Work in a Nutshell}},
	Author                   = {Jakob Berghofer and Rhama Dwiputra and Gerhard Kraetzschmar (editors) and Aamir Ahmad and Francesco Amigoni and Iman Awaad and Jakob Berghofer and Rainer Bischoff and Andrea Bonarini and Rhama Dwiputra and Fredrik Hegger and Nico Hochgeschwender and Luca Iocchi and Gerhard Kraetzschmar and Pedro Lima and Matteo Matteucci and Daniele Nardi and Sven Schneider},
	Institution              = {KUKA Laboratories GmbH, Bonn-Rhein-Sieg University of Applied Sciences},
	Year                     = {2014},

	Address                  = {Augsburg, Germany, and Sankt Augustin, Germany},
	Month                    = {March},
	Type                     = {Deliverable D-2.1.4 nutshell (public), The RoCKIn Project (FP7-ICT-601012 grant agreement number 601012)},

	Date-added               = {2014-03-26 21:39:50 +0000},
	Date-modified            = {2014-03-26 21:43:39 +0000}
}

@TechReport{rockin:D-2.1.7:2014,
	Title                    = {{Description of Ground Truth System}},
	Author                   = {Aamir Ahmad and Iman Awaad and Francesco Amigoni and Jakob Berghofer and Rainer Bischoff and Andrea Bonarini and Rhama Dwiputra and Giulio Fontana and Frederik Hegger and Nico Hochgeschwender and Luca Iocchi and Gerhard Kraetzschmar and Pedro Lima and Matteo Matteucci and Daniele Nardi and Viola Schaffionati and Sven Schneider},
	Institution              = {Politecnico di Milano, Milan, Italy},
	Year                     = {2014},
	Type                     = {Deliverable D-2.1.7 (public), The RoCKIn Project (FP7-ICT-601012 grant agreement number 601012)},

	Date-modified            = {2014-03-26 21:27:13 +0000}
}

@Electronic{rockin:CFHExamples,
	Title                    = {{Central Factory Hub Tools}},
	Author                   = {{RoCKIn Project}},
	Organization             = {The RoCKIn Project (FP7-ICT-601012 grant agreement number 601012)},
	Url                      = {https://github.com/rockin-robot-challenge/at_work_central_factory_hub/tree/rockin/rockin/tools},

	Bdsk-url-1               = {https://github.com/rockin-robot-challenge/at_work_central_factory_hub/tree/rockin/rockin/tools}
}

@Electronic{rockin:CFHMessages,
	Title                    = {{Central Factory Hub Messages}},
	Author                   = {{The RoCKIn Project}},
	Organization             = {The RoCKIn Project (FP7-ICT-601012 grant agreement number 601012)},
	Url                      = {https://github.com/rockin-robot-challenge/at\_work\_central\_factory\_hub/tree/rockin/rockin/msgs},

	Bdsk-url-1               = {https://github.com/rockin-robot-challenge/at\_work\_central\_factory\_hub/tree/rockin/rockin/msgs}
}

@Electronic{rockin:yaml,
	Title                    = {{YAML data file specifications}},
	Author                   = {{The RoCKIn Project}},
	Organization             = {The RoCKIn Project (FP7-ICT-601012 grant agreement number 601012)},
	Url                      = {http://thewiki.rockinrobotchallenge.eu/images/a/af/Yaml_file_spec.pdf},

	Bdsk-url-1               = {http://thewiki.rockinrobotchallenge.eu/images/a/af/Yaml_file_spec.pdf}
}

@Electronic{rockin:wiki:2015,
	Title                    = {{The RoCKIn Wiki}},
	Url                      = {http://thewiki.rockinrobotchallenge.eu},
	Year                     = {2015}
}

license_type: permissive

branch_name: refs/heads/master

gha_language: TeX

extension: bib


text:
SUMMARY = "ROS communications-related libraries and tools"
HOMEPAGE = "http://www.ros.org/wiki/ros_comm"
LICENSE  = "BSD"
LIC_FILES_CHKSUM = "file://git/stack.xml;md5=6cf13eae896c056c5d0f496bb2bff467"

VCSDIR = "git"
inherit catkin

BBCLASSEXTEND = "native"

SRC_URI  = "git://github.com/wg-debs/ros_comm-release.git;rev=debian/ros-fuerte-ros-comm_1.8.12_lucid;protocol=git \
            file://cross-compilation.patch \
	    file://boost.patch \
"

DEPENDS += "\
	ros-fuerte-ros \
	log4cxx \
	ros-fuerte-roscpp-core \
	ros-fuerte-gencpp-native \
	ros-fuerte-genpy-native \
	ros-fuerte-genlisp-native \
	apr \
	ros-fuerte-std-msgs \
	python-paramiko \
	boost \
	python-pyyaml \
"

RDEPENDS_${PN} += "\
        python-rospkg \
	ros-fuerte-genpy \
"

S = "${WORKDIR}"

license: MIT

extension: bb


text:
package main

import (
	"bytes"
	"crypto/md5"
	"fmt"
	"io"
	"io/ioutil"
	"log"
	"os"
	"os/exec"
	"os/signal"
	"path/filepath"
	"regexp"
	"strings"
	"sync"
	"syscall"
	"time"
)

var (
	config Config
	strims *Strims
)

type Strims struct {
	Queue      []*Stream
	QueueMutex sync.Mutex

	CurrentIndex  int
	CurrentStream *Stream
	StopStream    chan struct{}
	SkipNext      bool

	StartTime time.Time
	EndTime   time.Time
}

type Stream struct {
	File          string
	audiotrack    string
	subtitletrack string
	ispreroll     bool

	cmd *exec.Cmd

	streaming bool
	Restart   bool

	StartTime time.Time
	EndTime   time.Time
}

func main() {
	log.SetFlags(log.Lshortfile | log.LstdFlags)

	config = LoadConfig()
	if config.Angelthump.UpdateTitle {
		err := config.Angelthump.Login()
		if err != nil {
			log.Fatalf("error logging in Angelthump: %v", err)
		}
	}
	strims = NewStrims()

	d := NewDiscord(config.Discord.Token)
	defer d.Close()

	go strims.StartStreaming()

	sigint := make(chan os.Signal, 1)
	signal.Notify(sigint, os.Interrupt, syscall.SIGTERM)
	<-sigint

}

func NewStrims() *Strims {
	return &Strims{
		Queue:        []*Stream{},
		StartTime:    time.Now(),
		CurrentIndex: -1,
		StopStream:   make(chan struct{}, 1),
	}
}

func (s *Strims) AddFile(file, audiotrack, subtitletrack string, ispreroll bool) {
	if audiotrack == "" {
		audiotrack = "0"
	}
	if subtitletrack == "" {
		subtitletrack = "0"
	}
	s.Queue = append(s.Queue, &Stream{
		File:          file,
		audiotrack:    audiotrack,
		subtitletrack: subtitletrack,
		ispreroll:     ispreroll,
		cmd:           createCmd(file, audiotrack, subtitletrack),
	})
}

func (s *Strims) StartStreaming() {

	log.Printf("%d files. starting in 10 seconds...", len(s.Queue))
	time.Sleep(time.Second * 10)
	done := make(chan error, 1)

	for {

		if len(s.Queue) == 0 {
			time.Sleep(time.Second * 5)
			continue
		}

		stream := s.Queue[0]

		if s.SkipNext {
			log.Printf("SKIPPING %s", filepath.Base(stream.File))
			s.SkipNext = false
			s.CurrentStream = nil
			continue
		}

		s.CurrentStream = stream
		log.Printf("STARTING %s", filepath.Base(stream.File))
		if err := stream.Start(); err != nil {
			log.Println(err)
			continue
		}
		go stream.Wait(done)
		if !stream.ispreroll {
			err := config.Angelthump.ChangeTitle(filepath.Base(stream.File))
			if err != nil {
				log.Println(err)
			}
		}

		select {
		case err := <-done:
			if err != nil {
				log.Println(err)
			}
		case <-s.StopStream:
			if err := stream.Kill(); err != nil {
				log.Println(err)
			}
		}

		if stream.Restart {
			stream.Restart = false
			continue
		}

		s.QueueMutex.Lock()
		s.Queue = s.Queue[1:]
		s.QueueMutex.Unlock()
		if stream.ispreroll {
			os.Remove(stream.File)
		}
		log.Printf("%d more in queue", len(s.Queue))
	}
}

func (s *Stream) Start() error {
	s.StartTime = time.Now()
	s.streaming = true

	if err := s.cmd.Start(); err != nil {
		return err
	}
	return nil
}

func (s *Stream) Kill() error {
	s.streaming = false
	if err := s.cmd.Process.Kill(); err != nil {
		return fmt.Errorf("failed to kill process: %v", err)
	}
	return nil
}

func (s *Stream) Wait(done chan error) {
	done <- s.cmd.Wait()
	s.EndTime = time.Now()
	s.streaming = false
}

func createCmd(file, a, s string) *exec.Cmd {
	subarg := ""
	if s != "-1" && config.Stream.Subtitles {
		streams := getStreams(file)
		if strings.Contains(streams, "hdmv_pgs_subtitle") || strings.Contains(streams, "dvd_subtitle") {
			subarg = fmt.Sprintf(`-tune animation -filter_complex "[0:v][0:s:%s]overlay[v]" -map "[v]" -map 0:a:%s `, s, a)
		} else {
			// title := fmt.Sprintf(`-vf "drawtext=fontfile=/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf:text='%s':fontcolor=white:x=(w-text_w)/2:y=16:fontsize=12" `, filepath.Base(file))
			subarg = fmt.Sprintf("-tune animation -vf subtitles='%s':si=%s -map 0:0 -map 0:a:%s ", regexp.QuoteMeta(file), s, a)
		}
	}
	// TODO video, audio and subtitle track stuff
	args := []string{
		"bash", "-c",
		fmt.Sprintf("ffmpeg -re -i '%s' %s-c:v libx264 -pix_fmt yuv420p -preset faster -b:v 3500k -maxrate 3500k -x264-params keyint=60 -c:a aac -strict -2 -ar 44100 -b:a 160k -ac 2 -bufsize 7000k -f flv %s", file, subarg, config.Stream.Ingest),
	}
	log.Println(strings.Join(args, " "))
	return exec.Command(args[0], args[1:]...)
}

func containsFile(streams []*Stream, file string) bool {
	for _, s := range streams {
		if strings.EqualFold(filepath.Base(s.File), file) {
			return true
		}
	}
	return false
}

func getStreams(file string) string {
	args := []string{
		"bash", "-c",
		fmt.Sprintf("ffmpeg -i '%s' 2>&1 | grep 'Stream #'", file),
	}
	log.Println(strings.Join(args, " "))
	cmd := exec.Command(args[0], args[1:]...)
	out, err := cmd.CombinedOutput()
	if err != nil {
		return err.Error()
	}
	return string(out)
}

func createPreroll(file string) (string, error) {
	ass, err := createPrerollAss(file)
	if err != nil {
		return "", err
	}
	defer os.Remove(strings.Replace(ass, "\\", "/", -1))
	m := md5.New()
	io.WriteString(m, fmt.Sprintf("%s%d", file, time.Now().Unix()))
	args := []string{
		"bash",
		"-c",
		fmt.Sprintf("./data/clip.sh %s %x", strings.Replace(ass, "\\", "/", -1), m.Sum(nil)),
	}
	cmd := exec.Command(args[0], args[1:]...)
	if out, err := cmd.CombinedOutput(); err != nil {
		return "", fmt.Errorf("%s, %v", out, err)
	}
	return fmt.Sprintf("./data/tempprerolls/%x.mp4", m.Sum(nil)), nil
}

func createPrerollAss(name string) (string, error) {
	asst, err := ioutil.ReadFile("./data/template.ass")
	if err != nil {
		return "", err
	}
	asst = bytes.Replace(asst, []byte("[[file]]"), []byte(name), -1)
	temp, err := ioutil.TempFile("./data/tempasses", "*.ass")
	if err != nil {
		return "", err
	}
	temp.Write(asst)
	temp.Close()
	return temp.Name(), nil
}

repository: tensei/strimer

repo_name: tensei/strimer

extension: go


text:
@article{Holzer_etal_2016,
    author = {Holzer, Mark and Frants, Marina and Pasquier, Beno\^{i}t},
    title = {The age of iron and iron source attribution in the ocean},
    journal = {Global Biogeochemical Cycles},
    issn = {1944-9224},
    doi = {10.1002/2016GB005418},
    keywords = {marine iron cycle, mean iron age, iron age spectrum, iron source attribution, Green function methods, GEOTRACES},
    year = {2016}
}

repository: briochemc/academic-kickstart

repo_name: briochemc/academic-kickstart


text:
# FindPackage cmake file for Intel SGX SDK

cmake_minimum_required(VERSION 2.8.8)
include(CMakeParseArguments)

set(SGX_FOUND "NO")

if(EXISTS SGX_DIR)
  set(SGX_PATH ${SGX_DIR})
elseif(EXISTS SGX_ROOT)
  set(SGX_PATH ${SGX_ROOT})
elseif(EXISTS $ENV{SGX_SDK})
  set(SGX_PATH $ENV{SGX_SDK})
elseif(EXISTS $ENV{SGX_DIR})
  set(SGX_PATH $ENV{SGX_DIR})
elseif(EXISTS $ENV{SGX_ROOT})
  set(SGX_PATH $ENV{SGX_ROOT})
else()
	if(NOT WIN32)
		message("linux")
		set(SGX_PATH "/opt/intel/sgxsdk")
	else()
		message("windows")
		set(SGX_PATH "C:/PROGRA~2/Intel/INTELS~1")
	endif()
endif()

if(NOT WIN32)
  if(CMAKE_SIZEOF_VOID_P EQUAL 8)
    set(SGX_COMMON_CFLAGS -m64)
    set(SGX_LIBRARY_PATH ${SGX_PATH}/lib64)
    set(SGX_ENCLAVE_SIGNER ${SGX_PATH}/bin/x64/sgx_sign)
    set(SGX_EDGER8R ${SGX_PATH}/bin/x64/sgx_edger8r)
  else()
    set(SGX_COMMON_CFLAGS -m64)
    set(SGX_LIBRARY_PATH ${SGX_PATH}/lib64)
    set(SGX_ENCLAVE_SIGNER ${SGX_PATH}/bin/win32/sgx_sign)
    set(SGX_EDGER8R ${SGX_PATH}/bin/win32/sgx_edger8r)
  endif()
else()
  if(CMAKE_SIZEOF_VOID_P EQUAL 8)
    set(SGX_BINARIES ${SGX_PATH}/bin/x64/Release)
    set(SGX_LIBRARY_PATH ${SGX_PATH}/bin/x64/Release)
    set(SGX_ENCLAVE_SIGNER ${SGX_BINARIES}/sgx_sign.exe)
    set(SGX_EDGER8R ${SGX_PATH}/bin/win32/Release/sgx_edger8r.exe)
  else()
    set(SGX_BINARIES ${SGX_PATH}/bin/win32/Release)
    set(SGX_LIBRARY_PATH ${SGX_PATH}/bin/win32/Release)
    set(SGX_ENCLAVE_SIGNER ${SGX_BINARIES}/sgx_sign.exe)
    set(SGX_EDGER8R ${SGX_BINARIES}/sgx_edger8r.exe)
  endif()
endif()

if(NOT WIN32)
	find_path(SGX_LIBRARY_DIR libsgx_urts.so "${SGX_LIBRARY_PATH}" NO_DEFAULT_PATH)
else()
	find_path(SGX_LIBRARY_DIR_TMP sgx_urts.lib "${SGX_LIBRARY_PATH}" NO_DEFAULT_PATH)
  file(TO_NATIVE_PATH ${SGX_LIBRARY_DIR_TMP} SGX_LIBRARY_DIR)
endif()
find_path(SGX_INCLUDE_DIR sgx.h "${SGX_PATH}/include" NO_DEFAULT_PATH)

if(SGX_INCLUDE_DIR AND SGX_LIBRARY_DIR)
  set(SGX_FOUND "YES")
  if(NOT WIN32)
    set(SGX_INCLUDE_DIR "${SGX_PATH}/include" CACHE PATH "Intel SGX include directory" FORCE)
    set(SGX_TLIBC_INCLUDE_DIR "${SGX_INCLUDE_DIR}/tlibc" CACHE PATH "Intel SGX tlibc include directory" FORCE)
    set(SGX_LIBCXX_INCLUDE_DIR "${SGX_INCLUDE_DIR}/libcxx" CACHE PATH "Intel SGX libcxx include directory" FORCE)
  else()
    set(SGX_INCLUDE_DIR "${SGX_PATH}/include" CACHE PATH "Intel SGX include directory" FORCE)
    set(SGX_TLIBC_INCLUDE_DIR "${SGX_INCLUDE_DIR}/tlibc" CACHE PATH "Intel SGX tlibc include directory" FORCE)
    set(SGX_LIBCXX_INCLUDE_DIR "${SGX_INCLUDE_DIR}/libc++" CACHE PATH "Intel SGX tlibc include directory" FORCE)
    set(SGX_LIBSTDCXX_INCLUDE_DIR "${SGX_INCLUDE_DIR}/stdc++" CACHE PATH "Intel SGX libcxx include directory" FORCE)
  endif()
  set(ENCLAVE_SGX_INCLUDE_DIRS ${SGX_INCLUDE_DIR} ${SGX_TLIBC_INCLUDE_DIR} ${SGX_LIBCXX_INCLUDE_DIR} ${SGX_LIBSTDCXX_INCLUDE_DIR})
  set(HOST_SGX_INCLUDE_DIRS ${SGX_INCLUDE_DIR} )
  mark_as_advanced(SGX_INCLUDE_DIR SGX_LIBRARY_DIR SGX_TLIBC_INCLUDE_DIR SGX_LIBC_INCLUDE_DIR SGX_LIBCXX_INCLUDE_DIR SGX_LIBSTDCXX_INCLUDE_DIR)
  message(STATUS "Found Intel SGX SDK.")
endif()

if(SGX_FOUND)
  set(SGX_HW
      ON
      CACHE BOOL "Run SGX on hardware, OFF for simulation.")
  set(SGX_MODE
      PreRelease
      CACHE STRING "SGX build mode: Debug; PreRelease; Release.")

  if(SGX_HW)
    set(SGX_URTS_LIB sgx_urts)
    set(SGX_USVC_LIB sgx_uae_service)
    set(SGX_TRTS_LIB sgx_trts)
    set(SGX_TSVC_LIB sgx_tservice)
  else()
    set(SGX_URTS_LIB sgx_urts_sim)
    set(SGX_USVC_LIB sgx_uae_service_sim)
    set(SGX_TRTS_LIB sgx_trts_sim)
    set(SGX_TSVC_LIB sgx_tservice_sim)
  endif()

  if(NOT WIN32)
    if(SGX_MODE STREQUAL "Debug")
      set(SGX_COMMON_CFLAGS
          "${SGX_COMMON_CFLAGS} -O0 -g -DDEBUG -UNDEBUG -UEDEBUG")
    elseif(SGX_MODE STREQUAL "PreRelease")
      set(SGX_COMMON_CFLAGS "${SGX_COMMON_CFLAGS} -O2 -UDEBUG -DNDEBUG -DEDEBUG")
    elseif(SGX_MODE STREQUAL "Release")
      set(SGX_COMMON_CFLAGS "${SGX_COMMON_CFLAGS} -O2 -UDEBUG -DNDEBUG -UEDEBUG")
    else()
      message(
        FATAL_ERROR "SGX_MODE ${SGX_MODE} is not Debug, PreRelease or Release.")
    endif()
    set(ENCLAVE_INC_FLAGS
        "-I${SGX_INCLUDE_DIR} -I${SGX_TLIBC_INCLUDE_DIR} -I${SGX_LIBCXX_INCLUDE_DIR}"
    )
    set(ENCLAVE_C_FLAGS
        "${SGX_COMMON_CFLAGS} -nostdinc -fvisibility=hidden -fpie -fstack-protector-strong ${ENCLAVE_INC_FLAGS}"
    )
    set(ENCLAVE_CXX_FLAGS "${ENCLAVE_C_FLAGS} -nostdinc++")

    set(APP_INC_FLAGS "-I${SGX_INCLUDE_DIR}")
    set(APP_C_FLAGS "${SGX_COMMON_CFLAGS} -fPIC -Wno-attributes ${APP_INC_FLAGS}")
    set(APP_CXX_FLAGS "${APP_C_FLAGS}")
  else()
    if(SGX_MODE STREQUAL "Debug")
      set(SGX_COMMON_CFLAGS "${SGX_COMMON_CFLAGS}")
    elseif(SGX_MODE STREQUAL "PreRelease")
      set(SGX_COMMON_CFLAGS "${SGX_COMMON_CFLAGS}")
    elseif(SGX_MODE STREQUAL "Release")
      set(SGX_COMMON_CFLAGS "${SGX_COMMON_CFLAGS}")
    else()
      message(
        FATAL_ERROR "SGX_MODE ${SGX_MODE} is not Debug, PreRelease or Release.")
    endif()
    set(ENCLAVE_INC_FLAGS
        -I${SGX_INCLUDE_DIR} -I${SGX_TLIBC_INCLUDE_DIR} -I${SGX_LIBCXX_INCLUDE_DIR}
    )
    set(ENCLAVE_C_FLAGS
        "${SGX_COMMON_CFLAGS} ${ENCLAVE_INC_FLAGS}"
    )
    set(ENCLAVE_CXX_FLAGS ${ENCLAVE_C_FLAGS})
    set(APP_INC_FLAGS "-I${SGX_INCLUDE_DIR}")
    set(APP_C_FLAGS "${SGX_COMMON_CFLAGS} ${APP_INC_FLAGS}")
    set(APP_CXX_FLAGS "${APP_C_FLAGS}")

  endif()

  function(_build_trusted_edl_header PARENT_TARGET edl SEARCH_PATHS use_prefix)

    get_filename_component(EDL_NAME ${edl} NAME_WE)
    get_filename_component(EDL_ABSPATH ${edl} ABSOLUTE)
    set(EDL_T_C "${CMAKE_CURRENT_BINARY_DIR}/${EDL_NAME}_t.h")
    set(EDL_T_H "${CMAKE_CURRENT_BINARY_DIR}/${EDL_NAME}_t.h")
    set(EDL_TT_H "${CMAKE_CURRENT_BINARY_DIR}/trusted/${EDL_NAME}_t.h")
    list(APPEND SEARCH_PATHS ${SGX_INCLUDE_DIR})

    if(NOT WIN32)
      string(REPLACE ";" ":" SEARCH_PATHS "${SEARCH_PATHS}")
    endif()
    if(${use_prefix})
      set(USE_PREFIX "--use-prefix")
    endif()

    add_custom_target(
      ${target}-${EDL_NAME}-edlhdr ALL
      ${SGX_EDGER8R} ${USE_PREFIX} --cpp --trusted --header-only "${EDL_ABSPATH}" --search-path "${SEARCH_PATHS}"
      COMMAND cmake -E copy_if_different ${EDL_T_H} ${EDL_TT_H}
      BYPRODUCTS ${EDL_TT_H}
      DEPENDS ${EDL_ABSPATH}
      WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})

    set_property(
      DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES
      ${EDL_T_H} ${EDL_TT_H})

      add_dependencies(${PARENT_TARGET} ${target}-${EDL_NAME}-edlhdr)

  endfunction()

  function(add_trusted_header target)
    set(optionArgs USE_PREFIX)
    set(oneValueArgs EDL LDSCRIPT)
    set(multiValueArgs SRCS HEADER_ONLY_LIBS EDL_SEARCH_PATHS)

    cmake_parse_arguments("SGX" "${optionArgs}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})

    get_filename_component(EDL_NAME ${SGX_EDL} NAME_WE)
    get_filename_component(EDL_ABSPATH ${SGX_EDL} ABSOLUTE)
    set(EDL_T_H "${CMAKE_CURRENT_BINARY_DIR}/${EDL_NAME}_t.h")
    set(EDL_TT_H "${CMAKE_CURRENT_BINARY_DIR}/trusted/${EDL_NAME}_t.h")

    list(APPEND SGX_EDL_SEARCH_PATHS ${SGX_INCLUDE_DIR})

    if(NOT WIN32)
      string(REPLACE ";" ":" SGX_EDL_SEARCH_PATHS "${SGX_EDL_SEARCH_PATHS}")
    endif()
    if(${SGX_USE_PREFIX})
      set(USE_PREFIX "--use-prefix")
    endif()

    add_custom_command(
      OUTPUT ${EDL_TT_H}
      BYPRODUCTS ${EDL_T_H}
      COMMAND ${SGX_EDGER8R} ${USE_PREFIX} --cpp --trusted --header-only "${EDL_ABSPATH}" --search-path "${SGX_EDL_SEARCH_PATHS}"
      COMMAND cmake -E copy_if_different ${EDL_T_H} ${EDL_TT_H}
      DEPENDS ${EDL_ABSPATH}
      WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})

    add_custom_target(${target}-create-header ALL DEPENDS ${EDL_TT_H})
    add_library(${target} INTERFACE)
    add_dependencies(${target} ${target}-create-header)
    target_include_directories(${target} INTERFACE ${CMAKE_CURRENT_BINARY_DIR})

    set_property(
      DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES
      ${EDL_T_H} ${EDL_TT_H})

  endfunction()

  function(add_untrusted_header target)
    set(optionArgs USE_PREFIX)
    set(oneValueArgs EDL LDSCRIPT)
    set(multiValueArgs SRCS HEADER_ONLY_LIBS EDL_SEARCH_PATHS)

    cmake_parse_arguments("SGX" "${optionArgs}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})

    get_filename_component(EDL_NAME ${SGX_EDL} NAME_WE)
    get_filename_component(EDL_ABSPATH ${SGX_EDL} ABSOLUTE)
    set(EDL_T_H "${CMAKE_CURRENT_BINARY_DIR}/${EDL_NAME}_u.h")
    set(EDL_TT_H "${CMAKE_CURRENT_BINARY_DIR}/untrusted/${EDL_NAME}_u.h")

    list(APPEND SGX_EDL_SEARCH_PATHS ${SGX_INCLUDE_DIR})

    if(NOT WIN32)
      string(REPLACE ";" ":" SGX_EDL_SEARCH_PATHS "${SGX_EDL_SEARCH_PATHS}")
    endif()
    if(${SGX_USE_PREFIX})
      set(USE_PREFIX "--use-prefix")
    endif()

    add_custom_command(
      OUTPUT ${EDL_TT_H}
      BYPRODUCTS ${EDL_T_H}
      COMMAND ${SGX_EDGER8R} ${USE_PREFIX} --cpp --untrusted --header-only "${EDL_ABSPATH}" --search-path "${SGX_EDL_SEARCH_PATHS}"
      COMMAND cmake -E copy_if_different ${EDL_T_H} ${EDL_TT_H}
      DEPENDS ${EDL_ABSPATH}
      WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})

    add_custom_target(${target}-create-header ALL DEPENDS ${EDL_TT_H})
    add_library(${target} INTERFACE)
    add_dependencies(${target} ${target}-create-header)
    target_include_directories(${target} INTERFACE ${CMAKE_CURRENT_BINARY_DIR})

    set_property(
      DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES
      ${EDL_T_H} ${EDL_TT_H})

  endfunction()

  function(_build_trusted_edl_headers PARENT_TARGET edl SEARCH_PATHS use_prefix)
    set(els ${edl})
    separate_arguments(els)

    foreach(tgt ${els})
      _build_trusted_edl_header(${PARENT_TARGET} ${tgt} ${SEARCH_PATHS} ${use_prefix})
    endforeach()
  endfunction()

  # build trusted static library to be linked into enclave library
  function(add_trusted_library target)
    set(optionArgs USE_PREFIX)
    set(oneValueArgs EDL LDSCRIPT)
    set(multiValueArgs SRCS HEADER_ONLY_LIBS EDL_SEARCH_PATHS)

    cmake_parse_arguments("SGX" "${optionArgs}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})

    add_library(${target} STATIC ${SGX_SRCS})
    if(NOT "${SGX_EDL}" STREQUAL "")
      _build_trusted_edl_headers(${target} ${SGX_EDL} "${SGX_EDL_SEARCH_PATHS}" ${SGX_USE_PREFIX})
    endif()

    set_target_properties(${target} PROPERTIES COMPILE_FLAGS
                                               ${ENCLAVE_CXX_FLAGS})
    target_include_directories(${target} PRIVATE ${CMAKE_CURRENT_BINARY_DIR})

    target_link_libraries(${target} PRIVATE ${SGX_HEADER_ONLY_LIBS})
  endfunction()

  function(enclave_edl_library target edl edl_search_paths use_prefix edl_include_path)
    get_filename_component(EDL_NAME ${edl} NAME_WE)
    get_filename_component(EDL_ABSPATH ${edl} ABSOLUTE)
    set(EDL_T_C "${CMAKE_CURRENT_BINARY_DIR}/${EDL_NAME}_t.c")
    set(EDL_TT_C "${CMAKE_CURRENT_BINARY_DIR}/trusted/${EDL_NAME}_t.c")
    set(EDL_T_H "${CMAKE_CURRENT_BINARY_DIR}/${EDL_NAME}_t.h")
    set(EDL_TT_H "${CMAKE_CURRENT_BINARY_DIR}/trusted/${EDL_NAME}_t.h")

    set(SEARCH_PATHS "")
    foreach(path ${edl_search_paths})
      get_filename_component(ABSPATH ${path} ABSOLUTE)
      list(APPEND SEARCH_PATHS "${ABSPATH}")
    endforeach()
    list(APPEND SEARCH_PATHS ${SGX_INCLUDE_DIR})
    if(NOT WIN32)
      string(REPLACE ";" ":" SEARCH_PATHS "${SEARCH_PATHS}" )
    endif()
    if(${use_prefix})
      set(USE_PREFIX "--use-prefix")
    endif()

    add_custom_command(
      OUTPUT ${EDL_TT_H} ${EDL_TT_C}
      BYPRODUCTS ${EDL_T_H} ${EDL_T_C}
      COMMAND ${SGX_EDGER8R} ${USE_PREFIX} --cpp --trusted "${EDL_ABSPATH}" --search-path "${SEARCH_PATHS}"
        WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
      COMMAND cmake -E copy_if_different ${EDL_T_H} ${EDL_TT_H}
      COMMAND cmake -E copy_if_different ${EDL_T_C} ${EDL_TT_C}
        WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})

    add_library(${target} STATIC ${EDL_TT_H} ${EDL_TT_C})
    set_target_properties(${target} PROPERTIES COMPILE_FLAGS ${ENCLAVE_C_FLAGS})
    set(INCLUDE_PATHS ${CMAKE_CURRENT_BINARY_DIR} ${ENCLAVE_SGX_INCLUDE_DIRS} ${edl_include_path})
    separate_arguments(INCLUDE_PATHS)
    target_include_directories(${target} PUBLIC ${CMAKE_CURRENT_BINARY_DIR} PRIVATE ${INCLUDE_PATHS} ${ENCLAVE_LIBCXX_INCLUDES})
    target_compile_definitions(${target} PRIVATE ${ENCLAVE_DEFINES})
    target_compile_options(${target} PRIVATE ${ENCLAVE_COMPILE_OPTIONS})

    set_property(
      DIRECTORY
      APPEND
      PROPERTY ADDITIONAL_MAKE_CLEAN_FILES
      ${EDL_T_H}
      ${EDL_TT_H}
      ${EDL_T_C}
      ${EDL_TT_C})
  endfunction()

  function(host_edl_library target edl edl_search_paths use_prefix edl_include_path)
    get_filename_component(EDL_NAME ${edl} NAME_WE)
    get_filename_component(EDL_ABSPATH ${edl} ABSOLUTE)
    set(EDL_U_C "${CMAKE_CURRENT_BINARY_DIR}/${EDL_NAME}_u.cpp")
    set(EDL_UT_C "${CMAKE_CURRENT_BINARY_DIR}/untrusted/${EDL_NAME}_u.cpp")
    set(EDL_U_H "${CMAKE_CURRENT_BINARY_DIR}/${EDL_NAME}_u.h")
    set(EDL_UT_H "${CMAKE_CURRENT_BINARY_DIR}/untrusted/${EDL_NAME}_u.h")

    set(SEARCH_PATHS "")
    foreach(path ${edl_search_paths})
      get_filename_component(ABSPATH ${path} ABSOLUTE)
      list(APPEND SEARCH_PATHS "${ABSPATH}")
    endforeach()
    list(APPEND SEARCH_PATHS ${SGX_INCLUDE_DIR})
    if(NOT WIN32)
      string(REPLACE ";" ":" SEARCH_PATHS "${SEARCH_PATHS}" )
    endif()
    if(${use_prefix})
      set(USE_PREFIX "--use-prefix")
    endif()

    add_custom_command(
      OUTPUT ${EDL_UT_H} ${EDL_UT_C}
      BYPRODUCTS ${EDL_U_H} ${EDL_U_C}
      COMMAND ${SGX_EDGER8R} ${USE_PREFIX} --cpp --untrusted "${EDL_ABSPATH}" --search-path "${SEARCH_PATHS}"
        WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
      COMMAND cmake -E copy_if_different ${EDL_U_H} ${EDL_UT_H}
      COMMAND cmake -E copy_if_different ${EDL_U_C} ${EDL_UT_C}
        WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})

    add_library(${target} STATIC ${EDL_UT_H} ${EDL_UT_C})
    #set_target_properties(${target} PROPERTIES COMPILE_FLAGS ${ENCLAVE_C_FLAGS})
    set(INCLUDE_PATHS ${CMAKE_CURRENT_BINARY_DIR} ${HOST_SGX_INCLUDE_DIRS} ${edl_include_path})
    separate_arguments(INCLUDE_PATHS)
    target_include_directories(${target} PUBLIC ${CMAKE_CURRENT_BINARY_DIR} PRIVATE ${INCLUDE_PATHS})
    target_compile_definitions(${target} PRIVATE ${HOST_DEFINES})
    target_compile_options(${target} PRIVATE ${HOST_COMPILE_OPTIONS})

    set_property(
      DIRECTORY
      APPEND
      PROPERTY ADDITIONAL_MAKE_CLEAN_FILES
      ${EDL_U_H}
      ${EDL_UT_H}
      ${EDL_U_C}
      ${EDL_UT_C})
  endfunction()

  # build enclave shared library
  function(add_enclave_library target)
    set(optionArgs USE_PREFIX)
    set(oneValueArgs EDL_IMPL LDSCRIPT)
    set(multiValueArgs SRCS TRUSTED_LIBS HEADER_ONLY_LIBS EDL EDL_SEARCH_PATHS EDL_INCLUDE_PATH)
    cmake_parse_arguments("SGX" "${optionArgs}" "${oneValueArgs}"
                          "${multiValueArgs}" ${ARGN})

    if(NOT "${SGX_EDL_IMPL}" STREQUAL "")
      if("${SGX_EDL_SEARCH_PATHS}" STREQUAL "")
        message(
          FATAL_ERROR
            "${target}: SGX enclave edl file search paths are not provided!")
      endif()
      if(NOT "${SGX_LDSCRIPT}" STREQUAL "")
        get_filename_component(LDS_ABSPATH ${SGX_LDSCRIPT} ABSOLUTE)
        set(LDSCRIPT_FLAG "-Wl,--version-script=${LDS_ABSPATH}")
      endif()
      add_library(${target} SHARED ${SGX_SRCS})
      enclave_edl_library(${target}-edlobj ${SGX_EDL_IMPL} "${SGX_EDL_SEARCH_PATHS}" ${SGX_USE_PREFIX} "${SGX_EDL_INCLUDE_PATH}")
      target_link_libraries(${target} PRIVATE ${target}-edlobj ${SGX_TRUSTED_LIBS} ${SGX_HEADER_ONLY_LIBS})
    else()
      add_library(${target} SHARED ${SGX_SRCS})
    endif()

    if(NOT "${SGX_EDL}" STREQUAL "")
      _build_trusted_edl_headers(${target} ${SGX_EDL} "${SGX_EDL_SEARCH_PATHS}" ${SGX_USE_PREFIX})
    endif()

    set_target_properties(${target} PROPERTIES COMPILE_FLAGS
                                               ${ENCLAVE_CXX_FLAGS})
    target_include_directories(${target} PRIVATE ${CMAKE_CURRENT_BINARY_DIR})

    set(TLIB_LIST "")
    foreach(TLIB ${SGX_TRUSTED_LIBS})
      string(APPEND TLIB_LIST "$<TARGET_FILE:${TLIB}> ")
      add_dependencies(${target} ${TLIB})
    endforeach()

    if(NOT WIN32)
    set(SGX_LINKER_FLAGS "${SGX_COMMON_CFLAGS} \
      -Wl,--no-undefined -nostdlib -nodefaultlibs -nostartfiles -L${SGX_LIBRARY_PATH} \
      -Wl,--whole-archive  -lsgx_tstdc -l${SGX_TRTS_LIB} -l${SGX_TSVC_LIB}  -lsgx_tcrypto  -lsgx_tcxx -Wl,--no-whole-archive \
      -Wl,--start-group ${TLIB_LIST} -l${SGX_URTS_LIB} -lsgx_tkey_exchange -Wl,--end-group \
      -Wl,-Bstatic -Wl,-Bsymbolic -Wl,--no-undefined \
      -Wl,-pie,-eenclave_entry -Wl,--export-dynamic \
      ${LDSCRIPT_FLAG} \
      -Wl,--defsym,__ImageBase=0")
    else()
      target_link_options(${target}
      PRIVATE
        #/MANIFEST
        #/LTCG:incremental
        /NOENTRY
        /NXCOMPAT
        /PDB:${CMAKE_CURRENT_BINARY_DIR}/${target}.pdb
        /DYNAMICBASE
        "sgx_tcxx.lib"
        "sgx_trts.lib"
        "sgx_tstdc.lib"
        "sgx_tservice.lib"
        "sgx_tcrypto.lib"
        /DEBUG
        /DLL
        /OPT:REF
        #/PGD:${CMAKE_CURRENT_BINARY_DIR}/${target}.pgd
        #/MANIFESTUAC:"level='asInvoker' uiAccess='false'"
        #/ManifestFile:${CMAKE_CURRENT_BINARY_DIR}/${target}.dll.intermediate.manifest
        /OPT:ICF
        /ERRORREPORT:PROMPT
        /NOLOGO
        /NODEFAULTLIB
        /TLBID:1
        /LIBPATH:${SGX_LIBRARY_PATH})
    endif()

    target_link_libraries(
      ${target}
      PRIVATE
      ${SGX_HEADER_ONLY_LIBS}
      ${SGX_LINKER_FLAGS})
  endfunction()

  # sign the enclave, according to configurations one-step or two-step signing
  # will be performed. default one-step signing output enclave name is
  # target.signed.so, change it with OUTPUT option.
  function(enclave_sign target)
    set(oneValueArgs KEY CONFIG OUTPUT)
    cmake_parse_arguments("SGX" "" "${oneValueArgs}" "" ${ARGN})
    if("${SGX_CONFIG}" STREQUAL "")
      message(FATAL_ERROR "${target}: SGX enclave config is not provided!")
    endif()
    if("${SGX_KEY}" STREQUAL "")
      if(NOT SGX_HW OR NOT SGX_MODE STREQUAL "Release")
        message(FATAL_ERROR "Private key used to sign enclave is not provided!")
      endif()
    else()
      get_filename_component(KEY_ABSPATH ${SGX_KEY} ABSOLUTE)
    endif()
    if("${SGX_OUTPUT}" STREQUAL "")
      if(WIN32)
        set(OUTPUT_NAME "${target}.signed.dll")
      else()
      set(OUTPUT_NAME "${target}.signed.so")
      endif()
    else()
      set(OUTPUT_NAME ${SGX_OUTPUT})
    endif()

    get_filename_component(CONFIG_ABSPATH ${SGX_CONFIG} ABSOLUTE)

    if(SGX_HW AND SGX_MODE STREQUAL "Release")
      message("if(SGX_HW AND SGX_MODE STREQUAL Release")
      add_custom_target(
        ${target}-sign ALL
        COMMAND
          ${SGX_ENCLAVE_SIGNER} gendata -config ${CONFIG_ABSPATH} -enclave
          $<TARGET_FILE:${target}> -out
          $<TARGET_FILE_DIR:${target}>/${target}_hash.hex
        COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --cyan
                "SGX production enclave first step signing finished, \
    use ${CMAKE_CURRENT_BINARY_DIR}/${target}_hash.hex for second step"
        WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
    else()

    add_custom_target(
      ${target}-sign1 ALL
      echo
      ${SGX_ENCLAVE_SIGNER}
      sign
      -key
      ${KEY_ABSPATH}
      -config
      ${CONFIG_ABSPATH}
      -enclave
      $<TARGET_FILE:${target}>
      -out
      $<TARGET_FILE_DIR:${target}>/${OUTPUT_NAME}
      WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})

      add_custom_target(
        ${target}-sign ALL
        ${SGX_ENCLAVE_SIGNER}
        sign
        -key
        ${KEY_ABSPATH}
        -config
        ${CONFIG_ABSPATH}
        -enclave
        $<TARGET_FILE:${target}>
        -out
        $<TARGET_FILE_DIR:${target}>/${OUTPUT_NAME}
        WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
    endif()

    set(CLEAN_FILES
        "$<TARGET_FILE_DIR:${target}>/${OUTPUT_NAME};$<TARGET_FILE_DIR:${target}>/${target}_hash.hex"
    )
    set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES
                                           "${CLEAN_FILES}")
  endfunction()

  function(_build_untrusted_edl_header PARENT_TARGET edl SEARCH_PATHS use_prefix)
    get_filename_component(EDL_NAME ${edl} NAME_WE)
    get_filename_component(EDL_ABSPATH ${edl} ABSOLUTE)
    set(EDL_T_H "${CMAKE_CURRENT_BINARY_DIR}/${EDL_NAME}_u.h")
    set(EDL_TT_H "${CMAKE_CURRENT_BINARY_DIR}/untrusted/${EDL_NAME}_u.h")
    list(APPEND SEARCH_PATHS ${SGX_INCLUDE_DIR})
    if(NOT WIN32)
      string(REPLACE ";" ":" SEARCH_PATHS "${SEARCH_PATHS}")
    endif()
    if(${use_prefix})
      set(USE_PREFIX "--use-prefix")
    endif()

    add_custom_target(
      ${target}-${EDL_NAME}-edlhdr ALL
      ${SGX_EDGER8R} ${USE_PREFIX} --cpp --untrusted --header-only "${EDL_ABSPATH}" --search-path "${SEARCH_PATHS}"
      COMMAND cmake -E copy_if_different ${EDL_T_H} ${EDL_TT_H}
      BYPRODUCTS ${EDL_TT_H}
      DEPENDS ${EDL_ABSPATH}
      WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})

    set_property(
      DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES
      ${EDL_T_H} ${EDL_TT_H})

      add_dependencies(${PARENT_TARGET} ${target}-${EDL_NAME}-edlhdr)

  endfunction()

  function(_build_untrusted_edl_headers PARENT_TARGET edl SEARCH_PATHS use_prefix)
    set(els ${edl})
    separate_arguments(els)

    foreach(tgt ${els})
      _build_untrusted_edl_header(${PARENT_TARGET} ${tgt} ${SEARCH_PATHS} ${use_prefix})
    endforeach()
  endfunction()

  function(_build_untrusted_edl_impl PARENT_TARGET SGX_EDL_IMPL SEARCH_PATHS use_prefix HEADER_ONLY_LIBS EDL_INCLUDE_PATHS)
    list(APPEND SEARCH_PATHS ${SGX_INCLUDE_DIR})
    if(NOT WIN32)
      string(REPLACE ";" ":" SEARCH_PATHS "${SEARCH_PATHS}")
    endif()
    foreach(EDL ${SGX_EDL_IMPL})
      get_filename_component(EDL_NAME ${EDL} NAME_WE)
      get_filename_component(EDL_ABSPATH ${EDL} ABSOLUTE)
      set(EDL_U_C "${CMAKE_CURRENT_BINARY_DIR}/${EDL_NAME}_u.c")
      set(EDL_U_H "${CMAKE_CURRENT_BINARY_DIR}/${EDL_NAME}_u.h")
      set(EDL_UU_C "${CMAKE_CURRENT_BINARY_DIR}/untrusted/${EDL_NAME}_u.c")
      set(EDL_UU_H "${CMAKE_CURRENT_BINARY_DIR}/untrusted/${EDL_NAME}_u.h")

      if(${use_prefix})
        set(USE_PREFIX "--use-prefix")
      endif()

      add_custom_target(
        ${PARENT_TARGET}-${EDL_NAME}-edlhdr ALL
        COMMAND ${SGX_EDGER8R} ${USE_PREFIX} --cpp --untrusted "${EDL_ABSPATH}" --search-path "${SEARCH_PATHS}"
        COMMAND cmake -E copy_if_different ${EDL_U_H} ${EDL_UU_H}
        COMMAND cmake -E copy_if_different ${EDL_U_C} ${EDL_UU_C}
        BYPRODUCTS ${EDL_UU_H} ${EDL_UU_C}
        DEPENDS ${EDL_ABSPATH}
        WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})

      set_property(
        DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES
        ${EDL_U_H} ${EDL_UU_H} ${EDL_U_C} ${EDL_UU_C})

      add_dependencies(${PARENT_TARGET} ${PARENT_TARGET}-${EDL_NAME}-edlhdr)

      add_library(${PARENT_TARGET}-${EDL_NAME}-edlc STATIC ${EDL_UU_H} ${EDL_UU_C})
      target_include_directories(${PARENT_TARGET}-${EDL_NAME}-edlc PRIVATE "${CMAKE_CURRENT_BINARY_DIR}" "${CMAKE_CURRENT_BINARY_DIR}/untrusted" "${SGX_INCLUDE_DIR}" "${EDL_INCLUDE_PATHS}")
      target_link_libraries(${PARENT_TARGET}-${EDL_NAME}-edlc PRIVATE ${HEADER_ONLY_LIBS})

      list(APPEND EDL_EDLCS ${PARENT_TARGET}-${EDL_NAME}-edlc)
      set(EDL_EDLCS ${EDL_EDLCS} PARENT_SCOPE)
    endforeach()
  endfunction()

  function(add_untrusted_library target mode)
    set(optionArgs USE_PREFIX)
    set(oneValueArgs EDL LDSCRIPT)
    set(multiValueArgs SRCS HEADER_ONLY_LIBS EDL_SEARCH_PATHS EDL_IMPL EDL_INCLUDE_PATHS)
    cmake_parse_arguments("SGX" "${optionArgs}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})

    if(NOT "${mode}" STREQUAL "")
    set(mode STATIC)
    endif()
    add_library(${target} ${mode} ${SGX_SRCS})
    if(NOT "${SGX_EDL}" STREQUAL "")
      _build_untrusted_edl_headers(${target} ${SGX_EDL} "${SGX_EDL_SEARCH_PATHS}" ${SGX_USE_PREFIX})
    endif()

    set(EDL_EDLCS "")
    if(NOT "${SGX_EDL_IMPL}" STREQUAL "")
      _build_untrusted_edl_impl(${target} ${SGX_EDL_IMPL} "${SGX_EDL_SEARCH_PATHS}" ${SGX_USE_PREFIX} "${SGX_HEADER_ONLY_LIBS}" "${SGX_EDL_INCLUDE_PATHS}")
    endif()

    set_target_properties(${target} PROPERTIES COMPILE_FLAGS ${APP_CXX_FLAGS})
    target_include_directories(${target} PRIVATE ${CMAKE_CURRENT_BINARY_DIR} /usr/include ${SGX_INCLUDE_DIR})
    target_link_libraries(${target}  PUBLIC ${EDL_EDLCS} PRIVATE ${SGX_HEADER_ONLY_LIBS})
  endfunction()

  function(add_untrusted_executable_simple target)
    set(optionArgs USE_PREFIX)
    set(multiValueArgs SRCS HEADER_ONLY_LIBS EDL_SEARCH_PATHS EDL EDL_IMPL EDL_INCLUDE_PATHS)
    cmake_parse_arguments("SGX" "${optionArgs}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})

    add_executable(${target} ${SGX_SRCS})
    if(NOT "${SGX_EDL}" STREQUAL "")
      _build_untrusted_edl_headers(${target} ${SGX_EDL} "${SGX_EDL_SEARCH_PATHS}" ${SGX_USE_PREFIX})
    endif()

    set(EDL_EDLCS "")
    if(NOT "${SGX_EDL_IMPL}" STREQUAL "")
      _build_untrusted_edl_impl(${target} ${SGX_EDL_IMPL} "${SGX_EDL_SEARCH_PATHS}" ${SGX_USE_PREFIX} "${SGX_HEADER_ONLY_LIBS}" "${SGX_EDL_INCLUDE_PATHS}")
    endif()

    set_target_properties(${target} PROPERTIES COMPILE_FLAGS ${APP_CXX_FLAGS})
    target_include_directories(${target} PRIVATE ${CMAKE_CURRENT_BINARY_DIR} /usr/include ${SGX_INCLUDE_DIR})
    target_link_libraries(${target} PUBLIC ${EDL_EDLCS} PRIVATE ${SGX_HEADER_ONLY_LIBS})
  endfunction()

  function(add_untrusted_executable target)
    set(optionArgs USE_PREFIX)
    set(multiValueArgs SRCS EDL EDL_SEARCH_PATHS)
    cmake_parse_arguments("SGX" "${optionArgs}" "" "${multiValueArgs}" ${ARGN})
    if("${SGX_EDL}" STREQUAL "")
      message(FATAL_ERROR "SGX enclave edl file is not provided!")
    endif()
    if("${SGX_EDL_SEARCH_PATHS}" STREQUAL "")
      message(FATAL_ERROR "SGX enclave edl file search paths are not provided!")
    endif()

    set(EDL_U_SRCS "")
    foreach(EDL ${SGX_EDL})
      get_filename_component(EDL_NAME ${EDL} NAME_WE)
      get_filename_component(EDL_ABSPATH ${EDL} ABSOLUTE)
      set(EDL_U_C "${CMAKE_CURRENT_BINARY_DIR}/${EDL_NAME}_u.c")
      set(SEARCH_PATHS "")
      foreach(path ${SGX_EDL_SEARCH_PATHS})
        get_filename_component(ABSPATH ${path} ABSOLUTE)
        list(APPEND SEARCH_PATHS "${ABSPATH}")
      endforeach()
      list(APPEND SEARCH_PATHS ${SGX_INCLUDE_DIR})
      if(NOT WIN32)
        string(REPLACE ";" ":" SEARCH_PATHS "${SEARCH_PATHS}")
      endif()
      if(${SGX_USE_PREFIX})
        set(USE_PREFIX "--use-prefix")
      endif()
      add_custom_command(
        OUTPUT ${EDL_U_C}
        COMMAND ${SGX_EDGER8R} ${USE_PREFIX} --cpp --untrusted "${EDL_ABSPATH}" --search-path "${SEARCH_PATHS}"
        WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})

      list(APPEND EDL_U_SRCS ${EDL_U_C})
    endforeach()

    add_executable(${target} ${SGX_SRCS} ${EDL_U_SRCS})
    set_target_properties(${target} PROPERTIES COMPILE_FLAGS ${APP_CXX_FLAGS})
    target_include_directories(${target} PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
    target_link_libraries(
      ${target}
      "${SGX_COMMON_CFLAGS} \
                                         -L${SGX_LIBRARY_PATH} \
                                         -l${SGX_URTS_LIB} \
                                         -l${SGX_USVC_LIB} \
                                         -lsgx_ukey_exchange \
                                         -lpthread")

    set_property(
      DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES
                                "${CMAKE_CURRENT_BINARY_DIR}/${EDL_NAME}_u.h")
  endfunction()

else(SGX_FOUND)
  message(WARNING "Intel SGX SDK not found!")
  if(SGX_FIND_REQUIRED)
    message(FATAL_ERROR "Could NOT find Intel SGX SDK!")
  endif()
endif(SGX_FOUND)

branch_name: refs/heads/main

extension: cmake