Difference between revisions of "THD Sweep Measurement"

From OROS Wiki
Jump to navigation Jump to search
 
(28 intermediate revisions by the same user not shown)
Line 1: Line 1:
== THD SWEEP MEASUREMENT - USER GUIDE ==
== THD SWEEP MEASUREMENT - USER GUIDE ==
''Master the art of measuring Total Harmonic Distortion with style''
''Master the art of measuring Total Harmonic Distortion with style''
[[File:sweep.png|400px]]


__TOC__
__TOC__
Line 12: Line 15:


---
---
== Install ==
== Install ==


Dowload THD measurement :
Download THD measurement :


[https://partnerzone.digigram.com/s/mqm8BrLDYPz3ZRR THD sweep measurement] April 2026
[https://partnerzone.digigram.com/s/RgiG5JFxNpjG5C6 THD sweep measurement] April 2026


=== Install model===
=== Install model===
Line 22: Line 26:
Put the model folder : "THD computation" on model database of NVgate.  
Put the model folder : "THD computation" on model database of NVgate.  
(By default : C:\OROS\NVGate data\Workbook Library\User\ )
(By default : C:\OROS\NVGate data\Workbook Library\User\ )
=== Requirement ===
NVGate V17 or upper.
Option : DC simulated on NVGate front end.


== ⚡ QUICK START - 30 SECONDS ==
== ⚡ QUICK START - 30 SECONDS ==
Line 27: Line 37:
{| style="width: 100%; border-collapse: collapse; margin: 20px 0;"
{| style="width: 100%; border-collapse: collapse; margin: 20px 0;"
|-
|-
| style="background: #f0f4ff; padding: 20px; border-left: 5px solid #667eea; font-weight: bold; width: 50%;" | STEP
| style="background: #f0f4ff; padding: 20px; border-left: 5px solid #667eea; font-weight: bold; width: 10%;" | STEP
| style="background: #f0f4ff; padding: 20px; border-left: 5px solid #667eea; font-weight: bold; width: 50%;" | ACTION
| style="background: #f0f4ff; padding: 20px; border-left: 5px solid #667eea; font-weight: bold; width: 90%;" | ACTION
|-
|-
| style="padding: 15px; background: #fafbff;" | 1️⃣ Launch
| style="padding: 15px; background: #fafbff;" | 1️⃣ Launch
Line 34: Line 44:
|-
|-
| style="padding: 15px; background: white;" | 2️⃣ Connect
| style="padding: 15px; background: white;" | 2️⃣ Connect
| style="padding: 15px; background: white;" | Put the sweep sine on channel 4️⃣ ; put the response on channel 1️⃣
| style="padding: 15px; background: white;" | Put the sweep sine signal on channel 4️⃣ ; put the response on channel 1️⃣
|-
|-
| style="padding: 15px; background: #fafbff;" | 3️⃣ Start
| style="padding: 15px; background: #fafbff;" | 3️⃣ Start
Line 40: Line 50:
|-
|-
| style="padding: 15px; background: white;" | 4️⃣ Monitor
| style="padding: 15px; background: white;" | 4️⃣ Monitor
| style="padding: 15px; background: white;" | Watch 4 metrics update live , THD and frequency will also be injected on channels DC simulated of NVgate
| style="padding: 15px; background: white;" | Watch 4 metrics update live , THD and frequency will also be injected on NVGate channels DC simulated.
|-
|-
| style="padding: 15px; background: #fafbff;" | 5️⃣ Stop
| style="padding: 15px; background: #fafbff;" | 5️⃣ Stop
Line 158: Line 168:


</div>
</div>
The NVgate Model generate a sweep sine on the output, feel free to modify the settings if you need. We recommand to not put a sweep speed more than 0.05dec/s (or less) in logarithme for accurate results


=== How to Access Configuration ===
=== How to Access Configuration ===
Line 181: Line 193:
| style="padding: 12px; background: #f5f5f5; border: 1px solid #ddd;" | Number of harmonics
| style="padding: 12px; background: #f5f5f5; border: 1px solid #ddd;" | Number of harmonics
| style="padding: 12px; background: #f5f5f5; border: 1px solid #ddd; font-family: monospace;" | 9
| style="padding: 12px; background: #f5f5f5; border: 1px solid #ddd; font-family: monospace;" | 9
| style="padding: 12px; background: #f5f5f5; border: 1px solid #ddd;" | 5 (faster), 15 (more detailed)
| style="padding: 12px; background: #f5f5f5; border: 1px solid #ddd;" |
|}
|}


Line 190: Line 202:
# Log displays "Configuration applied" ✓
# Log displays "Configuration applied" ✓
# Done!
# Done!
---
== 💡 PRO TIPS ==
{| style="width: 100%; background: linear-gradient(135deg, #fff9c4, #fffde7); padding: 20px; border-radius: 10px; margin: 20px 0; border: 2px solid #fbc02d;"
|-
| '''Tip 1: Start Simple'''
Always use default settings first. Change things later if needed.
'''Tip 2: Read the Log'''
The log console tells you everything. It's your best friend.
'''Tip 3: Use Diagnostic'''
When something's wrong, click "Run Diagnostic". It's like magic.
'''Tip 4: Multiple Measurements'''
One measurement is interesting. Five measurements is scientific.
'''Tip 5: Document Results'''
Take a screenshot or copy the final THD values. You'll forget otherwise.
|}


---
---
Line 218: Line 208:




=== Q: I Have only one channels. Can i take the max marker on windows 1===
=== Q: I Have only one channels. Can i take the max marker on windows 1 ?===


'''A:''' Yes, on configuration, put windows 1 for window (sweep)  
'''A:''' Yes, on this configuration, put windows 1 for window (sweep) and select the good number for the marker.


=== Q: Is THD 5% good? ===
=== Q: Is THD 5% good? ===
Line 267: Line 257:
|}
|}


