### Simulator API Example for Dodgy 2D Source: https://github.com/andriydev/dodgy/blob/main/crates/dodgy_2d/README.md Illustrates the usage of the `Simulator` struct in the dodgy_2d crate, providing a simpler, self-contained way to manage agents and obstacles for collision avoidance. This API is less flexible than the raw API but easier to get started with for smaller-scale simulations. ```Rust use dodgy_2d::{ Agent, AvoidanceOptions, AgentParameters, Obstacle, Simulator, Vec2 }; let mut simulator = Simulator::new(); simulator.add_agent(Agent { position: Vec2::ZERO, velocity: Vec2::ZERO, radius: 1.0, avoidance_responsibility: 1.0, }, AgentParameters { goal_point: Vec2::new(50.0, 0.0), max_speed: 5.0, obstacle_margin: dodgy_2d::SimulatorMargin::Distance(0.1), time_horizon: 3.0, obstacle_time_horizon: 1.0, }); // Add more agents. simulator.add_obstacle( Obstacle::Closed{ vertices: vec![ Vec2::new(-1000.0, -1000.0), Vec2::new(-1000.0, 1000.0), Vec2::new(1000.0, 1000.0), Vec2::new(1000.0, -1000.0), ], } ); // Add more obstacles. fn get_delta_seconds() -> f32 { // Use something that actually gets the time between frames. return 0.01; } for i in 0..100 { let delta_seconds = get_delta_seconds(); simulator.step(delta_seconds); // Update rendering using new agent positions (using simulator.get_agent). } ``` -------------------------------- ### Simulator API Example for Agent Avoidance Source: https://github.com/andriydev/dodgy/blob/main/crates/dodgy_3d/README.md Demonstrates the alternative 'Simulator' API for managing agents and their collision avoidance. This API simplifies setup by encapsulating agent state and simulation steps, though it's noted as less flexible than the raw API. ```rust use dodgy_3d::{ Agent, AvoidanceOptions, AgentParameters, Simulator, SimulatorMargin, Vec3 }; let mut simulator = Simulator::new(); simulator.add_agent(Agent { position: Vec3::ZERO, velocity: Vec3::ZERO, radius: 1.0, avoidance_responsibility: 1.0, }, AgentParameters { goal_point: Vec3::new(50.0, 0.0, 0.0), max_speed: 5.0, obstacle_margin: SimulatorMargin::Distance(0.1), time_horizon: 3.0, obstacle_time_horizon: 1.0, }); // Add more agents. fn get_delta_seconds() -> f32 { // Use something that actually gets the time between frames. return 0.01; } for i in 0..100 { let delta_seconds = get_delta_seconds(); simulator.step(delta_seconds); // Update rendering using new agent positions (using simulator.get_agent). } ``` -------------------------------- ### Raw API Example for Agent Avoidance Source: https://github.com/andriydev/dodgy/blob/main/crates/dodgy_3d/README.md Demonstrates the preferred 'raw' API of the dodgy_3d crate for computing collision avoidance velocities for agents. It involves manually managing agents, calculating preferred velocities based on goal points, and using the `compute_avoiding_velocity` method. ```rust use std::borrow::Cow; use dodgy_3d::{Agent, AvoidanceOptions, Vec3}; let mut agents: Vec> = vec![ Cow::Owned(Agent { position: Vec3::ZERO, velocity: Vec3::ZERO, radius: 1.0, avoidance_responsibility: 1.0, }), // Add more agents here. ]; let goal_points = vec![ Vec3::new(50.0, 0.0, 0.0), // Add goal points for every agent. ]; let time_horizon = 3.0; fn get_delta_seconds() -> f32 { // Use something that actually gets the time between frames. return 0.01; } for i in 0..100 { let delta_seconds = get_delta_seconds(); if delta_seconds == 0.0 { // Skip frames where agents can't move anyway. continue; } let mut new_velocities = Vec::with_capacity(agents.len()); for i in 0..agents.len() { let neighbours = agents[..i] .iter() .chain(agents[(i + 1)..].iter()) .map(|agent| agent.clone()) .collect::>>(); let agent_max_speed = 5.0; let preferred_velocity = (goal_points[i] - agents[i].position) .normalize_or_zero() * agent_max_speed; let avoidance_velocity = agents[i].compute_avoiding_velocity( &neighbours, preferred_velocity, agent_max_speed, delta_seconds, &AvoidanceOptions { time_horizon }, ); new_velocities.push(avoidance_velocity); } for (i, agent) in agents.iter_mut().map(Cow::to_mut).enumerate() { agent.velocity = new_velocities[i]; agent.position += agent.velocity * delta_seconds; } // Update rendering using new agent positions. } ``` -------------------------------- ### Raw API Example for Dodgy 2D Source: https://github.com/andriydev/dodgy/blob/main/crates/dodgy_2d/README.md Demonstrates the usage of the 'raw' API in the dodgy_2d crate for computing collision avoidance. This method is preferred as it allows integration with existing spatial query systems. It involves manually managing agents, obstacles, and calculating avoidance velocities based on preferred movement and neighbor interactions. ```Rust use std::borrow::Cow; use dodgy_2d::{Agent, AvoidanceOptions, Obstacle, Vec2}; let mut agents: Vec> = vec![ Cow::Owned(Agent { position: Vec2::ZERO, velocity: Vec2::ZERO, radius: 1.0, avoidance_responsibility: 1.0, }), // Add more agents here. ]; let goal_points = vec![ Vec2::new(50.0, 0.0), // Add goal points for every agent. ]; let obstacles: Vec> = vec![ Cow::Owned(Obstacle::Closed{ vertices: vec![ Vec2::new(-1000.0, -1000.0), Vec2::new(-1000.0, 1000.0), Vec2::new(1000.0, 1000.0), Vec2::new(1000.0, -1000.0), ], }), // Add more obstacles here. ]; let time_horizon = 3.0; let obstacle_time_horizon = 1.0; fn get_delta_seconds() -> f32 { // Use something that actually gets the time between frames. return 0.01; } for i in 0..100 { let delta_seconds = get_delta_seconds(); if delta_seconds == 0.0 { // Skip frames where agents can't move anyway. continue; } let mut new_velocities = Vec::with_capacity(agents.len()); for i in 0..agents.len() { let neighbours = agents[..i] .iter() .chain(agents[(i + 1)..].iter()) .map(|agent| agent.clone()) .collect::>>(); let nearby_obstacles = obstacles .iter() .map(|obstacle| obstacle.clone()) .collect::>>(); let agent_max_speed = 5.0; let preferred_velocity = (goal_points[i] - agents[i].position) .normalize_or_zero() * agent_max_speed; let avoidance_velocity = agents[i].compute_avoiding_velocity( &neighbours, &nearby_obstacles, preferred_velocity, agent_max_speed, delta_seconds, &AvoidanceOptions { obstacle_margin: 0.1, time_horizon, obstacle_time_horizon, }); new_velocities.push(avoidance_velocity); } for (i, agent) in agents.iter_mut().map(Cow::to_mut).enumerate() { agent.velocity = new_velocities[i]; agent.position += agent.velocity * delta_seconds; } // Update rendering using new agent positions. } ``` -------------------------------- ### Apache License 2.0 Terms and Conditions Source: https://github.com/andriydev/dodgy/blob/main/crates/dodgy_3d/original_license.txt This documentation details the Apache License, Version 2.0, a widely used permissive open-source license. It defines key terms, outlines copyright and patent license grants, and specifies conditions for contributions and derivative works. ```APIDOC ApacheLicense_2_0: Definitions: License: The terms and conditions for use, reproduction, and distribution. Licensor: The copyright owner or authorized entity granting the License. Legal Entity: An entity and those controlling, controlled by, or under common control with it. You: An individual or Legal Entity exercising permissions granted by this License. Source form: The preferred form for making modifications (e.g., source code). Object form: Any form resulting from mechanical transformation of Source form (e.g., compiled code). Work: The work of authorship made available under the License. Derivative Works: Works based on or derived from the Work. Contribution: Any work of authorship submitted to Licensor for inclusion in the Work. Contributor: Licensor and any individual or Legal Entity whose Contribution has been received and incorporated. Grant of Copyright License: Subject to terms and conditions, each Contributor grants You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works, publicly display, publicly perform, sublicense, and distribute the Work and Derivative Works in Source or Object form. Grant of Patent License: Subject to terms and conditions, each Contributor grants You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, applicable only to patent claims necessarily infringed by their Contribution(s) alone or in combination with the Work. If You institute patent litigation against any entity alleging infringement by the Work or a Contribution, your patent license granted hereunder terminates. Conditions for Use, Reproduction, and Distribution: 1. You may reproduce and distribute copies of the Work or Derivative Works thereof, in any medium, with or without modifications, and in Source or Object form, provided that You meet ALL of the following conditions: a. You must give any recipients of the Work or Derivative Works a copy of this License. b. You must cause any modified files to carry prominent notices stating that You changed the files. c. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works. d. If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if permitted by the downstream interface, provided that such third-party acknowledgments normally appear in the similar material that is part of the Derivative Works. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. 2. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided that You comply with the terms of this License to the extent that Your modifications or Derivative Works include the Work or any portions thereof. 3. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof, in any medium, with or without modifications, and in Source or Object form, provided that You meet ALL of the following conditions: a. You must give any recipients of the Work or Derivative Works a copy of this License. b. You must cause any modified files to carry prominent notices stating that You changed the files. c. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works. d. If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if permitted by the downstream interface, provided that such third-party acknowledgments normally appear in the similar material that is part of the Derivative Works. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. 4. Submission of Contributions. a. You explicitly agree to and hereby submit the following terms: i. Your Contributions are intended by You to be provided under the terms and conditions of this License, and You irrevocably grant the Licensor and recipients of the Work a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute Your Contributions and such Derivative Works in Source or Object form. ii. You implicitly confirm that You are legally entitled to grant the above copyright license. iii. If You explicitly state otherwise, You must not submit any work that You are not legally entitled to grant the above copyright license to. iv. You agree to indemnify and hold harmless every Contributor against any liability, damages, costs, and expenses, including reasonable attorney's fees, arising out of Your Content or Your breach of this License. 5. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 6. Disclaimer of Warranty. THE WORK IS PROVIDED "AS IS" AND WITHOUT ANY WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. YOU ACCEPT ANY AND ALL RISKS ASSOCIATED WITH THE USE OF THE WORK. 7. Limitation of Liability. IN NO EVENT SHALL THE LICENSOR OR ANY CONTRIBUTOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 8. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 9. Defining "Contribution". a. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. b. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." 10. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 11. Disclaimer of Warranty. THE WORK IS PROVIDED "AS IS" AND WITHOUT ANY WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. YOU ACCEPT ANY AND ALL RISKS ASSOCIATED WITH THE USE OF THE WORK. 12. Limitation of Liability. IN NO EVENT SHALL THE LICENSOR OR ANY CONTRIBUTOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 13. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 14. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 15. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 16. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 17. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 18. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 19. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 20. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 21. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 22. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 23. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 24. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 25. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 26. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 27. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 28. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 29. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 30. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 31. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 32. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 33. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 34. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 35. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 36. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 37. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 38. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 39. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 40. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 41. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 42. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 43. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 44. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 45. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 46. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 47. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 48. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 49. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 50. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 51. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 52. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 53. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 54. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 55. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 56. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 57. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 58. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 59. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 60. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 61. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 62. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 63. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 64. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 65. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 66. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 67. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 68. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 69. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 70. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 71. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 72. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 73. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 74. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a separate agreement with them to do so. 75. Accepting Warranty or Additional Liability. While receiving a copy of the Work or Derivative Works thereof, You may choose to extend or not to extend a warranty, or accept liability to the recipient of the Work or Derivative Works. However, by accepting the Work or Derivative Works, You may not impose additional obligations on any Contributors to the Work or Derivative Works unless You enter into a ```