"abstio":{"doc":"A/B Street organizes data files in a particular way. This…","i":[[3,"FileWithProgress","abstio","",null,null],[12,"inner","","",0,null],[12,"path","","",0,null],[12,"processed_bytes","","",0,null],[12,"total_bytes","","",0,null],[12,"started_at","","",0,null],[12,"last_printed_at","","",0,null],[3,"Manifest","","A list of all canonical data files for A/B Street that\'re…",null,null],[12,"entries","","Keyed by path, starting with \\\"data/\\\"",1,null],[3,"Entry","","A single file",null,null],[12,"checksum","","md5sum of the file",2,null],[12,"uncompressed_size_bytes","","Uncompressed size in bytes",2,null],[12,"compressed_size_bytes","","Compressed size in bytes",2,null],[3,"DataPacks","","Player-chosen groups of files to opt into downloading",null,null],[12,"runtime","","A list of cities to download for using in A/B Street.",3,null],[12,"input","","A list of cities to download for running the map importer.",3,null],[3,"MapName","","A single map is identified using this. Using a struct…",null,null],[12,"city","","The name of the city, in filename-friendly form -- for…",4,null],[12,"map","","The name of the map within the city, in filename-friendly…",4,null],[5,"maybe_read_json","","",null,[[["timer",3],["string",3]],[["result",6],["deserializeowned",8]]]],[5,"read_json","","",null,[[["timer",3],["string",3]],["deserializeowned",8]]],[5,"read_binary","","",null,[[["timer",3],["string",3]],["deserializeowned",8]]],[5,"read_object","","May be a JSON or binary file",null,[[["timer",3],["string",3]],[["result",6],["deserializeowned",8]]]],[5,"must_read_object","","May be a JSON or binary file. Panics on failure.",null,[[["timer",3],["string",3]],["deserializeowned",8]]],[5,"find_prev_file","","Keeps file extensions",null,[[["string",3]],[["option",4],["string",3]]]],[5,"find_next_file","","",null,[[["string",3]],[["option",4],["string",3]]]],[5,"load_all_objects","","Load all serialized things from a directory, return sorted…",null,[[["string",3]],["vec",3]]],[5,"list_all_objects","","Just list all things from a directory, return sorted by…",null,[[["string",3]],[["vec",3],["string",3]]]],[5,"file_exists","","",null,[[["string",3],["into",8]]]],[5,"list_dir","","Returns full paths",null,[[["string",3]],[["vec",3],["string",3]]]],[5,"slurp_file","","",null,[[["string",3],["into",8]],[["result",6],["vec",3]]]],[5,"maybe_read_binary","","",null,[[["timer",3],["string",3]],[["result",6],["deserializeowned",8]]]],[5,"write_json","","",null,[[["string",3]]]],[5,"write_binary","","",null,[[["string",3]]]],[5,"delete_file","","Idempotent",null,[[["string",3],["into",8]]]],[5,"path","","",null,[[["string",3],["into",8]],["string",3]]],[5,"path_prebaked_results","","",null,[[["mapname",3]],["string",3]]],[5,"path_scenario","","",null,[[["mapname",3]],["string",3]]],[5,"path_all_scenarios","","",null,[[["mapname",3]],["string",3]]],[5,"parse_scenario_path","","Extract the map and scenario name from a path. Crashes if…",null,[[]]],[5,"path_player","","",null,[[["string",3],["into",8]],["string",3]]],[5,"path_camera_state","","",null,[[["mapname",3]],["string",3]]],[5,"path_edits","","",null,[[["mapname",3]],["string",3]]],[5,"path_all_edits","","",null,[[["mapname",3]],["string",3]]],[5,"path_save","","",null,[[["mapname",3],["string",3]],["string",3]]],[5,"path_all_saves","","",null,[[["mapname",3]],["string",3]]],[5,"path_popdat","","",null,[[],["string",3]]],[5,"path_raw_map","","",null,[[["mapname",3]],["string",3]]],[5,"slurp_bytes","","An adapter for widgetry::Settings::read_svg to read SVGs…",null,[[],["vec",3]]],[0,"io_native","","Normal file IO using the filesystem",null,null],[3,"FileWithProgress","abstio::io_native","",null,null],[12,"inner","","",0,null],[12,"path","","",0,null],[12,"processed_bytes","","",0,null],[12,"total_bytes","","",0,null],[12,"started_at","","",0,null],[12,"last_printed_at","","",0,null],[5,"file_exists","","",null,[[["string",3],["into",8]]]],[5,"list_dir","","Returns full paths",null,[[["string",3]],[["vec",3],["string",3]]]],[5,"slurp_file","","",null,[[["string",
"abstutil":{"doc":"The contents of this crate need to be organized better:","i":[[3,"CmdArgs","abstutil","Yet another barebones command-line flag parsing library.",null,null],[12,"kv","","",0,null],[12,"bits","","",0,null],[12,"free","","",0,null],[12,"used","","",0,null],[3,"MultiMap","","",null,null],[12,"map","","",1,null],[12,"empty","","",1,null],[3,"Counter","","",null,null],[12,"map","","",2,null],[12,"sum","","",2,null],[3,"VecMap","","Use when your key is just PartialEq, not Ord or Hash.",null,null],[12,"inner","","",3,null],[3,"Tags","","Convenience functions around a string->string map",null,null],[12,"0","","",4,null],[3,"FixedMap","","A drop-in replacement for `BTreeMap`, where the keys have…",null,null],[12,"inner","","",5,null],[12,"key_type","","",5,null],[5,"to_json","","Stringifies an object to nicely formatted JSON.",null,[[],["string",3]]],[5,"to_json_terse","","Stringifies an object to terse JSON.",null,[[],["string",3]]],[5,"from_json","","Deserializes an object from a JSON string.",null,[[["vec",3]],[["result",6],["deserializeowned",8]]]],[5,"from_json_reader","","Deserializes an object from JSON, from a reader.",null,[[["read",8]],[["result",6],["deserializeowned",8]]]],[5,"from_binary","","Deserializes an object from the bincode format.",null,[[["vec",3]],[["result",6],["deserializeowned",8]]]],[5,"from_binary_reader","","Deserializes an object from the bincode format, from a…",null,[[["read",8]],[["result",6],["deserializeowned",8]]]],[5,"serialized_size_bytes","","The number of bytes for an object serialized to bincode.",null,[[]]],[5,"serialize_btreemap","","Serializes a BTreeMap as a list of tuples. Necessary when…",null,[[["btreemap",3],["serializer",8]],["result",6]]],[5,"deserialize_btreemap","","Deserializes a BTreeMap from a list of tuples. Necessary…",null,[[["deserializer",8]],[["result",6],["btreemap",3]]]],[5,"serialize_hashmap","","Serializes a HashMap as a list of tuples, first sorting by…",null,[[["hashmap",3],["serializer",8]],["result",6]]],[5,"deserialize_hashmap","","Deserializes a HashMap from a list of tuples.",null,[[["deserializer",8]],[["result",6],["hashmap",3]]]],[5,"serialize_multimap","","Serializes a MultiMap.",null,[[["multimap",3],["serializer",8]],["result",6]]],[5,"deserialize_multimap","","Deserializes a MultiMap.",null,[[["deserializer",8]],[["result",6],["multimap",3]]]],[5,"serialize_usize","","Serializes a `usize` as a `u32` to save space. Useful when…",null,[[["serializer",8]],["result",6]]],[5,"deserialize_usize","","Deserializes a `usize` from a `u32`.",null,[[["deserializer",8]],["result",6]]],[5,"wraparound_get","","",null,[[["vec",3]]]],[5,"retain_btreemap","","",null,[[["fnmut",8],["btreemap",3]]]],[5,"retain_btreeset","","",null,[[["fnmut",8],["btreeset",3]]]],[5,"contains_duplicates","","",null,[[["vec",3]]]],[5,"setup","","On native: uses env_logYou can adjust the log level…",null,[[]]],[5,"must_run_cmd","","Runs a command, asserts success. STDOUT and STDERR aren\'t…",null,[[["command",3]]]],[5,"clamp","","",null,[[]]],[5,"plain_list_names","","",null,[[["btreeset",3],["string",3]],["string",3]]],[5,"prettyprint_usize","","",null,[[],["string",3]]],[5,"basename","","",null,[[["string",3],["into",8]],["string",3]]],[5,"parent_path","","",null,[[],["string",3]]],[0,"cli","","",null,null],[3,"CmdArgs","abstutil::cli","Yet another barebones command-line flag parsing library.",null,null],[12,"kv","","",0,null],[12,"bits","","",0,null],[12,"free","","",0,null],[12,"used","","",0,null],[5,"parse_args","","",null,[[],[["result",6],["vec",3]]]],[11,"new","abstutil","On native, initialize with real flags. On web, always empty.",0,[[],["cmdargs",3]]],[11,"from_args","","",0,[[["vec",3],["string",3]],["cmdargs",3]]],[11,"required","","",0,[[],["string",3]]],[11,"optional","","",0,[[],[["option",4],["string",3]]]],[11,"optional_parse","","",0,[[["fn",8]],["option",4]]],[11,"true_false","","",0,[[]]],[11,"enabled","","",0,[[]]],[11,"required_free","","",0,[[],["string",3]]],[11,"optional_free","","",0,[[],[["option",4],["string",3]]]],[11,"done"
"collisions":{"doc":"A simple data format to list collisions that\'ve occurred…","i":[[3,"CollisionDataset","collisions","A single dataset describing some collisions that happened.",null,null],[12,"source_url","","A URL pointing to the original data source.",0,null],[12,"collisions","","The collisions imported from the data source.",0,null],[3,"Collision","","A single collision that occurred in the real world.",null,null],[12,"location","","A single point describing where the collision occurred.",1,null],[12,"time","","The local time the collision occurred.",1,null],[12,"severity","","The severity reported in the original data source.",1,null],[4,"Severity","","A simple ranking for how severe the collision was.…",null,null],[13,"Slight","","",2,null],[13,"Serious","","",2,null],[13,"Fatal","","",2,null],[5,"import_stats19","","Import data from the UK STATS19 dataset. See…",null,[[["extrashapes",3]],["collisiondataset",3]]],[5,"import_seattle","","Import data from Seattle GeoData…",null,[[["extrashapes",3]],["collisiondataset",3]]],[5,"parse_incdttm","","",null,[[],[["option",4],["duration",3]]]],[11,"from","","",0,[[]]],[11,"into","","",0,[[]]],[11,"borrow","","",0,[[]]],[11,"borrow_mut","","",0,[[]]],[11,"try_from","","",0,[[],["result",4]]],[11,"try_into","","",0,[[],["result",4]]],[11,"type_id","","",0,[[],["typeid",3]]],[11,"from","","",1,[[]]],[11,"into","","",1,[[]]],[11,"borrow","","",1,[[]]],[11,"borrow_mut","","",1,[[]]],[11,"try_from","","",1,[[],["result",4]]],[11,"try_into","","",1,[[],["result",4]]],[11,"type_id","","",1,[[],["typeid",3]]],[11,"from","","",2,[[]]],[11,"into","","",2,[[]]],[11,"to_owned","","",2,[[]]],[11,"clone_into","","",2,[[]]],[11,"borrow","","",2,[[]]],[11,"borrow_mut","","",2,[[]]],[11,"try_from","","",2,[[],["result",4]]],[11,"try_into","","",2,[[],["result",4]]],[11,"type_id","","",2,[[],["typeid",3]]],[11,"clone","","",2,[[],["severity",4]]],[11,"eq","","",2,[[["severity",4]]]],[11,"fmt","","",2,[[["formatter",3]],["result",6]]],[11,"deserialize","","",0,[[],["result",4]]],[11,"deserialize","","",1,[[],["result",4]]],[11,"deserialize","","",2,[[],["result",4]]],[11,"serialize","","",0,[[],["result",4]]],[11,"serialize","","",1,[[],["result",4]]],[11,"serialize","","",2,[[],["result",4]]]],"p":[[3,"CollisionDataset"],[3,"Collision"],[4,"Severity"]]},\
"convert_osm":{"doc":"","i":[[3,"Options","convert_osm","",null,null],[12,"osm_input","","",0,null],[12,"name","","",0,null],[12,"clip","","The path to an osmosis boundary polygon. Highly recommended.",0,null],[12,"map_config","","",0,null],[12,"onstreet_parking","","",0,null],[12,"public_offstreet_parking","","",0,null],[12,"private_offstreet_parking","","",0,null],[12,"elevation","","If provided, pull elevation data from this SRTM file. The…",0,null],[12,"include_railroads","","OSM railway=rail will be included as light rail if so.…",0,null],[4,"OnstreetParking","","What roads will have on-street parking lanes? Data from…",null,null],[13,"JustOSM","","If not tagged, there won\'t be parking.",1,null],[13,"Blockface","","If OSM data is missing, then try to match data from…",1,null],[13,"SomeAdditionalWhereNoData","","If OSM data is missing, then infer parking lanes on some…",1,null],[12,"pct","convert_osm::OnstreetParking","[0, 100]",2,null],[4,"PublicOffstreetParking","convert_osm","How many spots are available in public parking garages?",null,null],[13,"None","","",3,null],[13,"GIS","","Pull data from…",3,null],[4,"PrivateOffstreetParking","","If a building doesn\'t have anything from…",null,null],[13,"FixedPerBldg","","",4,null],[5,"convert","","",null,[[["options",3],["timer",3]],["rawmap",3]]],[5,"use_amenities","","",null,[[["rawmap",3],["vec",3],["timer",3]]]],[5,"use_elevation","","",null,[[["rawmap",3],["timer",3]]]],[0,"clip","","",null,null],[5,"clip_map","convert_osm::clip","",null,[[["rawmap",3],["timer",3]]]],[0,"extract","convert_osm","",null,null],[3,"OsmExtract","convert_osm::extract","",null,null],[12,"roads","","Unsplit roads",5,null],[12,"traffic_signals","","Traffic signals to the direction they apply (or just true…",5,null],[12,"osm_node_ids","","",5,null],[12,"simple_turn_restrictions","","(ID, restriction type, from way ID, via node ID, to way ID)",5,null],[12,"complicated_turn_restrictions","","(relation ID, from way ID, via way ID, to way ID)",5,null],[12,"amenities","","(location, amenity)",5,null],[5,"extract_osm","","",null,[[["rawmap",3],["options",3],["timer",3]],["osmextract",3]]],[5,"is_road","","",null,[[["options",3],["tags",3]]]],[5,"is_bldg","","",null,[[["tags",3]]]],[5,"get_bldg_amenities","","",null,[[["tags",3]],[["vec",3],["amenity",3]]]],[5,"get_area_type","","",null,[[["tags",3]],[["areatype",4],["option",4]]]],[0,"osm_geom","convert_osm","Utilities for extracting concrete geometry from OSM objects.",null,null],[5,"get_multipolygon_members","convert_osm::osm_geom","",null,[[["document",3],["relation",3],["relationid",3]],["vec",3]]],[5,"glue_multipolygon","","Take a bunch of partial PolyLines and attempt to glue them…",null,[[["timer",3],["ring",3],["vec",3],["option",4],["relationid",3]],[["polygon",3],["vec",3]]]],[5,"glue_to_boundary","","",null,[[["polyline",3],["ring",3]],[["option",4],["polygon",3]]]],[5,"multipoly_geometry","","",null,[[["document",3],["relation",3],["relationid",3]],[["result",6],["polygon",3]]]],[0,"parking","convert_osm","",null,null],[5,"apply_parking","convert_osm::parking","",null,[[["rawmap",3],["options",3],["timer",3]]]],[5,"use_parking_hints","","",null,[[["rawmap",3],["timer",3],["string",3]]]],[5,"use_offstreet_parking","","",null,[[["rawmap",3],["timer",3],["string",3]]]],[5,"apply_private_offstreet_parking","","",null,[[["rawmap",3],["privateoffstreetparking",4]]]],[17,"DIRECTED_ROAD_THICKNESS","","",null,null],[0,"reader","convert_osm","",null,null],[3,"Document","convert_osm::reader","",null,null],[12,"gps_bounds","","",6,null],[12,"nodes","","",6,null],[12,"ways","","",6,null],[12,"relations","","",6,null],[3,"Node","","",null,null],[12,"pt","","",7,null],[12,"tags","","",7,null],[3,"Way","","",null,null],[12,"nodes","","",8,null],[12,"pts","","",8,null],[12,"tags","","",8,null],[3,"Relation","","",null,null],[12,"tags","","",9,null],[12,"members","","Role, member",9,null],[5,"read","","",null,[[["gpsbounds",3],["timer",3]],[["result",6],["document",3]]]],[5,"read_tags","","",null,[[["node",3]],["tags",3]]],[5,"scrape_
"fifteen_min":{"doc":"","i":[[5,"main","fifteen_min","",null,[[]]],[0,"find_home","","",null,null],[3,"FindHome","fifteen_min::find_home","Ask what types of amenities are necessary to be within a…",null,null],[12,"options","","",0,null],[3,"Results","","",null,null],[12,"draw_houses","","",1,null],[5,"score_houses","","For every house in the map, return the percent of…",null,[[["amenitytype",4],["options",4],["timer",3],["simpleapp",3],["vec",3]],[["buildingid",3],["percent",3],["hashmap",3]]]],[11,"new","","",0,[[["eventctx",3],["options",4]],[["box",3],["state",8]]]],[11,"new","","",1,[[["amenitytype",4],["eventctx",3],["hashmap",3],["simpleapp",3],["buildingid",3],["percent",3],["vec",3]],[["box",3],["state",8]]]],[0,"isochrone","fifteen_min","",null,null],[3,"Isochrone","fifteen_min::isochrone","Represents the area reachable from a single building.",null,null],[12,"start","","The center of the isochrone",2,null],[12,"options","","The options used to generate this isochrone",2,null],[12,"draw","","Colored polygon contours, uploaded to the GPU and ready…",2,null],[12,"time_to_reach_building","","How far away is each building from the start?",2,null],[12,"amenities_reachable","","Per category of amenity, what buildings have that?",2,null],[12,"population","","How many people live in the returned area, according to…",2,null],[12,"onstreet_parking_spots","","How many sreet parking spots are on the same road as any…",2,null],[4,"Options","","The constraints on how we\'re moving.",null,null],[13,"Walking","","",3,null],[13,"Biking","","",3,null],[11,"time_to_reach_building","","",3,[[["buildingid",3],["map",3]],[["hashmap",3],["buildingid",3],["duration",3]]]],[11,"new","","",2,[[["eventctx",3],["simpleapp",3],["buildingid",3],["options",4]],["isochrone",3]]],[11,"path_to","","",2,[[["buildingid",3],["map",3]],[["option",4],["path",3]]]],[11,"draw_isochrone","","",2,[[["simpleapp",3]],["geombatch",3]]],[0,"viewer","fifteen_min","This is a tool to experiment with the concept of 15-minute…",null,null],[3,"Viewer","fifteen_min::viewer","This is the UI state for exploring the isochrone/walkshed…",null,null],[12,"panel","","",4,null],[12,"highlight_start","","",4,null],[12,"isochrone","","",4,null],[12,"hovering_on_bldg","","",4,null],[12,"hovering_on_category","","",4,null],[12,"draw_unwalkable_roads","","",4,null],[3,"HoverOnBuilding","","",null,null],[12,"tooltip","","",5,null],[12,"drawn_route","","",5,null],[3,"ExploreAmenities","","",null,null],[12,"category","","",6,null],[12,"table","","",6,null],[12,"panel","","",6,null],[12,"draw","","",6,null],[3,"Entry","","",null,null],[12,"bldg","","",7,null],[12,"name","","",7,null],[12,"amenity_type","","",7,null],[12,"address","","",7,null],[12,"duration_away","","",7,null],[5,"options_to_controls","","",null,[[["eventctx",3],["options",4]],["widget",3]]],[5,"options_from_controls","","",null,[[["panel",3]],["options",4]]],[5,"draw_star","","",null,[[["building",3],["eventctx",3]],["geombatch",3]]],[5,"build_panel","","",null,[[["isochrone",3],["eventctx",3],["simpleapp",3],["building",3]],["panel",3]]],[5,"draw_unwalkable_roads","","",null,[[["simpleapp",3],["eventctx",3],["options",4]],["drawable",3]]],[6,"HoverKey","","(building, scale factor)",null,null],[11,"random_start","","Start with a random building",4,[[["simpleapp",3],["eventctx",3]],[["box",3],["state",8]]]],[11,"new","","",4,[[["simpleapp",3],["buildingid",3],["eventctx",3]],[["box",3],["state",8]]]],[11,"key","","",5,[[["simpleapp",3],["eventctx",3]],["option",4]]],[11,"value","","",5,[[["simpleapp",3],["isochrone",3],["eventctx",3]],["hoveronbuilding",3]]],[11,"new","","",6,[[["isochrone",3],["amenitytype",4],["eventctx",3],["simpleapp",3]],[["box",3],["state",8]]]],[11,"recalc","","",6,[[["simpleapp",3],["eventctx",3]]]],[6,"App","fifteen_min","",null,null],[11,"from","fifteen_min::find_home","",0,[[]]],[11,"into","","",0,[[]]],[11,"borrow","","",0,[[]]],[11,"borrow_mut","","",0,[[]]],[11,"try_from","","",0,[[],["result",4]]],[11,"try_into","","",0,[[],["result",4]]],[11,"type_id","","",0,[[],["ty
"game":{"doc":"","i":[[5,"main","game","",null,[[]]],[5,"setup_app","","",null,[[["gameplaymode",4],["flags",3],["eventctx",3],["string",3],["option",4],["options",3],["option",4]]]],[5,"finish_app_setup","","",null,[[["gameplaymode",4],["eventctx",3],["string",3],["option",4],["option",4],["app",3]],[["box",3],["vec",3]]]],[0,"app","","",null,null],[3,"App","game::app","The top-level data that lasts through the entire game, no…",null,null],[12,"primary","","",0,null],[12,"cs","","",0,null],[12,"opts","","",0,null],[12,"per_obj","","",0,null],[12,"session","","Static data that lasts the entire session. Use sparingly.",0,null],[3,"ShowLayers","","",null,null],[12,"show_buildings","","",1,null],[12,"show_parking_lots","","",1,null],[12,"show_intersections","","",1,null],[12,"show_lanes","","",1,null],[12,"show_areas","","",1,null],[12,"show_labels","","",1,null],[3,"ShowEverything","","",null,null],[12,"layers","","",2,null],[3,"Flags","","",null,null],[12,"sim_flags","","",3,null],[12,"live_map_edits","","If true, all map edits immediately apply to the live…",3,null],[3,"PerMap","","All of the state that\'s bound to a specific map.",null,null],[12,"map","","",4,null],[12,"draw_map","","",4,null],[12,"sim","","",4,null],[12,"agents","","",4,null],[12,"current_selection","","",4,null],[12,"current_flags","","",4,null],[12,"last_warped_from","","",4,null],[12,"sim_cb","","",4,null],[12,"dirty_from_edits","","If we ever left edit mode and resumed without restarting…",4,null],[12,"has_modified_trips","","Any ScenarioModifiers in effect?",4,null],[12,"unedited_map","","Sometimes we need the map before any edits have been…",4,null],[12,"layer","","",4,null],[12,"suspended_sim","","Only filled out in edit mode. Stored here once to avoid…",4,null],[12,"prebaked","","Only exists in some gameplay modes. Must be carefully…",4,null],[12,"scenario","","The most recent Scenario loaded from a file. Don\'t depend…",4,null],[3,"SessionState","","",null,null],[12,"tutorial","","",5,null],[12,"high_scores","","",5,null],[12,"info_panel_tab","","",5,null],[3,"PerObjectActions","","",null,null],[12,"click_action","","",6,null],[3,"FindDelayedIntersections","","",null,null],[12,"halt_limit","","",7,null],[12,"report_limit","","",7,null],[12,"currently_delayed","","",7,null],[6,"Transition","","",null,null],[8,"ShowObject","","",null,null],[10,"show","","",8,[[["id",4]]]],[10,"layers","","",8,[[],["showlayers",3]]],[11,"has_prebaked","","",0,[[],["option",4]]],[11,"prebaked","","",0,[[],["analytics",3]]],[11,"set_prebaked","","",0,[[["option",4]]]],[11,"draw","","",0,[[["drawoptions",3],["showobject",8],["gfxctx",3]]]],[11,"recalculate_current_selection","","Assumes some defaults.",0,[[["eventctx",3]]]],[11,"mouseover_unzoomed_roads_and_intersections","","",0,[[["eventctx",3]],[["option",4],["id",4]]]],[11,"mouseover_unzoomed_intersections","","",0,[[["eventctx",3]],[["option",4],["id",4]]]],[11,"mouseover_unzoomed_buildings","","",0,[[["eventctx",3]],[["option",4],["id",4]]]],[11,"mouseover_unzoomed_everything","","",0,[[["eventctx",3]],[["option",4],["id",4]]]],[11,"mouseover_debug_mode","","",0,[[["showobject",8],["eventctx",3]],[["option",4],["id",4]]]],[11,"calculate_current_selection","","",0,[[["showobject",8],["eventctx",3]],[["option",4],["id",4]]]],[11,"get_renderables_back_to_front","","",0,[[["prerender",3],["agentcache",3],["bounds",3],["showobject",8]],[["renderable",8],["vec",3]]]],[11,"clear_everything","","Ensure the map edits are blank, reset the simulation, and…",0,[[["eventctx",3]]]],[11,"click_on_intersection","","If an intersection was clicked, return its ID.",0,[[["string",3],["eventctx",3],["into",8]],[["intersectionid",3],["option",4]]]],[11,"click_on_lane","","If a lane was clicked, return its ID.",0,[[["string",3],["eventctx",3],["into",8]],[["laneid",3],["option",4]]]],[11,"new","","",1,[[],["showlayers",3]]],[11,"new","","",2,[[],["showeverything",3]]],[11,"map_loaded","","",4,[[["sim",3],["flags",3],["map",3],["options",3],["eventctx",3],["timer",3],["colorscheme",3]],["permap",3]]],[11,"init_camera
"geojson_to_osmosis":{"doc":"","i":[[5,"main","geojson_to_osmosis","Reads GeoJSON input from STDIN, extracts a polygon from…",null,[[],["result",6]]],[5,"extract_boundaries","","",null,[[["geojson",4]],[["vec",3],["result",6]]]]],"p":[]},\
"geom":{"doc":"","i":[[3,"Angle","geom","An angle, stored in radians.",null,null],[12,"0","","",0,null],[3,"Bounds","","Represents a rectangular boundary of `Pt2D` points.",null,null],[12,"min_x","","",1,null],[12,"min_y","","",1,null],[12,"max_x","","",1,null],[12,"max_y","","",1,null],[3,"GPSBounds","","Represents a rectangular boundary of `LonLat` points.…",null,null],[12,"min_lon","","",2,null],[12,"min_lat","","",2,null],[12,"max_lon","","",2,null],[12,"max_lat","","",2,null],[3,"Circle","","A circle, defined by a center and radius.",null,null],[12,"center","","",3,null],[12,"radius","","",3,null],[3,"Distance","","A distance, in meters. Can be negative.",null,null],[12,"0","","",4,null],[3,"Duration","","A duration, in seconds. Can be negative.",null,null],[12,"0","","",5,null],[3,"FindClosest","","A quad-tree to quickly find the closest points to some…",null,null],[12,"geometries","","",6,null],[12,"quadtree","","",6,null],[3,"LonLat","","Represents a (longitude, latitude) point.",null,null],[12,"longitude","","",7,null],[12,"latitude","","",7,null],[3,"InfiniteLine","","",null,null],[12,"0","","",8,null],[12,"1","","",8,null],[3,"Line","","A line segment.",null,null],[12,"0","","",9,null],[12,"1","","",9,null],[3,"Percent","","Most of the time, [0, 1]. But some callers may go outside…",null,null],[12,"0","","",10,null],[3,"Polygon","","",null,null],[12,"points","","",11,null],[12,"indices","","Groups of three indices make up the triangles",11,null],[12,"rings","","If the polygon has holes, explicitly store all the rings…",11,null],[3,"Triangle","","",null,null],[12,"pt1","","",12,null],[12,"pt2","","",12,null],[12,"pt3","","",12,null],[3,"PolyLine","","",null,null],[12,"pts","","",13,null],[12,"length","","",13,null],[3,"HashablePt2D","","This represents world space, NOT LonLat.",null,null],[12,"x_nan","","",14,null],[12,"y_nan","","",14,null],[3,"Pt2D","","This represents world-space in meters.",null,null],[12,"x","","",15,null],[12,"y","","",15,null],[3,"Ring","","Maybe a misnomer, but like a PolyLine, but closed.",null,null],[12,"pts","","",16,null],[3,"Speed","","In meters per second. Can be negative.",null,null],[12,"0","","",17,null],[3,"Histogram","","",null,null],[12,"count","","",18,null],[12,"histogram","","",18,null],[12,"min","","",18,null],[12,"max","","",18,null],[3,"Time","","In seconds since midnight. Can\'t be negative.",null,null],[12,"0","","",19,null],[3,"UnitFmt","","Specifies how to stringify different geom objects.",null,null],[12,"round_durations","","Round `Duration`s to a whole number of seconds.",20,null],[12,"metric","","Display in metric; US imperial otherwise.",20,null],[4,"ArrowCap","","",null,null],[13,"Triangle","","",21,null],[4,"Statistic","","",null,null],[13,"Min","","",22,null],[13,"Mean","","",22,null],[13,"P50","","",22,null],[13,"P90","","",22,null],[13,"P99","","",22,null],[13,"Max","","",22,null],[5,"trim_f64","","Reduce the precision of an f64. This helps ensure…",null,[[]]],[0,"angle","","",null,null],[3,"Angle","geom::angle","An angle, stored in radians.",null,null],[12,"0","","",0,null],[18,"ZERO","geom","",0,null],[11,"new_rads","","Create an angle in radians.",0,[[],["angle",3]]],[11,"degrees","","Create an angle in degrees.",0,[[],["angle",3]]],[11,"opposite","","Invert the direction of this angle.",0,[[],["angle",3]]],[11,"invert_y","","",0,[[],["angle",3]]],[11,"rotate_degs","","Rotates this angle by some degrees.",0,[[],["angle",3]]],[11,"normalized_radians","","Returns [0, 2pi)",0,[[]]],[11,"normalized_degrees","","Returns [0, 360)",0,[[]]],[11,"simple_shortest_rotation_towards","","Returns [-180, 180]",0,[[["angle",3]]]],[11,"shortest_rotation_towards","","Logically this returns [-180, 180], but keep in mind when…",0,[[["angle",3]],["angle",3]]],[11,"approx_eq","","True if this angle is within some degrees of another,…",0,[[["angle",3]]]],[11,"reorient","","I don\'t know how to describe what this does. Use for…",0,[[],["angle",3]]],[0,"bounds","","",null,null],[3,"Bounds","geom::bounds","Represents a rectangular boundary of `Pt2D` points.",nu
"headless":{"doc":"","i":[[3,"MAP","headless","",null,null],[12,"__private_field","","",0,null],[3,"SIM","","",null,null],[12,"__private_field","","",1,null],[3,"LOAD","","",null,null],[12,"__private_field","","",2,null],[3,"FinishedTrip","","",null,null],[12,"id","","",3,null],[12,"duration","","",3,null],[12,"distance_crossed","","",3,null],[12,"mode","","",3,null],[12,"capped","","",3,null],[3,"Delays","","",null,null],[12,"per_direction","","",4,null],[3,"Throughput","","",null,null],[12,"per_direction","","",5,null],[3,"AgentPositions","","",null,null],[12,"agents","","",6,null],[3,"AgentPosition","","",null,null],[12,"vehicle_type","","None for pedestrians",7,null],[12,"pos","","The agent\'s current position. For pedestrians, this is…",7,null],[12,"distance_crossed","","The distance crossed so far by the agent, in meters. There…",7,null],[12,"person","","None for buses",7,null],[3,"RoadThroughput","","",null,null],[12,"counts","","",8,null],[3,"TrafficSignalState","","",null,null],[12,"current_stage_idx","","",9,null],[12,"remaining_time","","",9,null],[12,"accepted","","",9,null],[12,"waiting","","",9,null],[3,"BlockedByGraph","","",null,null],[12,"blocked_by","","Each entry indicates that some agent has been stuck in one…",10,null],[3,"LoadSim","","",null,null],[12,"scenario","","",11,null],[12,"modifiers","","",11,null],[12,"edits","","",11,null],[12,"rng_seed","","",11,null],[12,"opts","","",11,null],[5,"main","","",null,[[]]],[5,"serve_req","","",null,[[["request",3],["body",3]]]],[5,"handle_command","","",null,[[["loadsim",3],["vec",3],["hashmap",3],["sim",3],["map",3]],[["result",6],["string",3]]]],[5,"export_geometry","","",null,[[["intersectionid",3],["map",3]],["geojson",4]]],[5,"export_all_geometry","","",null,[[["map",3]],["geojson",4]]],[11,"setup","","",11,[[["timer",3]]]],[11,"from","","",0,[[]]],[11,"into","","",0,[[]]],[11,"borrow","","",0,[[]]],[11,"borrow_mut","","",0,[[]]],[11,"try_from","","",0,[[],["result",4]]],[11,"try_into","","",0,[[],["result",4]]],[11,"type_id","","",0,[[],["typeid",3]]],[11,"vzip","","",0,[[]]],[11,"into_any","","",0,[[["global",3],["box",3]],[["any",8],["global",3],["box",3]]]],[11,"into_any_rc","","",0,[[["rc",3]],[["rc",3],["any",8]]]],[11,"as_any","","",0,[[],["any",8]]],[11,"as_any_mut","","",0,[[],["any",8]]],[11,"into_any_arc","","",0,[[["arc",3]],[["any",8],["arc",3]]]],[11,"from","","",1,[[]]],[11,"into","","",1,[[]]],[11,"borrow","","",1,[[]]],[11,"borrow_mut","","",1,[[]]],[11,"try_from","","",1,[[],["result",4]]],[11,"try_into","","",1,[[],["result",4]]],[11,"type_id","","",1,[[],["typeid",3]]],[11,"vzip","","",1,[[]]],[11,"into_any","","",1,[[["global",3],["box",3]],[["any",8],["global",3],["box",3]]]],[11,"into_any_rc","","",1,[[["rc",3]],[["rc",3],["any",8]]]],[11,"as_any","","",1,[[],["any",8]]],[11,"as_any_mut","","",1,[[],["any",8]]],[11,"into_any_arc","","",1,[[["arc",3]],[["any",8],["arc",3]]]],[11,"from","","",2,[[]]],[11,"into","","",2,[[]]],[11,"borrow","","",2,[[]]],[11,"borrow_mut","","",2,[[]]],[11,"try_from","","",2,[[],["result",4]]],[11,"try_into","","",2,[[],["result",4]]],[11,"type_id","","",2,[[],["typeid",3]]],[11,"vzip","","",2,[[]]],[11,"into_any","","",2,[[["global",3],["box",3]],[["any",8],["global",3],["box",3]]]],[11,"into_any_rc","","",2,[[["rc",3]],[["rc",3],["any",8]]]],[11,"as_any","","",2,[[],["any",8]]],[11,"as_any_mut","","",2,[[],["any",8]]],[11,"into_any_arc","","",2,[[["arc",3]],[["any",8],["arc",3]]]],[11,"from","","",3,[[]]],[11,"into","","",3,[[]]],[11,"borrow","","",3,[[]]],[11,"borrow_mut","","",3,[[]]],[11,"try_from","","",3,[[],["result",4]]],[11,"try_into","","",3,[[],["result",4]]],[11,"type_id","","",3,[[],["typeid",3]]],[11,"vzip","","",3,[[]]],[11,"into_any","","",3,[[["global",3],["box",3]],[["any",8],["global",3],["box",3]]]],[11,"into_any_rc","","",3,[[["rc",3]],[["rc",3],["any",8]]]],[11,"as_any","","",3,[[],["any",8]]],[11,"as_any_mut","","",3,[[],["any",8]]],[11,"into_any_arc","","",3,[[["arc",3]],[["any",8],["arc",3]]]],[11,"from","","",4,[[]]],[11,"into","","",4,[[]]],[11,"borrow","","",4,[[]]],
"importer":{"doc":"It\'s assumed that the importer is run with the current…","i":[[3,"Job","importer","",null,null],[12,"city","","",0,null],[12,"osm_to_raw","","",0,null],[12,"raw_to_map","","",0,null],[12,"scenario","","",0,null],[12,"city_overview","","",0,null],[12,"only_map","","",0,null],[5,"main","","",null,[[]]],[5,"regenerate_everything","","",null,[[["importerconfiguration",3]]]],[5,"oneshot","","",null,[[["option",4],["string",3]]]],[0,"actdev","","This module is used for all cities associated with the…",null,null],[3,"ODSummary","importer::actdev","Describes some number of people that have the same home,…",null,null],[12,"home","","",1,null],[12,"work","","",1,null],[12,"mode","","",1,null],[12,"count","","",1,null],[5,"import_scenarios","","",null,[[["map",3],["importerconfiguration",3]],["result",6]]],[5,"parse_usize","","",null,[[["feature",3]],["result",6]]],[5,"generate_scenario","","",null,[[["vec",3],["odsummary",3],["map",3]]]],[5,"rand_duration","","",null,[[["duration",3],["xorshiftrng",3]],["duration",3]]],[5,"rand_time","","",null,[[["duration",3],["xorshiftrng",3]],["time",3]]],[0,"berlin","importer","",null,null],[3,"Record","importer::berlin","",null,null],[12,"raumid","","",2,null],[12,"e_e","","",2,null],[5,"import_extra_data","","",null,[[["importerconfiguration",3],["timer",3],["rawmap",3]]]],[5,"correlate_population","","",null,[[["timer",3]]]],[5,"distribute_residents","","",null,[[["timer",3],["map",3]]]],[0,"configuration","importer","",null,null],[3,"ImporterConfiguration","importer::configuration","",null,null],[12,"curl","","",3,null],[12,"osmconvert","","",3,null],[12,"unzip","","",3,null],[12,"gunzip","","",3,null],[12,"gunzip_args","","",3,null],[5,"load_configuration","","",null,[[],["importerconfiguration",3]]],[0,"dependencies","importer","",null,null],[5,"are_dependencies_callable","importer::dependencies","",null,[[["importerconfiguration",3]]]],[5,"is_program_callable","","",null,[[["osstr",3],["asref",8]]]],[0,"generic","importer","",null,null],[3,"GenericCityImporter","importer::generic","Importing a new city can be done just by filling out this…",null,null],[12,"osm_url","","The URL to a .osm or .osm.pbf file containing the entire…",4,null],[12,"map_config","","",4,null],[12,"onstreet_parking","","",4,null],[12,"public_offstreet_parking","","",4,null],[12,"private_offstreet_parking","","",4,null],[12,"elevation","","If provided, pull elevation data from this SRTM file. The…",4,null],[12,"include_railroads","","OSM railway=rail will be included as light rail if so.…",4,null],[11,"osm_to_raw","","",4,[[["importerconfiguration",3],["timer",3],["mapname",3]],["rawmap",3]]],[0,"leeds","importer","",null,null],[5,"import_extra_data","importer::leeds","",null,[[["importerconfiguration",3],["timer",3],["rawmap",3]]]],[0,"london","importer","",null,null],[5,"import_extra_data","importer::london","",null,[[["importerconfiguration",3],["timer",3],["rawmap",3]]]],[0,"seattle","importer","",null,null],[3,"TripRecord","importer::seattle","",null,null],[12,"shape_id","","",5,null],[12,"trip_id","","",5,null],[3,"StopTimeRecord","","",null,null],[12,"trip_id","","",6,null],[12,"arrival_time","","",6,null],[5,"input","","",null,[[["importerconfiguration",3],["timer",3]]]],[5,"osm_to_raw","","",null,[[["importerconfiguration",3],["timer",3]]]],[5,"adjust_private_parking","","",null,[[["scenario",3],["map",3]]]],[5,"add_gtfs_schedules","","This import from GTFS:",null,[[["map",3]]]],[5,"match_parcels_to_buildings","","Match OSM buildings to parcels, scraping the number of…",null,[[["timer",3],["map",3]]]],[0,"utils","importer","",null,null],[5,"download","importer::utils","",null,[[["importerconfiguration",3]]]],[5,"download_kml","","",null,[[["gpsbounds",3],["timer",3]]]],[5,"osmconvert","","",null,[[["importerconfiguration",3],["string",3]]]],[5,"raw_to_map","","",null,[[["mapname",3],["timer",3]],["map",3]]],[11,"run","importer","",0,[[["importerconfiguration",3],["timer",3]]]],[11,"from","","",0,[[]]],[11,"into","","",0,[[]]],[11,"borrow","","",0,[[]]],[11,"borrow_mut",
"kml":{"doc":"","i":[[3,"ExtraShapes","kml","Some dataset imported from KML, CSV, or something else. If…",null,null],[12,"shapes","","",0,null],[3,"ExtraShape","","A single object in the dataset.",null,null],[12,"points","","The object has a different inferred shape depending on the…",1,null],[12,"attributes","","Arbitrary key/value pairs associated with this object; no…",1,null],[5,"load","","Parses a .kml file and returns ExtraShapes. Objects will…",null,[[["gpsbounds",3],["timer",3]],[["extrashapes",3],["result",6]]]],[5,"recurse","","",null,[[["gpsbounds",3],["vec",3],["btreemap",3],["node",3]],["result",6]]],[5,"parse_pt","","",null,[[],[["option",4],["lonlat",3]]]],[11,"load_csv","","Parses a .csv file and returns ExtraShapes. Each record…",0,[[["gpsbounds",3],["timer",3]],[["extrashapes",3],["result",6]]]],[11,"from","","",0,[[]]],[11,"into","","",0,[[]]],[11,"borrow","","",0,[[]]],[11,"borrow_mut","","",0,[[]]],[11,"try_from","","",0,[[],["result",4]]],[11,"try_into","","",0,[[],["result",4]]],[11,"type_id","","",0,[[],["typeid",3]]],[11,"from","","",1,[[]]],[11,"into","","",1,[[]]],[11,"to_owned","","",1,[[]]],[11,"clone_into","","",1,[[]]],[11,"borrow","","",1,[[]]],[11,"borrow_mut","","",1,[[]]],[11,"try_from","","",1,[[],["result",4]]],[11,"try_into","","",1,[[],["result",4]]],[11,"type_id","","",1,[[],["typeid",3]]],[11,"clone","","",1,[[],["extrashape",3]]],[11,"fmt","","",1,[[["formatter",3]],["result",6]]],[11,"serialize","","",0,[[],["result",4]]],[11,"serialize","","",1,[[],["result",4]]],[11,"deserialize","","",0,[[],["result",4]]],[11,"deserialize","","",1,[[],["result",4]]]],"p":[[3,"ExtraShapes"],[3,"ExtraShape"]]},\
"map_editor":{"doc":"","i":[[3,"App","map_editor","",null,null],[12,"model","","",0,null],[3,"MainState","","",null,null],[12,"state","","",1,null],[12,"panel","","",1,null],[12,"popup","","",1,null],[12,"last_id","","",1,null],[4,"State","","",null,null],[13,"Viewing","","",2,null],[13,"MovingIntersection","","",2,null],[13,"MovingBuilding","","",2,null],[13,"MovingRoadPoint","","",2,null],[13,"CreatingRoad","","",2,null],[13,"PreviewIntersection","","",2,null],[5,"preview_intersection","","",null,[[["model",3],["eventctx",3],["nodeid",3]],["drawable",3]]],[5,"preview_all_intersections","","",null,[[["model",3],["eventctx",3]],["drawable",3]]],[5,"main","","",null,[[]]],[0,"model","","",null,null],[3,"Model","map_editor::model","",null,null],[12,"map","","",3,null],[12,"showing_pts","","",3,null],[12,"world","","",3,null],[12,"include_bldgs","","",3,null],[12,"intersection_geom","","",3,null],[4,"ID","","",null,null],[13,"Building","","",4,null],[13,"Intersection","","",4,null],[13,"Road","","",4,null],[13,"RoadPoint","","",4,null],[5,"time_to_id","","",null,[[]]],[5,"dump_to_osm","","Express a RawMap as a .osm file. Why not just save the…",null,[[["rawmap",3]],[["error",3],["result",4]]]],[17,"INTERSECTION_RADIUS","","",null,null],[17,"BUILDING_LENGTH","","",null,null],[11,"blank","","",3,[[],["model",3]]],[11,"import","","",3,[[["eventctx",3],["string",3]],["model",3]]],[11,"export_to_osm","","",3,[[]]],[11,"compute_bounds","","",3,[[],["bounds",3]]],[11,"describe_obj","","",3,[[["id",4]],["text",3]]],[11,"intersection_added","","",3,[[["eventctx",3],["nodeid",3]]]],[11,"create_i","","",3,[[["eventctx",3],["pt2d",3]]]],[11,"move_i","","",3,[[["pt2d",3],["eventctx",3],["nodeid",3]]]],[11,"delete_i","","",3,[[["nodeid",3]]]],[11,"road_added","","",3,[[["originalroad",3],["eventctx",3]]]],[11,"road_deleted","","",3,[[["originalroad",3]]]],[11,"create_r","","",3,[[["eventctx",3],["nodeid",3]]]],[11,"delete_r","","",3,[[["originalroad",3]]]],[11,"road_object","","",3,[[["originalroad",3]],[["object",3],["id",4]]]],[11,"show_r_points","","",3,[[["originalroad",3],["eventctx",3]]]],[11,"stop_showing_pts","","",3,[[["originalroad",3]]]],[11,"move_r_pt","","",3,[[["eventctx",3],["originalroad",3],["pt2d",3]]]],[11,"delete_r_pt","","",3,[[["originalroad",3],["eventctx",3]]]],[11,"insert_r_pt","","",3,[[["eventctx",3],["originalroad",3],["pt2d",3]],[["option",4],["id",4]]]],[11,"clear_r_pts","","",3,[[["originalroad",3],["eventctx",3]]]],[11,"merge_r","","",3,[[["originalroad",3],["eventctx",3]]]],[11,"bldg_added","","",3,[[["osmid",4],["eventctx",3]]]],[11,"create_b","","",3,[[["eventctx",3],["pt2d",3]],["id",4]]],[11,"move_b","","",3,[[["eventctx",3],["osmid",4],["pt2d",3]]]],[11,"delete_b","","",3,[[["osmid",4]]]],[0,"world","map_editor","",null,null],[3,"Object","map_editor::world","",null,null],[12,"id","","",5,null],[12,"geometry","","",5,null],[3,"WorldObject","","",null,null],[12,"unioned_polygon","","",6,null],[12,"draw","","",6,null],[12,"quadtree_id","","",6,null],[3,"World","","",null,null],[12,"objects","","",7,null],[12,"quadtree","","",7,null],[12,"current_selection","","",7,null],[8,"ObjectID","","",null,null],[10,"zorder","","",8,[[]]],[11,"new","","",5,[[["polygon",3],["color",3]],["object",3]]],[11,"new","","",7,[[],["world",3]]],[11,"draw","","",7,[[["fn",8],["gfxctx",3]]]],[11,"handle_mouseover","","",7,[[["eventctx",3]]]],[11,"force_set_selection","","",7,[[]]],[11,"get_selection","","",7,[[],["option",4]]],[11,"add","","",7,[[["eventctx",3],["object",3]]]],[11,"delete","","",7,[[]]],[11,"new","map_editor","",1,[[["eventctx",3]]]],[11,"from","","",0,[[]]],[11,"into","","",0,[[]]],[11,"borrow","","",0,[[]]],[11,"borrow_mut","","",0,[[]]],[11,"try_from","","",0,[[],["result",4]]],[11,"try_into","","",0,[[],["result",4]]],[11,"type_id","","",0,[[],["typeid",3]]],[11,"vzip","","",0,[[]]],[11,"into_any","","",0,[[["global",3],["box",3]],[["any",8],["global",3],["box",3]]]],[11,"into_any_rc","","",0,[[["rc",3]],[["rc",3],["any",8]]]],[11,"as_any","","",0,[[],["any",8]]],[11,"as_any_mut","","",0,[[],["any",8]]]
"map_gui":{"doc":"This crate contains common code for applications that draw…","i":[[3,"SimpleApp","map_gui","Simple app state that just renders a static map, without…",null,null],[12,"map","","",0,null],[12,"draw_map","","",0,null],[12,"cs","","",0,null],[12,"opts","","",0,null],[12,"current_selection","","",0,null],[12,"session","","Custom per-app state can be stored here",0,null],[12,"time","","If desired, this can be advanced to render traffic signals…",0,null],[4,"ID","","",null,null],[13,"Road","","",1,null],[13,"Lane","","",1,null],[13,"Intersection","","",1,null],[13,"Building","","",1,null],[13,"ParkingLot","","",1,null],[13,"Car","","",1,null],[13,"Pedestrian","","",1,null],[13,"PedCrowd","","",1,null],[13,"BusStop","","",1,null],[13,"Area","","",1,null],[0,"colors","","A color scheme groups colors used for different map,…",null,null],[3,"ColorScheme","map_gui::colors","",null,null],[12,"scheme","","",2,null],[12,"hovering","","",2,null],[12,"panel_bg","","",2,null],[12,"section_bg","","",2,null],[12,"inner_panel","","",2,null],[12,"day_time_slider","","",2,null],[12,"night_time_slider","","",2,null],[12,"selected","","",2,null],[12,"current_object","","",2,null],[12,"perma_selected_object","","",2,null],[12,"bottom_bar_id","","",2,null],[12,"bottom_bar_name","","",2,null],[12,"fade_map_dark","","",2,null],[12,"gui_style","","",2,null],[12,"dialog_bg","","",2,null],[12,"minimap_cursor_border","","",2,null],[12,"minimap_cursor_bg","","",2,null],[12,"minimap_selected_zoom","","",2,null],[12,"minimap_unselected_zoom","","",2,null],[12,"driving_lane","","",2,null],[12,"bus_lane","","",2,null],[12,"parking_lane","","",2,null],[12,"bike_lane","","",2,null],[12,"sidewalk","","",2,null],[12,"sidewalk_lines","","",2,null],[12,"general_road_marking","","",2,null],[12,"road_center_line","","",2,null],[12,"light_rail_track","","",2,null],[12,"private_road","","",2,null],[12,"unzoomed_highway","","",2,null],[12,"unzoomed_arterial","","",2,null],[12,"unzoomed_residential","","",2,null],[12,"unzoomed_trail","","",2,null],[12,"normal_intersection","","",2,null],[12,"stop_sign","","",2,null],[12,"stop_sign_pole","","",2,null],[12,"signal_protected_turn","","",2,null],[12,"signal_permitted_turn","","",2,null],[12,"signal_banned_turn","","",2,null],[12,"signal_box","","",2,null],[12,"signal_spinner","","",2,null],[12,"signal_turn_block_bg","","",2,null],[12,"very_slow_intersection","","",2,null],[12,"slow_intersection","","",2,null],[12,"normal_slow_intersection","","",2,null],[12,"void_background","","",2,null],[12,"map_background","","",2,null],[12,"unzoomed_interesting_intersection","","",2,null],[12,"residential_building","","",2,null],[12,"commercial_building","","",2,null],[12,"building_outline","","",2,null],[12,"parking_lot","","",2,null],[12,"grass","","",2,null],[12,"water","","",2,null],[12,"median_strip","","",2,null],[12,"pedestrian_plaza","","",2,null],[12,"unzoomed_car","","",2,null],[12,"unzoomed_bike","","",2,null],[12,"unzoomed_bus","","",2,null],[12,"unzoomed_pedestrian","","",2,null],[12,"agent_colors","","",2,null],[12,"route","","",2,null],[12,"turn_arrow","","",2,null],[12,"brake_light","","",2,null],[12,"bus_body","","",2,null],[12,"bus_label","","",2,null],[12,"train_body","","",2,null],[12,"ped_head","","",2,null],[12,"ped_foot","","",2,null],[12,"ped_preparing_bike_body","","",2,null],[12,"ped_crowd","","",2,null],[12,"bike_frame","","",2,null],[12,"parked_car","","",2,null],[12,"good_to_bad_red","","",2,null],[12,"good_to_bad_green","","",2,null],[12,"bus_layer","","",2,null],[12,"edits_layer","","",2,null],[12,"parking_trip","","",2,null],[12,"bike_trip","","",2,null],[12,"bus_trip","","",2,null],[12,"before_changes","","",2,null],[12,"after_changes","","",2,null],[4,"ColorSchemeChoice","","",null,null],[13,"Standard","","",3,null],[13,"NightMode","","",3,null],[13,"SAMGreenDay","","",3,null],[13,"SAMDesertDay","","",3,null],[13,"BAP","","",3,null],[13,"OSM","","",3,null],[13,"Starcat","","",3,null],[13,"Textured","","",3,null],[13,"MapboxLight","","",3,null],[13,"MapboxDark","","",3,null],[1
"map_model":{"doc":"`map_model` describes the world where simulations occur.…","i":[[3,"City","map_model","A single city (like Seattle) can be broken down into…",null,null],[12,"name","","",0,null],[12,"boundary","","",0,null],[12,"areas","","",0,null],[12,"regions","","The individual maps",0,null],[3,"EditEffects","","",null,null],[12,"changed_roads","","",1,null],[12,"changed_intersections","","",1,null],[12,"added_turns","","",1,null],[12,"deleted_turns","","",1,null],[3,"EditRoad","","",null,null],[12,"lanes_ltr","","",2,null],[12,"speed_limit","","",2,null],[12,"access_restrictions","","",2,null],[3,"MapEdits","","Represents changes to a map. Note this isn\'t serializable…",null,null],[12,"edits_name","","",3,null],[12,"commands","","A stack, oldest edit is first. The same intersection may…",3,null],[12,"merge_zones","","If false, adjacent roads with the same AccessRestrictions…",3,null],[12,"changed_roads","","Derived from commands, kept up to date by update_derived",3,null],[12,"original_intersections","","",3,null],[12,"changed_routes","","",3,null],[12,"proposal_description","","Some edits are included in the game by default, in…",3,null],[12,"proposal_link","","",3,null],[3,"PermanentMapEdits","","MapEdits are converted to this before serializing.…",null,null],[12,"map_name","","",4,null],[12,"edits_name","","",4,null],[12,"version","","",4,null],[12,"commands","","",4,null],[12,"merge_zones","","If false, adjacent roads with the same AccessRestrictions…",4,null],[12,"proposal_description","","Edits without these are player generated.",4,null],[12,"proposal_link","","The link is optional even for proposals",4,null],[3,"MapConfig","","",null,null],[12,"driving_side","","If true, driving happens on the right side of the road…",5,null],[12,"bikes_can_use_bus_lanes","","",5,null],[12,"inferred_sidewalks","","If true, roads without explicitly tagged sidewalks may…",5,null],[12,"separate_cycleways","","If true, separate cycleways from OSM will be included.",5,null],[3,"Area","","Areas are just used for drawing.",null,null],[12,"id","","",6,null],[12,"area_type","","",6,null],[12,"polygon","","",6,null],[12,"osm_tags","","",6,null],[12,"osm_id","","The importing process also automatically creates some…",6,null],[3,"AreaID","","",null,null],[12,"0","","",7,null],[3,"Amenity","","A business located inside a building.",null,null],[12,"names","","",8,null],[12,"amenity_type","","This is the specific amenity listed in OSM, not the more…",8,null],[12,"osm_tags","","Depending on options while importing, these might be…",8,null],[3,"Building","","A building has connections to the road and sidewalk, may…",null,null],[12,"id","","",9,null],[12,"polygon","","",9,null],[12,"levels","","",9,null],[12,"address","","",9,null],[12,"name","","",9,null],[12,"orig_id","","",9,null],[12,"label_center","","Where a text label should be centered to have the best…",9,null],[12,"amenities","","",9,null],[12,"bldg_type","","",9,null],[12,"parking","","",9,null],[12,"osm_tags","","Depending on options while importing, these might be…",9,null],[12,"sidewalk_pos","","The building\'s connection for pedestrians is immutable.…",9,null],[12,"driveway_geom","","Goes from building to sidewalk",9,null],[3,"BuildingID","","",null,null],[12,"0","","",10,null],[3,"NamePerLanguage","","None corresponds to the native name",null,null],[12,"0","","",11,null],[3,"BusRoute","","",null,null],[12,"id","","",12,null],[12,"full_name","","",12,null],[12,"short_name","","",12,null],[12,"gtfs_trip_marker","","",12,null],[12,"osm_rel_id","","",12,null],[12,"stops","","",12,null],[12,"start","","May be a border or not. If not, is long enough for buses…",12,null],[12,"end_border","","",12,null],[12,"route_type","","",12,null],[12,"spawn_times","","Non-empty, times in order for one day when a vehicle…",12,null],[12,"orig_spawn_times","","Explicitly store whatever the original was, since this…",12,null],[3,"BusRouteID","","",null,null],[12,"0","","",13,null],[3,"BusStop","","",null,null],[12,"id","","",14,null],[12,"name","","",14,nu
"popdat":{"doc":"popdat (\\\"population data\\\") generates `Scenarios` given a…","i":[[3,"CensusArea","popdat","Represents aggregate demographic data for some part of a…",null,null],[12,"polygon","","",0,null],[12,"population","","",0,null],[3,"CensusPerson","","Demographic information for a single person",null,null],[12,"home","","",1,null],[12,"age","","",1,null],[12,"employed","","",1,null],[12,"owns_car","","",1,null],[3,"Schedule","","A single person\'s daily schedule. It\'s assumed that…",null,null],[12,"activities","","",2,null],[3,"Config","","Any arbitrarily chosen parameters needed should be put…",null,null],[12,"walk_for_distances_shorter_than","","",3,null],[12,"walk_or_bike_for_distances_shorter_than","","",3,null],[4,"PersonType","","It might be useful to classify a CensusPerson into…",null,null],[13,"Student","","",4,null],[13,"Worker","","",4,null],[4,"Activity","","Different things people might do in the day. Maybe it\'s…",null,null],[13,"Breakfast","","",5,null],[13,"Lunch","","",5,null],[13,"Dinner","","",5,null],[13,"School","","",5,null],[13,"Entertainment","","",5,null],[13,"Errands","","",5,null],[13,"Financial","","",5,null],[13,"Healthcare","","",5,null],[13,"Home","","",5,null],[13,"Work","","",5,null],[5,"distribute_population_to_homes","","Starting from some number of total people living in a…",null,[[["xorshiftrng",3],["polygon",3],["map",3]],["vec",3]]],[5,"generate_scenario","","Wires together all the pieces, so you can just hand this…",null,[[["censusarea",3],["map",3],["xorshiftrng",3],["vec",3],["config",3]],["scenario",3]]],[0,"activities","","",null,null],[5,"rand_duration","popdat::activities","",null,[[["duration",3],["xorshiftrng",3]],["duration",3]]],[5,"rand_time","","",null,[[["duration",3],["xorshiftrng",3]],["time",3]]],[5,"minutes","","",null,[[],["duration",3]]],[5,"hours","","",null,[[],["duration",3]]],[11,"generate_schedule","popdat","",1,[[["config",3],["xorshiftrng",3]],["schedule",3]]],[0,"distribute_people","","",null,null],[5,"assign_people_to_houses","popdat::distribute_people","",null,[[["censusarea",3],["map",3],["xorshiftrng",3],["vec",3],["config",3]],[["vec",3],["censusperson",3]]]],[5,"distribute_population_to_homes","","Starting from some number of total people living in a…",null,[[["xorshiftrng",3],["polygon",3],["map",3]],["vec",3]]],[0,"import_census","popdat","",null,null],[11,"fetch_all_for_map","","",0,[[["gpsbounds",3],["polygon",3]]]],[0,"make_person","","",null,null],[3,"PersonFactory","popdat::make_person","",null,null],[12,"activity_to_buildings","","",6,null],[5,"make_people","","",null,[[["censusperson",3],["timer",3],["config",3],["map",3],["vec",3],["xorshiftrng",3]],[["personspec",3],["vec",3]]]],[5,"pick_mode","","",null,[[["tripendpoint",4],["xorshiftrng",3],["map",3],["config",3]],["tripmode",4]]],[11,"new","","",6,[[["map",3]]]],[11,"activity_to_buildings","","",6,[[["map",3]],[["hashmap",3],["activity",4],["vec",3]]]],[11,"find_building_for_activity","","",6,[[["tripendpoint",4],["map",3],["xorshiftrng",3],["activity",4]],[["option",4],["buildingid",3]]]],[11,"make_person","","",6,[[["censusperson",3],["config",3],["map",3],["xorshiftrng",3],["vec",3]],["personspec",3]]],[11,"default","popdat","",3,[[],["config",3]]],[11,"from","","",0,[[]]],[11,"into","","",0,[[]]],[11,"borrow","","",0,[[]]],[11,"borrow_mut","","",0,[[]]],[11,"try_from","","",0,[[],["result",4]]],[11,"try_into","","",0,[[],["result",4]]],[11,"type_id","","",0,[[],["typeid",3]]],[11,"vzip","","",0,[[]]],[11,"into_any","","",0,[[["global",3],["box",3]],[["any",8],["global",3],["box",3]]]],[11,"into_any_rc","","",0,[[["rc",3]],[["rc",3],["any",8]]]],[11,"as_any","","",0,[[],["any",8]]],[11,"as_any_mut","","",0,[[],["any",8]]],[11,"into_any_arc","","",0,[[["arc",3]],[["any",8],["arc",3]]]],[11,"from","","",1,[[]]],[11,"into","","",1,[[]]],[11,"borrow","","",1,[[]]],[11,"borrow_mut","","",1,[[]]],[11,"try_from","","",1,[[],["result",4]]],[11,"try_into","","",1,[[],["result",4]]],[11,"type_id","","",1,[[],["typeid",3]]],[11,"vzip","","",1,[[]]],[11,"into_any
"santa":{"doc":"","i":[[5,"main","santa","",null,[[]]],[0,"after_level","","",null,null],[3,"Strategize","santa::after_level","",null,null],[12,"unlock_messages","","",0,null],[12,"draw_all","","",0,null],[3,"Results","","",null,null],[3,"RecordPath","","",null,null],[12,"pts","","",1,null],[17,"ZOOM","","",null,null],[11,"new","","",0,[[["simpleapp",3],["recordpath",3],["eventctx",3],["buildings",3],["level",3]],[["state",8],["box",3]]]],[11,"new","","",2,[[["simpleapp",3],["eventctx",3],["level",3]],[["state",8],["box",3]]]],[11,"new","","",1,[[],["recordpath",3]]],[11,"add_pt","","",1,[[["pt2d",3]]]],[11,"render","","",1,[[["distance",3]],["polygon",3]]],[0,"animation","santa","",null,null],[3,"Animator","santa::animation","",null,null],[12,"active","","",3,null],[12,"draw_mapspace","","",3,null],[12,"draw_screenspace","","",3,null],[3,"Animation","","",null,null],[12,"start","","",4,null],[12,"end","","",4,null],[12,"effect","","",4,null],[12,"screenspace","","",4,null],[3,"SnowEffect","","",null,null],[12,"rng","","",5,null],[12,"flakes","","",5,null],[12,"draw","","",5,null],[3,"Snowflake","","",null,null],[12,"start","","",6,null],[12,"initial_pos","","",6,null],[12,"fall_speed","","",6,null],[12,"swoop_period","","",6,null],[12,"max_swoop","","",6,null],[4,"Effect","","",null,null],[13,"Scale","","",7,null],[12,"orig","santa::animation::Effect","",8,null],[12,"center","","",8,null],[12,"lerp_scale","","",8,null],[13,"FollowPath","santa::animation","",7,null],[12,"color","santa::animation::Effect","",9,null],[12,"width","","",9,null],[12,"pl","","",9,null],[13,"Flash","santa::animation","",7,null],[12,"orig","santa::animation::Effect","",10,null],[12,"alpha_scale","","",10,null],[12,"cycles","","",10,null],[11,"new","santa::animation","",3,[[["eventctx",3]],["animator",3]]],[11,"add","","Pass in a future value for `now` to schedule a delayed…",3,[[["effect",4],["duration",3],["time",3]]]],[11,"add_screenspace","","",3,[[["effect",4],["duration",3],["time",3]]]],[11,"event","","",3,[[["eventctx",3],["time",3]]]],[11,"draw","","",3,[[["gfxctx",3]]]],[11,"is_done","","",3,[[]]],[11,"render","","",7,[[["geombatch",3]]]],[11,"pos","","",6,[[["time",3]],["pt2d",3]]],[11,"new","","",5,[[["eventctx",3]],["snoweffect",3]]],[11,"spawn_new","","",5,[[["pt2d",3],["time",3]],["snowflake",3]]],[11,"event","","",5,[[["eventctx",3],["time",3]]]],[11,"draw","","",5,[[["gfxctx",3]]]],[0,"before_level","santa","",null,null],[3,"Picker","santa::before_level","",null,null],[12,"vehicle_panel","","",11,null],[12,"instructions_panel","","",11,null],[12,"upzone_panel","","",11,null],[12,"level","","",11,null],[12,"bldgs","","",11,null],[12,"current_picks","","",11,null],[12,"draw_start","","",11,null],[5,"make_vehicle_panel","","",null,[[["eventctx",3],["simpleapp",3]],["panel",3]]],[5,"make_upzone_panel","","",null,[[["eventctx",3],["simpleapp",3]],["panel",3]]],[5,"explain_upzoning","","",null,[[["eventctx",3]],[["transition",4],["simpleapp",3]]]],[17,"ZOOM","","",null,null],[11,"new","","",11,[[["level",3],["eventctx",3],["simpleapp",3]],[["state",8],["box",3]]]],[11,"randomly_pick_upzones","","",11,[[["simpleapp",3]]]],[0,"buildings","santa","",null,null],[3,"Buildings","santa::buildings","",null,null],[12,"buildings","","",12,null],[12,"draw_all","","",12,null],[12,"total_housing_units","","",12,null],[12,"upzones","","",12,null],[4,"BldgState","","",null,null],[13,"Undelivered","","",13,null],[13,"Store","","",13,null],[13,"Done","","",13,null],[13,"Ignore","","",13,null],[11,"new","","",12,[[["hashset",3],["eventctx",3],["simpleapp",3],["buildingid",3]],["buildings",3]]],[11,"all_stores","","",12,[[],[["buildingid",3],["vec",3]]]],[11,"draw_done_houses","","",12,[[["eventctx",3],["simpleapp",3]],["drawable",3]]],[0,"controls","santa","",null,null],[3,"InstantController","santa::controls","",null,null],[12,"facing","","Which of the 8 directions are we facing, based on the last…",14,null],[5,"angle_from_arrow_keys","","",null,[[["eventctx",3]],[["option",4],["angle",3]]]],[17,"HACK","","",null,null],[11,"new","","",14,[[],["ins
"sim":{"doc":"The sim crate runs a traffic simulation on top of the…","i":[[3,"DrawCarInput","sim","",null,null],[12,"id","","",0,null],[12,"waiting_for_turn","","",0,null],[12,"status","","",0,null],[12,"show_parking_intent","","",0,null],[12,"on","","Front of the car",0,null],[12,"partly_on","","Possibly the rest",0,null],[12,"label","","",0,null],[12,"body","","",0,null],[3,"DrawPedCrowdInput","","",null,null],[12,"low","","",1,null],[12,"high","","",1,null],[12,"members","","",1,null],[12,"location","","",1,null],[3,"DrawPedestrianInput","","",null,null],[12,"id","","",2,null],[12,"pos","","",2,null],[12,"facing","","",2,null],[12,"waiting_for_turn","","",2,null],[12,"preparing_bike","","",2,null],[12,"waiting_for_bus","","",2,null],[12,"on","","",2,null],[3,"UnzoomedAgent","","",null,null],[12,"id","","",3,null],[12,"pos","","",3,null],[12,"person","","None means a bus.",3,null],[12,"parking","","True only for cars currently looking for parking. I don\'t…",3,null],[3,"Analytics","","As a simulation runs, different pieces emit Events. The…",null,null],[12,"road_thruput","","",4,null],[12,"intersection_thruput","","",4,null],[12,"traffic_signal_thruput","","",4,null],[12,"demand","","Most fields in Analytics are cumulative over time, but…",4,null],[12,"bus_arrivals","","",4,null],[12,"passengers_boarding","","For each passenger boarding, how long did they wait at the…",4,null],[12,"passengers_alighting","","",4,null],[12,"started_trips","","",4,null],[12,"finished_trips","","Finish time, ID, mode, trip duration if successful (or…",4,null],[12,"trip_intersection_delays","","Records how long was spent waiting at each turn…",4,null],[12,"lane_speed_percentage","","Records the average speed/maximum speed for each lane If…",4,null],[12,"trip_log","","",4,null],[12,"intersection_delays","","Only for traffic signals. The u8 is the movement index…",4,null],[12,"parking_lane_changes","","Per parking lane or lot, when does a spot become filled…",4,null],[12,"parking_lot_changes","","",4,null],[12,"alerts","","",4,null],[12,"record_anything","","For benchmarking, we may want to disable collecting data.",4,null],[3,"TripPhase","","",null,null],[12,"start_time","","",5,null],[12,"end_time","","",5,null],[12,"path","","",5,null],[12,"has_path_req","","",5,null],[12,"phase_type","","",5,null],[3,"BorderSpawnOverTime","","",null,null],[12,"num_peds","","",6,null],[12,"num_cars","","",6,null],[12,"num_bikes","","",6,null],[12,"percent_use_transit","","",6,null],[12,"start_time","","",6,null],[12,"stop_time","","",6,null],[12,"start_from_border","","",6,null],[12,"goal","","",6,null],[3,"ExternalPerson","","",null,null],[12,"origin","","",7,null],[12,"trips","","",7,null],[3,"ExternalTrip","","",null,null],[12,"departure","","",8,null],[12,"destination","","",8,null],[12,"mode","","",8,null],[3,"IndividTrip","","",null,null],[12,"depart","","",9,null],[12,"destination","","",9,null],[12,"mode","","",9,null],[12,"purpose","","",9,null],[12,"cancelled","","",9,null],[12,"modified","","Did a ScenarioModifier affect this?",9,null],[3,"MapBorders","","",null,null],[12,"incoming_walking","","",10,null],[12,"incoming_driving","","",10,null],[12,"incoming_biking","","",10,null],[12,"outgoing_walking","","",10,null],[12,"outgoing_driving","","",10,null],[12,"outgoing_biking","","",10,null],[3,"PersonSpec","","",null,null],[12,"orig_id","","Just used for debugging",11,null],[12,"origin","","The first trip starts here",11,null],[12,"trips","","Each trip starts at the destination of the previous trip",11,null],[3,"Scenario","","A Scenario describes all the input to a simulation.…",null,null],[12,"scenario_name","","",12,null],[12,"map_name","","",12,null],[12,"people","","",12,null],[12,"only_seed_buses","","None means seed all buses. Otherwise the route name must…",12,null],[3,"ScenarioGenerator","","",null,null],[12,"scenario_name","","",13,null],[12,"only_seed_buses","","",13,null],[12,"spawn_over_time","","",13,null],[12,"border_spawn_over_time","","",13,null],[3,"SimFlags","","SimFlagsspecifiesasimulationtosetup.
"sumo":{"doc":"This crate provides a Rust interface to different parts of…","i":[[3,"Connection","sumo","",null,null],[12,"from","","",0,null],[12,"from_lane","","",0,null],[12,"to","","",0,null],[12,"to_lane","","",0,null],[12,"via","","",0,null],[12,"dir","","",0,null],[3,"EdgeID","","",null,null],[12,"0","","",1,null],[3,"InternalLaneID","","",null,null],[12,"0","","",2,null],[3,"LaneID","","",null,null],[12,"0","","",3,null],[3,"NodeID","","",null,null],[12,"0","","",4,null],[3,"Network","","A normalized form of a SUMO network. A `raw::Network` is a…",null,null],[12,"location","","",5,null],[12,"normal_edges","","",5,null],[12,"internal_edges","","",5,null],[12,"junctions","","",5,null],[12,"connections","","",5,null],[3,"Edge","","",null,null],[12,"id","","",6,null],[12,"edge_type","","",6,null],[12,"name","","",6,null],[12,"from","","",6,null],[12,"to","","",6,null],[12,"priority","","",6,null],[12,"lanes","","",6,null],[12,"center_line","","",6,null],[3,"Lane","","",null,null],[12,"id","","",7,null],[12,"index","","0 is the rightmost lane",7,null],[12,"speed","","",7,null],[12,"length","","",7,null],[12,"width","","",7,null],[12,"center_line","","",7,null],[12,"allow","","",7,null],[3,"InternalEdge","","See…",null,null],[12,"id","","",8,null],[12,"lanes","","",8,null],[3,"InternalLane","","",null,null],[12,"id","","",9,null],[12,"index","","",9,null],[12,"speed","","",9,null],[12,"length","","",9,null],[12,"center_line","","",9,null],[12,"allow","","",9,null],[3,"Junction","","",null,null],[12,"id","","",10,null],[12,"junction_type","","",10,null],[12,"pt","","",10,null],[12,"incoming_lanes","","",10,null],[12,"internal_lanes","","",10,null],[12,"shape","","",10,null],[4,"Direction","","",null,null],[13,"Straight","","",11,null],[13,"Turn","","",11,null],[13,"Left","","",11,null],[13,"Right","","",11,null],[13,"PartiallyLeft","","",11,null],[13,"PartiallyRight","","",11,null],[13,"Invalid","","",11,null],[4,"VehicleClass","","",null,null],[13,"Pedestrian","","",12,null],[13,"Bicycle","","",12,null],[13,"RailUrban","","",12,null],[13,"Other","","",12,null],[0,"normalize","","Transforms a `raw::Network` into a `Network` that\'s easier…",null,null],[11,"load","","Reads a .net.xml file and return the normalized SUMO…",5,[[["timer",3]],[["network",3],["result",6]]]],[11,"from_raw","","",5,[[["network",3]],["network",3]]],[11,"fix_coordinates","","Normalize coordinates to map-space, with Y increasing down.",5,[[]]],[0,"raw","","Parse SUMO networks from XML without making any…",null,null],[3,"Network","sumo::raw","",null,null],[12,"location","","",13,null],[12,"types","","",13,null],[12,"edges","","",13,null],[12,"junctions","","",13,null],[12,"connections","","",13,null],[3,"Location","","",null,null],[12,"converted_boundary","","",14,null],[12,"orig_boundary","","",14,null],[3,"EdgeID","","",null,null],[12,"0","","",1,null],[3,"NodeID","","",null,null],[12,"0","","",4,null],[3,"LaneID","","",null,null],[12,"0","","",3,null],[3,"InternalLaneID","","",null,null],[12,"0","","",2,null],[3,"Type","","",null,null],[12,"id","","",15,null],[12,"priority","","",15,null],[12,"speed","","",15,null],[12,"width","","",15,null],[12,"allow","","",15,null],[12,"disallow","","",15,null],[3,"Edge","","",null,null],[12,"id","","",16,null],[12,"name","","",16,null],[12,"from","","",16,null],[12,"to","","",16,null],[12,"priority","","",16,null],[12,"function","","",16,null],[12,"lanes","","",16,null],[12,"edge_type","","",16,null],[12,"spread_type","","",16,null],[12,"shape","","",16,null],[3,"Lane","","",null,null],[12,"id","","This could be a LaneID or an InternalLaneID. It\'ll be…",17,null],[12,"index","","",17,null],[12,"speed","","",17,null],[12,"length","","",17,null],[12,"width","","",17,null],[12,"shape","","",17,null],[12,"allow","","",17,null],[12,"disallow","","",17,null],[3,"Junction","","",null,null],[12,"id","","",18,null],[12,"junction_type","","",18,null],[12,"x","","",18,null],[12,"y","","",18,null],[12,"incoming_lanes","","",18,null],[12,"internal_lanes","","",18,null],[12,"shape","","",18,null],[3,"Connect
"tests":{"doc":"Integration tests","i":[[5,"main","tests","",null,[[],["result",6]]],[5,"test_map_importer","","Test the map pipeline by importing simple, handcrafted…",null,[[],["result",6]]],[5,"import_map","","Run the contents of a .osm through the full map importer…",null,[[["string",3]],["map",3]]],[5,"dump_turn_goldenfile","","Verify what turns are generated by writing (from lane, to…",null,[[["map",3]],["result",6]]],[5,"smoke_test","","Simulate an hour on every map.",null,[[],["result",6]]],[5,"dump_route_goldenfile","","Describe all public transit routes and keep under version…",null,[[["map",3]],["result",6]]],[5,"check_proposals","","Verify all edits under version control can be correctly…",null,[[],["result",6]]],[5,"test_lane_changing","","Verify lane-chaging behavior is overall reasonable, by…",null,[[["map",3]],["result",6]]]],"p":[]},\
"traffic_signal_data":{"doc":"A representation of traffic signal configuration that…","i":[[3,"TrafficSignal","traffic_signal_data","",null,null],[12,"intersection_osm_node_id","","The ID of the OSM node representing the intersection with…",0,null],[12,"plans","","The traffic signal uses configuration from one plan at a…",0,null],[3,"Plan","","A plan describes how a traffic signal is configured during…",null,null],[12,"start_time_seconds","","This plan takes effect at this local time, measured in…",1,null],[12,"stages","","The traffic signal repeatedly cycles through these stages.…",1,null],[12,"offset_seconds","","Relative to a central clock, delay the first stage by this…",1,null],[3,"Stage","","A traffic signal is in one stage at any time. The stage…",null,null],[12,"protected_turns","","During this stage, these turns can be performed with the…",2,null],[12,"permitted_turns","","During this stage, these turns can be performed after…",2,null],[12,"stage_type","","The stage lasts this long before moving to the next one.",2,null],[3,"Turn","","A movement through an intersection.",null,null],[12,"from","","The movement begins at the end of this road segment.",3,null],[12,"to","","The movement ends at the beginning of this road segment.",3,null],[12,"intersection_osm_node_id","","The ID of the OSM node representing the intersection. This…",3,null],[12,"is_crosswalk","","True iff the movement is along a crosswalk. Note that…",3,null],[3,"DirectedRoad","","A road segment connecting two intersections, and a…",null,null],[12,"osm_way_id","","The ID of the OSM way representing the road.",4,null],[12,"osm_node1","","The ID of the OSM node at the start of this road segment.",4,null],[12,"osm_node2","","The ID of the OSM node at the end of this road segment.",4,null],[12,"is_forwards","","The direction along the road segment. See…",4,null],[4,"StageType","","How long a stage lasts before moving to the next one.",null,null],[13,"Fixed","","A fixed number of seconds.",5,null],[13,"Variable","","Minimum, Delay, Additional Minimum is the minimum cycle…",5,null],[5,"load_all_data","","Returns all traffic signal data compiled into this build,…",null,[[],[["btreemap",3],["error",3],["result",4]]]],[7,"DATA","","",null,null],[11,"from","","",0,[[]]],[11,"into","","",0,[[]]],[11,"to_owned","","",0,[[]]],[11,"clone_into","","",0,[[]]],[11,"borrow","","",0,[[]]],[11,"borrow_mut","","",0,[[]]],[11,"try_from","","",0,[[],["result",4]]],[11,"try_into","","",0,[[],["result",4]]],[11,"type_id","","",0,[[],["typeid",3]]],[11,"from","","",1,[[]]],[11,"into","","",1,[[]]],[11,"to_owned","","",1,[[]]],[11,"clone_into","","",1,[[]]],[11,"borrow","","",1,[[]]],[11,"borrow_mut","","",1,[[]]],[11,"try_from","","",1,[[],["result",4]]],[11,"try_into","","",1,[[],["result",4]]],[11,"type_id","","",1,[[],["typeid",3]]],[11,"from","","",2,[[]]],[11,"into","","",2,[[]]],[11,"to_owned","","",2,[[]]],[11,"clone_into","","",2,[[]]],[11,"borrow","","",2,[[]]],[11,"borrow_mut","","",2,[[]]],[11,"try_from","","",2,[[],["result",4]]],[11,"try_into","","",2,[[],["result",4]]],[11,"type_id","","",2,[[],["typeid",3]]],[11,"from","","",3,[[]]],[11,"into","","",3,[[]]],[11,"to_owned","","",3,[[]]],[11,"clone_into","","",3,[[]]],[11,"borrow","","",3,[[]]],[11,"borrow_mut","","",3,[[]]],[11,"try_from","","",3,[[],["result",4]]],[11,"try_into","","",3,[[],["result",4]]],[11,"type_id","","",3,[[],["typeid",3]]],[11,"from","","",4,[[]]],[11,"into","","",4,[[]]],[11,"to_owned","","",4,[[]]],[11,"clone_into","","",4,[[]]],[11,"borrow","","",4,[[]]],[11,"borrow_mut","","",4,[[]]],[11,"try_from","","",4,[[],["result",4]]],[11,"try_into","","",4,[[],["result",4]]],[11,"type_id","","",4,[[],["typeid",3]]],[11,"from","","",5,[[]]],[11,"into","","",5,[[]]],[11,"to_owned","","",5,[[]]],[11,"clone_into","","",5,[[]]],[11,"borrow","","",5,[[]]],[11,"borrow_mut","","",5,[[]]],[11,"try_from","","",5,[[],["result",4]]],[11,"try_into","","",5,[[],["result",4]]],[11,"type_id","","",5,[[],["typeid",3]]],[11,"clone","","",0,[[],["trafficsignal",3]]],[11,"clone",
"widgetry":{"doc":"WidgetsIf none of these do what you need, implementing a…","i":[[3,"Drawable","widgetry","Geometry that\'s been uploaded to the GPU once and can be…",null,null],[12,"vert_array","","",0,null],[12,"vert_buffer","","",0,null],[12,"elem_buffer","","",0,null],[12,"num_indices","","",0,null],[12,"gl","","",0,null],[3,"Canvas","","",null,null],[12,"cam_x","","",1,null],[12,"cam_y","","",1,null],[12,"cam_zoom","","",1,null],[12,"cursor","","",1,null],[12,"window_has_cursor","","",1,null],[12,"drag_canvas_from","","",1,null],[12,"drag_just_ended","","",1,null],[12,"window_width","","",1,null],[12,"window_height","","",1,null],[12,"map_dims","","",1,null],[12,"invert_scroll","","",1,null],[12,"touchpad_to_move","","",1,null],[12,"edge_auto_panning","","",1,null],[12,"keys_to_pan","","",1,null],[12,"gui_scroll_speed","","",1,null],[12,"covered_areas","","",1,null],[12,"keys_held","","",1,null],[3,"Color","","",null,null],[12,"r","","",2,null],[12,"g","","",2,null],[12,"b","","",2,null],[12,"a","","",2,null],[3,"LinearGradient","","",null,null],[12,"line","","",3,null],[12,"stops","","",3,null],[3,"Texture","","",null,null],[12,"0","","",4,null],[3,"GfxCtx","","",null,null],[12,"inner","","",5,null],[12,"uniforms","","",5,null],[12,"screencap_mode","","",5,null],[12,"naming_hint","","",5,null],[12,"canvas","","",5,null],[12,"prerender","","",5,null],[12,"style","","",5,null],[12,"num_draw_calls","","",5,null],[12,"num_forks","","",5,null],[3,"Prerender","","",null,null],[12,"inner","","",6,null],[12,"assets","","",6,null],[12,"num_uploads","","",6,null],[12,"scale_factor","","",6,null],[3,"EventCtx","","",null,null],[12,"fake_mouseover","","",7,null],[12,"input","","",7,null],[12,"canvas","","",7,null],[12,"prerender","","",7,null],[12,"style","","",7,null],[12,"updates_requested","","",7,null],[3,"GeomBatch","","A mutable builder for a group of colored polygons.",null,null],[12,"list","","",8,null],[12,"autocrop_dims","","",8,null],[3,"UserInput","","",null,null],[12,"event","","",9,null],[12,"event_consumed","","",9,null],[12,"lctrl_held","","",9,null],[3,"Settings","","Customize how widgetry works. These settings can\'t be…",null,null],[12,"window_title","","",10,null],[12,"dump_raw_events","","",10,null],[12,"scale_factor","","",10,null],[12,"window_icon","","",10,null],[12,"loading_tips","","",10,null],[12,"read_svg","","",10,null],[3,"ScreenDims","","ScreenDims is in units of logical pixels, as opposed to…",null,null],[12,"width","","",11,null],[12,"height","","",11,null],[3,"ScreenPt","","ScreenPt is in units of logical pixels, as opposed to…",null,null],[12,"x","","",12,null],[12,"y","","",12,null],[3,"ScreenRectangle","","ScreenRectangle is in units of logical pixels, as opposed…",null,null],[12,"x1","","",13,null],[12,"y1","","",13,null],[12,"x2","","",13,null],[12,"y2","","",13,null],[3,"Style","","",null,null],[12,"outline_thickness","","",14,null],[12,"outline_color","","",14,null],[12,"panel_bg","","",14,null],[12,"hotkey_color","","",14,null],[12,"hovering_color","","",14,null],[12,"loading_tips","","",14,null],[12,"btn_primary_dark","","",14,null],[12,"btn_secondary_dark","","",14,null],[12,"btn_primary_light","","",14,null],[12,"btn_secondary_light","","",14,null],[12,"btn_primary_destructive","","",14,null],[12,"btn_secondary_destructive","","",14,null],[3,"Text","","",null,null],[12,"lines","","",15,null],[12,"bg_color","","",15,null],[3,"TextSpan","","",null,null],[12,"text","","",16,null],[12,"fg_color","","",16,null],[12,"size","","",16,null],[12,"font","","",16,null],[12,"underlined","","",16,null],[3,"Warper","","",null,null],[12,"started","","",17,null],[12,"line","","",17,null],[12,"cam_zoom","","",17,null],[3,"Cached","","Store a cached key/value pair, only recalculating when the…",null,null],[12,"contents","","",18,null],[3,"Autocomplete","","",null,null],[12,"choices","","",19,null],[12,"tb","","",19,null],[12,"menu","","",19,null],[12,"current_line","","",19,null],[12,"chosen_values","","",19,null],[3,"Btn","","A questionably named place to start creating buttons.",nul