== Technical appendix THD Formulas ==


== THD: Mathematical Formulas and Theory ==
=== THD Percentage (DC1) ===


=== Standard THD Definition ===
'''Formula:'''


==== THD as Percentage ====
<code>THD(%) = (√(H2² + H3² + ... + H9²) / H1) × 100</code>
 
The most common definition of THD is the ratio of RMS harmonic content to RMS fundamental:
 
<math>
\text{THD\%} = \frac{\sqrt{\sum_{n=2}^{N} V_n^2}}{V_1} \times 100
</math>


Where:
Where:
* <math>V_1</math> = RMS amplitude of fundamental (1st harmonic)
* H1 = Fundamental amplitude (1st harmonic)
* <math>V_n</math> = RMS amplitude of nth harmonic (n = 2, 3, 4, ...)
* H2, H3, ..., H9 = Harmonic amplitudes (2nd to 9th)
* <math>N</math> = total number of harmonics analyzed
* = Square root


This represents the percentage of harmonic content relative to the fundamental.
'''Example:'''
* H1 (fundamental) = 1.0 V
* H2 = 0.02 V
* H3 = 0.01 V
* H4 = 0.01 V
* (all others = 0)


==== Alternative Form (Total Distortion) ====
Calculation:
 
* Harmonics RMS = (0.02² + 0.01² + 0.01²) = √0.0006 = 0.0245 V
Some standards define THD as:
* THD% = (0.0245 / 1.0) × 100 = '''2.45%'''
 
<math>
\text{THD} = \frac{\sqrt{\sum_{n=2}^{N} V_n^2}}{\sqrt{V_1^2 + \sum_{n=2}^{N} V_n^2}}
</math>
 
This normalizes to total RMS content (including fundamental). This is sometimes called '''THD+N''' (Total Harmonic Distortion + Noise).
 
===== Relationship: THD% vs THD =====
 
<math>
\text{THD\%} = \frac{\text{THD}}{\sqrt{1 - \text{THD}^2}} \times 100
</math>
 
For small distortions (THD < 0.1): <math>\text{THD\%} \approx 100 \times \text{THD}</math>


---
---


=== THD in Decibels ===
=== THD in Decibels (DC2) ===


==== From Ratio ====
'''Formula:'''


<math>
<code>THD(dB) = 20 × log₁₀(√(H2² + H3² + ... + H9²) / H1)</code>
\text{THD}_{\text{dB}} = 20 \log_{10}\left(\frac{\sqrt{\sum_{n=2}^{N} V_n^2}}{V_1}\right)
</math>


==== From Percentage ====
Or from THD%:


