Assignment Objectives

  • Enhance understanding the logic and procedure of hypothesis testing .

  • Implement the procedures for power and sample size calculation for basic hypothesis testing procedures using nuilt-in function and manual calculation.

Policies of Using AI Tools

Policy on AI Tool Use: Please adhere to the AI tool policy specified in the course syllabus. The direct copying of AI-generated content is strictly prohibited. All submitted work must reflect your own understanding; where external tools are consulted, content must be thoroughly rephrased and synthesized in your own words.

Code Inclusion Requirement: Any code included in your essay must be properly commented to explain the purpose and/or expected output of key code lines. Submitting AI-generated code without meaningful, student-added comments will not be accepted.

**Simple versus Composite Hypothesis*

Simple Hypothesis

  • Simple Hypothesis Test is a hypothesis that completely specifies the population distribution. Mathematically, simple hypothesis fixes all parameters to specific values. For example, The simple hypotheses are: \(H_0: \mu = 5\) (if \(\alpha\) is known), \(H_0: \mu = 100, \sigma^2 = 25\), and \(H_1: p = 0.7\) for a Bernoulli distribution.

  • Example Scenario Test if a coin is fair:

\[\begin{aligned} H_0&: p = 0.5 \quad \text{(completely specified)} \\ H_1&: p = 0.6 \quad \text{(also completely specified)} \end{aligned}\]

Both are simple hypotheses.

Composite Hypothesis

  • Composite Hypothesis is a hypothesis that does not completely specify the distribution. Mathematically, it allows a range of values for at least one parameter. For example, in one-sided: \(\mu >5\); in two-sided: \(\mu \le 5\).

  • Example Scenarios

\[\begin{aligned} &H_0: \mu = 5 && \text{(simple)} \\ &H_1: \mu > 5 && \text{(composite)} \end{aligned}\] \[\begin{aligned} &H_0: \mu \leq 5 && \text{(composite)} \\ &H_1: \mu > 5 && \text{(composite)} \end{aligned}\] \[\begin{aligned} &H_0: \text{data follows } N(\mu, 1), \mu = 0 && \text{(simple)} \\ &H_1: \text{data follows Poisson}(\lambda) && \text{(composite – different family)} \end{aligned}\]

This assignment focuses on performing performing a test of mean (\(\mu\)) a normal population and calculating the power and sample size based on various assumptions


Question: New Cholesterol Medication

A pharmaceutical company develops “CholestFix” to reduce Low-Density Lipoprotein (LDL, fat carrier that’s low in density) cholesterol. The current standard drug lowers LDL by an average of 25 mg/dL with a standard deviation of 15 mg/dL. A clinical trial with 5 participants were recruited in the study for three months. At the end of the study, the mean reduction is 29 mg/dL. Assume that the variance of LDL reduction of new drug is the same as that of the standard drugs.

Based on the results in the clinical trial, researchers in the company believe CholestFix is more effective.

a). Perform a formal hypothesis test of the researchers’ belief regarding LDL reduction, using a significance level of \(\alpha = 0.05\).

b). Given \(n = 50, \sigma = 15, \alpha = 0.05\), and an effect size we wish to detect \(\delta = 4\) mg/dL (corresponding to a reduction from 29 mg/dL to 25 mg/dL). What is the probability that we’d detect a true improvement?

c). Determine the minimum sample size required to detect an effect size of 4 mg/dL with a power of \(1 - \beta = 0.8\) and a significance level of \(\alpha = 0.05\). Assume the standard deviation of LDL reduction is 15 mg/dL.

d). Power curve: To assess the impact of sample size on power, we can create a power function in terms of the sample size \(n\) and use the remaining information from part (b). Plot the power curve by selecting a sequence of sample sizes.

Note: For each of the questions above, write a short summary of what you observed, justify why your analysis is valid, and interpret the results.

