1 Question (a) 95% Asymptotic Confidence Interval for \(\theta\)

1.1 Methodology

To construct a 95% asymptotic confidence interval for the parameter \(\theta\), we use the asymptotic normality of the maximum likelihood estimator (MLE). From theory:

\[ \hat{\theta} \overset{d}{\to} N\left(\theta, \frac{1}{n I(\theta)}\right) \]

Thus, an approximate \(100(1-\alpha)\%\) confidence interval is:

\[ \hat{\theta} \pm z_{1-\alpha/2} \sqrt{\frac{1}{n I(\hat{\theta})}} \]

where: - \(z_{1-\alpha/2} = 1.96\) for a 95% confidence level - \(I(\theta)\) is the Fisher information: \[ I(\theta) = \frac{2}{\theta^2} - \frac{1}{(1+\theta)^2} \]

The MLE of \(\theta\) is given by:

\[ \hat{\theta} = \frac{1 - \bar{x} + \sqrt{\bar{x}^2 + 6\bar{x} + 1}}{2\bar{x}} \]

1.2 R Implementation

# Input data (customer service times)
x <- c(3.2, 5.8, 7.1, 4.5, 10.3, 6.2, 8.7, 5.1, 12.5, 6.9,
       9.4, 5.7, 11.8, 4.9, 9.1, 6.5, 13.2, 7.8, 10.6, 6.1,
       8.9, 5.4, 12.1, 7.3, 9.8, 5.9, 11.4, 6.8, 10.9, 7.5,
       4.2, 8.3, 6.4, 14.1, 5.6, 9.7, 7.9, 11.1, 6.7, 10.2,
       5.3, 8.6, 7.2, 12.9, 6.3, 9.3, 8.1, 13.7, 7.6, 10.8)

# Sample size and sample mean
n <- length(x)
x_bar <- mean(x)

# Compute MLE of theta using provided formula
theta_hat <- (1 - x_bar + sqrt(x_bar^2 + 6*x_bar + 1)) / (2*x_bar)

# Define Fisher Information function
I_theta <- function(theta) {
  (2 / theta^2) - (1 / (1 + theta)^2)
}

# Compute standard error using asymptotic variance
se_theta <- sqrt(1 / (n * I_theta(theta_hat)))

# Critical value for 95% CI
z <- qnorm(0.975)

# Construct confidence interval
lower <- theta_hat - z * se_theta
upper <- theta_hat + z * se_theta

# Output results
theta_hat
[1] 0.2190994
lower
[1] 0.1758057
upper
[1] 0.2623931

2 Question (b) 95% Likelihood Ratio Confidence Interval for \(\theta\)

2.1 Methodology

The likelihood ratio confidence interval is constructed using the likelihood ratio statistic:

\[ LR(\theta) = -2 \log \Lambda(\theta) = 2\big[\ell(\hat{\theta}) - \ell(\theta)\big] \]

By Wilks’ Theorem:

\[ LR(\theta) \xrightarrow{d} \chi^2_1 \]

Thus, a 95% confidence interval consists of all values of \(\theta\) satisfying:

\[ 2\big[\ell(\hat{\theta}) - \ell(\theta)\big] \le \chi^2_{1,0.05} \]

where \(\chi^2_{1,0.05} \approx 3.841459\).

The log-likelihood function is:

\[ \ell(\theta) = n \ln\left(\frac{\theta^2}{1+\theta}\right) - \theta S \]

(ignoring constants since they cancel out).

2.2 R Implementation

# Reuse data
x <- c(3.2, 5.8, 7.1, 4.5, 10.3, 6.2, 8.7, 5.1, 12.5, 6.9,
       9.4, 5.7, 11.8, 4.9, 9.1, 6.5, 13.2, 7.8, 10.6, 6.1,
       8.9, 5.4, 12.1, 7.3, 9.8, 5.9, 11.4, 6.8, 10.9, 7.5,
       4.2, 8.3, 6.4, 14.1, 5.6, 9.7, 7.9, 11.1, 6.7, 10.2,
       5.3, 8.6, 7.2, 12.9, 6.3, 9.3, 8.1, 13.7, 7.6, 10.8)

n <- length(x)
S <- sum(x)
x_bar <- mean(x)

# MLE
theta_hat <- (1 - x_bar + sqrt(x_bar^2 + 6*x_bar + 1)) / (2*x_bar)

# Log-likelihood function (ignoring constant C)
loglik <- function(theta) {
  n * log(theta^2 / (1 + theta)) - theta * S
}

# Maximum log-likelihood
l_hat <- loglik(theta_hat)

# Chi-square critical value
chi_sq <- qchisq(0.95, df = 1)