<math>
<code>THD(dB) = 20 × log₁₀(THD% / 100)</code>
\text{THD}_{\text{dB}} = 20 \log_{10}\left(\frac{\text{THD\%}}{100}\right)
</math>


===== Interpretation =====
Where:
 
* log₁₀ = Base-10 logarithm
* <math>\text{THD}_{\text{dB}} = -20 \text{ dB}</math> → <math>\text{THD\%} \approx 10\%</math>
* All H values same as above
* <math>\text{THD}_{\text{dB}} = -40 \text{ dB}</math> → <math>\text{THD\%} \approx 1\%</math>
* <math>\text{THD}_{\text{dB}} = -60 \text{ dB}</math> → <math>\text{THD\%} \approx 0.1\%</math>
 
Every -20 dB represents a factor of 10 reduction in THD%.
 
---
 
=== Implementation in THD Sweep Measurement ===


==== Calculation Functions ====


The application uses the following approach:
'''Example from above:'''
* Ratio = 0.0245 / 1.0 = 0.0245
* log₁₀(0.0245) = -1.611
* THD(dB) = 20 × (-1.611) = '''−32.2 dB'''


===== Python Implementation =====
Or: THD(dB) = 20 × log₁₀(2.45 / 100) = 20 × (−1.611) = '''−32.2 dB'''
 
<source lang="python">
import math
 
def compute_thd_percent(fundamental_v, harmonics_v):
    """
    Calculate THD as percentage.
 
    Args:
        fundamental_v: Fundamental amplitude (H1)
        harmonics_v: List of harmonic amplitudes [H2, H3, H4, ...]
 
    Returns:
        THD percentage (0-100+)
    """
    if not harmonics_v or not fundamental_v or fundamental_v == 0:
        return None
 
    rms_harmonics = math.sqrt(sum(h * h for h in harmonics_v))
    return (rms_harmonics / abs(fundamental_v)) * 100.0
 
 
def compute_thd_db(fundamental_v, harmonics_v):
    """
    Calculate THD in decibels.
 
    Args:
        fundamental_v: Fundamental amplitude (H1)
        harmonics_v: List of harmonic amplitudes [H2, H3, H4, ...]
 
    Returns:
        THD in dB (-200 to 0 dB)
    """
    if not harmonics_v or not fundamental_v or fundamental_v == 0:
        return None
 
    rms_harmonics = math.sqrt(sum(h * h for h in harmonics_v))
    ratio = rms_harmonics / abs(fundamental_v)
 
    return 20.0 * math.log10(ratio) if ratio > 0 else -200.0
</source>
 
===== Coherence Between DC1 and DC2 =====
 
The two DC inputs maintain mathematical coherence:
 
<math>
\text{THD}_{\text{dB}} = 20 \log_{10}\left(\frac{\text{THD\%}}{100}\right)
</math>
 
Example:
* If DC1 (%) = 5.5
* Then DC2 (dB) = 20 × log₁₀(5.5/100) = 20 × log₁₀(0.055) ≈ -25.18 dB


---
---


=== Measurement Configuration ===
=== Quick Conversion Table ===


==== Harmonic Analysis ====
{| class="wikitable"
|-
! THD Percentage !! THD in dB !! Quality Rating
|-
| 0.5% || −46 dB || Excellent (pro audio)
|-
| 1% || −40 dB || Very Good
|-
| 3% || −30 dB || Good
|-
| 5% || −26 dB || Acceptable
|-
| 10% || −20 dB || Fair
|-
| 30% || −10 dB || Poor
|-
| 100% || 0 dB || Unusable
|}


The application measures up to '''N = 9 harmonics''' by default:
* '''H1''' (Fundamental): ~1 kHz to ~20 kHz (sweep dependent)
* '''H2-H9''' (Harmonics): 2× to 9× fundamental frequency
For a 1 kHz fundamental:
* H1 = 1.000 kHz
* H2 = 2.000 kHz
* H3 = 3.000 kHz
* H4 = 4.000 kHz
* ... up to
* H9 = 9.000 kHz
==== Display Zones ====
Both Max and Harmonic markers use:
* '''Interpolation Type 1''' (X-axis): Linear interpolation for frequency precision
* '''Display Zone Type 4''' (FFT magnitude): Standard magnitude spectrum
This ensures:
* Frequency accuracy to ~1 Hz (depending on FFT resolution)
* Amplitude accuracy to ~0.1 dB


