@prefix :        <https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/ComputerKeyboard.ttl#> .
@prefix owl:     <http://www.w3.org/2002/07/owl#> .
@prefix rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs:    <http://www.w3.org/2000/01/rdf-schema#> .
@prefix schema:  <http://schema.org/> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix xsd:     <http://www.w3.org/2001/XMLSchema#> .
@prefix x3d:     <https://www.web3d.org/specifications/x3d-4.0.xsd#> .
@prefix x3do:    <https://www.web3d.org/specifications/X3dOntology4.0#> .

:X3D a owl:NamedIndividual, x3do:X3D ;
  x3do:hasHead :head ;
  x3do:hasScene :Scene ;
  x3do:profile 'Immersive' ;
  x3do:version '3.0' ;
  x3do:noNamespaceSchemaLocation 'https://www.web3d.org/specifications/x3d-3.0.xsd' .
:head a owl:NamedIndividual, x3do:head ;
  x3do:hasParent :X3D ;
  x3do:hasMeta :meta_1_1, :meta_1_2, :meta_1_3, :meta_1_4, :meta_1_5, :meta_1_6, :meta_1_7, :meta_1_8 .
:meta_1_1 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'ComputerKeyboard.x3d' ;
  x3do:name 'title' .
:meta_1_2 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'A computer keyboard for the control panel in the CVN bridge control. The buttons animated to be pushed in when touched.' ;
  x3do:name 'description' .
:meta_1_3 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'Foo Khee Loon' ;
  x3do:name 'creator' .
:meta_1_4 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content '17 February 2001' ;
  x3do:name 'created' .
:meta_1_5 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content '20 October 2019' ;
  x3do:name 'modified' .
:meta_1_6 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/ComputerKeyboard.x3d' ;
  x3do:name 'identifier' .
:meta_1_7 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'X3D-Edit 3.3, https://www.web3d.org/x3d/tools/X3D-Edit' ;
  x3do:name 'generator' .
:meta_1_8 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content '../license.html' ;
  x3do:name 'license' .
:meta dcterms:title "ComputerKeyboard.x3d" .
:meta dcterms:description "A computer keyboard for the control panel in the CVN bridge control. The buttons animated to be pushed in when touched." .
:meta dcterms:creator "Foo Khee Loon" .
:meta dcterms:created "17 February 2001" .
:meta dcterms:modified "20 October 2019" .
:meta dcterms:identifier "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/ComputerKeyboard.x3d" .
:meta dcterms:generator "X3D-Edit 3.3, https://www.web3d.org/x3d/tools/X3D-Edit" .
:meta dcterms:license "../license.html" .
:Scene a owl:NamedIndividual, x3do:Scene ;
  x3do:hasParent :X3D ;
  x3do:hasChildren :WorldInfo_2_1, :Viewpoint_2_2, :Transform_2_3 ;
  x3do:hasROUTE :ROUTE_2_4, :ROUTE_2_5, :ROUTE_2_6 .
:WorldInfo_2_1 a owl:NamedIndividual, x3do:WorldInfo ;
  x3do:hasParent :Scene ;
  x3do:title 'ComputerKeyboard.x3d' .
:Viewpoint_2_2 a owl:NamedIndividual, x3do:Viewpoint ;
  x3do:hasParent :Scene ;
  x3do:description 'Front View' ;
  x3do:fieldOfView 1 ;
  x3do:orientation ( 0 1 0 1.571 ) ;
  x3do:position ( 1 0.2 0.5 ) .