# Function whose root gives CI endpoints
lr_function <- function(theta) {
  2 * (l_hat - loglik(theta)) - chi_sq
}

# Find lower bound
lower <- uniroot(lr_function, interval = c(0.0001, theta_hat))$root

# Find upper bound
upper <- uniroot(lr_function, interval = c(theta_hat, 5))$root

# Output
theta_hat
[1] 0.2190994
lower
[1] 0.1786415
upper
[1] 0.2653396

3 Question (c) Comparison of Confidence Intervals

3.1 Overview

Two different methods were used to construct 95% confidence intervals for the parameter \(\theta\):

  1. Asymptotic (normal approximation) confidence interval
  2. Likelihood ratio confidence interval

3.2 Comparison

3.2.1 1. Methodological Differences

The asymptotic confidence interval is based on the normal approximation:

\[ \hat{\theta} \pm z_{1-\alpha/2} \sqrt{\frac{1}{n I(\hat{\theta})}} \]

This method relies on the Central Limit Theorem and assumes that the sampling distribution of \(\hat{\theta}\) is approximately normal for large sample sizes.

In contrast, the likelihood ratio confidence interval is constructed using:

\[ 2\big[\ell(\hat{\theta}) - \ell(\theta)\big] \le \chi^2_{1,\alpha} \]

This approach is based directly on the likelihood function and does not rely on a normal approximation.


3.2.2 2. Accuracy and Reliability

The asymptotic interval depends on large-sample theory and may be less accurate if the sample size is not sufficiently large or if the distribution is skewed.

The likelihood ratio interval, however, is derived from the likelihood function itself and is supported by Wilks’ Theorem. As noted in the lecture notes, likelihood-based intervals often provide more accurate results, particularly for small to moderate sample sizes.


3.2.3 3. Width of the Intervals

In practice, the likelihood ratio interval may be asymmetric and can better reflect the true shape of the likelihood function. The asymptotic interval is always symmetric around \(\hat{\theta}\), which may not accurately capture the uncertainty if the distribution is skewed.


3.3 Recommendation

Based on the theoretical properties and the discussion in the lecture notes, the likelihood ratio confidence interval is preferred. It is more robust and better aligned with the underlying distribution of the data, as it directly uses the likelihood function rather than relying on an approximation.


3.4 Conclusion

While both intervals provide valid estimates under their respective assumptions, the likelihood ratio confidence interval is generally more reliable and informative. Therefore, it is recommended for inference on the parameter \(\theta\) in this setting.