---
---


=== Physical Quantities Configuration ===
=== Three DC Outputs ===
 
The three DC Simulated inputs are configured with specific physical quantities:


{| class="wikitable"
{| class="wikitable"
|-
|-
! DC Channel !! Physical Quantity !! Unit !! Formula !! Range
! Output Channel !! Measurement !! Formula !! Typical Range
|-
|-
| DC1 || Percentage || % || <math>\text{THD\%} = \frac{\sqrt{\sum V_n^2}}{V_1} \times 100</math> || 0 - 100%
| DC1 || THD % || (Harmonics RMS / H1) × 100 || 0 to 100%
|-
|-
| DC2 || Ratio || dB || <math>20 \log_{10}(\text{ratio})</math> || -200 to 0 dB
| DC2 || THD dB || 20 × log₁₀(ratio) || −200 to 0 dB
|-
|-
| DC3 || Frequency || Hz || <math>f_{\text{max}}</math> (from Max marker) || 0 - 40000 Hz
| DC3 || Frequency || Sweep frequency at current point || 0 to 40 kHz
|}
|}
The application queries '''GetSettingValues()''' to dynamically find the correct enum index for each physical quantity, ensuring compatibility across NVGate configurations.


---
---


=== THD Standards Reference ===
=== Coherence Between DC1 and DC2 ===


==== IEC 61000-3-2 (EMC - Harmonic Current) ====
The two THD channels always maintain mathematical coherence. Given DC1 value (THD%), you can always calculate DC2:


For equipment <16A supply current, limits defined for harmonics up to 40th:
<code>DC2(dB) = 20 × log₁₀(DC1(%) / 100)</code>


<math>
'''Example:'''
\text{Harmonic order } n: I_h \leq I_{\text{limit}}(n)
* If DC1 displays 5.5%
</math>
* Then DC2 = 20 × log₁₀(0.055) = 20 × (−1.26) = '''−25.2 dB'''


Common limits (Class A equipment):
This relationship is guaranteed by the software mathematics.
* H3: 30% of I1
* H5: 10% of I1
* H7: 7% of I1
* H9: 3% of I1
 
==== Audio Industry Standards ====
 
* '''Professional Audio (AES)''': THD < 0.05% @ 1 kHz
* '''Hi-Fi''': THD < 0.1% @ 1 kHz, 20 Hz - 20 kHz
* '''Consumer Audio''': THD < 1% @ 1 kHz
* '''Basic Consumer''': THD < 5% @ 1 kHz


---
---


=== Measurement Uncertainty ===
=== Why Two Formats (% and dB)? ===


The THD measurement uncertainty depends on:
'''THD %:'''
* Easier to understand for non-technical users
* Direct representation: "5% distortion"
* Useful for product specifications


* '''FFT Resolution''': <math>\Delta f = \frac{f_s}{N_{\text{FFT}}}</math>
'''THD dB:'''
* '''Windowing''': Choice of window function (Hann, Hamming, etc.)
* Logarithmic scale: easier to see small differences
* '''Interpolation''': Type 1 (X-axis) reduces frequency leakage
* Standard in audio/RF engineering
* '''Signal Stability''': Amplitude variation during sweep
* Used in all standards and specifications
* Better for comparing measurements at different levels


For typical speaker measurements:
Both represent the same information, just in different scales.
* Frequency uncertainty: ±2 Hz
* Amplitude uncertainty: ±0.5 dB
* THD uncertainty: ±2% (relative)