LS0tDQp0aXRsZTogIkFzc2lnbm1lbnQgOTogSHlwb3RoZXNpcyBUZXN0aW5nIGFuZCBQb3dlciBhbmQgU2FtcGxlIHNpemUgRGV0ZXJtaW5hdGlvbiINCmF1dGhvcjogIllvdXIgTmFtZSAiDQpkYXRlOiAiIER1ZTogIg0Kb3V0cHV0Og0KICBodG1sX2RvY3VtZW50OiANCiAgICB0b2M6IHllcw0KICAgIHRvY19kZXB0aDogNA0KICAgIHRvY19mbG9hdDogeWVzDQogICAgbnVtYmVyX3NlY3Rpb25zOiBubw0KICAgIHRvY19jb2xsYXBzZWQ6IHllcw0KICAgIGNvZGVfZm9sZGluZzogaGlkZQ0KICAgIGNvZGVfZG93bmxvYWQ6IHllcw0KICAgIHNtb290aF9zY3JvbGw6IHllcw0KICAgIGhpZ2hsaWdodDogbW9ub2Nocm9tZQ0KICAgIHRoZW1lOiBzcGFjZWxhYg0KICB3b3JkX2RvY3VtZW50OiANCiAgICB0b2M6IHllcw0KICAgIHRvY19kZXB0aDogNA0KICAgIGZpZ19jYXB0aW9uOiB5ZXMNCiAgICBrZWVwX21kOiB5ZXMNCiAgcGRmX2RvY3VtZW50OiANCiAgICB0b2M6IHllcw0KICAgIHRvY19kZXB0aDogNA0KICAgIGZpZ19jYXB0aW9uOiB5ZXMNCiAgICBudW1iZXJfc2VjdGlvbnM6IHllcw0KICAgIGZpZ193aWR0aDogMw0KICAgIGZpZ19oZWlnaHQ6IDMNCmVkaXRvcl9vcHRpb25zOiANCiAgY2h1bmtfb3V0cHV0X3R5cGU6IGlubGluZQ0KLS0tDQoNCmBgYHtjc3MsIGVjaG8gPSBGQUxTRX0NCiNUT0M6OmJlZm9yZSB7DQogIGNvbnRlbnQ6ICJUYWJsZSBvZiBDb250ZW50cyI7DQogIGZvbnQtd2VpZ2h0OiBib2xkOw0KICBmb250LXNpemU6IDEuMmVtOw0KICBkaXNwbGF5OiBibG9jazsNCiAgY29sb3I6IG5hdnk7DQogIG1hcmdpbi1ib3R0b206IDEwcHg7DQp9DQoNCg0KZGl2I1RPQyBsaSB7ICAgICAvKiB0YWJsZSBvZiBjb250ZW50ICAqLw0KICAgIGxpc3Qtc3R5bGU6dXBwZXItcm9tYW47DQogICAgYmFja2dyb3VuZC1pbWFnZTpub25lOw0KICAgIGJhY2tncm91bmQtcmVwZWF0Om5vbmU7DQogICAgYmFja2dyb3VuZC1wb3NpdGlvbjowOw0KfQ0KDQpoMS50aXRsZSB7ICAgIC8qIGxldmVsIDEgaGVhZGVyIG9mIHRpdGxlICAqLw0KICBmb250LXNpemU6IDIycHg7DQogIGZvbnQtd2VpZ2h0OiBib2xkOw0KICBjb2xvcjogRGFya1JlZDsNCiAgdGV4dC1hbGlnbjogY2VudGVyOw0KICBmb250LWZhbWlseTogIkdpbGwgU2FucyIsIHNhbnMtc2VyaWY7DQp9DQoNCmg0LmF1dGhvciB7IC8qIEhlYWRlciA0IC0gYW5kIHRoZSBhdXRob3IgYW5kIGRhdGEgaGVhZGVycyB1c2UgdGhpcyB0b28gICovDQogIGZvbnQtc2l6ZTogMTVweDsNCiAgZm9udC13ZWlnaHQ6IGJvbGQ7DQogIGZvbnQtZmFtaWx5OiBzeXN0ZW0tdWk7DQogIGNvbG9yOiBuYXZ5Ow0KICB0ZXh0LWFsaWduOiBjZW50ZXI7DQp9DQoNCmg0LmRhdGUgeyAvKiBIZWFkZXIgNCAtIGFuZCB0aGUgYXV0aG9yIGFuZCBkYXRhIGhlYWRlcnMgdXNlIHRoaXMgdG9vICAqLw0KICBmb250LXNpemU6IDE4cHg7DQogIGZvbnQtd2VpZ2h0OiBib2xkOw0KICBmb250LWZhbWlseTogIkdpbGwgU2FucyIsIHNhbnMtc2VyaWY7DQogIGNvbG9yOiBEYXJrQmx1ZTsNCiAgdGV4dC1hbGlnbjogY2VudGVyOw0KfQ0KDQpoMSB7IC8qIEhlYWRlciAxIC0gYW5kIHRoZSBhdXRob3IgYW5kIGRhdGEgaGVhZGVycyB1c2UgdGhpcyB0b28gICovDQogICAgZm9udC1zaXplOiAyMHB4Ow0KICAgIGZvbnQtd2VpZ2h0OiBib2xkOw0KICAgIGZvbnQtZmFtaWx5OiAiVGltZXMgTmV3IFJvbWFuIiwgVGltZXMsIHNlcmlmOw0KICAgIGNvbG9yOiBkYXJrcmVkOw0KICAgIHRleHQtYWxpZ246IGNlbnRlcjsNCn0NCg0KaDIgeyAvKiBIZWFkZXIgMiAtIGFuZCB0aGUgYXV0aG9yIGFuZCBkYXRhIGhlYWRlcnMgdXNlIHRoaXMgdG9vICAqLw0KICAgIGZvbnQtc2l6ZTogMThweDsNCiAgICBmb250LXdlaWdodDogYm9sZDsNCiAgICBmb250LWZhbWlseTogIlRpbWVzIE5ldyBSb21hbiIsIFRpbWVzLCBzZXJpZjsNCiAgICBjb2xvcjogbmF2eTsNCiAgICB0ZXh0LWFsaWduOiBsZWZ0Ow0KfQ0KDQpoMyB7IC8qIEhlYWRlciAzIC0gYW5kIHRoZSBhdXRob3IgYW5kIGRhdGEgaGVhZGVycyB1c2UgdGhpcyB0b28gICovDQogICAgZm9udC1zaXplOiAxNnB4Ow0KICAgIGZvbnQtd2VpZ2h0OiBib2xkOw0KICAgIGZvbnQtZmFtaWx5OiAiVGltZXMgTmV3IFJvbWFuIiwgVGltZXMsIHNlcmlmOw0KICAgIGNvbG9yOiBuYXZ5Ow0KICAgIHRleHQtYWxpZ246IGxlZnQ7DQp9DQoNCmg0IHsgLyogSGVhZGVyIDQgLSBhbmQgdGhlIGF1dGhvciBhbmQgZGF0YSBoZWFkZXJzIHVzZSB0aGlzIHRvbyAgKi8NCiAgICBmb250LXNpemU6IDE0cHg7DQogIGZvbnQtd2VpZ2h0OiBib2xkOw0KICAgIGZvbnQtZmFtaWx5OiAiVGltZXMgTmV3IFJvbWFuIiwgVGltZXMsIHNlcmlmOw0KICAgIGNvbG9yOiBkYXJrcmVkOw0KICAgIHRleHQtYWxpZ246IGxlZnQ7DQp9DQoNCi8qIEFkZCBkb3RzIGFmdGVyIG51bWJlcmVkIGhlYWRlcnMgKi8NCi5oZWFkZXItc2VjdGlvbi1udW1iZXI6OmFmdGVyIHsNCiAgY29udGVudDogIi4iOw0KDQpib2R5IHtiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOw0KICAgICAgY29sb3I6ICMwMDAwMDA7DQogICAgICBmb250LWZhbWlseTogQXJpYWwsIHNhbnMtc2VyaWY7DQogICAgICBmb250LXNpemU6IDFyZW07DQogICAgICBsaW5lLWhlaWdodDogMS42Ow0KICAgICAgfQ0KDQouaGlnaGxpZ2h0bWUgeyBiYWNrZ3JvdW5kLWNvbG9yOnllbGxvdzsgfQ0KDQpwIHsgYmFja2dyb3VuZC1jb2xvcjp3aGl0ZTsgfQ0KDQp9DQpgYGANCg0KYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9DQojIGNvZGUgY2h1bmsgc3BlY2lmaWVzIHdoZXRoZXIgdGhlIFIgY29kZSwgd2FybmluZ3MsIGFuZCBvdXRwdXQgDQojIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIG91dHB1dCBmaWxlcy4NCmlmICghcmVxdWlyZSgia25pdHIiKSkgew0KICAgaW5zdGFsbC5wYWNrYWdlcygia25pdHIiKQ0KICAgbGlicmFyeShrbml0cikNCn0NCmlmICghcmVxdWlyZSgicGFuZGVyIikpIHsNCiAgIGluc3RhbGwucGFja2FnZXMoInBhbmRlciIpDQogICBsaWJyYXJ5KHBhbmRlcikNCn0NCmlmICghcmVxdWlyZSgiZ2dwbG90MiIpKSB7DQogIGluc3RhbGwucGFja2FnZXMoImdncGxvdDIiKQ0KICBsaWJyYXJ5KGdncGxvdDIpDQp9DQppZiAoIXJlcXVpcmUoInRpZHl2ZXJzZSIpKSB7DQogIGluc3RhbGwucGFja2FnZXMoInRpZHl2ZXJzZSIpDQogIGxpYnJhcnkodGlkeXZlcnNlKQ0KfQ0KDQppZiAoIXJlcXVpcmUoInBsb3RseSIpKSB7DQogIGluc3RhbGwucGFja2FnZXMoInBsb3RseSIpDQogIGxpYnJhcnkocGxvdGx5KQ0KfQ0KDQppZiAoIXJlcXVpcmUoIlZHQU0iKSkgew0KICBpbnN0YWxsLnBhY2thZ2VzKCJWR0FNIikNCiAgbGlicmFyeShWR0FNKQ0KfQ0KIyMjIyBWR0FNDQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUsICAgICAgICMgaW5jbHVkZSBjb2RlIGNodW5rIGluIHRoZSBvdXRwdXQgZmlsZQ0KICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmcgPSBGQUxTRSwgICAjIHNvbWV0aW1lcywgeW91IGNvZGUgbWF5IHByb2R1Y2Ugd2FybmluZyBtZXNzYWdlcywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB5b3UgY2FuIGNob29zZSB0byBpbmNsdWRlIHRoZSB3YXJuaW5nIG1lc3NhZ2VzIGluDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdGhlIG91dHB1dCBmaWxlLiANCiAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzID0gVFJVRSwgICAgIyB5b3UgY2FuIGFsc28gZGVjaWRlIHdoZXRoZXIgdG8gaW5jbHVkZSB0aGUgb3V0cHV0DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaW4gdGhlIG91dHB1dCBmaWxlLg0KICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBGQUxTRSwNCiAgICAgICAgICAgICAgICAgICAgICBjb21tZW50ID0gTkENCiAgICAgICAgICAgICAgICAgICAgICApICANCmBgYA0KIA0KIFwNCiANCiMjICoqQXNzaWdubWVudCBPYmplY3RpdmVzKiogDQoNCjxwPg0KKiBFbmhhbmNlIHVuZGVyc3RhbmRpbmcgdGhlIGxvZ2ljIGFuZCBwcm9jZWR1cmUgb2YgaHlwb3RoZXNpcyB0ZXN0aW5nIC4NCg0KKiBJbXBsZW1lbnQgdGhlIHByb2NlZHVyZXMgZm9yIHBvd2VyIGFuZCBzYW1wbGUgc2l6ZSBjYWxjdWxhdGlvbiBmb3IgYmFzaWMgaHlwb3RoZXNpcyB0ZXN0aW5nIHByb2NlZHVyZXMgdXNpbmcgbnVpbHQtaW4gZnVuY3Rpb24gYW5kIG1hbnVhbCBjYWxjdWxhdGlvbi4NCjwvcD4NCg0KDQojIyAqKlBvbGljaWVzIG9mIFVzaW5nIEFJIFRvb2xzKioNCg0KPHA+DQoqKlBvbGljeSBvbiBBSSBUb29sIFVzZSoqOiBQbGVhc2UgYWRoZXJlIHRvIHRoZSBBSSB0b29sIHBvbGljeSBzcGVjaWZpZWQgaW4gdGhlIGNvdXJzZSBzeWxsYWJ1cy4gVGhlIGRpcmVjdCBjb3B5aW5nIG9mIEFJLWdlbmVyYXRlZCBjb250ZW50IGlzIHN0cmljdGx5IHByb2hpYml0ZWQuIEFsbCBzdWJtaXR0ZWQgd29yayBtdXN0IHJlZmxlY3QgeW91ciBvd24gdW5kZXJzdGFuZGluZzsgd2hlcmUgZXh0ZXJuYWwgdG9vbHMgYXJlIGNvbnN1bHRlZCwgY29udGVudCBtdXN0IGJlIHRob3JvdWdobHkgcmVwaHJhc2VkIGFuZCBzeW50aGVzaXplZCBpbiB5b3VyIG93biB3b3Jkcy4NCjwvcD4NCg0KPHA+DQoqKkNvZGUgSW5jbHVzaW9uIFJlcXVpcmVtZW50Kio6IEFueSBjb2RlIGluY2x1ZGVkIGluIHlvdXIgZXNzYXkgbXVzdCBiZSBwcm9wZXJseSBjb21tZW50ZWQgdG8gZXhwbGFpbiB0aGUgcHVycG9zZSBhbmQvb3IgZXhwZWN0ZWQgb3V0cHV0IG9mIGtleSBjb2RlIGxpbmVzLiBTdWJtaXR0aW5nIEFJLWdlbmVyYXRlZCBjb2RlIHdpdGhvdXQgbWVhbmluZ2Z1bCwgc3R1ZGVudC1hZGRlZCBjb21tZW50cyB3aWxsIG5vdCBiZSBhY2NlcHRlZC4NCjwvcD4NCg0KDQojIyAqKlNpbXBsZSB2ZXJzdXMgQ29tcG9zaXRlIEh5cG90aGVzaXMqDQoNCioqU2ltcGxlIEh5cG90aGVzaXMqKg0KDQoqICoqU2ltcGxlIEh5cG90aGVzaXMgVGVzdCoqIGlzIGEgaHlwb3RoZXNpcyB0aGF0IGNvbXBsZXRlbHkgc3BlY2lmaWVzIHRoZSBwb3B1bGF0aW9uIGRpc3RyaWJ1dGlvbi4gTWF0aGVtYXRpY2FsbHksIHNpbXBsZSBoeXBvdGhlc2lzIGZpeGVzIGFsbCBwYXJhbWV0ZXJzIHRvIHNwZWNpZmljIHZhbHVlcy4gRm9yIGV4YW1wbGUsIFRoZSBzaW1wbGUgaHlwb3RoZXNlcyBhcmU6ICRIXzA6IFxtdSA9IDUkIChpZiAkXGFscGhhJCBpcyBrbm93biksICRIXzA6IFxtdSA9IDEwMCwgXHNpZ21hXjIgPSAyNSQsIGFuZCAkSF8xOiBwID0gMC43JCBmb3IgYSBCZXJub3VsbGkgZGlzdHJpYnV0aW9uLg0KDQoqICoqRXhhbXBsZSBTY2VuYXJpbyoqICBUZXN0IGlmIGEgY29pbiBpcyBmYWlyOg0KDQpcYmVnaW57YWxpZ25lZH0NCkhfMCY6IHAgPSAwLjUgXHF1YWQgXHRleHR7KGNvbXBsZXRlbHkgc3BlY2lmaWVkKX0gXFwNCkhfMSY6IHAgPSAwLjYgXHF1YWQgXHRleHR7KGFsc28gY29tcGxldGVseSBzcGVjaWZpZWQpfQ0KXGVuZHthbGlnbmVkfQ0KDQpCb3RoIGFyZSAqKnNpbXBsZSoqIGh5cG90aGVzZXMuDQoNCioqQ29tcG9zaXRlIEh5cG90aGVzaXMqKg0KDQoqICoqQ29tcG9zaXRlIEh5cG90aGVzaXMqKiBpcyBhIGh5cG90aGVzaXMgdGhhdCBkb2VzIG5vdCBjb21wbGV0ZWx5IHNwZWNpZnkgdGhlIGRpc3RyaWJ1dGlvbi4gTWF0aGVtYXRpY2FsbHksIGl0IGFsbG93cyBhIHJhbmdlIG9mIHZhbHVlcyBmb3IgYXQgbGVhc3Qgb25lIHBhcmFtZXRlci4gRm9yIGV4YW1wbGUsIGluIG9uZS1zaWRlZDogJFxtdSA+NSQ7IGluIHR3by1zaWRlZDogJFxtdSBcbGUgNSQuDQoNCiogKipFeGFtcGxlIFNjZW5hcmlvcyoqIA0KDQoNClxiZWdpbnthbGlnbmVkfQ0KJkhfMDogXG11ID0gNSAmJiBcdGV4dHsoc2ltcGxlKX0gXFwNCiZIXzE6IFxtdSA+IDUgJiYgXHRleHR7KGNvbXBvc2l0ZSl9DQpcZW5ke2FsaWduZWR9DQoNCg0KDQpcYmVnaW57YWxpZ25lZH0NCiZIXzA6IFxtdSBcbGVxIDUgJiYgXHRleHR7KGNvbXBvc2l0ZSl9IFxcDQomSF8xOiBcbXUgPiA1ICYmIFx0ZXh0eyhjb21wb3NpdGUpfQ0KXGVuZHthbGlnbmVkfQ0KDQoNClxiZWdpbnthbGlnbmVkfQ0KJkhfMDogXHRleHR7ZGF0YSBmb2xsb3dzIH0gTihcbXUsIDEpLCBcbXUgPSAwICYmIFx0ZXh0eyhzaW1wbGUpfSBcXA0KJkhfMTogXHRleHR7ZGF0YSBmb2xsb3dzIFBvaXNzb259KFxsYW1iZGEpICYmIFx0ZXh0eyhjb21wb3NpdGUg4oCTIGRpZmZlcmVudCBmYW1pbHkpfQ0KXGVuZHthbGlnbmVkfQ0KDQoNCg0KPHA+PGZvbnQgY29sb3IgPSAiZGFya3JlZCI+KipUaGlzIGFzc2lnbm1lbnQgZm9jdXNlcyBvbiBwZXJmb3JtaW5nIHBlcmZvcm1pbmcgYSB0ZXN0IG9mIG1lYW4gKCRcbXUkKSBhIG5vcm1hbCBwb3B1bGF0aW9uIGFuZCBjYWxjdWxhdGluZyB0aGUgcG93ZXIgYW5kIHNhbXBsZSBzaXplIGJhc2VkIG9uIHZhcmlvdXMgYXNzdW1wdGlvbnMqKjwvZm9udD48L3A+DQoNCg0KXA0KDQojIyAqKlF1ZXN0aW9uOiBOZXcgQ2hvbGVzdGVyb2wgTWVkaWNhdGlvbioqDQoNCjxwPg0KQSBwaGFybWFjZXV0aWNhbCBjb21wYW55IGRldmVsb3BzICoqIkNob2xlc3RGaXgiKiogdG8gcmVkdWNlIExvdy1EZW5zaXR5IExpcG9wcm90ZWluIChMREwsICpmYXQgY2FycmllciB0aGF0J3MgbG93IGluIGRlbnNpdHkqKSBjaG9sZXN0ZXJvbC4gVGhlICoqY3VycmVudCBzdGFuZGFyZCBkcnVnKiogbG93ZXJzIExETCBieSBhbiBhdmVyYWdlIG9mIDI1IG1nL2RMIHdpdGggYSBzdGFuZGFyZCBkZXZpYXRpb24gb2YgMTUgbWcvZEwuIEEgY2xpbmljYWwgdHJpYWwgd2l0aCA1IHBhcnRpY2lwYW50cyB3ZXJlIHJlY3J1aXRlZCBpbiB0aGUgc3R1ZHkgZm9yIHRocmVlIG1vbnRocy4gQXQgdGhlIGVuZCBvZiB0aGUgc3R1ZHksIHRoZSBtZWFuIHJlZHVjdGlvbiBpcyAyOSBtZy9kTC4gQXNzdW1lIHRoYXQgdGhlIHZhcmlhbmNlIG9mIExETCByZWR1Y3Rpb24gb2YgbmV3IGRydWcgaXMgdGhlIHNhbWUgYXMgdGhhdCBvZiB0aGUgc3RhbmRhcmQgZHJ1Z3MuDQoNCkJhc2VkIG9uIHRoZSByZXN1bHRzIGluIHRoZSBjbGluaWNhbCB0cmlhbCwgcmVzZWFyY2hlcnMgaW4gdGhlIGNvbXBhbnkgYmVsaWV2ZSAqKkNob2xlc3RGaXgqKiBpcyBtb3JlIGVmZmVjdGl2ZS4NCjwvcD4NCg0KDQo8cD4NCmEpLiBQZXJmb3JtIGEgZm9ybWFsIGh5cG90aGVzaXMgdGVzdCBvZiB0aGUgcmVzZWFyY2hlcnPigJkgYmVsaWVmIHJlZ2FyZGluZyBMREwgcmVkdWN0aW9uLCB1c2luZyBhIHNpZ25pZmljYW5jZSBsZXZlbCBvZiAkXGFscGhhID0gMC4wNSQuDQoNCmIpLiBHaXZlbiAkbiA9IDUwLCBcc2lnbWEgPSAxNSwgXGFscGhhID0gMC4wNSQsIGFuZCBhbiBlZmZlY3Qgc2l6ZSB3ZSB3aXNoIHRvIGRldGVjdCAkXGRlbHRhID0gNCQgbWcvZEwgKGNvcnJlc3BvbmRpbmcgdG8gYSByZWR1Y3Rpb24gZnJvbSAyOSBtZy9kTCB0byAyNSBtZy9kTCkuICBXaGF0IGlzIHRoZSBwcm9iYWJpbGl0eSB0aGF0IHdlJ2QgZGV0ZWN0IGEgdHJ1ZSBpbXByb3ZlbWVudD8NCg0KDQpjKS4gRGV0ZXJtaW5lIHRoZSBtaW5pbXVtIHNhbXBsZSBzaXplIHJlcXVpcmVkIHRvIGRldGVjdCBhbiBlZmZlY3Qgc2l6ZSBvZiA0IG1nL2RMIHdpdGggYSBwb3dlciBvZiAkMSAtIFxiZXRhID0gMC44JCAgYW5kIGEgc2lnbmlmaWNhbmNlIGxldmVsIG9mICRcYWxwaGEgPSAwLjA1JC4gQXNzdW1lIHRoZSBzdGFuZGFyZCBkZXZpYXRpb24gb2YgTERMIHJlZHVjdGlvbiBpcyAxNSBtZy9kTC4NCg0KZCkuICoqUG93ZXIgY3VydmUqKjogVG8gYXNzZXNzIHRoZSBpbXBhY3Qgb2Ygc2FtcGxlIHNpemUgb24gcG93ZXIsIHdlIGNhbiBjcmVhdGUgYSBwb3dlciBmdW5jdGlvbiBpbiB0ZXJtcyBvZiB0aGUgc2FtcGxlIHNpemUgJG4kIGFuZCB1c2UgdGhlIHJlbWFpbmluZyBpbmZvcm1hdGlvbiBmcm9tIHBhcnQgKGIpLiBQbG90IHRoZSBwb3dlciBjdXJ2ZSBieSBzZWxlY3RpbmcgYSBzZXF1ZW5jZSBvZiBzYW1wbGUgc2l6ZXMuDQo8L3A+DQoNCg0KPGZvbnQgY29sb3IgPSAicmVkIj4qKk5vdGUqKjogRm9yIGVhY2ggb2YgdGhlIHF1ZXN0aW9ucyBhYm92ZSwgd3JpdGUgYSBzaG9ydCBzdW1tYXJ5IG9mIHdoYXQgeW91IG9ic2VydmVkLCBqdXN0aWZ5IHdoeSB5b3VyIGFuYWx5c2lzIGlzIHZhbGlkLCBhbmQgaW50ZXJwcmV0IHRoZSByZXN1bHRzLjwvZm9udD4NCg0K