LS0tDQp0aXRsZTogJ1NUQSA1MDYgSE9NRVdPUksgNycNCmF1dGhvcjogJ0dlcmFyZCBJa2UnDQpkYXRlOiAiMjAyNi0wMy0yNCINCm91dHB1dDoNCiAgaHRtbF9kb2N1bWVudDogICAgICAgICAgICAgICMgb3V0cHV0IGRvY3VtZW50IGZvcm1hdA0KICAgIHRvYzogeWVzICAgICAgICAgICAgICAgICAgIyBhZGQgdGFibGUgY29udGVudHMNCiAgICB0b2NfZmxvYXQ6IHllcyAgICAgICAgICAgICMgdG9jX3Byb3BlcnR5OiBmbG9hdGluZw0KICAgIHRvY19kZXB0aDogNCAgICAgICAgICAgICAgIyBkZXB0aCBvZiBUT0MgaGVhZGluZ3MNCiAgICBmaWdfd2lkdGg6IDYgICAgICAgICAgICAgICMgZ2xvYmFsIGZpZ3VyZSB3aWR0aA0KICAgIGZpZ19oZWlnaHQ6IDQgICAgICAgICAgICAgIyBnbG9iYWwgZmlndXJlIGhlaWdodA0KICAgIGZpZ19jYXB0aW9uOiB5ZXMgICAgICAgICAgIyBhZGQgZmlndXJlIGNhcHRpb24NCiAgICBudW1iZXJfc2VjdGlvbnM6IHllcyAgICAgICMgbnVtYmVyaW5nIHNlY3Rpb24gaGVhZGluZ3MNCiAgICB0b2NfY29sbGFwc2VkOiB5ZXMgICAgICAgICMgVE9DIHN1YmhlYWRpbmcgY2xhcHNpbmcNCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUgICAgICAgICMgZm9sZGluZy9zaG93aW5nIGNvZGUNCiAgICBjb2RlX2Rvd25sb2FkOiB5ZXMgICAgICAgICMgYWxsb3cgdG8gZG93bmxvYWQgY29tcGxldGUgUk1hcmtkb3duIHNvdXJjZSBjb2RlDQogICAgc21vb3RoX3Njcm9sbDogeWVzICAgICAgICAjIHNjcm9sbGluZyB0ZXh0IG9mIHRoZSBkb2N1bWVudA0KICAgIHRoZW1lOiBsdW1lbiAgICAgICAgICAgICAgIyB2aXN1YWwgdGhlbWUgZm9yIEhUTUwgZG9jdW1lbnQgb25seQ0KICAgIGhpZ2hsaWdodDogdGFuZ28gICAgICAgICAgIyBjb2RlIHN5bnRheCBoaWdobGlnaHRpbmcgc3R5bGVzDQogIHBkZl9kb2N1bWVudDoNCiAgICB0b2M6IHllcw0KICAgIHRvY19kZXB0aDogNA0KICAgIGZpZ19jYXB0aW9uOiB5ZXMNCiAgICBudW1iZXJfc2VjdGlvbnM6IHllcw0KICB3b3JkX2RvY3VtZW50Og0KICAgIHRvYzogeWVzDQogICAgdG9jX2RlcHRoOiAnNCcNCi0tLQ0KDQpgYGB7Y3NzLCBlY2hvID0gRkFMU0V9DQpkaXYjVE9DIGxpIHsgICAgIC8qIHRhYmxlIG9mIGNvbnRlbnQgICovDQogICAgbGlzdC1zdHlsZTp1cHBlci1yb21hbjsNCiAgICBiYWNrZ3JvdW5kLWltYWdlOm5vbmU7DQogICAgYmFja2dyb3VuZC1yZXBlYXQ6bm9uZTsNCiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOjA7DQp9DQoNCmgxLnRpdGxlIHsgICAgLyogbGV2ZWwgMSBoZWFkZXIgb2YgdGl0bGUgICovDQogIGZvbnQtc2l6ZTogMjRweDsNCiAgZm9udC13ZWlnaHQ6IGJvbGQ7DQogIGNvbG9yOiBEYXJrUmVkOw0KICB0ZXh0LWFsaWduOiBjZW50ZXI7DQp9DQoNCmg0LmF1dGhvciB7IC8qIEhlYWRlciA0IC0gYW5kIHRoZSBhdXRob3IgYW5kIGRhdGEgaGVhZGVycyB1c2UgdGhpcyB0b28gICovDQogIGZvbnQtc2l6ZTogMThweDsNCiAgZm9udC13ZWlnaHQ6IGJvbGQ7DQogIGZvbnQtZmFtaWx5OiAiVGltZXMgTmV3IFJvbWFuIiwgVGltZXMsIHNlcmlmOw0KICBjb2xvcjogRGFya1JlZDsNCiAgdGV4dC1hbGlnbjogY2VudGVyOw0KfQ0KDQpoNC5kYXRlIHsgLyogSGVhZGVyIDQgLSBhbmQgdGhlIGF1dGhvciBhbmQgZGF0YSBoZWFkZXJzIHVzZSB0aGlzIHRvbyAgKi8NCiAgZm9udC1zaXplOiAxOHB4Ow0KICBmb250LXdlaWdodDogYm9sZDsNCiAgZm9udC1mYW1pbHk6ICJUaW1lcyBOZXcgUm9tYW4iLCBUaW1lcywgc2VyaWY7DQogIGNvbG9yOiBEYXJrQmx1ZTsNCiAgdGV4dC1hbGlnbjogY2VudGVyOw0KfQ0KDQpoMSB7IC8qIEhlYWRlciAxIC0gYW5kIHRoZSBhdXRob3IgYW5kIGRhdGEgaGVhZGVycyB1c2UgdGhpcyB0b28gICovDQogICAgZm9udC1zaXplOiAyMHB4Ow0KICAgIGZvbnQtd2VpZ2h0OiBib2xkOw0KICAgIGZvbnQtZmFtaWx5OiAiVGltZXMgTmV3IFJvbWFuIiwgVGltZXMsIHNlcmlmOw0KICAgIGNvbG9yOiBkYXJrcmVkOw0KICAgIHRleHQtYWxpZ246IGNlbnRlcjsNCn0NCg0KaDIgeyAvKiBIZWFkZXIgMiAtIGFuZCB0aGUgYXV0aG9yIGFuZCBkYXRhIGhlYWRlcnMgdXNlIHRoaXMgdG9vICAqLw0KICAgIGZvbnQtc2l6ZTogMThweDsNCiAgICBmb250LXdlaWdodDogYm9sZDsNCiAgICBmb250LWZhbWlseTogIlRpbWVzIE5ldyBSb21hbiIsIFRpbWVzLCBzZXJpZjsNCiAgICBjb2xvcjogbmF2eTsNCiAgICB0ZXh0LWFsaWduOiBsZWZ0Ow0KfQ0KDQpoMyB7IC8qIEhlYWRlciAzIC0gYW5kIHRoZSBhdXRob3IgYW5kIGRhdGEgaGVhZGVycyB1c2UgdGhpcyB0b28gICovDQogICAgZm9udC1zaXplOiAxNnB4Ow0KICAgIGZvbnQtd2VpZ2h0OiBib2xkOw0KICAgIGZvbnQtZmFtaWx5OiAiVGltZXMgTmV3IFJvbWFuIiwgVGltZXMsIHNlcmlmOw0KICAgIGNvbG9yOiBuYXZ5Ow0KICAgIHRleHQtYWxpZ246IGxlZnQ7DQp9DQoNCmg0IHsgLyogSGVhZGVyIDQgLSBhbmQgdGhlIGF1dGhvciBhbmQgZGF0YSBoZWFkZXJzIHVzZSB0aGlzIHRvbyAgKi8NCiAgICBmb250LXNpemU6IDE0cHg7DQogIGZvbnQtd2VpZ2h0OiBib2xkOw0KICAgIGZvbnQtZmFtaWx5OiAiVGltZXMgTmV3IFJvbWFuIiwgVGltZXMsIHNlcmlmOw0KICAgIGNvbG9yOiBkYXJrcmVkOw0KICAgIHRleHQtYWxpZ246IGxlZnQ7DQp9DQoNCi8qIEFkZCBkb3RzIGFmdGVyIG51bWJlcmVkIGhlYWRlcnMgKi8NCi5oZWFkZXItc2VjdGlvbi1udW1iZXI6OmFmdGVyIHsNCiAgY29udGVudDogIi4iOw0KfQ0KYGBgDQoNCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQ0KIyBjb2RlIGNodW5rIHNwZWNpZmllcyB3aGV0aGVyIHRoZSBSIGNvZGUsIHdhcm5pbmdzLCBhbmQgb3V0cHV0IA0KIyB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSBvdXRwdXQgZmlsZXMuDQoNCmlmICghcmVxdWlyZSgia25pdHIiKSkgeyAgICAgICAgICAgICAgICAgICAgICAjIHVzZSBjb25kaXRpb25hbCBzdGF0ZW1lbnQgdG8gZGV0ZWN0DQogICBpbnN0YWxsLnBhY2thZ2VzKCJrbml0ciIpICAgICAgICAgICAgICAgICAgIyB3aGV0aGVyIGEgcGFja2FnZSB3YXMgaW5zdGFsbGVkIGluDQogICBsaWJyYXJ5KGtuaXRyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB5b3VyIG1hY2hpbmUuIElmIG5vdCwgaW5zdGFsbCBpdCBhbmQNCn0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGxvYWQgaXQgdG8gdGhlIHdvcmtpbmcgZGlyZWN0b3J5Lg0KIw0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBUUlVFLCAgICAgICAgICAgICMgaW5jbHVkZSBjb2RlIGNodW5rIGluIHRoZSBvdXRwdXQgZmlsZQ0KICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmcgPSBGQUxTRSwgICAgICAgICMgc29tZXRpbWVzLCB5b3UgY29kZSBtYXkgcHJvZHVjZSB3YXJuaW5nIG1lc3NhZ2VzLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgeW91IGNhbiBjaG9vc2UgdG8gaW5jbHVkZSB0aGUgd2FybmluZyBtZXNzYWdlcyBpbg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdGhlIG91dHB1dCBmaWxlLiANCiAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzID0gVFJVRSwgICAgICAgICAjIHlvdSBjYW4gYWxzbyBkZWNpZGUgd2hldGhlciB0byBpbmNsdWRlIHRoZSBvdXRwdXQNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGluIHRoZSBvdXRwdXQgZmlsZS4NCiAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gRkFMU0UsICAgICAgICAjIHN1cHByZXNzIG1lc3NhZ2VzIA0KICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnQgPSBOQSAgICAgICAgICAgICMgcmVtb3ZlIHRoZSBkZWZhdWx0IGxlYWRpbmcgaGFzaCB0YWdzIGluIHRoZSBvdXRwdXQNCiAgICAgICAgICAgICAgICAgICAgICApICAgDQpgYGANCg0KDQojIFF1ZXN0aW9uIChhKSA5NSUgQXN5bXB0b3RpYyBDb25maWRlbmNlIEludGVydmFsIGZvciBcKFx0aGV0YVwpDQoNCiMjIE1ldGhvZG9sb2d5DQoNClRvIGNvbnN0cnVjdCBhIDk1JSBhc3ltcHRvdGljIGNvbmZpZGVuY2UgaW50ZXJ2YWwgZm9yIHRoZSBwYXJhbWV0ZXIgXChcdGhldGFcKSwgd2UgdXNlIHRoZSBhc3ltcHRvdGljIG5vcm1hbGl0eSBvZiB0aGUgbWF4aW11bSBsaWtlbGlob29kIGVzdGltYXRvciAoTUxFKS4gRnJvbSB0aGVvcnk6DQoNClxbDQpcaGF0e1x0aGV0YX0gXG92ZXJzZXR7ZH17XHRvfSBOXGxlZnQoXHRoZXRhLCBcZnJhY3sxfXtuIEkoXHRoZXRhKX1ccmlnaHQpDQpcXQ0KDQpUaHVzLCBhbiBhcHByb3hpbWF0ZSBcKDEwMCgxLVxhbHBoYSlcJVwpIGNvbmZpZGVuY2UgaW50ZXJ2YWwgaXM6DQoNClxbDQpcaGF0e1x0aGV0YX0gXHBtIHpfezEtXGFscGhhLzJ9IFxzcXJ0e1xmcmFjezF9e24gSShcaGF0e1x0aGV0YX0pfX0NClxdDQoNCndoZXJlOg0KLSBcKHpfezEtXGFscGhhLzJ9ID0gMS45NlwpIGZvciBhIDk1JSBjb25maWRlbmNlIGxldmVsDQotIFwoSShcdGhldGEpXCkgaXMgdGhlIEZpc2hlciBpbmZvcm1hdGlvbjoNClxbDQpJKFx0aGV0YSkgPSBcZnJhY3syfXtcdGhldGFeMn0gLSBcZnJhY3sxfXsoMStcdGhldGEpXjJ9DQpcXQ0KDQpUaGUgTUxFIG9mIFwoXHRoZXRhXCkgaXMgZ2l2ZW4gYnk6DQoNClxbDQpcaGF0e1x0aGV0YX0gPSBcZnJhY3sxIC0gXGJhcnt4fSArIFxzcXJ0e1xiYXJ7eH1eMiArIDZcYmFye3h9ICsgMX19ezJcYmFye3h9fQ0KXF0NCg0KIyMgUiBJbXBsZW1lbnRhdGlvbg0KYGBge3J9DQojIElucHV0IGRhdGEgKGN1c3RvbWVyIHNlcnZpY2UgdGltZXMpDQp4IDwtIGMoMy4yLCA1LjgsIDcuMSwgNC41LCAxMC4zLCA2LjIsIDguNywgNS4xLCAxMi41LCA2LjksDQogICAgICAgOS40LCA1LjcsIDExLjgsIDQuOSwgOS4xLCA2LjUsIDEzLjIsIDcuOCwgMTAuNiwgNi4xLA0KICAgICAgIDguOSwgNS40LCAxMi4xLCA3LjMsIDkuOCwgNS45LCAxMS40LCA2LjgsIDEwLjksIDcuNSwNCiAgICAgICA0LjIsIDguMywgNi40LCAxNC4xLCA1LjYsIDkuNywgNy45LCAxMS4xLCA2LjcsIDEwLjIsDQogICAgICAgNS4zLCA4LjYsIDcuMiwgMTIuOSwgNi4zLCA5LjMsIDguMSwgMTMuNywgNy42LCAxMC44KQ0KDQojIFNhbXBsZSBzaXplIGFuZCBzYW1wbGUgbWVhbg0KbiA8LSBsZW5ndGgoeCkNCnhfYmFyIDwtIG1lYW4oeCkNCg0KIyBDb21wdXRlIE1MRSBvZiB0aGV0YSB1c2luZyBwcm92aWRlZCBmb3JtdWxhDQp0aGV0YV9oYXQgPC0gKDEgLSB4X2JhciArIHNxcnQoeF9iYXJeMiArIDYqeF9iYXIgKyAxKSkgLyAoMip4X2JhcikNCg0KIyBEZWZpbmUgRmlzaGVyIEluZm9ybWF0aW9uIGZ1bmN0aW9uDQpJX3RoZXRhIDwtIGZ1bmN0aW9uKHRoZXRhKSB7DQogICgyIC8gdGhldGFeMikgLSAoMSAvICgxICsgdGhldGEpXjIpDQp9DQoNCiMgQ29tcHV0ZSBzdGFuZGFyZCBlcnJvciB1c2luZyBhc3ltcHRvdGljIHZhcmlhbmNlDQpzZV90aGV0YSA8LSBzcXJ0KDEgLyAobiAqIElfdGhldGEodGhldGFfaGF0KSkpDQoNCiMgQ3JpdGljYWwgdmFsdWUgZm9yIDk1JSBDSQ0KeiA8LSBxbm9ybSgwLjk3NSkNCg0KIyBDb25zdHJ1Y3QgY29uZmlkZW5jZSBpbnRlcnZhbA0KbG93ZXIgPC0gdGhldGFfaGF0IC0geiAqIHNlX3RoZXRhDQp1cHBlciA8LSB0aGV0YV9oYXQgKyB6ICogc2VfdGhldGENCg0KIyBPdXRwdXQgcmVzdWx0cw0KdGhldGFfaGF0DQpsb3dlcg0KdXBwZXINCmBgYA0KDQojIFF1ZXN0aW9uIChiKSA5NSUgTGlrZWxpaG9vZCBSYXRpbyBDb25maWRlbmNlIEludGVydmFsIGZvciBcKFx0aGV0YVwpDQoNCiMjIE1ldGhvZG9sb2d5DQoNClRoZSBsaWtlbGlob29kIHJhdGlvIGNvbmZpZGVuY2UgaW50ZXJ2YWwgaXMgY29uc3RydWN0ZWQgdXNpbmcgdGhlIGxpa2VsaWhvb2QgcmF0aW8gc3RhdGlzdGljOg0KDQpcWw0KTFIoXHRoZXRhKSA9IC0yIFxsb2cgXExhbWJkYShcdGhldGEpID0gMlxiaWdbXGVsbChcaGF0e1x0aGV0YX0pIC0gXGVsbChcdGhldGEpXGJpZ10NClxdDQoNCkJ5IFdpbGtz4oCZIFRoZW9yZW06DQoNClxbDQpMUihcdGhldGEpIFx4cmlnaHRhcnJvd3tkfSBcY2hpXjJfMQ0KXF0NCg0KVGh1cywgYSA5NSUgY29uZmlkZW5jZSBpbnRlcnZhbCBjb25zaXN0cyBvZiBhbGwgdmFsdWVzIG9mIFwoXHRoZXRhXCkgc2F0aXNmeWluZzoNCg0KXFsNCjJcYmlnW1xlbGwoXGhhdHtcdGhldGF9KSAtIFxlbGwoXHRoZXRhKVxiaWddIFxsZSBcY2hpXjJfezEsMC4wNX0NClxdDQoNCndoZXJlIFwoXGNoaV4yX3sxLDAuMDV9IFxhcHByb3ggMy44NDE0NTlcKS4NCg0KVGhlIGxvZy1saWtlbGlob29kIGZ1bmN0aW9uIGlzOg0KDQpcWw0KXGVsbChcdGhldGEpID0gbiBcbG5cbGVmdChcZnJhY3tcdGhldGFeMn17MStcdGhldGF9XHJpZ2h0KSAtIFx0aGV0YSBTDQpcXQ0KDQooaWdub3JpbmcgY29uc3RhbnRzIHNpbmNlIHRoZXkgY2FuY2VsIG91dCkuDQoNCiMjIFIgSW1wbGVtZW50YXRpb24NCg0KYGBge3J9DQojIFJldXNlIGRhdGENCnggPC0gYygzLjIsIDUuOCwgNy4xLCA0LjUsIDEwLjMsIDYuMiwgOC43LCA1LjEsIDEyLjUsIDYuOSwNCiAgICAgICA5LjQsIDUuNywgMTEuOCwgNC45LCA5LjEsIDYuNSwgMTMuMiwgNy44LCAxMC42LCA2LjEsDQogICAgICAgOC45LCA1LjQsIDEyLjEsIDcuMywgOS44LCA1LjksIDExLjQsIDYuOCwgMTAuOSwgNy41LA0KICAgICAgIDQuMiwgOC4zLCA2LjQsIDE0LjEsIDUuNiwgOS43LCA3LjksIDExLjEsIDYuNywgMTAuMiwNCiAgICAgICA1LjMsIDguNiwgNy4yLCAxMi45LCA2LjMsIDkuMywgOC4xLCAxMy43LCA3LjYsIDEwLjgpDQoNCm4gPC0gbGVuZ3RoKHgpDQpTIDwtIHN1bSh4KQ0KeF9iYXIgPC0gbWVhbih4KQ0KDQojIE1MRQ0KdGhldGFfaGF0IDwtICgxIC0geF9iYXIgKyBzcXJ0KHhfYmFyXjIgKyA2KnhfYmFyICsgMSkpIC8gKDIqeF9iYXIpDQoNCiMgTG9nLWxpa2VsaWhvb2QgZnVuY3Rpb24gKGlnbm9yaW5nIGNvbnN0YW50IEMpDQpsb2dsaWsgPC0gZnVuY3Rpb24odGhldGEpIHsNCiAgbiAqIGxvZyh0aGV0YV4yIC8gKDEgKyB0aGV0YSkpIC0gdGhldGEgKiBTDQp9DQoNCiMgTWF4aW11bSBsb2ctbGlrZWxpaG9vZA0KbF9oYXQgPC0gbG9nbGlrKHRoZXRhX2hhdCkNCg0KIyBDaGktc3F1YXJlIGNyaXRpY2FsIHZhbHVlDQpjaGlfc3EgPC0gcWNoaXNxKDAuOTUsIGRmID0gMSkNCg0KIyBGdW5jdGlvbiB3aG9zZSByb290IGdpdmVzIENJIGVuZHBvaW50cw0KbHJfZnVuY3Rpb24gPC0gZnVuY3Rpb24odGhldGEpIHsNCiAgMiAqIChsX2hhdCAtIGxvZ2xpayh0aGV0YSkpIC0gY2hpX3NxDQp9DQoNCiMgRmluZCBsb3dlciBib3VuZA0KbG93ZXIgPC0gdW5pcm9vdChscl9mdW5jdGlvbiwgaW50ZXJ2YWwgPSBjKDAuMDAwMSwgdGhldGFfaGF0KSkkcm9vdA0KDQojIEZpbmQgdXBwZXIgYm91bmQNCnVwcGVyIDwtIHVuaXJvb3QobHJfZnVuY3Rpb24sIGludGVydmFsID0gYyh0aGV0YV9oYXQsIDUpKSRyb290DQoNCiMgT3V0cHV0DQp0aGV0YV9oYXQNCmxvd2VyDQp1cHBlcg0KYGBgDQoNCiMgUXVlc3Rpb24gKGMpIENvbXBhcmlzb24gb2YgQ29uZmlkZW5jZSBJbnRlcnZhbHMNCg0KIyMgT3ZlcnZpZXcNCg0KVHdvIGRpZmZlcmVudCBtZXRob2RzIHdlcmUgdXNlZCB0byBjb25zdHJ1Y3QgOTUlIGNvbmZpZGVuY2UgaW50ZXJ2YWxzIGZvciB0aGUgcGFyYW1ldGVyIFwoXHRoZXRhXCk6DQoNCjEuIEFzeW1wdG90aWMgKG5vcm1hbCBhcHByb3hpbWF0aW9uKSBjb25maWRlbmNlIGludGVydmFsDQoyLiBMaWtlbGlob29kIHJhdGlvIGNvbmZpZGVuY2UgaW50ZXJ2YWwNCg0KIyMgQ29tcGFyaXNvbg0KDQojIyMgMS4gTWV0aG9kb2xvZ2ljYWwgRGlmZmVyZW5jZXMNCg0KVGhlIGFzeW1wdG90aWMgY29uZmlkZW5jZSBpbnRlcnZhbCBpcyBiYXNlZCBvbiB0aGUgbm9ybWFsIGFwcHJveGltYXRpb246DQoNClxbDQpcaGF0e1x0aGV0YX0gXHBtIHpfezEtXGFscGhhLzJ9IFxzcXJ0e1xmcmFjezF9e24gSShcaGF0e1x0aGV0YX0pfX0NClxdDQoNClRoaXMgbWV0aG9kIHJlbGllcyBvbiB0aGUgQ2VudHJhbCBMaW1pdCBUaGVvcmVtIGFuZCBhc3N1bWVzIHRoYXQgdGhlIHNhbXBsaW5nIGRpc3RyaWJ1dGlvbiBvZiBcKFxoYXR7XHRoZXRhfVwpIGlzIGFwcHJveGltYXRlbHkgbm9ybWFsIGZvciBsYXJnZSBzYW1wbGUgc2l6ZXMuDQoNCkluIGNvbnRyYXN0LCB0aGUgbGlrZWxpaG9vZCByYXRpbyBjb25maWRlbmNlIGludGVydmFsIGlzIGNvbnN0cnVjdGVkIHVzaW5nOg0KDQpcWw0KMlxiaWdbXGVsbChcaGF0e1x0aGV0YX0pIC0gXGVsbChcdGhldGEpXGJpZ10gXGxlIFxjaGleMl97MSxcYWxwaGF9DQpcXQ0KDQpUaGlzIGFwcHJvYWNoIGlzIGJhc2VkIGRpcmVjdGx5IG9uIHRoZSBsaWtlbGlob29kIGZ1bmN0aW9uIGFuZCBkb2VzIG5vdCByZWx5IG9uIGEgbm9ybWFsIGFwcHJveGltYXRpb24uDQoNCi0tLQ0KDQojIyMgMi4gQWNjdXJhY3kgYW5kIFJlbGlhYmlsaXR5DQoNClRoZSBhc3ltcHRvdGljIGludGVydmFsIGRlcGVuZHMgb24gbGFyZ2Utc2FtcGxlIHRoZW9yeSBhbmQgbWF5IGJlIGxlc3MgYWNjdXJhdGUgaWYgdGhlIHNhbXBsZSBzaXplIGlzIG5vdCBzdWZmaWNpZW50bHkgbGFyZ2Ugb3IgaWYgdGhlIGRpc3RyaWJ1dGlvbiBpcyBza2V3ZWQuDQoNClRoZSBsaWtlbGlob29kIHJhdGlvIGludGVydmFsLCBob3dldmVyLCBpcyBkZXJpdmVkIGZyb20gdGhlIGxpa2VsaWhvb2QgZnVuY3Rpb24gaXRzZWxmIGFuZCBpcyBzdXBwb3J0ZWQgYnkgV2lsa3PigJkgVGhlb3JlbS4gQXMgbm90ZWQgaW4gdGhlIGxlY3R1cmUgbm90ZXMsIGxpa2VsaWhvb2QtYmFzZWQgaW50ZXJ2YWxzIG9mdGVuIHByb3ZpZGUgbW9yZSBhY2N1cmF0ZSByZXN1bHRzLCBwYXJ0aWN1bGFybHkgZm9yIHNtYWxsIHRvIG1vZGVyYXRlIHNhbXBsZSBzaXplcy4NCg0KLS0tDQoNCiMjIyAzLiBXaWR0aCBvZiB0aGUgSW50ZXJ2YWxzDQoNCkluIHByYWN0aWNlLCB0aGUgbGlrZWxpaG9vZCByYXRpbyBpbnRlcnZhbCBtYXkgYmUgYXN5bW1ldHJpYyBhbmQgY2FuIGJldHRlciByZWZsZWN0IHRoZSB0cnVlIHNoYXBlIG9mIHRoZSBsaWtlbGlob29kIGZ1bmN0aW9uLiBUaGUgYXN5bXB0b3RpYyBpbnRlcnZhbCBpcyBhbHdheXMgc3ltbWV0cmljIGFyb3VuZCBcKFxoYXR7XHRoZXRhfVwpLCB3aGljaCBtYXkgbm90IGFjY3VyYXRlbHkgY2FwdHVyZSB0aGUgdW5jZXJ0YWludHkgaWYgdGhlIGRpc3RyaWJ1dGlvbiBpcyBza2V3ZWQuDQoNCi0tLQ0KDQojIyBSZWNvbW1lbmRhdGlvbg0KDQpCYXNlZCBvbiB0aGUgdGhlb3JldGljYWwgcHJvcGVydGllcyBhbmQgdGhlIGRpc2N1c3Npb24gaW4gdGhlIGxlY3R1cmUgbm90ZXMsIHRoZSBsaWtlbGlob29kIHJhdGlvIGNvbmZpZGVuY2UgaW50ZXJ2YWwgaXMgcHJlZmVycmVkLiBJdCBpcyBtb3JlIHJvYnVzdCBhbmQgYmV0dGVyIGFsaWduZWQgd2l0aCB0aGUgdW5kZXJseWluZyBkaXN0cmlidXRpb24gb2YgdGhlIGRhdGEsIGFzIGl0IGRpcmVjdGx5IHVzZXMgdGhlIGxpa2VsaWhvb2QgZnVuY3Rpb24gcmF0aGVyIHRoYW4gcmVseWluZyBvbiBhbiBhcHByb3hpbWF0aW9uLg0KDQotLS0NCg0KIyMgQ29uY2x1c2lvbg0KDQpXaGlsZSBib3RoIGludGVydmFscyBwcm92aWRlIHZhbGlkIGVzdGltYXRlcyB1bmRlciB0aGVpciByZXNwZWN0aXZlIGFzc3VtcHRpb25zLCB0aGUgbGlrZWxpaG9vZCByYXRpbyBjb25maWRlbmNlIGludGVydmFsIGlzIGdlbmVyYWxseSBtb3JlIHJlbGlhYmxlIGFuZCBpbmZvcm1hdGl2ZS4gVGhlcmVmb3JlLCBpdCBpcyByZWNvbW1lbmRlZCBmb3IgaW5mZXJlbmNlIG9uIHRoZSBwYXJhbWV0ZXIgXChcdGhldGFcKSBpbiB0aGlzIHNldHRpbmcu