---
---
=== Examples ===
==== Example 1: Good Speaker (5% THD) ====
Given:
* H1 = 1.0 V (fundamental at 1 kHz)
* H2 = 0.05 V
* H3 = 0.02 V
* H4 = 0.01 V
* H5 = 0.005 V
Calculation:
<math>
\text{RMS}_{\text{harmonics}} = \sqrt{0.05^2 + 0.02^2 + 0.01^2 + 0.005^2}
= \sqrt{0.0025 + 0.0004 + 0.0001 + 0.000025}
= \sqrt{0.003025} \approx 0.055 \text{ V}
</math>
<math>
\text{THD\%} = \frac{0.055}{1.0} \times 100 = 5.5\%
</math>
<math>
\text{THD}_{\text{dB}} = 20 \log_{10}(0.055) \approx -25.18 \text{ dB}
</math>
'''Result:''' DC1 = 5.5% | DC2 = -25.18 dB
==== Example 2: Poor Speaker (20% THD) ====
Given:
* H1 = 1.0 V
* H2 = 0.15 V
* H3 = 0.08 V
* H4 = 0.05 V
* H5 = 0.03 V
<math>
\text{RMS}_{\text{harmonics}} = \sqrt{0.15^2 + 0.08^2 + 0.05^2 + 0.03^2}
\approx 0.18 \text{ V}
</math>
<math>
\text{THD\%} = 18\%
</math>
<math>
\text{THD}_{\text{dB}} = 20 \log_{10}(0.18) \approx -14.89 \text{ dB}
</math>
'''Result:''' DC1 = 18% | DC2 = -14.89 dB
---
=== References ===
* [https://en.wikipedia.org/wiki/Total_harmonic_distortion Wikipedia - THD]
* IEC 61000-3-2:2018 - Electromagnetic compatibility
* AES Recommended Practice for Measurements of Single-Channel and Stereo Analog Audio
* Typical Audio Specifications and Measurements - Analog Devices
---
'''Last Updated:''' 2026-04-15
'''Format:''' MediaWiki with LaTeX formulas

Latest revision as of 16:36, 15 April 2026

THD SWEEP MEASUREMENT - USER GUIDE

Master the art of measuring Total Harmonic Distortion with style

Sweep.png


🎵 THD SWEEP MEASUREMENT
Professional Acoustic Testing Made Simple

---

Install

Download THD measurement :

THD sweep measurement April 2026

Install model

Put the model folder : "THD computation" on model database of NVgate. (By default : C:\OROS\NVGate data\Workbook Library\User\ )

Requirement

NVGate V17 or upper.

Option : DC simulated on NVGate front end.

⚡ QUICK START - 30 SECONDS

STEP ACTION
1️⃣ Launch Launch NVgate in connected mode and load the THD computation model Double-click THD_Sweep_Measurement.exe
2️⃣ Connect Put the sweep sine signal on channel 4️⃣ ; put the response on channel 1️⃣
3️⃣ Start Start the THD_Sweep_Measurement.exe and Click green ▶ START button
4️⃣ Monitor Watch 4 metrics update live , THD and frequency will also be injected on NVGate channels DC simulated.
5️⃣ Stop Click red ■ STOP button

That's it! Your first THD measurement is complete. You're now a certified acoustic engineer. (Not really, but it feels good.)

---


📊 Four Metric Cards

The heart of the interface. These four numbers tell the whole story:

📈
THD (dB)
📊
THD (%)
📡
Frequency

Fundamental
Harmonic distortion (log scale) Harmonic distortion (%) Current sweep point Signal strength
+5.42 dB 58.294 % 1234.56 Hz 5.0e-01 V

🎯 UNDERSTANDING YOUR RESULTS

THD (%) - The Easy Number

What is it? Percentage of unwanted harmonics in your signal.

Think of it this way:

  • THD 5% = 95% pure signal, 5% noise
  • THD 20% = 80% pure signal, 20% noise

The Quality Scale:

🌟 1% - 5% Excellent - Professional grade equipment
✅ 5% - 15% Good - Solid speaker performance
⚠️ 15% - 30% Acceptable - Consumer level equipment
❌ > 30% Poor - Time for an upgrade 🛠️

THD (dB) - The Technical Number

Same measurement as THD (%) but in decibels (logarithmic scale).

Quick Conversion Chart:

THD % THD dB Quality
1% -40 dB 🌟 Perfect
3% -30 dB ✅ Great
10% -20 dB ✅ Good
30% -10 dB ⚠️ Poor

---

⚙️ CONFIGURATION

When Do I Need to Change This?

Honest answer: Almost never.

The default settings work for 95% of users. Only change if your NVGate project has:

  • Different window names
  • Different marker numbers
  • Different DC input addresses

If you're not sure → Don't change anything. It works.

The NVgate Model generate a sweep sine on the output, feel free to modify the settings if you need. We recommand to not put a sweep speed more than 0.05dec/s (or less) in logarithme for accurate results

How to Access Configuration

Click on ▶ Configuration (section expands)

Important Settings

Setting Default When to Change
Window (sweep) Window2 Your sweep FFT has different name
Window (response) Window1 Your response FFT has different name
Number of harmonics 9

How to Apply Changes

  1. Modify field value
  2. Click Apply Configuration
  3. Log displays "Configuration applied" ✓
  4. Done!

---

❓ FREQUENTLY ASKED QUESTIONS

Q: I Have only one channels. Can i take the max marker on windows 1 ?

A: Yes, on this configuration, put windows 1 for window (sweep) and select the good number for the marker.

Q: Is THD 5% good?

A: For a speaker? Excellent! You can be proud of that equipment. 🎉

Q: Why does THD change with frequency?

A: Because speakers aren't perfect at all frequencies. Some frequencies cause more distortion than others. That's physics being weird.

Q: Can I use this on any speaker?

A: Yes! Desktop speakers, studio monitors, subwoofers, car speakers - if it's connected to NVGate, we can measure it.

Q: How many times should I measure?

A: Once for curiosity. Three times for reliability. Ten times if you're publishing a paper.

Q: Can I export the results?

A: Yes! Copy text from the log console and paste into Excel, Word, or wherever you need it.

Q: What if my project has different settings?

A: Use the Configuration panel to adjust. It's literally made for this.

Q: Does this work over WiFi?

A: No. It only works locally (same computer or local network). WiFi would add too much latency.

---

disclaimer

1) This program is delivered free of charge for NVGate V12. Support is not automatically provided on this tool.

