RestaurantSupply.com is your trusted source for Yanco plastic bowls 5 - 6 qt.
- Authorized Yanco dealer, ensuring genuine commercial restaurant dinnerware and manufacturer support
- Fast shipping available on in-stock Yanco CAT-3614 plastic bowls 5 - 6 qt
- Competitive pricing backed by a 30-day price match guarantee
Yanco CAT-3614 6-1/2 Quart Square Bowl Melamine with Dishwasher Safe White Finish - 6/Case
| Manufacturer | Yanco |
|---|---|
| Model Number | CAT-3614 |
| Manufacturer Part # | CAT-3614 |
| Color | White |
| Plastic Type | Melamine |
| Long Side / Diameter | 14" - 15" |
| Shape | Square |
| Capacity (approximate) | 6 Quart (192 - 223 Oz) |
| Height | 6" |
| Width | 14" |
| Depth | 14" |
| Weight | 21.38 lbs |
| Dishwasher Safe | Yes |
About this item
Product Details
Product Details
The Yanco CAT-3614 Catering Bowl is a versatile, high-capacity foodservice accessory designed for commercial kitchens, catering operations, and institutional dining environments. With a 6-1/2 quart capacity, this square melamine bowl measures 14 inches in length and width, and 6 inches in height, providing a durable and lightweight solution for serving and food prep. Its dishwasher-safe construction ensures ease of cleaning, while the white finish maintains a professional appearance suitable for high-volume settings. Manufactured by Yanco, this catering bowl supports HACCP-compliant workflows and offers a robust option for daily foodservice tasks requiring repeated usage and reliable performance.
Top Yanco CAT-3614 Features
The Yanco CAT-3614 catering bowl is designed for commercial foodservice environments requiring large-volume serving and prep. Its melamine construction guarantees impact resistance and dishwasher safety, simplifying routine cleaning. The 14" x 14" square shape optimizes storage and workspace compatibility, while the 6" height supports versatile usage in various preparatory and presentation applications. This bowl’s durability and design accommodate steady demands in professional kitchens and catering stations, facilitating efficient workflow for kitchen staff.
- Impact-resistant melamine withstands daily commercial use
- Generous 6-1/2 quart capacity for bulk servings
- Square shape enhances storage efficiency and workspace fit
- Dishwasher safe — simplifies cleaning routine
- Lightweight design reduces handling fatigue in busy kitchens
This catering bowl is suitable for foodservice operators seeking durable, easy-to-maintain kitchenware for large-scale serving and food prep. Its robust features support consistent daily workflows in various commercial settings.
What is a commercial catering bowl?
A commercial catering bowl is a foodservice vessel designed specifically for large-scale food handling, presentation, and storage in professional kitchens. The Yanco CAT-3614 catering bowl features a 6-1/2 quart capacity, made from durable melamine, and measures 14"L x 14"W x 6"H. It is suitable for use in institutional kitchens, catering stations, and foodservice teams that require impact-resistant, dishwasher-safe containers. This model is ideal for steady food prep and service in medium-volume operations, supporting HACCP compliance and efficient workflow.
Top catering bowls for mid-sized foodservice kitchens
Precision-made for medium-capacity operations, these bowls deliver durable performance and reliable handling in commercial kitchens. Designed for steady daily workflows, they support efficient food prep and presentation with impact-resistant constructions and dishwasher-safe features.
- Steady daily use in small prep kitchens
- Compact design suited for commercial foodservice spaces
- Suitable for catering stations and institutional kitchens
- Moderate throughput — up to 200 servings daily
- Supports manual food prep and serving tasks
Yanco CAT-3614 Technical Specs
The Yanco CAT-3614 catering bowl is crafted from impact-resistant melamine with a white finish, ensuring durability in demanding foodservice environments. It measures 14 inches in length and width, with a height of 6 inches, and weighs approximately 21.38 lbs. Its dishwasher-safe construction facilitates routine cleaning without disassembly. Certified for food safety standards, this bowl complies with HACCP protocols and Proposition 65 regulations. Designed for steady use, it is compatible with standard commercial dishwashing equipment and provides reliable performance for bulk serving in institutional kitchens and catering aligns.
- Dimensions: 14"L x 14"W x 6"H
- Weight: 21.38 lbs
- Material: Melamine, impact-resistant
- Color: White
- Dishwasher safe — simplifies maintenance
- Food safety: Proposition 65 compliant
- Commercial-grade impact resistance
- Supports HACCP workflows
- Impact-resistant construction withstands daily handling
- Impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact_resistance impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact_resistance impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact_resistance impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact_resistance impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact_resistance impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact_resistance impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact_resistance impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact_impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact
Certifications
Dishwasher Safe
This item has been tested and approved to withstand commercial or residential dishwashers, ensuring safe and thorough cleaning.