:Transform_2_3 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Scene ;
  x3do:hasChildren :Shape_2_3_1, :EscapeButton, :Transform_2_3_3, :Transform_2_3_4, :Transform_2_3_5, :Transform_2_3_6, :Transform_2_3_7, :Transform_2_3_8, :Transform_2_3_9, :Transform_2_3_10, :Transform_2_3_11, :Transform_2_3_12, :Transform_2_3_13, :Transform_2_3_14, :Transform_2_3_15, :Transform_2_3_16, :Transform_2_3_17, :Transform_2_3_18, :Transform_2_3_19, :Transform_2_3_20, :Transform_2_3_21, :Transform_2_3_22, :Transform_2_3_23, :Transform_2_3_24, :Transform_2_3_25, :Transform_2_3_26, :Transform_2_3_27, :Transform_2_3_28, :Transform_2_3_29, :Transform_2_3_30, :Transform_2_3_31, :Transform_2_3_32, :Transform_2_3_33, :Transform_2_3_34, :Transform_2_3_35, :Transform_2_3_36, :Transform_2_3_37, :row, :Transform_2_3_39, :Transform_2_3_40, :Transform_2_3_41, :space_bar, :EscapeButton-USE-57 ;
  x3do:rotation ( 1 0 0 1.571 ) .
:Shape_2_3_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_3 ;
  x3do:hasAppearance :Appearance_2_3_1_1 ;
  x3do:hasGeometry :Extrusion_2_3_1_2 .
:Appearance_2_3_1_1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_3_1 ;
  x3do:hasMaterial :Material_2_3_1_1_1 .
:Material_2_3_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_3_1_1 ;
  x3do:diffuseColor ( 0.8 0.8 0.7 ) .
:Extrusion_2_3_1_2 a owl:NamedIndividual, x3do:Extrusion ;
  x3do:hasParent :Shape_2_3_1 ;
  x3do:ccw false ;
  x3do:creaseAngle 1.75 ;
  x3do:crossSection ( 0 0 0.025 -0.05 0.05 -0.07 0.075 -0.08 0.1 -0.09 0.35 -0.04 0.4 -0.03 0.45 -0.0275 0.45 0 0.045 -0.0275 0.045 0 0 0 ) ;
  x3do:spine ( 0 0 0 0 0.98 0 ) .
:EscapeButton a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3 ;
  x3do:hasChildren :Shape_2_3_2_1, :TouchButton, :push, :Move ;
  x3do:DEF 'EscapeButton' ;
  x3do:rotation ( 1 0 0 -1.571 ) ;
  x3do:translation ( 0.1 0.95 -0.065 ) .
:Shape_2_3_2_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :EscapeButton ;
  x3do:hasAppearance :Appearance_2_3_2_1_1 ;
  x3do:hasGeometry :Extrusion_2_3_2_1_2 .
:Appearance_2_3_2_1_1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_3_2_1 ;
  x3do:hasMaterial :Material_2_3_2_1_1_1 .
:Material_2_3_2_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_3_2_1_1 ;
  x3do:diffuseColor ( 0.7 0.7 0.8 ) .
:Extrusion_2_3_2_1_2 a owl:NamedIndividual, x3do:Extrusion ;
  x3do:hasParent :Shape_2_3_2_1 ;
  x3do:creaseAngle 2 ;
  x3do:crossSection ( -0.02 -0.02 -0.02 0.02 0.02 0.02 0.02 -0.02 -0.02 -0.02 ) ;
  x3do:scale ( 1 1 1.2 1.2 0.7 0.7 ) ;
  x3do:spine ( 0 0 0 0 0.02 0 0 0.04 0 ) .
:TouchButton a owl:NamedIndividual, x3do:TouchSensor ;
  x3do:hasParent :EscapeButton ;
  x3do:DEF 'TouchButton' ;
  x3do:description 'touch keys to animate' .
:push a owl:NamedIndividual, x3do:TimeSensor ;
  x3do:hasParent :EscapeButton ;
  x3do:DEF 'push' ;
  x3do:stopTime '0.5' .
:Move a owl:NamedIndividual, x3do:PositionInterpolator ;
  x3do:hasParent :EscapeButton ;
  x3do:DEF 'Move' ;
  x3do:key ( 0 0.5 1 ) ;
  x3do:keyValue ( 0.1 0.95 -0.065 0.1 0.95 -0.05 0.1 0.95 -0.065 ) .
:Transform_2_3_3 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3 ;
  x3do:hasChildren :EscapeButton-USE-1 ;
  x3do:translation ( 0 -0.1 0 ) .
:EscapeButton-USE-1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3_3 ;
  owl:sameAs :EscapeButton . # DEF matching this USE
