Cu Yard Dirt Calculator

Cu Yard Dirt Calculator: Estimate Your Soil Needs :root { –primary-color: #004a99; –success-color: #28a745; –background-color: #f8f9fa; –text-color: #333; –border-color: #ddd; –card-background: #fff; –shadow: 0 2px 5px rgba(0,0,0,0.1); } body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; background-color: var(–background-color); color: var(–text-color); line-height: 1.6; margin: 0; padding: 0; display: flex; flex-direction: column; align-items: center; padding-top: 20px; padding-bottom: 40px; } .container { width: 100%; max-width: 960px; background-color: var(–card-background); padding: 30px; border-radius: 8px; box-shadow: var(–shadow); margin: 0 auto; display: flex; flex-direction: column; align-items: center; } h1, h2, h3 { color: var(–primary-color); text-align: center; margin-bottom: 20px; } h1 { font-size: 2.5em; margin-bottom: 10px; } h2 { font-size: 1.8em; margin-top: 30px; margin-bottom: 15px; } h3 { font-size: 1.4em; margin-top: 25px; margin-bottom: 10px; } .calculator-section { width: 100%; margin-bottom: 30px; padding: 25px; border: 1px solid var(–border-color); border-radius: 8px; background-color: var(–card-background); box-shadow: var(–shadow); } .loan-calc-container { display: flex; flex-direction: column; gap: 20px; } .input-group { display: flex; flex-direction: column; gap: 8px; } .input-group label { font-weight: bold; color: var(–primary-color); } .input-group input[type="number"], .input-group select { padding: 12px; border: 1px solid var(–border-color); border-radius: 4px; font-size: 1em; width: 100%; box-sizing: border-box; } .input-group input[type="number"]:focus, .input-group select:focus { outline: none; border-color: var(–primary-color); box-shadow: 0 0 0 2px rgba(0, 74, 153, 0.2); } .input-group .helper-text { font-size: 0.85em; color: #666; } .error-message { color: red; font-size: 0.8em; margin-top: 5px; min-height: 1.2em; /* Reserve space to prevent layout shifts */ } .button-group { display: flex; gap: 15px; margin-top: 25px; flex-wrap: wrap; /* Allow wrapping on smaller screens */ } .button-group button { padding: 12px 25px; border: none; border-radius: 5px; cursor: pointer; font-size: 1em; font-weight: bold; transition: background-color 0.3s ease; } .btn-calculate { background-color: var(–primary-color); color: white; } .btn-calculate:hover { background-color: #003366; } .btn-reset { background-color: #6c757d; color: white; } .btn-reset:hover { background-color: #5a6268; } .btn-copy { background-color: #17a2b8; color: white; } .btn-copy:hover { background-color: #117a8b; } #results { margin-top: 30px; padding: 25px; border: 1px solid var(–border-color); border-radius: 8px; background-color: var(–card-background); box-shadow: var(–shadow); width: 100%; box-sizing: border-box; text-align: center; } #results h3 { margin-top: 0; color: var(–primary-color); } .result-item { margin-bottom: 15px; font-size: 1.1em; } .result-item strong { color: var(–primary-color); } .primary-result { font-size: 2em; font-weight: bold; color: var(–success-color); background-color: #e9f7ec; padding: 15px; border-radius: 5px; margin-bottom: 20px; display: inline-block; min-width: 70%; } .formula-explanation { font-size: 0.9em; color: #555; margin-top: 20px; padding-top: 15px; border-top: 1px dashed var(–border-color); } .chart-container { width: 100%; margin-top: 30px; padding: 25px; border: 1px solid var(–border-color); border-radius: 8px; background-color: var(–card-background); box-shadow: var(–shadow); text-align: center; } .chart-container canvas { max-width: 100%; height: auto; } .chart-caption { font-size: 0.9em; color: #555; margin-top: 10px; } .table-container { width: 100%; margin-top: 30px; padding: 25px; border: 1px solid var(–border-color); border-radius: 8px; background-color: var(–card-background); box-shadow: var(–shadow); overflow-x: auto; /* For responsiveness */ } .table-container table { width: 100%; border-collapse: collapse; margin-top: 15px; } .table-container th, .table-container td { padding: 12px 15px; text-align: left; border-bottom: 1px solid var(–border-color); } .table-container thead th { background-color: var(–primary-color); color: white; font-weight: bold; } .table-container tbody tr:nth-child(even) { background-color: #f2f2f2; } .table-caption { font-size: 0.9em; color: #555; margin-bottom: 10px; font-weight: bold; } .article-content { width: 100%; max-width: 960px; margin-top: 40px; background-color: var(–card-background); padding: 30px; border-radius: 8px; box-shadow: var(–shadow); text-align: left; } .article-content p, .article-content ul, .article-content ol { margin-bottom: 20px; font-size: 1.05em; } .article-content li { margin-bottom: 10px; } .article-content a { color: var(–primary-color); text-decoration: none; } .article-content a:hover { text-decoration: underline; } .faq-section { margin-top: 30px; border-top: 1px solid var(–border-color); padding-top: 20px; } .faq-item { margin-bottom: 15px; } .faq-item strong { display: block; color: var(–primary-color); cursor: pointer; margin-bottom: 5px; } .faq-item p { margin-left: 15px; font-size: 0.95em; color: #555; } .related-links { margin-top: 30px; border-top: 1px solid var(–border-color); padding-top: 20px; } .related-links ul { list-style: none; padding: 0; } .related-links li { margin-bottom: 15px; } .related-links a { font-weight: bold; } .related-links span { font-size: 0.9em; color: #555; display: block; margin-top: 3px; } /* Responsive adjustments */ @media (max-width: 768px) { h1 { font-size: 2em; } h2 { font-size: 1.5em; } .container, .calculator-section, #results, .chart-container, .table-container, .article-content { padding: 20px; } .button-group { flex-direction: column; align-items: center; } .button-group button { width: 100%; max-width: 300px; } .primary-result { min-width: auto; width: 100%; font-size: 1.7em; } }

Cu Yard Dirt Calculator

Estimate the volume of soil, mulch, or gravel needed for your projects.

Calculate Your Material Needs

Enter the length of the area in feet.
Enter the width of the area in feet.
Enter the desired depth in feet (e.g., 0.5 ft for 6 inches).
Dirt Mulch Gravel Sand Select the type of material you are ordering.

Your Estimated Material Needs

Material Type:
Total Volume (Cubic Feet):
Total Volume (Cubic Yards):
Bag Equivalents (approx. 2 cu ft bags):
Formula Used: Volume = Length × Width × Depth. This gives the volume in cubic feet. To convert to cubic yards, we divide by 27 (since 1 cubic yard = 27 cubic feet).

Volume Breakdown by Dimension

Visualizing the contribution of each dimension to the total volume.
Material Properties & Conversions
Material Type Typical Density (lbs/cu ft) Typical Weight (tons/cu yd) Common Bag Size (cu ft)
Dirt 100 – 120 1.35 – 1.62 0.5 – 1.5
Mulch 30 – 50 0.40 – 0.68 2
Gravel 90 – 110 1.22 – 1.49 0.5
Sand 95 – 115 1.28 – 1.55 0.5

Understanding and Using the Cu Yard Dirt Calculator

What is a Cu Yard Dirt Calculator?

A Cu Yard Dirt Calculator is a specialized online tool designed to help homeowners, landscapers, contractors, and DIY enthusiasts accurately determine the volume of soil, mulch, gravel, sand, or other bulk landscaping materials needed for a specific project. It simplifies the often confusing process of converting linear measurements (like length, width, and depth) into cubic yards, the standard unit for ordering bulk materials from suppliers.

Who Should Use It: Anyone planning to purchase bulk landscaping materials. This includes individuals working on garden beds, lawn top-dressing, driveway construction, patio bases, retaining walls, or any project requiring significant amounts of loose material. It's particularly useful for those unfamiliar with volume calculations or when dealing with non-standard area dimensions.

Common Misconceptions:

  • "It's just dirt": While "dirt" is in the name, the calculator works for any bulk material measured by volume, like mulch, gravel, sand, or compost.
  • "I can just eyeball it": Underestimating or overestimating material needs can lead to project delays, extra trips to the supplier, wasted material, and increased costs. Accurate calculation is key.
  • "All bags are the same": While bags are convenient, they are often less cost-effective for larger projects than bulk delivery. The calculator helps compare these options.
  • "Depth is always the same": Different projects require different depths. A thin layer of mulch for a flower bed is very different from the base needed for a driveway.

Cu Yard Dirt Calculator Formula and Mathematical Explanation

The core of the Cu Yard Dirt Calculator relies on a fundamental geometric formula: calculating the volume of a rectangular prism (or cuboid). Most landscaping areas can be approximated as such.

Step-by-Step Derivation:

  1. Measure Dimensions: First, you need to accurately measure the length, width, and desired depth of the area you intend to fill or cover. It's crucial that all measurements are in the same unit, typically feet for this type of calculation.
  2. Calculate Volume in Cubic Feet: The volume of a rectangular space is found by multiplying its three dimensions:
    Volume (cubic feet) = Length (ft) × Width (ft) × Depth (ft)
  3. Convert to Cubic Yards: Bulk material suppliers almost universally sell and quote prices in cubic yards. Since there are 27 cubic feet in 1 cubic yard (3 ft × 3 ft × 3 ft = 27 cu ft), you must convert the volume from cubic feet to cubic yards:
    Volume (cubic yards) = Volume (cubic feet) / 27

The calculator automates these steps. It takes your input for length, width, and depth (in feet), calculates the cubic feet, and then divides by 27 to give you the final result in cubic yards.

Variable Explanations:

Variable Meaning Unit Typical Range
Length The longest horizontal dimension of the area. Feet (ft) 0.1 – 1000+
Width The shorter horizontal dimension of the area. Feet (ft) 0.1 – 1000+
Depth The vertical height or thickness of the material layer. Feet (ft) 0.083 (1 inch) – 5+
Volume (Cubic Feet) The total space occupied by the material in cubic feet. Cubic Feet (cu ft) Calculated
Volume (Cubic Yards) The total space occupied by the material in cubic yards, the standard unit for bulk orders. Cubic Yards (cu yd) Calculated

Practical Examples (Real-World Use Cases)

Let's illustrate with a couple of common landscaping scenarios:

Example 1: Creating a New Garden Bed

Sarah wants to create a raised garden bed. She measures the space and decides on dimensions: 12 feet long, 4 feet wide, and she wants the soil depth to be 1 foot (12 inches).

  • Length = 12 ft
  • Width = 4 ft
  • Depth = 1 ft

Using the calculator:

  • Cubic Feet = 12 ft × 4 ft × 1 ft = 48 cu ft
  • Cubic Yards = 48 cu ft / 27 = 1.78 cu yd

Interpretation: Sarah needs approximately 1.78 cubic yards of soil. She might round this up to 2 cubic yards to be safe, especially considering soil compaction. This amount is equivalent to about 32 bags if using 1.5 cu ft bags (48 cu ft / 1.5 cu ft/bag).

Example 2: Mulching Around Trees

John wants to apply a 3-inch layer of mulch around a large tree. The mulched area is roughly circular with a diameter of 6 feet. He needs to approximate this as a square or rectangle for the calculator, or use an average width if the shape is irregular.

Let's approximate the area as a square with sides of 6 feet for simplicity, and a depth of 3 inches.

  • Length = 6 ft
  • Width = 6 ft
  • Depth = 3 inches = 0.25 ft (since 3/12 = 0.25)

Using the calculator:

  • Cubic Feet = 6 ft × 6 ft × 0.25 ft = 9 cu ft
  • Cubic Yards = 9 cu ft / 27 = 0.33 cu yd

Interpretation: John needs about 0.33 cubic yards of mulch. This is a relatively small amount, likely less than one bulk delivery. He might opt for 2-3 bags, depending on bag size (e.g., 9 cu ft / 2 cu ft/bag ≈ 4.5 bags, so 5 bags would be sufficient).

How to Use This Cu Yard Dirt Calculator

Using the calculator is straightforward. Follow these simple steps:

  1. Measure Your Area: Use a tape measure to determine the length and width of the space you need to fill or cover. Ensure your measurements are in feet.
  2. Determine Desired Depth: Decide how deep you want the material to be. Convert this depth into feet. Remember: 1 inch = 0.083 feet, 6 inches = 0.5 feet, 12 inches = 1 foot.
  3. Select Material Type: Choose the type of material you'll be using from the dropdown menu. While the volume calculation is the same, knowing the material type can be helpful for understanding density or potential costs (though this calculator focuses solely on volume).
  4. Enter Values: Input the measured length, width, and calculated depth (in feet) into the respective fields.
  5. Click Calculate: Press the "Calculate" button.

How to Read Results:

  • Primary Result (Total Volume): This is the most important number, displayed prominently in cubic yards. It's the amount you'll likely order from a supplier.
  • Intermediate Values: The calculator also shows the total volume in cubic feet and an approximate number of bags needed, which can be useful for comparison or if your supplier offers smaller quantities.
  • Material Type: Confirms the material selected.

Decision-Making Guidance:

  • Rounding Up: It's almost always wise to round your cubic yardage *up* slightly (e.g., 1.78 cu yd becomes 2 cu yd). This accounts for settling, uneven ground, and ensures you don't run short.
  • Comparing Bulk vs. Bags: Use the bag equivalent to compare costs. Bulk delivery is usually more economical for larger quantities.
  • Supplier Information: Always confirm the units your local supplier uses and ask about their delivery minimums and fees.

Key Factors That Affect Cu Yard Dirt Calculator Results

While the calculation itself is precise, several real-world factors can influence the *actual* amount of material you need or how it performs:

  1. Ground Irregularities: The calculator assumes a perfectly flat, rectangular area. Sloping ground or uneven surfaces mean some areas might need more material than others to achieve the desired depth. You might need to slightly increase your order for very uneven terrain.
  2. Material Compaction: Different materials compact differently when weight is applied or they settle over time. Soil and sand compact more than mulch or gravel. You may need to order slightly more than calculated, especially for deep fills, to account for this settling.
  3. Desired Depth Accuracy: Precisely achieving a specific depth (like 3 inches) can be challenging. It's better to aim for a slightly deeper layer if unsure, as adding more later is difficult.
  4. Waste and Spillage: During transport from the delivery point to the final location, or during the spreading process, some material can be lost due to spillage or simply sticking to tools and wheelbarrows. Factor in a small buffer (e.g., 5-10%).
  5. Material Type Variations: While the calculator uses volume, the *weight* of materials varies significantly (see table). This impacts how easy it is to move (e.g., with a wheelbarrow) and can affect soil stability or drainage.
  6. Supplier Measurement Accuracy: Reputable suppliers are accurate, but it's good practice to understand how they measure. Ensure their cubic yardage is consistent with standard calculations.
  7. Future Needs: Consider if you'll need to replenish the material later. For mulch, which decomposes, you'll need to reapply periodically. Planning for future top-ups can be wise.
  8. Drainage and Aeration Needs: For certain applications (like planting beds or drainage layers), the type of material and its depth are critical for water flow and root health. Ensure your calculated depth meets these functional requirements, not just aesthetic ones.

Frequently Asked Questions (FAQ)

Q1: What's the difference between cubic feet and cubic yards?

A: A cubic yard is a much larger unit of volume than a cubic foot. There are exactly 27 cubic feet in 1 cubic yard. Suppliers use cubic yards for bulk materials because it's a more manageable number for large quantities.

Q2: How do I measure depth in feet if I measured in inches?

A: Divide the number of inches by 12. For example, 6 inches of depth is 6 / 12 = 0.5 feet. 3 inches is 3 / 12 = 0.25 feet.

Q3: Can I use this calculator for concrete?

A: While the volume calculation is similar, concrete mixes are calculated differently, often involving specific ratios of cement, sand, and aggregate. This calculator is best suited for soil, mulch, gravel, and similar landscaping materials.

Q4: My supplier quotes price per ton, not per yard. How do I estimate?

A: You'll need the material's density. Multiply your calculated cubic yards by the material's typical weight per cubic yard (found in the table or provided by your supplier) to estimate the total tonnage.

Q5: What if my area isn't a perfect rectangle?

A: For irregular shapes, break them down into smaller rectangular or triangular sections, calculate the volume for each, and sum them up. Alternatively, estimate the average length and width to get an approximation.

Q6: How much extra should I order?

A: A common recommendation is to add 5-10% extra to account for settling, spillage, and uneven ground. For critical projects, rounding up to the nearest half or full cubic yard is often safest.

Q7: Does the calculator account for the cost of materials?

A: No, this calculator is purely for volume estimation. Material costs vary significantly based on type, quality, supplier, and location. You'll need to get quotes from local suppliers.

Q8: What is the difference between "Dirt" and "Topsoil" for calculation purposes?

A: For volume calculation, they are treated the same. However, "topsoil" usually refers to the nutrient-rich upper layer of soil, while "dirt" can be a more general term. The calculator focuses on the physical volume needed.

var lengthInput = document.getElementById('length'); var widthInput = document.getElementById('width'); var depthInput = document.getElementById('depth'); var materialTypeSelect = document.getElementById('materialType'); var lengthError = document.getElementById('lengthError'); var widthError = document.getElementById('widthError'); var depthError = document.getElementById('depthError'); var materialTypeError = document.getElementById('materialTypeError'); var resultCubicYards = document.getElementById('resultCubicYards'); var totalCubicFeet = document.getElementById('totalCubicFeet'); var resultMaterialType = document.getElementById('resultMaterialType'); var bagEquivalents = document.getElementById('bagEquivalents'); var totalCubicYardsDisplay = document.getElementById('totalCubicYards'); var volumeChart; var chartContext; function validateInput(inputElement, errorElement, fieldName) { var value = parseFloat(inputElement.value); var isValid = true; if (isNaN(value) || inputElement.value.trim() === "") { errorElement.textContent = fieldName + " is required."; isValid = false; } else if (value <= 0) { errorElement.textContent = fieldName + " must be a positive number."; isValid = false; } else { errorElement.textContent = ""; } return isValid; } function calculateDirt() { var isValidLength = validateInput(lengthInput, lengthError, "Length"); var isValidWidth = validateInput(widthInput, widthError, "Width"); var isValidDepth = validateInput(depthInput, depthError, "Depth"); var isValidMaterial = materialTypeSelect.value !== ""; if (!isValidMaterial) { materialTypeError.textContent = "Please select a material type."; } else { materialTypeError.textContent = ""; } if (!isValidLength || !isValidWidth || !isValidDepth || !isValidMaterial) { // Clear results if any input is invalid totalCubicYardsDisplay.textContent = "–"; resultCubicYards.textContent = "–"; totalCubicFeet.textContent = "–"; resultMaterialType.textContent = "–"; bagEquivalents.textContent = "–"; return; } var length = parseFloat(lengthInput.value); var width = parseFloat(widthInput.value); var depth = parseFloat(depthInput.value); var material = materialTypeSelect.value; var cubicFeet = length * width * depth; var cubicYards = cubicFeet / 27; // Approximate bag equivalents (using a common 2 cu ft bag size for mulch, adjust if needed) var bagSize = 2.0; // Default bag size in cubic feet if (material === 'dirt' || material === 'gravel' || material === 'sand') { bagSize = 0.75; // Smaller bags often used for these } var bagsNeeded = Math.ceil(cubicFeet / bagSize); totalCubicYardsDisplay.textContent = cubic Yards.toFixed(2); resultCubicYards.textContent = cubicYards.toFixed(2); totalCubicFeet.textContent = cubicFeet.toFixed(2); resultMaterialType.textContent = material.charAt(0).toUpperCase() + material.slice(1); bagEquivalents.textContent = bagsNeeded; updateChart(length, width, depth, cubicFeet); } function resetCalculator() { lengthInput.value = "10"; widthInput.value = "5"; depthInput.value = "0.5"; // Represents 6 inches materialTypeSelect.value = "dirt"; lengthError.textContent = ""; widthError.textContent = ""; depthError.textContent = ""; materialTypeError.textContent = ""; calculateDirt(); // Recalculate with default values } function copyResults() { var textToCopy = "Cu Yard Dirt Calculator Results:\n\n"; textToCopy += "Material Type: " + resultMaterialType.textContent + "\n"; textToCopy += "Total Volume (Cubic Feet): " + totalCubicFeet.textContent + "\n"; textToCopy += "Total Volume (Cubic Yards): " + resultCubicYards.textContent + "\n"; textToCopy += "Bag Equivalents (approx.): " + bagEquivalents.textContent + "\n\n"; textToCopy += "Key Assumptions:\n"; textToCopy += "- Length: " + lengthInput.value + " ft\n"; textToCopy += "- Width: " + widthInput.value + " ft\n"; textToCopy += "- Depth: " + depthInput.value + " ft\n"; textToCopy += "- Formula: Volume = L x W x D / 27\n"; var textArea = document.createElement("textarea"); textArea.value = textToCopy; textArea.style.position = "fixed"; textArea.style.left = "-9999px"; document.body.appendChild(textArea); textArea.focus(); textArea.select(); try { var successful = document.execCommand('copy'); var msg = successful ? 'Results copied!' : 'Copying failed!'; console.log(msg); // Optionally show a temporary message to the user var copyButton = document.querySelector('.btn-copy'); var originalText = copyButton.textContent; copyButton.textContent = 'Copied!'; setTimeout(function() { copyButton.textContent = originalText; }, 2000); } catch (err) { console.error('Fallback: Oops, unable to copy', err); } document.body.removeChild(textArea); } function updateChart(length, width, depth, totalCubicFeet) { if (!chartContext) { var canvas = document.getElementById('volumeChart'); chartContext = canvas.getContext('2d'); } var lengthVolume = length * depth * 27; // Approximate contribution if width was 1ft var widthVolume = width * depth * 27; // Approximate contribution if length was 1ft var depthVolume = length * width * 27; // Approximate contribution if depth was 1ft // A better way to represent contribution is to show how much each dimension contributes to the final cubic feet var lengthContribution = (length * depth) / totalCubicFeet; var widthContribution = (width * depth) / totalCubicFeet; var depthContribution = (length * width) / totalCubicFeet; // Normalize contributions if they don't sum perfectly due to rounding or conceptual issue var sumContributions = lengthContribution + widthContribution + depthContribution; if (sumContributions === 0) sumContributions = 1; // Avoid division by zero var data = { labels: ['Length Contribution', 'Width Contribution', 'Depth Contribution'], datasets: [{ label: 'Volume Contribution (%)', data: [ (length * depth / totalCubicFeet) * 100, (width * depth / totalCubicFeet) * 100, (length * width / totalCubicFeet) * 100 ], backgroundColor: [ 'rgba(0, 74, 153, 0.7)', // Primary color 'rgba(40, 167, 69, 0.7)', // Success color 'rgba(23, 162, 184, 0.7)' // Info color ], borderColor: [ 'rgba(0, 74, 153, 1)', 'rgba(40, 167, 69, 1)', 'rgba(23, 162, 184, 1)' ], borderWidth: 1 }] }; var options = { responsive: true, maintainAspectRatio: false, plugins: { legend: { position: 'top', }, title: { display: true, text: 'Contribution to Total Volume (Cubic Feet)' } }, scales: { y: { beginAtZero: true, ticks: { callback: function(value) { return value + '%'; } } } } }; // Destroy previous chart instance if it exists if (volumeChart) { volumeChart.destroy(); } // Create new chart volumeChart = new Chart(chartContext, { type: 'bar', data: data, options: options }); } // Initial calculation on page load document.addEventListener('DOMContentLoaded', function() { resetCalculator(); // Set default values and calculate // Initialize chart context var canvas = document.getElementById('volumeChart'); if (canvas) { chartContext = canvas.getContext('2d'); } }); // Add event listeners for real-time updates (optional, but good UX) lengthInput.addEventListener('input', calculateDirt); widthInput.addEventListener('input', calculateDirt); depthInput.addEventListener('input', calculateDirt); materialTypeSelect.addEventListener('change', calculateDirt); // Basic Chart.js integration (assuming Chart.js library is available or included) // For a pure HTML/JS solution without external libraries, SVG or Canvas drawing would be needed. // Since Chart.js is common, let's assume it's available or add a placeholder note. // NOTE: For a truly self-contained solution without external JS libraries, // you would need to implement chart drawing using native Canvas API or SVG. // This example uses Chart.js for demonstration purposes. // If Chart.js is not available, the chart section will remain empty. // Placeholder for Chart.js library if not included externally if (typeof Chart === 'undefined') { console.warn("Chart.js library not found. Chart will not render."); // You might want to hide the chart canvas or display a message. var chartCanvas = document.getElementById('volumeChart'); if (chartCanvas) { chartCanvas.style.display = 'none'; var chartContainer = chartCanvas.closest('.chart-container'); if (chartContainer) { var caption = chartContainer.querySelector('.chart-caption'); if (caption) caption.textContent = "Chart rendering requires the Chart.js library."; } } } <!– –>

Leave a Comment