2) For any other requests, please contact your local distributor or the OROS Customer Care department.

---

You're Ready!
Go measure some THD and make your speakers proud 🎵

Technical appendix THD Formulas

THD Percentage (DC1)

Formula:

THD(%) = (√(H2² + H3² + ... + H9²) / H1) × 100

Where:

  • H1 = Fundamental amplitude (1st harmonic)
  • H2, H3, ..., H9 = Harmonic amplitudes (2nd to 9th)
  • √ = Square root

Example:

  • H1 (fundamental) = 1.0 V
  • H2 = 0.02 V
  • H3 = 0.01 V
  • H4 = 0.01 V
  • (all others = 0)

Calculation:

  • Harmonics RMS = √(0.02² + 0.01² + 0.01²) = √0.0006 = 0.0245 V
  • THD% = (0.0245 / 1.0) × 100 = 2.45%

---

THD in Decibels (DC2)

Formula:

THD(dB) = 20 × log₁₀(√(H2² + H3² + ... + H9²) / H1)

Or from THD%:

THD(dB) = 20 × log₁₀(THD% / 100)

Where:

  • log₁₀ = Base-10 logarithm
  • All H values same as above


Example from above:

  • Ratio = 0.0245 / 1.0 = 0.0245
  • log₁₀(0.0245) = -1.611
  • THD(dB) = 20 × (-1.611) = −32.2 dB

Or: THD(dB) = 20 × log₁₀(2.45 / 100) = 20 × (−1.611) = −32.2 dB

---

Quick Conversion Table

THD Percentage THD in dB Quality Rating
0.5% −46 dB Excellent (pro audio)
1% −40 dB Very Good
3% −30 dB Good
5% −26 dB Acceptable
10% −20 dB Fair
30% −10 dB Poor
100% 0 dB Unusable


---

Three DC Outputs

Output Channel Measurement Formula Typical Range
DC1 THD % (Harmonics RMS / H1) × 100 0 to 100%
DC2 THD dB 20 × log₁₀(ratio) −200 to 0 dB
DC3 Frequency Sweep frequency at current point 0 to 40 kHz

---

Coherence Between DC1 and DC2

The two THD channels always maintain mathematical coherence. Given DC1 value (THD%), you can always calculate DC2:

DC2(dB) = 20 × log₁₀(DC1(%) / 100)

Example:

  • If DC1 displays 5.5%
  • Then DC2 = 20 × log₁₀(0.055) = 20 × (−1.26) = −25.2 dB

This relationship is guaranteed by the software mathematics.

---

Why Two Formats (% and dB)?

THD %:

  • Easier to understand for non-technical users
  • Direct representation: "5% distortion"
  • Useful for product specifications

THD dB:

  • Logarithmic scale: easier to see small differences
  • Standard in audio/RF engineering
  • Used in all standards and specifications
  • Better for comparing measurements at different levels

Both represent the same information, just in different scales.

---