:Transform_2_3_4 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3 ;
  x3do:hasChildren :EscapeButton-USE-2 ;
  x3do:translation ( 0 -0.1467 0 ) .
:EscapeButton-USE-2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3_4 ;
  owl:sameAs :EscapeButton . # DEF matching this USE
:Transform_2_3_5 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3 ;
  x3do:hasChildren :EscapeButton-USE-3 ;
  x3do:translation ( 0 -0.193367 0 ) .
:EscapeButton-USE-3 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3_5 ;
  owl:sameAs :EscapeButton . # DEF matching this USE
:Transform_2_3_6 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3 ;
  x3do:hasChildren :EscapeButton-USE-4 ;
  x3do:translation ( 0 -0.240033 0 ) .
:EscapeButton-USE-4 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3_6 ;
  owl:sameAs :EscapeButton . # DEF matching this USE
:Transform_2_3_7 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3 ;
  x3do:hasChildren :EscapeButton-USE-5 ;
  x3do:translation ( 0 -0.340033 0 ) .
:EscapeButton-USE-5 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3_7 ;
  owl:sameAs :EscapeButton . # DEF matching this USE
:Transform_2_3_8 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3 ;
  x3do:hasChildren :EscapeButton-USE-6 ;
  x3do:translation ( 0 -0.386700 0 ) .
:EscapeButton-USE-6 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3_8 ;
  owl:sameAs :EscapeButton . # DEF matching this USE
:Transform_2_3_9 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3 ;
  x3do:hasChildren :EscapeButton-USE-7 ;
  x3do:translation ( 0 -0.43336700 0 ) .
:EscapeButton-USE-7 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3_9 ;
  owl:sameAs :EscapeButton . # DEF matching this USE
:Transform_2_3_10 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3 ;
  x3do:hasChildren :EscapeButton-USE-8 ;
  x3do:translation ( 0 -0.4800 0 ) .
:EscapeButton-USE-8 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3_10 ;
  owl:sameAs :EscapeButton . # DEF matching this USE
:Transform_2_3_11 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3 ;
  x3do:hasChildren :EscapeButton-USE-9 ;
  x3do:translation ( 0 -0.5800 0 ) .
:EscapeButton-USE-9 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3_11 ;
  owl:sameAs :EscapeButton . # DEF matching this USE
:Transform_2_3_12 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3 ;
  x3do:hasChildren :EscapeButton-USE-10 ;
  x3do:translation ( 0 -0.626667 0 ) .
:EscapeButton-USE-10 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3_12 ;
  owl:sameAs :EscapeButton . # DEF matching this USE
:Transform_2_3_13 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3 ;
  x3do:hasChildren :EscapeButton-USE-11 ;
  x3do:translation ( 0 -0.67333 0 ) .
:EscapeButton-USE-11 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3_13 ;
  owl:sameAs :EscapeButton . # DEF matching this USE
:Transform_2_3_14 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3 ;
  x3do:hasChildren :EscapeButton-USE-12 ;
  x3do:translation ( 0 -0.72 0 ) .
:EscapeButton-USE-12 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3_14 ;
  owl:sameAs :EscapeButton . # DEF matching this USE
:Transform_2_3_15 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3 ;
  x3do:hasChildren :EscapeButton-USE-13 ;
  x3do:translation ( 0 -0.82 0 ) .
:EscapeButton-USE-13 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3_15 ;
  owl:sameAs :EscapeButton . # DEF matching this USE
:Transform_2_3_16 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3 ;
  x3do:hasChildren :EscapeButton-USE-14 ;
  x3do:translation ( 0 -0.8667 0 ) .
:EscapeButton-USE-14 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3_16 ;
  owl:sameAs :EscapeButton . # DEF matching this USE
:Transform_2_3_17 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3 ;
  x3do:hasChildren :EscapeButton-USE-15 ;
  x3do:translation ( 0 -0.91333 0 ) .
:EscapeButton-USE-15 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3_17 ;
  owl:sameAs :EscapeButton . # DEF matching this USE
:Transform_2_3_18 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3 ;
  x3do:hasChildren :EscapeButton-USE-16 ;
  x3do:translation ( 0.1 -0.001 0.015 ) .
:EscapeButton-USE-16 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3_18 ;
  owl:sameAs :EscapeButton . # DEF matching this USE
:Transform_2_3_19 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3 ;
  x3do:hasChildren :EscapeButton-USE-17 ;
  x3do:translation ( 0.1 -0.048667 0.015 ) .
:EscapeButton-USE-17 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3_19 ;
  owl:sameAs :EscapeButton . # DEF matching this USE
:Transform_2_3_20 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3 ;
  x3do:hasChildren :EscapeButton-USE-18 ;
  x3do:translation ( 0.1 -0.0963 0.015 ) .
:EscapeButton-USE-18 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3_20 ;
  owl:sameAs :EscapeButton . # DEF matching this USE
:Transform_2_3_21 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3 ;
  x3do:hasChildren :EscapeButton-USE-19 ;
  x3do:translation ( 0.1 -0.144 0.015 ) .
:EscapeButton-USE-19 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3_21 ;
  owl:sameAs :EscapeButton . # DEF matching this USE
:Transform_2_3_22 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3 ;
  x3do:hasChildren :EscapeButton-USE-20 ;
  x3do:translation ( 0.1 -0.19167666 0.015 ) .
:EscapeButton-USE-20 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3_22 ;
  owl:sameAs :EscapeButton . # DEF matching this USE
:Transform_2_3_23 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3 ;
  x3do:hasChildren :EscapeButton-USE-21 ;
  x3do:translation ( 0.1 -0.23934 0.015 ) .
:EscapeButton-USE-21 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3_23 ;
  owl:sameAs :EscapeButton . # DEF matching this USE
:Transform_2_3_24 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3 ;
  x3do:hasChildren :EscapeButton-USE-22 ;
  x3do:translation ( 0.1 -0.2871 0.015 ) .
:EscapeButton-USE-22 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3_24 ;
  owl:sameAs :EscapeButton . # DEF matching this USE
:Transform_2_3_25 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3 ;
  x3do:hasChildren :EscapeButton-USE-23 ;
  x3do:translation ( 0.1 -0.33466 0.015 ) .
:EscapeButton-USE-23 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3_25 ;
  owl:sameAs :EscapeButton . # DEF matching this USE
:Transform_2_3_26 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3 ;
  x3do:hasChildren :EscapeButton-USE-24 ;
  x3do:translation ( 0.1 -0.382333 0.015 ) .
:EscapeButton-USE-24 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3_26 ;
  owl:sameAs :EscapeButton . # DEF matching this USE
:Transform_2_3_27 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3 ;
  x3do:hasChildren :EscapeButton-USE-25 ;
  x3do:translation ( 0.1 -0.43 0.015 ) .
:EscapeButton-USE-25 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3_27 ;
  owl:sameAs :EscapeButton . # DEF matching this USE
:Transform_2_3_28 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3 ;
  x3do:hasChildren :EscapeButton-USE-26 ;
  x3do:translation ( 0.1 -0.477 0.015 ) .
:EscapeButton-USE-26 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3_28 ;
  owl:sameAs :EscapeButton . # DEF matching this USE
:Transform_2_3_29 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3 ;
  x3do:hasChildren :EscapeButton-USE-27 ;
  x3do:translation ( 0.1 -0.525333 0.015 ) .
:EscapeButton-USE-27 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3_29 ;
  owl:sameAs :EscapeButton . # DEF matching this USE
:Transform_2_3_30 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3 ;
  x3do:hasChildren :EscapeButton-USE-28 ;
  x3do:translation ( 0.1 -0.57 0.015 ) .
:EscapeButton-USE-28 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3_30 ;
  owl:sameAs :EscapeButton . # DEF matching this USE
:Transform_2_3_31 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3 ;
  x3do:hasChildren :EscapeButton-USE-29 ;
  x3do:translation ( 0.1 -0.62066 0.015 ) .
:EscapeButton-USE-29 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3_31 ;
  owl:sameAs :EscapeButton . # DEF matching this USE
:Transform_2_3_32 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3 ;
  x3do:hasChildren :EscapeButton-USE-30 ;
  x3do:translation ( 0.1 -0.66833 0.015 ) .
:EscapeButton-USE-30 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3_32 ;
  owl:sameAs :EscapeButton . # DEF matching this USE
:Transform_2_3_33 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3 ;
  x3do:hasChildren :EscapeButton-USE-31 ;
  x3do:translation ( 0.1 -0.716 0.015 ) .
:EscapeButton-USE-31 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3_33 ;
  owl:sameAs :EscapeButton . # DEF matching this USE
:Transform_2_3_34 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3 ;
  x3do:hasChildren :EscapeButton-USE-32 ;
  x3do:translation ( 0.1 -0.763666 0.015 ) .
:EscapeButton-USE-32 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3_34 ;
  owl:sameAs :EscapeButton . # DEF matching this USE
:Transform_2_3_35 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3 ;
  x3do:hasChildren :EscapeButton-USE-33 ;
  x3do:translation ( 0.1 -0.811333 0.015 ) .
:EscapeButton-USE-33 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3_35 ;
  owl:sameAs :EscapeButton . # DEF matching this USE
:Transform_2_3_36 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3 ;
  x3do:hasChildren :EscapeButton-USE-34 ;
  x3do:translation ( 0.1 -0.859 0.015 ) .
:EscapeButton-USE-34 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3_36 ;
  owl:sameAs :EscapeButton . # DEF matching this USE
:Transform_2_3_37 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3 ;
  x3do:hasChildren :EscapeButton-USE-35 ;
  x3do:translation ( 0.1 -0.9066 0.015 ) .
:EscapeButton-USE-35 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3_37 ;
  owl:sameAs :EscapeButton . # DEF matching this USE
:row a owl:NamedIndividual, x3do:Group ;
  x3do:hasParent :Transform_2_3 ;
  x3do:hasChildren :Transform_2_3_38_1, :Transform_2_3_38_2, :Transform_2_3_38_3, :Transform_2_3_38_4, :Transform_2_3_38_5, :Transform_2_3_38_6, :Transform_2_3_38_7, :Transform_2_3_38_8, :Transform_2_3_38_9, :Transform_2_3_38_10, :Transform_2_3_38_11, :Transform_2_3_38_12, :Transform_2_3_38_13, :Transform_2_3_38_14, :Transform_2_3_38_15, :Transform_2_3_38_16, :Transform_2_3_38_17, :Transform_2_3_38_18, :Transform_2_3_38_19, :Transform_2_3_38_20 ;
  x3do:DEF 'row' .
:Transform_2_3_38_1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :row ;
  x3do:hasChildren :EscapeButton-USE-36 ;
  x3do:translation ( 0.146667 -0.001 0.025 ) .
:EscapeButton-USE-36 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3_38_1 ;
  owl:sameAs :EscapeButton . # DEF matching this USE
:Transform_2_3_38_2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :row ;
  x3do:hasChildren :EscapeButton-USE-37 ;
  x3do:translation ( 0.1467 -0.04866671 0.025 ) .
:EscapeButton-USE-37 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3_38_2 ;
  owl:sameAs :EscapeButton . # DEF matching this USE
:Transform_2_3_38_3 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :row ;
  x3do:hasChildren :EscapeButton-USE-38 ;
  x3do:translation ( 0.1467 -0.096331 0.025 ) .
:EscapeButton-USE-38 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3_38_3 ;
  owl:sameAs :EscapeButton . # DEF matching this USE
:Transform_2_3_38_4 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :row ;
  x3do:hasChildren :EscapeButton-USE-39 ;
  x3do:translation ( 0.1467 -0.144 0.025 ) .
:EscapeButton-USE-39 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3_38_4 ;
  owl:sameAs :EscapeButton . # DEF matching this USE
:Transform_2_3_38_5 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :row ;
  x3do:hasChildren :EscapeButton-USE-40 ;
  x3do:translation ( 0.1467 -0.191664 0.025 ) .
:EscapeButton-USE-40 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3_38_5 ;
  owl:sameAs :EscapeButton . # DEF matching this USE
:Transform_2_3_38_6 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :row ;
  x3do:hasChildren :EscapeButton-USE-41 ;
  x3do:translation ( 0.1467 -0.2393664 0.025 ) .
:EscapeButton-USE-41 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3_38_6 ;
  owl:sameAs :EscapeButton . # DEF matching this USE
:Transform_2_3_38_7 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :row ;
  x3do:hasChildren :EscapeButton-USE-42 ;
  x3do:translation ( 0.1467 -0.287 0.025 ) .
:EscapeButton-USE-42 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3_38_7 ;
  owl:sameAs :EscapeButton . # DEF matching this USE
:Transform_2_3_38_8 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :row ;
  x3do:hasChildren :EscapeButton-USE-43 ;
  x3do:translation ( 0.1467 -0.3346677 0.025 ) .
:EscapeButton-USE-43 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3_38_8 ;
  owl:sameAs :EscapeButton . # DEF matching this USE
:Transform_2_3_38_9 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :row ;
  x3do:hasChildren :EscapeButton-USE-44 ;
  x3do:translation ( 0.1467 -0.38236677 0.025 ) .
:EscapeButton-USE-44 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3_38_9 ;
  owl:sameAs :EscapeButton . # DEF matching this USE
:Transform_2_3_38_10 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :row ;
  x3do:hasChildren :EscapeButton-USE-45 ;
  x3do:translation ( 0.1467 -0.437 0.025 ) .
:EscapeButton-USE-45 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3_38_10 ;
  owl:sameAs :EscapeButton . # DEF matching this USE
:Transform_2_3_38_11 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :row ;
  x3do:hasChildren :EscapeButton-USE-46 ;
  x3do:translation ( 0.1467 -0.4776 0.025 ) .
:EscapeButton-USE-46 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3_38_11 ;
  owl:sameAs :EscapeButton . # DEF matching this USE
:Transform_2_3_38_12 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :row ;
  x3do:hasChildren :EscapeButton-USE-47 ;
  x3do:translation ( 0.1467 -0.525334776 0.025 ) .
:EscapeButton-USE-47 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3_38_12 ;
  owl:sameAs :EscapeButton . # DEF matching this USE
:Transform_2_3_38_13 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :row ;
  x3do:hasChildren :EscapeButton-USE-48 ;
  x3do:translation ( 0.1467 -0.57376 0.025 ) .
:EscapeButton-USE-48 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3_38_13 ;
  owl:sameAs :EscapeButton . # DEF matching this USE
:Transform_2_3_38_14 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :row ;
  x3do:hasChildren :EscapeButton-USE-49 ;
  x3do:translation ( 0.1467 -0.62057376 0.025 ) .
:EscapeButton-USE-49 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3_38_14 ;
  owl:sameAs :EscapeButton . # DEF matching this USE
:Transform_2_3_38_15 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :row ;
  x3do:hasChildren :EscapeButton-USE-50 ;
  x3do:translation ( 0.1467 -0.66832057376 0.025 ) .
:EscapeButton-USE-50 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3_38_15 ;
  owl:sameAs :EscapeButton . # DEF matching this USE
:Transform_2_3_38_16 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :row ;
  x3do:hasChildren :EscapeButton-USE-51 ;
  x3do:translation ( 0.1467 -0.716 0.025 ) .
:EscapeButton-USE-51 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3_38_16 ;
  owl:sameAs :EscapeButton . # DEF matching this USE
:Transform_2_3_38_17 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :row ;
  x3do:hasChildren :EscapeButton-USE-52 ;
  x3do:translation ( 0.1467 -0.7636 0.025 ) .
:EscapeButton-USE-52 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3_38_17 ;
  owl:sameAs :EscapeButton . # DEF matching this USE
:Transform_2_3_38_18 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :row ;
  x3do:hasChildren :EscapeButton-USE-53 ;
  x3do:translation ( 0.1467 -0.8113336 0.025 ) .
:EscapeButton-USE-53 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3_38_18 ;
  owl:sameAs :EscapeButton . # DEF matching this USE
:Transform_2_3_38_19 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :row ;
  x3do:hasChildren :EscapeButton-USE-54 ;
  x3do:translation ( 0.1467 -0.859 0.025 ) .
:EscapeButton-USE-54 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3_38_19 ;
  owl:sameAs :EscapeButton . # DEF matching this USE
:Transform_2_3_38_20 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :row ;
  x3do:hasChildren :EscapeButton-USE-55 ;
  x3do:translation ( 0.1467 -0.90667859 0.025 ) .
:EscapeButton-USE-55 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3_38_20 ;
  owl:sameAs :EscapeButton . # DEF matching this USE
:Transform_2_3_39 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3 ;
  x3do:hasChildren :row-USE-1 ;
  x3do:translation ( 0.04667 0 0.01 ) .
:row-USE-1 a owl:NamedIndividual, x3do:Group ;
  x3do:hasParent :Transform_2_3_39 ;
  owl:sameAs :row . # DEF matching this USE
:Transform_2_3_40 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3 ;
  x3do:hasChildren :row-USE-2 ;
  x3do:translation ( 0.093347 0 0.02 ) .
:row-USE-2 a owl:NamedIndividual, x3do:Group ;
  x3do:hasParent :Transform_2_3_40 ;
  owl:sameAs :row . # DEF matching this USE
:Transform_2_3_41 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3 ;
  x3do:hasChildren :EscapeButton-USE-56 ;
  x3do:scale ( 1 2 1 ) ;
  x3do:translation ( 0.286667 -1 0.055 ) .
:EscapeButton-USE-56 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3_41 ;
  owl:sameAs :EscapeButton . # DEF matching this USE
:space_bar a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3 ;
  x3do:hasChildren :Transform_2_3_42_1 ;
  x3do:DEF 'space_bar' ;
  x3do:rotation ( 0 0 1 1.571 ) ;
  x3do:translation ( 0.3902677 0.5 -0.045 ) .
:Transform_2_3_42_1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :space_bar ;
  x3do:hasChildren :Shape_2_3_42_1_1 ;
  x3do:rotation ( 1 0 0 1.571 ) .
:Shape_2_3_42_1_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_3_42_1 ;
  x3do:hasAppearance :Appearance_2_3_42_1_1_1 ;
  x3do:hasGeometry :Extrusion_2_3_42_1_1_2 .
:Appearance_2_3_42_1_1_1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_3_42_1_1 ;
  x3do:hasMaterial :Material_2_3_42_1_1_1_1 .
:Material_2_3_42_1_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_3_42_1_1_1 ;
  x3do:diffuseColor ( 0.7 0.7 0.8 ) .
:Extrusion_2_3_42_1_1_2 a owl:NamedIndividual, x3do:Extrusion ;
  x3do:hasParent :Shape_2_3_42_1_1 ;
  x3do:creaseAngle 2 ;
  x3do:crossSection ( -0.25 -0.02 -0.25 0.02 0.25 0.02 0.25 -0.02 -0.25 -0.02 ) ;
  x3do:scale ( 1 1 1.2 1.2 0.7 0.7 ) ;
  x3do:spine ( 0 0 0 0 0.02 0 0 0.04 0 ) .
:EscapeButton-USE-57 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_3 ;
  owl:sameAs :EscapeButton . # DEF matching this USE
:ROUTE_2_4 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Scene ;
  x3do:fromField 'touchTime' ;
  x3do:fromNode 'TouchButton' ;
  x3do:toField 'set_startTime' ;
  x3do:toNode 'push' .
:ROUTE_2_5 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Scene ;
  x3do:fromField 'fraction_changed' ;
  x3do:fromNode 'push' ;
  x3do:toField 'set_fraction' ;
  x3do:toNode 'Move' .
:ROUTE_2_6 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Scene ;
  x3do:fromField 'value_changed' ;
  x3do:fromNode 'Move' ;
  x3do:toField 'set_translation' ;
  x3do:toNode 'EscapeButton' .
