text:
_Auto generated documentation for WebKit inspector

Network domain allows tracking network activities of the page. It exposes information about http, file, data and other requests and responses, their headers, bodies, timing, etc.

* Commands
 * [enable](#networkenablecallback)
 * [disable](#networkdisablecallback)
 * [setExtraHTTPHeaders](#networksetextrahttpheadersheaders-callback)
 * [getResponseBody](#networkgetresponsebodyrequestid-callback)
 * [canClearBrowserCache](#networkcanclearbrowsercachecallback)
 * [clearBrowserCache](#networkclearbrowsercachecallback)
 * [canClearBrowserCookies](#networkcanclearbrowsercookiescallback)
 * [clearBrowserCookies](#networkclearbrowsercookiescallback)
 * [setCacheDisabled](#networksetcachedisabledcachedisabled-callback)
 * [loadResource](#networkloadresourceframeid-url-callback)
* Events
 * [requestWillBeSent](#event-requestwillbesent)
 * [requestServedFromCache](#event-requestservedfromcache)
 * [responseReceived](#event-responsereceived)
 * [dataReceived](#event-datareceived)
 * [loadingFinished](#event-loadingfinished)
 * [loadingFailed](#event-loadingfailed)
 * [requestServedFromMemoryCache](#event-requestservedfrommemorycache)
 * [webSocketWillSendHandshakeRequest](#event-websocketwillsendhandshakerequest)
 * [webSocketHandshakeResponseReceived](#event-websockethandshakeresponsereceived)
 * [webSocketCreated](#event-websocketcreated)
 * [webSocketClosed](#event-websocketclosed)
 * [webSocketFrameReceived](#event-websocketframereceived)
 * [webSocketFrameError](#event-websocketframeerror)
 * [webSocketFrameSent](#event-websocketframesent)
* Types
 * [LoaderId](#class-loaderid)
 * [FrameId](#class-frameid)
 * [RequestId](#class-requestid)
 * [Timestamp](#class-timestamp)
 * [Headers](#class-headers)
 * [ResourceTiming](#class-resourcetiming)
 * [Request](#class-request)
 * [Response](#class-response)
 * [WebSocketRequest](#class-websocketrequest)
 * [WebSocketResponse](#class-websocketresponse)
 * [WebSocketFrame](#class-websocketframe)
 * [CachedResource](#class-cachedresource)
 * [Initiator](#class-initiator)

## Commands

### Network.enable(callback)

Enables network tracking, network events will now be delivered to the client.

### Parameters

_**callback ( function )**_

### Results

_**error ( error )**_

### Network.disable(callback)

Disables network tracking, prevents network events from being sent to the client.

### Parameters

_**callback ( function )**_

### Results

_**error ( error )**_

### Network.setExtraHTTPHeaders([Headers](#class-headers), callback)

Specifies whether to always send extra HTTP headers with the requests from this page.

### Parameters

_**headers ( [Headers](#class-headers) )**_

> Map with extra HTTP headers.

_**callback ( function )**_

### Results

_**error ( error )**_

### Network.getResponseBody([RequestId](#class-requestid), callback)

Returns content served for the given request.

### Parameters

_**requestId ( [RequestId](#class-requestid) )**_

> Identifier of the network request to get content for.

_**callback ( function )**_

### Results

_**error ( error )**_

_**body ( string )**_

> Response body.

_**base64Encoded ( boolean )**_

> True, if content was sent as base64.

### Network.canClearBrowserCache(callback)

Tells whether clearing browser cache is supported.

### Parameters

_**callback ( function )**_

### Results

_**error ( error )**_

_**result ( boolean )**_

> True if browser cache can be cleared.

### Network.clearBrowserCache(callback)

Clears browser cache.

### Parameters

_**callback ( function )**_

### Results

_**error ( error )**_

### Network.canClearBrowserCookies(callback)

Tells whether clearing browser cookies is supported.

### Parameters

_**callback ( function )**_

### Results

_**error ( error )**_

_**result ( boolean )**_

> True if browser cookies can be cleared.

### Network.clearBrowserCookies(callback)

Clears browser cookies.

### Parameters

_**callback ( function )**_

### Results

_**error ( error )**_

### Network.setCacheDisabled(cacheDisabled, callback)

Toggles ignoring cache for each request. If `true`, cache will not be used.

### Parameters

_**cacheDisabled ( boolean )**_

> Cache disabled state.

_**callback ( function )**_

### Results

_**error ( error )**_

### Network.loadResource([FrameId](#class-frameid), url, callback)

Loads a resource in the context of a frame on the inspected page without cross origin checks.

### Parameters

_**frameId ( [FrameId](#class-frameid) )**_

> Frame to load the resource from.

_**url ( string )**_

> URL of the resource to load.

_**callback ( function )**_

### Results

_**error ( error )**_

_**content ( string )**_

> Resource content.

_**mimeType ( string )**_

> Resource mimeType.

_**status ( number )**_

> HTTP response status code.

## Events

### Event: requestWillBeSent

Fired when page is about to send HTTP request.

### Results

_**requestId ( [RequestId](#class-requestid) )**_

> Request identifier.

_**frameId ( [FrameId](#class-frameid) )**_

> Frame identifier.

_**loaderId ( [LoaderId](#class-loaderid) )**_

> Loader identifier.

_**documentURL ( string )**_

> URL of the document this request is loaded for.

_**request ( [Request](#class-request) )**_

> Request data.

_**timestamp ( [Timestamp](#class-timestamp) )**_

> Timestamp.

_**initiator ( [Initiator](#class-initiator) )**_

> Request initiator.

_**redirectResponse ( optional [Response](#class-response) )**_

> Redirect response data.

_**type ( optional [Page.ResourceType](Page.md#class-resourcetype) )**_

> Resource type.

### Event: requestServedFromCache

Fired if request ended up loading from cache.

### Results

_**requestId ( [RequestId](#class-requestid) )**_

> Request identifier.

### Event: responseReceived

Fired when HTTP response is available.

### Results

_**requestId ( [RequestId](#class-requestid) )**_

> Request identifier.

_**frameId ( [FrameId](#class-frameid) )**_

> Frame identifier.

_**loaderId ( [LoaderId](#class-loaderid) )**_

> Loader identifier.

_**timestamp ( [Timestamp](#class-timestamp) )**_

> Timestamp.

_**type ( [Page.ResourceType](Page.md#class-resourcetype) )**_

> Resource type.

_**response ( [Response](#class-response) )**_

> Response data.

### Event: dataReceived

Fired when data chunk was received over the network.

### Results

_**requestId ( [RequestId](#class-requestid) )**_

> Request identifier.

_**timestamp ( [Timestamp](#class-timestamp) )**_

> Timestamp.

_**dataLength ( integer )**_

> Data chunk length.

_**encodedDataLength ( integer )**_

> Actual bytes received (might be less than dataLength for compressed encodings).

### Event: loadingFinished

Fired when HTTP request has finished loading.

### Results

_**requestId ( [RequestId](#class-requestid) )**_

> Request identifier.

_**timestamp ( [Timestamp](#class-timestamp) )**_

> Timestamp.

_**sourceMapURL ( optional string )**_

> URL of source map associated with this resource (if any).

### Event: loadingFailed

Fired when HTTP request has failed to load.

### Results

_**requestId ( [RequestId](#class-requestid) )**_

> Request identifier.

_**timestamp ( [Timestamp](#class-timestamp) )**_

> Timestamp.

_**errorText ( string )**_

> User friendly error message.

_**canceled ( optional boolean )**_

> True if loading was canceled.

### Event: requestServedFromMemoryCache

Fired when HTTP request has been served from memory cache.

### Results

_**requestId ( [RequestId](#class-requestid) )**_

> Request identifier.

_**frameId ( [FrameId](#class-frameid) )**_

> Frame identifier.

_**loaderId ( [LoaderId](#class-loaderid) )**_

> Loader identifier.

_**documentURL ( string )**_

> URL of the document this request is loaded for.

_**timestamp ( [Timestamp](#class-timestamp) )**_

> Timestamp.

_**initiator ( [Initiator](#class-initiator) )**_

> Request initiator.

_**resource ( [CachedResource](#class-cachedresource) )**_

> Cached resource data.

### Event: webSocketWillSendHandshakeRequest

Fired when WebSocket is about to initiate handshake.

### Results

_**requestId ( [RequestId](#class-requestid) )**_

> Request identifier.

_**timestamp ( [Timestamp](#class-timestamp) )**_

> Timestamp.

_**request ( [WebSocketRequest](#class-websocketrequest) )**_

> WebSocket request data.

### Event: webSocketHandshakeResponseReceived

Fired when WebSocket handshake response becomes available.

### Results

_**requestId ( [RequestId](#class-requestid) )**_

> Request identifier.

_**timestamp ( [Timestamp](#class-timestamp) )**_

> Timestamp.

_**response ( [WebSocketResponse](#class-websocketresponse) )**_

> WebSocket response data.

### Event: webSocketCreated

Fired upon WebSocket creation.

### Results

_**requestId ( [RequestId](#class-requestid) )**_

> Request identifier.

_**url ( string )**_

> WebSocket request URL.

### Event: webSocketClosed

Fired when WebSocket is closed.

### Results

_**requestId ( [RequestId](#class-requestid) )**_

> Request identifier.

_**timestamp ( [Timestamp](#class-timestamp) )**_

> Timestamp.

### Event: webSocketFrameReceived

Fired when WebSocket frame is received.

### Results

_**requestId ( [RequestId](#class-requestid) )**_

> Request identifier.

_**timestamp ( [Timestamp](#class-timestamp) )**_

> Timestamp.

_**response ( [WebSocketFrame](#class-websocketframe) )**_

> WebSocket response data.

### Event: webSocketFrameError

Fired when WebSocket frame error occurs.

### Results

_**requestId ( [RequestId](#class-requestid) )**_

> Request identifier.

_**timestamp ( [Timestamp](#class-timestamp) )**_

> Timestamp.

_**errorMessage ( string )**_

> WebSocket frame error message.

### Event: webSocketFrameSent

Fired when WebSocket frame is sent.

### Results

_**requestId ( [RequestId](#class-requestid) )**_

> Request identifier.

_**timestamp ( [Timestamp](#class-timestamp) )**_

> Timestamp.

_**response ( [WebSocketFrame](#class-websocketframe) )**_

> WebSocket response data.

## Types

### Class: LoaderId

_Type: string_

Unique loader identifier.

### Class: FrameId

_Type: string_

Unique frame identifier.

### Class: RequestId

_Type: string_

Unique request identifier.

### Class: Timestamp

_Type: number_

Number of seconds since epoch.

### Class: Headers

_Type: object_

Request / response headers as keys / values of JSON object.

### Class: ResourceTiming

_Type: object_

Timing information for the request.

### Properties

_**navigationStart ( number )**_

> Timing's navigationStart is a baseline in seconds, while the other numbers are ticks in milliseconds relatively to this navigationStart.

_**domainLookupStart ( number )**_

> Started DNS address resolve.

_**domainLookupEnd ( number )**_

> Finished DNS address resolve.

_**connectStart ( number )**_

> Started connecting to the remote host.

_**connectEnd ( number )**_

> Connected to the remote host.

_**secureConnectionStart ( number )**_

> Started SSL handshake.

_**requestStart ( number )**_

> Started sending request.

_**responseStart ( number )**_

> Started receiving response headers.

### Class: Request

_Type: object_

HTTP request data.

### Properties

_**url ( string )**_

> Request URL.

_**method ( string )**_

> HTTP request method.

_**headers ( [Headers](#class-headers) )**_

> HTTP request headers.

_**postData ( optional string )**_

> HTTP POST request data.

### Class: Response

_Type: object_

HTTP response data.

### Properties

_**url ( string )**_

> Response URL. This URL can be different from CachedResource.url in case of redirect.

_**status ( number )**_

> HTTP response status code.

_**statusText ( string )**_

> HTTP response status text.

_**headers ( [Headers](#class-headers) )**_

> HTTP response headers.

_**headersText ( optional string )**_

> HTTP response headers text.

_**mimeType ( string )**_

> Resource mimeType as determined by the browser.

_**requestHeaders ( optional [Headers](#class-headers) )**_

> Refined HTTP request headers that were actually transmitted over the network.

_**requestHeadersText ( optional string )**_

> HTTP request headers text.

_**fromDiskCache ( optional boolean )**_

> Specifies that the request was served from the disk cache.

_**timing ( optional [ResourceTiming](#class-resourcetiming) )**_

> Timing information for the given request.

### Class: WebSocketRequest

_Type: object_

WebSocket request data.

### Properties

_**headers ( [Headers](#class-headers) )**_

> HTTP response headers.

### Class: WebSocketResponse

_Type: object_

WebSocket response data.

### Properties

_**status ( number )**_

> HTTP response status code.

_**statusText ( string )**_

> HTTP response status text.

_**headers ( [Headers](#class-headers) )**_

> HTTP response headers.

### Class: WebSocketFrame

_Type: object_

WebSocket frame data.

### Properties

_**opcode ( number )**_

> WebSocket frame opcode.

_**mask ( boolean )**_

> WebSocket frame mask.

_**payloadData ( string )**_

> WebSocket frame payload data.

### Class: CachedResource

_Type: object_

Information about the cached resource.

### Properties

_**url ( string )**_

> Resource URL. This is the url of the original network request.

_**type ( [Page.ResourceType](Page.md#class-resourcetype) )**_

> Type of this resource.

_**response ( optional [Response](#class-response) )**_

> Cached response data.

_**bodySize ( number )**_

> Cached response body size.

_**sourceMapURL ( optional string )**_

> URL of source map associated with this resource (if any).

### Class: Initiator

_Type: object_

Information about the request initiator.

### Properties

_**type ( string enumerated ["parser","script","other"] )**_

> Type of this initiator.

_**stackTrace ( optional [Console.StackTrace](Console.md#class-stacktrace) )**_

> Initiator JavaScript stack trace, set for Script only.

_**url ( optional string )**_

> Initiator URL, set for Parser type only.

_**lineNumber ( optional number )**_

> Initiator line number, set for Parser type only.

redpajama_set_name: RedPajamaGithub


Come out ahead with the SnowSentry™. Detect and mitigate rooftop risks early and prevent loss. The SnowSentry™ monitors snow load conditions 24/7 and delivers dashboards to all stake holders including building owners, facility managers, key staff and service contractors. Information is wirelessly transmitted to the intuitive web app which sends alert messages directly to their e-mail and mobile devices.
SnowSentry™ is a best practice method for early rooftop risk detection and loss mitigation. The system utilizes force sensing technology, zone-based load warnings, wireless solar powered communications and advanced mapping software to determine snow loads on building rooftops and communicate the information to protect people and property, prevent unnecessary business interruptions and reduce annual snow removal expenses.
To learn more about the SnowSentry™, see its uses and applications or purchase a SnowSentry™ System for your business or organization, please contact us.
Use your own staff or roof service group to install and monitor the SnowSentry™ network - it's easy.
Schedule targeted snow removal from your rooftops when it becomes truly necessary, rather than as an estimated precaution.
Long-life, rechargeable units power the SnowSentryTM at night and over 70 cloudy days in a row.
No extra cables to manage and secure data transfer using point to multi-point networking.
Wireless measurement stations are placed across the open roof areas and especially where snow tends to build up near parapets, walls, roof steps and equipment causing overload conditions.
Using built-in GPS technology stations geo-locate themselves in user-defined virtual zones configured with a specific alert threshold based upon a roof's structural capacity; creating an accurate and dependable monitor.
Users are notified by their mobile device or the web app when conditions reach warning and unsafe levels.
Using the SnowSentry™ Web App the administrator or manager identifies the building(s) to be monitored and adds users to be notified when changing rooftop conditions trigger an alert. Since buildings may be comprised of one or more additions built to different load standards zones are identified by using the web app's Polygon Tool and assigned a Safe Limit load value based upon the capacity of the roof structure.


BACKGROUND: Growth impairment is a known complication of sickle cell disease. Effects of hydroxyurea (HU) on growth in very young children are not known.
METHODS: Height, weight, BMI, and head circumference (HC) were compared with World Health Organization (WHO) standards in BABY HUG, a multicenter, randomized, double-blinded, placebo-controlled 2-year clinical trial of HU in 193 children 9 to 18 months of age. Anthropometric data were closely monitored and converted to z scores by using WHO standardized algorithms for descriptive analyses. The treatment and placebo groups were compared longitudinally by using a mixed model analysis.
RESULTS: At entry, the z scores of BABY HUG children were higher than WHO norms. After 2 years of HU or placebo treatment, there were no significant differences between the groups, except for the mean HC z scores at study exit (HU: +0.8 versus placebo: +1.0, P = .05). Baseline z scores were the best predictors of z scores at study exit. The absolute neutrophil count, absolute reticulocyte count, and total white blood cell count had significant negative correlations with growth measures.
CONCLUSIONS: Both groups had normal or near normal anthropometric measures during the study. The HC z scores at study entry and exit were slightly greater than WHO norms. Higher baseline white blood cell count, absolute reticulocyte count, and absolute neutrophil count were associated with poorer growth. The significance of the slightly lower HC in the treatment group at study exit is not clear. Trends toward normalization of weight and height and effects on HC will be monitored in ongoing BABY HUG follow-up studies.
BABY HUG was a clinical trial of treatment with HU in young children with SCD. Careful serial growth measurements were included as a safety outcome because of concerns regarding potential adverse effects of HU on growth in very young children. These concerns stemmed from unpublished but widely disseminated animal data suggesting that HU may have a deleterious effect on the growth and development of the brain.
In 2003, the BABY HUG study, a double-blind, multicenter, placebo-controlled clinical trial of HU, was initiated, and 193 eligible infants 9 to 18 months of age with HbSS or HbSβ0 thalassemia (enrolled from 2003 to 2007) were randomly assigned to 24 months of treatment with HU or placebo. The primary end points of the study were preservation of spleen and renal function. Evaluation of growth parameters was among the secondary end points. The methodology, challenges of designing this trial, and main results of the study have been reported in detail.21,22 This article summarizes the analyses of the anthropometric data collected from the children enrolled in BABY HUG.
All measurements were obtained in duplicate by trained study coordinators using standardized techniques. Measurements were obtained at screening, treatment initiation, 2 weeks, 4 weeks, 6 weeks, and 8 weeks, and then every 4 weeks thereafter. If predefined toxicities occurred, study visits were conducted every 2 weeks.
Weight, without clothing, was measured in study participants up to 12 months of age by using a pan-type balance scale, with a beam balance or electronic recording. Subjects older than 12 months who could stand were weighed on a leveled platform scale, without clothing or in light clothing. Two measurements were made, with a third being obtained if the first 2 differed by more than 100 g.
Recumbent length was obtained in children up to 18 months of age, with standing height measured after 18 months. Recumbent length was measured by using a measuring board with a fixed headboard and moveable footboard, with centimeter markings. Two measurements were made, with a third being obtained, if the first 2 differed by more than 0.5 cm.
A plastic measuring tape that was not subject to stretching was used in the study to measure head circumference (HC). Two measurements were made, with a third being obtained if the first 2 differed by more than 0.4 cm. Every effort was made to circumvent the problems associated with braiding or other hair styles.
We chose WHO normative data, based on recommendations by the Centers for Disease Control and Prevention and the American Academy of Pediatrics for children younger than 2 years of age.23 The WHO data are intended to reflect optimal growth and are based on a high quality study from selected ethnically diverse communities worldwide. Growth charts such as those based on NHANES are actually references and not standards, and describe how certain children grew in a particular place and time, whereas WHO normative data are intended to provide universal standards.
Z scores for height, weight, BMI, and HC were calculated by using SAS (SAS Institute, Inc, Cary, NC) macros downloaded from the WHO Web site.24 Each Z score calculation was controlled for gender and age (in days) when making the calculation from the WHO standard population. BABY HUG growth data were averaged within each 3-month interval after treatment assignment (eg, 0–3 months, 3–6 months, etc), with the baseline measurement being used as the time 0 measurement.
Baseline z scores were compared with the WHO norms by testing whether the mean z score was equal to zero, versus the alternative that it was not equal to zero, using student's t test. All longitudinal data were analyzed by using Proc MIXED, with an autoregressive covariance structure used to account for the covariance between each serial measurement. Covariables included in each analysis were the baseline measurements of the following: the outcome being reviewed, time in months since enrollment, hemoglobin (Hb) level, absolute reticulocyte count (ARC), total white blood cell (WBC) count, and absolute neutrophil count (ANC). Backward elimination (using 0.05 as the significance level) for the Hb, ARC, WBC count, and ANC covariables was used to arrive at the final model for each outcome measure.
Simple Pearson correlations between each outcome measure (at each time point) and the corresponding baseline measurement of Hb, ARC, WBC count, and ANC were made by using Proc CORR. All analyses used SAS version 9.2.
All 193 randomized children were included in the analysis. See Table 1 for demographic information. Unadjusted mean Z scores and SEs for height at baseline and for each 3-month interval are presented by randomized study assignment in Fig 1. There was no significant difference in growth trajectories between the 2 treatment groups (P = .7). The baseline height z scores were slightly, but significantly greater than the WHO norm and were positively correlated with all subsequently measured height z scores. The baseline ANC in both groups was negatively correlated with height over the course of the study (P = .004).
Longitudinal comparison of WHO standardized height z scores between children treated with HU and placebo. Z scores for height, weight, BMI, and HC were calculated by using SAS macros downloaded from the WHO Web site and controlled for gender and age. Data were averaged within each 3-month interval after treatment assignments with the baseline measurement used as the time 0. Student's t test was used for comparison with the WHO normal population. Proc MIXED was used to analyze longitudinal data. BABY HUG children were larger than the WHO population on all parameters at the beginning of the study, and there was no difference between the treatment groups except for the BMI that was larger at each observation point in the HU group (trend not significant). There were no significant differences between the treatment groups for height, weight, and BMI at exit. The HC in the treatment group was slightly smaller but still within normal limit at the end of the study. Baseline z scores were the best predictors of z scores for all growth parameters.
Baseline weight z scores in both treatment groups were also higher than the WHO norms and were positively correlated with all subsequent measurements. Unadjusted mean z scores and SEs for weight at baseline and for each 3-month interval are presented by study group in Fig 2. There were no significant differences in the HU and placebo trajectories over time (P = .43). Higher WBC count and ARC were negatively correlated with weight z scores.
Longitudinal comparison of WHO standardized weight z scores between children treated with HU and placebo. Z scores for height, weight, BMI, and HC were calculated by using SAS macros downloaded from the WHO Web site and controlled for gender and age. Data were averaged within each 3-month interval after treatment assignments with the baseline measurement used as the time 0. Student's t test was used for comparison with the WHO normal population. Proc MIXED was used to analyze longitudinal data. BABY HUG children were larger than the WHO population on all parameters at the beginning of the study, and there was no difference between the treatment groups except for the BMI that was larger at each observation point in the HU group (trend not significant). There were no significant differences between the treatment groups for height, weight, and BMI at exit. The HC in the treatment group was slightly smaller but still within normal limit at the end of the study. Baseline z scores were the best predictors of z scores for all growth parameters.
The mean baseline BMI z score was higher in the HU treatment group compared with the placebo group, and both measurements were greater than the WHO norm (HU: +0.220 and placebo: +0.086). Unadjusted mean z scores and SEs for BMI at baseline and for each 3-month interval are presented by study group in Fig 3. In both groups, the baseline BMI was positively and the WBC count and ARC were negatively correlated to the BMI z scores during and at the end of treatment. A general quadratic trend (with a single concavity as compared with linear) was apparent for the BMI z scores. Once adjusted for the difference in the baseline measurements, there was no statistically significant difference in the 2 trajectories (P = .7).
Longitudinal comparison of WHO standardized BMI z scores between children treated with HU and placebo. Z scores for height, weight, BMI, and HC were calculated by using SAS macros downloaded from the WHO Web site and controlled for gender and age. Data were averaged within each 3-month interval after treatment assignments with the baseline measurement used as the time 0. Student's t test was used for comparison with the WHO normal population. Proc MIXED was used to analyze longitudinal data. BABY HUG children were larger than the WHO population on all parameters at the beginning of the study, and there was no difference between the treatment groups except for the BMI that was larger at each observation point in the HU group (trend not significant). There were no significant differences between the treatment groups for height, weight, and BMI at exit. The HC in the treatment group was slightly smaller but still within normal limit at the end of the study. Baseline z scores were the best predictors of z scores for all growth parameters.
Unadjusted mean z scores and SEs for HC at baseline and for each 3-month interval are presented by study group in Fig 4. The mean HC z scores were higher than the WHO standards in both groups at baseline (HU: 1.031 and placebo: 0.989). The baseline HC z score was the most significant predictor of HC during and at the end of treatment. The trajectory of HC z scores was lower in the HU treatment group compared with placebo (HU: 0.852 versus placebo: 0.968, P = .05) after adjusting for the baseline difference in HC z scores between the HU and placebo groups. The ANC was negatively correlated with HC z scores during and after treatment.
Longitudinal comparison of WHO standardized HC z scores between children treated with HU and placebo. Z scores for height, weight, BMI, and HC were calculated by using SAS macros downloaded from the WHO Web site and controlled for gender and age. Data were averaged within each 3-month interval after treatment assignments with the baseline measurement used as the time 0. Student's t test was used for comparison with the WHO normal population. Proc MIXED was used to analyze longitudinal data. BABY HUG children were larger than the WHO population on all parameters at the beginning of the study, and there was no difference between the treatment groups except for the BMI that was larger at each observation point in the HU group (trend not significant). There were no significant differences between the treatment groups for height, weight, and BMI at exit. The HC in the treatment group was slightly smaller but still within normal limit at the end of the study. Baseline z scores were the best predictors of z scores for all growth parameters.
On average, children enrolled in BABY HUG were larger than the WHO reference population with respect to height, weight, BMI, and HC at the beginning of the study. HU treatment was associated with a slightly lower HC over the time course of treatment. The analysis of variance for each of the above analyses is presented in Supplemental Tables 5–8 for this article. During the trial, each child was evaluated to determine if he or she ever crossed downward over 2 major percentiles of the WHO growth curves (defined as the 95, 75, 50, 25, 10, 5, and 1.5th percentiles) or crossed below the 1.5th percentile. In all, one-quarter to one-fifth of the children were observed to have one of these events (height: 27%; weight: 19%; and HC: 21%), with most occurrences attributable to crossing 2 major percentiles of the growth curves. There was no statistically significant difference between HU and placebo-treated children in the number of times a major percentile was crossed.
In addition, "normal" growth curves for height, weight, BMI, and HC of 1- to 3-year-old children with HbSS were generated by using data from the BABY HUG placebo group and are presented in the Supplemental Materials.25 These growth curves may be useful as historical controls for future comparisons of therapeutic interventions.
Although spleen and kidney function were the primary end points of the BABY HUG trial, assessments of growth were important secondary end points and a safety measure due to concerns that HU might have an adverse effect on growth.22 At study entry, BABY HUG children were generally similar but slightly larger than the WHO standard population for height, weight, and BMI, while having significantly larger HC. During the study, there was a downward percentile trend for weight in both treatment and placebo groups; nonetheless, the mean z scores remained close to the WHO norms, suggesting that there was no significant impairment of overall growth in either group by study end. In addition, there were no significant differences for height, weight, and BMI based on study treatment.
The HC was significantly larger in children enrolled in BABY HUG and remained so throughout the study period. Measurement of HC in African American children is challenging, because of hair styles that may include braids, dreadlocks, beads, etc. It is possible that the overall larger HC throughout the study may have resulted from these hair styles, although examiners were specifically trained to minimize the effect of hair style on HC. Oro-facial and cranio-skeletal abnormalities that may contribute to HC have been described in individuals with SCD and are frequently the result of marrow hyperplasia.37–39 Even though the difference was small, the HC percentile was lower in the HU treatment group by the end of the study, possibly as a result of suppression of bone marrow hyperplasia. Nonetheless, the HC remained well above the WHO 50th percentile standard. Further evaluation of children in the ongoing BABY HUG follow-up studies will be necessary to determine if this effect persists and assess its significance.
These data provide evidence that in infants and toddlers enrolled in BABY HUG, HU did not adversely affect the weight or linear growth of infants. Their growth parameters were normal and comparable to the WHO standards. Although our preliminary analysis demonstrated higher weight z scores in the treatment group compared with the placebo group, this difference lost significance after accounting for differences in weight at baseline.
We saw no clinically significant differences in height, weight, or BMI between the HU and placebo treated groups demonstrating the lack of harmful effects on growth due to HU treatment of 2 years starting at a young age. It is important to note that the height, weight, BMI, and HC were all either normal or close to normal in both treatment groups compared with the WHO standards, possibly impeding any demonstration of additional benefit from HU. There were no significant differences between treatment groups for any of the growth measures, except for HC. Increased WBC count, ARC, and ANC that have been associated with more severe disease in other studies were associated with significantly decreased growth in our subjects. The study was limited by an observation period of only 2 years. However, follow-up of these children is continuing, and it remains to be seen if normal growth patterns will persist in these ongoing studies, which are characterized by less frequent visits, but generally higher milligram per kilogram doses of HU.
We thank the following BABY HUG personnel at the participating clinical centers and the Medical Coordinating Center: Children's National Medical Center: Catherine Driscoll, MD, Caterina Minniti, MD, Brenda Martin, MSN, CPNP, Barbara Speller-Brown, MSN, and Romuladus Azuine, MPH; Duke University Medical Center: Courtney Thornburg, MD, Sherri Zimmerman, MD, Russell Ware, MD, William Schultz, MHS, PA-C, and Tracy Kelly, MSN, CPNP; Howard University College of Medicine: Erin Yeagley, FNP, and Connie Nguyen, RPh; Johns Hopkins University School of Medicine: Catherine Freer, PNP, Phillip Seaman, PA-C, Jeffrey Keefer, MD, PhD, Sue Dixon, and Patrice Sharp; Medical University of South Carolina: Ram Kalpatthi, MD, Sherron Jackson, MD, Betsy Rackoff, RN, Lisa Kuisel, and Deborah Disco, RNP; St. Jude Children's Research Hospital: Lane Faughnan, BSN, and Lynn Wynn, MSN, PNP; SUNY Downstate Medical Center/Kings County Hospital Center: Scott Miller, MD, Kathy Rey, PA-C, Sreedhar P. Rao, MD, and Sandra Graham, PA-C; University of Miami: Stuart Toledano, MD, Julie Barredo, MD, Tally Hustace, ARNP, Noeline Lewis, ARNP, and Ofelia Alvarez, MD; University of Mississippi Medical Center: Glenda Thomas, RN; University of Texas Southwestern Medical Center at Dallas: Cindy Cochran, MSN, CPNP, Leah Adix, CCRP, Nicole Corrigan, MD, Jennifer Marshall, RN, and Claudette Vicks, RN; University of Alabama at Birmingham: Thomas Howard, MD, Jennifer McDuffie, CRNP, Kimberly Whelan, MD, and Roy McDonald, MPH; Drexel University: Carlton Dampier, MD, Lori Luck, MD, Mary Lou MacDermott, CRNP, Maureen Meier, RN, and Michele Cahill; Emory University School of Medicine: R. Clark Brown, MD, PhD, Ifeyinwa Osunkwo, MD, MPH, Ellen Debenham, RN, Leann Hassen, MPH, and Terrell Faircloth; Children's Hospital of Michigan: Sharada Sarniak, MD, Wanda Whitten-Shurney, MD, Mary Murphy, MSN, CNP, Madhvi Pajpurkar, MD, and Kristin Storie-Kennedy, RN; and Clinical Trials & Surveys Corp: Zhibao Mi, PhD, Zhaoyu Luo, PhD, Xiangke Huang, MS, Billie Fish, CCRP, and Anne Martien, MBA, CCRP, CRCP.
We acknowledge the efforts of the BABY HUG subjects and their families and the contributions of all who participated in BABY HUG (http://www.c-tasc.com/cms/StudySites/babyhug.htm).
Dr Rana contributed to the design of the BABY HUG study, acquisition of data, analysis and interpretation of data, drafting and revising the manuscript, and approval and accountability for the work; Ms Houston contributed to the study design, data acquisition, regulatory matters, drafting and revising the manuscript, and accountability for the work; Dr Wang and Dr Iyer contributed to the design of the BABY HUG study, acquisition of data, analysis and interpretation of data, revising the manuscript, final approval, and accountability for the work; Dr Goldsmith contributed to data analysis and interpretation of data, numerous critical revisions/critiques of the article, final approval, and agreed to be accountable for all aspects of the work including resolution of queries; Dr Casella contributed to the design of the BABY HUG study, acquisition of data, analysis and interpretation of data, revising the manuscript, final approval, and accountability for the work; Ms Reed contributed to the conduct of the study, acquisition of data, interpretation of data, revising the manuscript, final approval, and accountability for the work; Dr Rogers contributed to the conception and design, acquisition and interpretation of data, drafting and revision of the manuscript, final approval, and accountability for the work; Dr Waclawiw contributed to designing the study, data analysis and interpretation of the results, assistance with substantial review and revision of the manuscript, final approval, and accountability for the work; and Dr Thompson made substantial contributions to the statistical design of the study and the manuscript, and he was responsible for the longitudinal analyses and for several drafts of this manuscript.
FINANCIAL DISCLOSURE: Dr Casella has received an honorarium and travel expenses in the past and presently receives salary support through Johns Hopkins for providing consultative advice to Mast Pharmaceuticals (previously Adventrx Pharmaceuticals) regarding a proposed clinical trial of an agent for treating vaso-occlusive crisis in sickle cell disease. He is an inventor and a named party on a patent and licensing agreement to ImmunArray for a panel of brain biomarkers for the detection of brain injury. He has filed a provisional patent for a potential treatment of sickle cell disease; the other authors have indicated they have no financial relationships relevant to this article to disclose.
FUNDING: Supported by the National Heart, Lung, and Blood Institute/National Institutes of Health contracts N01-HB-07150 to N01-HB-07160, with partial support of the Best Pharmaceuticals for Children Act and the National Institute of Child Health and Human Development. Funded by the National Institutes of Health (NIH).


text:
package peer

import (
	"bufio"
	"context"
	"crypto/x509"
	"errors"
	"io"
	"math"
	"net"
	"sync"
	"sync/atomic"
	"time"

	"go.uber.org/zap"

	"github.com/ava-labs/avalanchego/ids"
	"github.com/ava-labs/avalanchego/message"
	"github.com/ava-labs/avalanchego/utils"
	"github.com/ava-labs/avalanchego/utils/constants"
	"github.com/ava-labs/avalanchego/utils/ips"
	"github.com/ava-labs/avalanchego/utils/json"
	"github.com/ava-labs/avalanchego/utils/wrappers"
	"github.com/ava-labs/avalanchego/version"

	p2ppb "github.com/ava-labs/avalanchego/proto/pb/p2p"
)

var (
	errClosed = errors.New("closed")

	_ Peer = (*peer)(nil)
)

// Peer encapsulates all of the functionality required to send and receive
// messages with a remote peer.
type Peer interface {
	// ID returns the nodeID of the remote peer.
	ID() ids.NodeID

	// Cert returns the certificate that the remote peer is using to
	// authenticate their messages.
	Cert() *x509.Certificate

	// LastSent returns the last time a message was sent to the peer.
	LastSent() time.Time

	// LastReceived returns the last time a message was received from the peer.
	LastReceived() time.Time

	// Ready returns true if the peer has finished the p2p handshake and is
	// ready to send and receive messages.
	Ready() bool

	// AwaitReady will block until the peer has finished the p2p handshake. If
	// the context is cancelled or the peer starts closing, then an error will
	// be returned.
	AwaitReady(ctx context.Context) error

	// Info returns a description of the state of this peer. It should only be
	// called after [Ready] returns true.
	Info() Info

	// IP returns the claimed IP and signature provided by this peer during the
	// handshake. It should only be called after [Ready] returns true.
	IP() *SignedIP

	// Version returns the claimed node version this peer is running. It should
	// only be called after [Ready] returns true.
	Version() *version.Application

	// TrackedSubnets returns the subnets this peer is running. It should only
	// be called after [Ready] returns true.
	TrackedSubnets() ids.Set

	// ObservedUptime returns the local node's uptime according to the peer. The
	// value ranges from [0, 100]. It should only be called after [Ready]
	// returns true.
	ObservedUptime() uint32

	// Send attempts to send [msg] to the peer. The peer takes ownership of
	// [msg] for reference counting. This returns false if the message is
	// guaranteed not to be delivered to the peer.
	Send(ctx context.Context, msg message.OutboundMessage) bool

	// StartClose will begin shutting down the peer. It will not block.
	StartClose()

	// Closed returns true once the peer has been fully shutdown. It is
	// guaranteed that no more messages will be received by this peer once this
	// returns true.
	Closed() bool

	// AwaitClosed will block until the peer has been fully shutdown. If the
	// context is cancelled, then an error will be returned.
	AwaitClosed(ctx context.Context) error
}

type peer struct {
	*Config

	// the connection object that is used to read/write messages from
	conn net.Conn

	// [cert] is this peer's certificate, specifically the leaf of the
	// certificate chain they provided.
	cert *x509.Certificate

	// node ID of this peer.
	id ids.NodeID

	// queue of messages to send to this peer.
	messageQueue MessageQueue

	// ip is the claimed IP the peer gave us in the Version message.
	ip *SignedIP
	// version is the claimed version the peer is running that we received in
	// the Version message.
	version *version.Application
	// trackedSubnets is the subset of subnetIDs the peer sent us in the Version
	// message that we are also tracking.
	trackedSubnets ids.Set

	observedUptimeLock sync.RWMutex
	// [observedUptimeLock] must be held while accessing [observedUptime]
	observedUptime uint32

	// True if this peer has sent us a valid Version message and
	// is running a compatible version.
	// Only modified on the connection's reader routine.
	gotVersion utils.AtomicBool

	// True if the peer:
	// * Has sent us a Version message
	// * Has sent us a PeerList message
	// * Is running a compatible version
	// Only modified on the connection's reader routine.
	finishedHandshake utils.AtomicBool

	// onFinishHandshake is closed when the peer finishes the p2p handshake.
	onFinishHandshake chan struct{}

	// numExecuting is the number of goroutines this peer is currently using
	numExecuting     int64
	startClosingOnce sync.Once
	// onClosingCtx is canceled when the peer starts closing
	onClosingCtx context.Context
	// onClosingCtxCancel cancels onClosingCtx
	onClosingCtxCancel func()

	// onClosed is closed when the peer is closed
	onClosed chan struct{}

	// Unix time of the last message sent and received respectively
	// Must only be accessed atomically
	lastSent, lastReceived int64
}

// Start a new peer instance.
//
// Invariant: There must only be one peer running at a time with a reference to
// the same [config.InboundMsgThrottler].
func Start(
	config *Config,
	conn net.Conn,
	cert *x509.Certificate,
	id ids.NodeID,
	messageQueue MessageQueue,
) Peer {
	onClosingCtx, onClosingCtxCancel := context.WithCancel(context.Background())
	p := &peer{
		Config:             config,
		conn:               conn,
		cert:               cert,
		id:                 id,
		messageQueue:       messageQueue,
		onFinishHandshake:  make(chan struct{}),
		numExecuting:       3,
		onClosingCtx:       onClosingCtx,
		onClosingCtxCancel: onClosingCtxCancel,
		onClosed:           make(chan struct{}),
	}

	go p.readMessages()
	go p.writeMessages()
	go p.sendPings()

	return p
}

func (p *peer) ID() ids.NodeID {
	return p.id
}

func (p *peer) Cert() *x509.Certificate {
	return p.cert
}

func (p *peer) LastSent() time.Time {
	return time.Unix(
		atomic.LoadInt64(&p.lastSent),
		0,
	)
}

func (p *peer) LastReceived() time.Time {
	return time.Unix(
		atomic.LoadInt64(&p.lastReceived),
		0,
	)
}

func (p *peer) Ready() bool {
	return p.finishedHandshake.GetValue()
}

func (p *peer) AwaitReady(ctx context.Context) error {
	select {
	case <-p.onFinishHandshake:
		return nil
	case <-p.onClosed:
		return errClosed
	case <-ctx.Done():
		return ctx.Err()
	}
}

func (p *peer) Info() Info {
	publicIPStr := ""
	if !p.ip.IP.IP.IsZero() {
		publicIPStr = p.ip.IP.IP.String()
	}
	return Info{
		IP:             p.conn.RemoteAddr().String(),
		PublicIP:       publicIPStr,
		ID:             p.id,
		Version:        p.version.String(),
		LastSent:       time.Unix(atomic.LoadInt64(&p.lastSent), 0),
		LastReceived:   time.Unix(atomic.LoadInt64(&p.lastReceived), 0),
		ObservedUptime: json.Uint32(p.ObservedUptime()),
		TrackedSubnets: p.trackedSubnets.List(),
	}
}

func (p *peer) IP() *SignedIP {
	return p.ip
}

func (p *peer) Version() *version.Application {
	return p.version
}

func (p *peer) TrackedSubnets() ids.Set {
	return p.trackedSubnets
}

func (p *peer) ObservedUptime() uint32 {
	p.observedUptimeLock.RLock()
	uptime := p.observedUptime
	p.observedUptimeLock.RUnlock()
	return uptime
}

func (p *peer) Send(ctx context.Context, msg message.OutboundMessage) bool {
	return p.messageQueue.Push(ctx, msg)
}

func (p *peer) StartClose() {
	p.startClosingOnce.Do(func() {
		if err := p.conn.Close(); err != nil {
			p.Log.Debug("failed to close connection",
				zap.Stringer("nodeID", p.id),
				zap.Error(err),
			)
		}

		p.messageQueue.Close()
		p.onClosingCtxCancel()
	})
}

func (p *peer) Closed() bool {
	select {
	case _, ok := <-p.onClosed:
		return !ok
	default:
		return false
	}
}

func (p *peer) AwaitClosed(ctx context.Context) error {
	select {
	case <-p.onClosed:
		return nil
	case <-ctx.Done():
		return ctx.Err()
	}
}

// close should be called at the end of each goroutine that has been spun up.
// When the last goroutine is exiting, the peer will be marked as closed.
func (p *peer) close() {
	if atomic.AddInt64(&p.numExecuting, -1) != 0 {
		return
	}

	p.Network.Disconnected(p.id)
	close(p.onClosed)
}

// Read and handle messages from this peer.
// When this method returns, the connection is closed.
func (p *peer) readMessages() {
	// Track this node with the inbound message throttler.
	p.InboundMsgThrottler.AddNode(p.id)
	defer func() {
		p.InboundMsgThrottler.RemoveNode(p.id)
		p.StartClose()
		p.close()
	}()

	// Continuously read and handle messages from this peer.
	reader := bufio.NewReaderSize(p.conn, p.Config.ReadBufferSize)
	msgLenBytes := make([]byte, wrappers.IntLen)
	for {
		// Time out and close connection if we can't read the message length
		if err := p.conn.SetReadDeadline(p.nextTimeout()); err != nil {
			p.Log.Verbo("error setting the connection read timeout",
				zap.Stringer("nodeID", p.id),
				zap.Error(err),
			)
			return
		}

		// Read the message length
		if _, err := io.ReadFull(reader, msgLenBytes); err != nil {
			p.Log.Verbo("error reading message",
				zap.Stringer("nodeID", p.id),
				zap.Error(err),
			)
			return
		}

		// Parse the message length
		msgLen, err := readMsgLen(msgLenBytes, constants.DefaultMaxMessageSize)
		if err != nil {
			p.Log.Verbo("error reading message length",
				zap.Stringer("nodeID", p.id),
				zap.Error(err),
			)
			return
		}

		// Wait until the throttler says we can proceed to read the message.
		//
		// Invariant: When done processing this message, onFinishedHandling() is
		// called exactly once. If this is not honored, the message throttler
		// will leak until no new messages can be read. You can look at message
		// throttler metrics to verify that there is no leak.
		//
		// Invariant: There must only be one call to Acquire at any given time
		// with the same nodeID. In this package, only this goroutine ever
		// performs Acquire. Additionally, we ensure that this goroutine has
		// exited before calling [Network.Disconnected] to guarantee that there
		// can't be multiple instances of this goroutine running over different
		// peer instances.
		onFinishedHandling := p.InboundMsgThrottler.Acquire(
			p.onClosingCtx,
			uint64(msgLen),
			p.id,
		)

		// If the peer is shutting down, there's no need to read the message.
		if err := p.onClosingCtx.Err(); err != nil {
			onFinishedHandling()
			return
		}

		// Time out and close connection if we can't read message
		if err := p.conn.SetReadDeadline(p.nextTimeout()); err != nil {
			p.Log.Verbo("error setting the connection read timeout",
				zap.Stringer("nodeID", p.id),
				zap.Error(err),
			)
			onFinishedHandling()
			return
		}

		// Read the message
		msgBytes := make([]byte, msgLen)
		if _, err := io.ReadFull(reader, msgBytes); err != nil {
			p.Log.Verbo("error reading message",
				zap.Stringer("nodeID", p.id),
				zap.Error(err),
			)
			onFinishedHandling()
			return
		}

		// Track the time it takes from now until the time the message is
		// handled (in the event this message is handled at the network level)
		// or the time the message is handed to the router (in the event this
		// message is not handled at the network level.)
		// [p.CPUTracker.StopProcessing] must be called when this loop iteration is
		// finished.
		p.ResourceTracker.StartProcessing(p.id, p.Clock.Time())

		p.Log.Verbo("parsing message",
			zap.Stringer("nodeID", p.id),
			zap.Binary("messageBytes", msgBytes),
		)

		// Parse the message
		msg, err := p.MessageCreator.Parse(msgBytes, p.id, onFinishedHandling)
		if err != nil {
			p.Log.Verbo("failed to parse message",
				zap.Stringer("nodeID", p.id),
				zap.Binary("messageBytes", msgBytes),
				zap.Error(err),
			)

			p.Metrics.FailedToParse.Inc()

			// Couldn't parse the message. Read the next one.
			onFinishedHandling()
			p.ResourceTracker.StopProcessing(p.id, p.Clock.Time())
			continue
		}

		now := p.Clock.Time().Unix()
		atomic.StoreInt64(&p.Config.LastReceived, now)
		atomic.StoreInt64(&p.lastReceived, now)
		p.Metrics.Received(msg, msgLen)

		// Handle the message. Note that when we are done handling this message,
		// we must call [msg.OnFinishedHandling()].
		p.handle(msg)
		p.ResourceTracker.StopProcessing(p.id, p.Clock.Time())
	}
}

func (p *peer) writeMessages() {
	defer func() {
		p.StartClose()
		p.close()
	}()

	writer := bufio.NewWriterSize(p.conn, p.Config.WriteBufferSize)

	// Make sure that the version is the first message sent
	msg, err := p.Network.Version()
	if err != nil {
		p.Log.Error("failed to create message",
			zap.Stringer("messageOp", message.VersionOp),
			zap.Error(err),
		)
		return
	}

	p.writeMessage(writer, msg)

	for {
		msg, ok := p.messageQueue.PopNow()
		if ok {
			p.writeMessage(writer, msg)
			continue
		}

		// Make sure the peer was fully sent all prior messages before
		// blocking.
		if err := writer.Flush(); err != nil {
			p.Log.Verbo("failed to flush writer",
				zap.Stringer("nodeID", p.id),
				zap.Error(err),
			)
			return
		}

		msg, ok = p.messageQueue.Pop()
		if !ok {
			// This peer is closing
			return
		}

		p.writeMessage(writer, msg)
	}
}

func (p *peer) writeMessage(writer io.Writer, msg message.OutboundMessage) {
	msgBytes := msg.Bytes()
	p.Log.Verbo("sending message",
		zap.Stringer("nodeID", p.id),
		zap.Binary("messageBytes", msgBytes),
	)

	if err := p.conn.SetWriteDeadline(p.nextTimeout()); err != nil {
		p.Log.Verbo("error setting write deadline",
			zap.Stringer("nodeID", p.id),
			zap.Error(err),
		)
		return
	}

	msgLen := uint32(len(msgBytes))
	msgLenBytes, err := writeMsgLen(msgLen, constants.DefaultMaxMessageSize)
	if err != nil {
		p.Log.Verbo("error writing message length",
			zap.Stringer("nodeID", p.id),
			zap.Error(err),
		)
		return
	}

	// Write the message
	var buf net.Buffers = [][]byte{msgLenBytes[:], msgBytes}
	if _, err := io.CopyN(writer, &buf, int64(wrappers.IntLen+msgLen)); err != nil {
		p.Log.Verbo("error writing message",
			zap.Stringer("nodeID", p.id),
			zap.Error(err),
		)
		return
	}

	now := p.Clock.Time().Unix()
	atomic.StoreInt64(&p.Config.LastSent, now)
	atomic.StoreInt64(&p.lastSent, now)
	p.Metrics.Sent(msg)
}

func (p *peer) sendPings() {
	sendPingsTicker := time.NewTicker(p.PingFrequency)
	defer func() {
		sendPingsTicker.Stop()

		p.StartClose()
		p.close()
	}()

	for {
		select {
		case <-sendPingsTicker.C:
			if !p.Network.AllowConnection(p.id) {
				p.Log.Debug("disconnecting from peer",
					zap.String("reason", "connection is no longer desired"),
					zap.Stringer("nodeID", p.id),
				)
				return
			}

			if p.finishedHandshake.GetValue() {
				if err := p.VersionCompatibility.Compatible(p.version); err != nil {
					p.Log.Debug("disconnecting from peer",
						zap.String("reason", "version not compatible"),
						zap.Stringer("nodeID", p.id),
						zap.Stringer("peerVersion", p.version),
						zap.Error(err),
					)
					return
				}
			}

			pingMessage, err := p.Config.MessageCreator.Ping()
			if err != nil {
				p.Log.Error("failed to create message",
					zap.Stringer("messageOp", message.PingOp),
					zap.Error(err),
				)
				return
			}

			p.Send(p.onClosingCtx, pingMessage)
		case <-p.onClosingCtx.Done():
			return
		}
	}
}

func (p *peer) handle(msg message.InboundMessage) {
	switch m := msg.Message().(type) { // Network-related message types
	case *p2ppb.Ping:
		p.handlePing(m)
		msg.OnFinishedHandling()
		return
	case *p2ppb.Pong:
		p.handlePong(m)
		msg.OnFinishedHandling()
		return
	case *p2ppb.Version:
		p.handleVersion(m)
		msg.OnFinishedHandling()
		return
	case *p2ppb.PeerList:
		p.handlePeerList(m)
		msg.OnFinishedHandling()
		return
	}
	if !p.finishedHandshake.GetValue() {
		p.Log.Debug(
			"dropping message",
			zap.String("reason", "handshake isn't finished"),
			zap.Stringer("nodeID", p.id),
			zap.Stringer("messageOp", msg.Op()),
		)
		msg.OnFinishedHandling()
		return
	}

	// Consensus and app-level messages
	p.Router.HandleInbound(context.Background(), msg)
}

func (p *peer) handlePing(_ *p2ppb.Ping) {
	msg, err := p.Network.Pong(p.id)
	if err != nil {
		p.Log.Error("failed to create message",
			zap.Stringer("messageOp", message.PongOp),
			zap.Error(err),
		)
		return
	}
	p.Send(p.onClosingCtx, msg)
}

func (p *peer) handlePong(msg *p2ppb.Pong) {
	if msg.UptimePct > 100 {
		p.Log.Debug("dropping pong message with invalid uptime",
			zap.Stringer("nodeID", p.id),
			zap.Uint32("uptime", msg.UptimePct),
		)
		p.StartClose()
		return
	}

	p.observedUptimeLock.Lock()
	p.observedUptime = msg.UptimePct // [0, 100] percentage
	p.observedUptimeLock.Unlock()
}

func (p *peer) handleVersion(msg *p2ppb.Version) {
	if p.gotVersion.GetValue() {
		// TODO: this should never happen, should we close the connection here?
		p.Log.Verbo("dropping duplicated version message",
			zap.Stringer("nodeID", p.id),
		)
		return
	}

	if msg.NetworkId != p.NetworkID {
		p.Log.Debug("networkID mismatch",
			zap.Stringer("nodeID", p.id),
			zap.Uint32("peerNetworkID", msg.NetworkId),
			zap.Uint32("ourNetworkID", p.NetworkID),
		)
		p.StartClose()
		return
	}

	myTime := p.Clock.Unix()
	if math.Abs(float64(msg.MyTime)-float64(myTime)) > p.MaxClockDifference.Seconds() {
		if p.Beacons.Contains(p.id) {
			p.Log.Warn("beacon reports out of sync time",
				zap.Stringer("nodeID", p.id),
				zap.Uint64("peerTime", msg.MyTime),
				zap.Uint64("myTime", myTime),
			)
		} else {
			p.Log.Debug("peer reports out of sync time",
				zap.Stringer("nodeID", p.id),
				zap.Uint64("peerTime", msg.MyTime),
				zap.Uint64("myTime", myTime),
			)
		}
		p.StartClose()
		return
	}

	peerVersion, err := version.ParseApplication(msg.MyVersion)
	if err != nil {
		p.Log.Debug("failed to parse peer version",
			zap.Stringer("nodeID", p.id),
			zap.Error(err),
		)
		p.StartClose()
		return
	}
	p.version = peerVersion

	if p.VersionCompatibility.Version().Before(peerVersion) {
		if p.Beacons.Contains(p.id) {
			p.Log.Info("beacon attempting to connect with newer version. You may want to update your client",
				zap.Stringer("nodeID", p.id),
				zap.Stringer("beaconVersion", peerVersion),
			)
		} else {
			p.Log.Debug("peer attempting to connect with newer version. You may want to update your client",
				zap.Stringer("nodeID", p.id),
				zap.Stringer("peerVersion", peerVersion),
			)
		}
	}

	if err := p.VersionCompatibility.Compatible(peerVersion); err != nil {
		p.Log.Verbo("peer version not compatible",
			zap.Stringer("nodeID", p.id),
			zap.Stringer("peerVersion", peerVersion),
			zap.Error(err),
		)
		p.StartClose()
		return
	}

	// Note that it is expected that the [versionTime] can be in the past. We
	// are just verifying that the claimed signing time isn't too far in the
	// future here.
	if float64(msg.MyVersionTime)-float64(myTime) > p.MaxClockDifference.Seconds() {
		p.Log.Debug("peer attempting to connect with version timestamp too far in the future",
			zap.Stringer("nodeID", p.id),
			zap.Uint64("versionTime", msg.MyVersionTime),
		)
		p.StartClose()
		return
	}

	// handle subnet IDs
	for _, subnetIDBytes := range msg.TrackedSubnets {
		subnetID, err := ids.ToID(subnetIDBytes)
		if err != nil {
			p.Log.Debug("failed to parse peer's tracked subnets",
				zap.Stringer("nodeID", p.id),
				zap.Error(err),
			)
			p.StartClose()
			return
		}
		// add only if we also track this subnet
		if p.MySubnets.Contains(subnetID) {
			p.trackedSubnets.Add(subnetID)
		}
	}

	// "net.IP" type in Golang is 16-byte
	if ipLen := len(msg.IpAddr); ipLen != net.IPv6len {
		p.Log.Debug("message with invalid field",
			zap.Stringer("nodeID", p.id),
			zap.Stringer("messageOp", message.VersionOp),
			zap.String("field", "IP"),
			zap.Int("ipLen", ipLen),
		)
		p.StartClose()
		return
	}

	p.ip = &SignedIP{
		IP: UnsignedIP{
			IP: ips.IPPort{
				IP:   net.IP(msg.IpAddr),
				Port: uint16(msg.IpPort),
			},
			Timestamp: msg.MyVersionTime,
		},
		Signature: msg.Sig,
	}
	if err := p.ip.Verify(p.cert); err != nil {
		p.Log.Debug("signature verification failed",
			zap.Stringer("nodeID", p.id),
			zap.Error(err),
		)
		p.StartClose()
		return
	}

	p.gotVersion.SetValue(true)

	peerlistMsg, err := p.Network.Peers()
	if err != nil {
		p.Log.Error("failed to create message",
			zap.Stringer("messageOp", message.PeerListOp),
			zap.Error(err),
		)
		return
	}
	p.Send(p.onClosingCtx, peerlistMsg)
}

func (p *peer) handlePeerList(msg *p2ppb.PeerList) {
	if !p.finishedHandshake.GetValue() {
		if !p.gotVersion.GetValue() {
			return
		}

		p.Network.Connected(p.id)
		p.finishedHandshake.SetValue(true)
		close(p.onFinishHandshake)
	}

	for _, claimedIPPort := range msg.ClaimedIpPorts {
		tlsCert, err := x509.ParseCertificate(claimedIPPort.X509Certificate)
		if err != nil {
			p.Log.Debug("message with invalid field",
				zap.Stringer("nodeID", p.id),
				zap.Stringer("messageOp", message.PeerListOp),
				zap.String("field", "Cert"),
				zap.Error(err),
			)
			p.StartClose()
			return
		}

		// "net.IP" type in Golang is 16-byte
		if ipLen := len(claimedIPPort.IpAddr); ipLen != net.IPv6len {
			p.Log.Debug("message with invalid field",
				zap.Stringer("nodeID", p.id),
				zap.Stringer("messageOp", message.VersionOp),
				zap.String("field", "IP"),
				zap.Int("ipLen", ipLen),
			)
			p.StartClose()
			return
		}

		ip := ips.ClaimedIPPort{
			Cert: tlsCert,
			IPPort: ips.IPPort{
				IP:   net.IP(claimedIPPort.IpAddr),
				Port: uint16(claimedIPPort.IpPort),
			},
			Timestamp: claimedIPPort.Timestamp,
			Signature: claimedIPPort.Signature,
		}
		if !p.Network.Track(ip) {
			p.Metrics.NumUselessPeerListBytes.Add(float64(ip.BytesLen()))
		}
	}
}

func (p *peer) nextTimeout() time.Time {
	return p.Clock.Time().Add(p.PongTimeout)
}


Thyroid hemiagenesis is a rare congenital anomaly in which the thyroid lobe fails to. USER CENTER. User. Username: Password:. Peer-Review Process. Publishing.
Annales d'Endocrinologie - In Press.Proof corrected by the author Available online since vendredi 23 octobre 2015 - Thyroid tuberculosis: A new case and review of the.
. warnings and user. Better Medicine » Causes of Miscarriage Doxycycline and Miscarriage - Reviews. Yahoo Answers things not to take with synthroid Taking.
Synthroid price in india friendly support, get free samples viagra,cialis,levitra for all orders pills great discounts for you safe buy synthroid online. You can.Thyroid Dysfunction Induced by Amiodarone Therapy 12/07/2016 · Amiodarone is a potent antiarrhythmic drug that is used to treat ventricular and supraventricular.
Synthroid Generic Order Online Reviews;. The user must re-authorize your application with scope=public_content to be granted this permissions.Synthroid Generic Or Brand Name. Dea schedule synthesis and storage of thyroxine and triiodothyronine lasix online bestellen can I take with prilosec accidentally take 2.
1) Les accords 7ème de dominante; 2) Les accords Majeurs 7 ouverts; 3) Transposition des accords 7 ouverts; 4)Tout les types d'accords 7 barrés.The investigator is required to submit a Project Application Form, for review by the EPIC SC. In the case of projects on type 2 diabetes or cardiovascular diseases.How fast does doxycycline work, doxycycline and accutane how fast does doxycycline work Barriers to beat departed assistant Shirna had synthroid coupon 2013 come fast.. Dark Espresso Wood Review. i Omnitech digital photo frame 36972 user manual have an omnitech digital. Thyroid disease scholarships sarasota florida.0 user reviews. Write a review. The Nuclear Receptor Signaling Atlas: catalyzing understanding of thyroid hormone signaling and metabolic control.
Scientific Symposium Chernobyl: 30 years after 9:00 - 18:00 11 June, 2016. Review of the radiation risks. Molecular mechanisms of post-Chernobyl thyroid tumours.Disease definition Familial thyroid dyshormonogenesis is a type of primary congenital hypothyroidism (see this term), a permanent thyroid hormone deficiency that.
Levothyroxine Side Effects - Complete Patient's Guide | User Reviews: Female patient, 23 years of age, was diagnosed |Constipation. WARNING: Thyroid hormones,.
How to take synthroid for weight loss;. Synthroid iron; Kamagra user reviews; CONTACT; 02 97 32 40 70 / 06 24 58 25 43; [email protected]; facebook.
Lamisil Drug and Medication User Reviews on RxList Lamisil User Reviews day for toenail fungus that became soft and smooth before I even stopped taking it.
Common Questions and Answers about Levothyroxine and weight loss forum Levothyroxine (Synthroid) Reviews. pictures, warnings and user ratings.
medical conditions in user-generated French drug reviews. The concept of medical condition subsumes both patholo-. ('Damaged thyroid!') or the overall im-.Diabetes & Metabolism - Vol. 25 - N° 6 - p. 459 - Insulin assays and reference values - EM|consulte.See reviews, photos, directions,. See reviews and photos armour conversion chart synthroid of Bars & Clubs in SoMa, San Francisco (California).Hashimoto's Thyroiditis Global Clinical Trials Review, H2,. Hashimoto's thyroiditis is a condition in which immune system attacks thyroid,. End User - Global.
Levothyroxine User Reviews for Underactive Thyroid at Drugs.com Reviews and ratings for levothyroxine when used in the My dose has recently been increased to 0.1 MG.
PATIENT HISTORY – OVERALL HEALTH REVIEW. Thyroid Disorder NERVOUS SYSTEM Alzheimer's/Dementia. user Created Date.
synthroid programa de desconto. Flexeril and 12.5 mg can I take synthroid with my vitamins purell inactive ingredients in synthroid plan b. Pig thyroid vs. mono.More ADHD Book Reviews. Arizona Local News Since Ritalin abuse first hit the radar screen several years taking more synthroid than prescribed ago,.
Synthroid and irritability; Flagyl generic walmart;. Keflex User Reviews Now you can gain knowledge and insight about a drug treatment with Patient Discussions.
Tips for Taking Synthroid (levothyroxine sodium tablets, USP) I take my Synthroid with an 8-ounce glass of water. Then, I start the coffee pot SYNTHROID.


text:
South Africa's PeleBox Wins the £25k Africa Prize for Engineering Innovation Award
Rema, Timilehin Bello, Ifan Michael and 3 other Nigerians made the Forbes 30 Under 30 2021 List
41.3 Million Telecom Users Could Be Cut Off as Kogi Govt Shuts Down Telecom Infrastructures
INFOSERV Launches in Nigeria, Organizes Free Session to Help Solve Talent Management Problems
INFOSERV People Tech Solutions has launched in Nigeria after over 40 years of service in the Caribbeans and recently, in Ghana. The company aims to inspire clients to peak performance by delivering unparalleled value through innovative technology and human capacity development solutions.
With so many years into the pursuit of making organizations, teams, and their members more productive. INFOSERV's quest to drive enhanced performance has been anchored by these two pillars: Technology Deployment and Capacity Development.
Speaking on the team's founding objective, founder and chairman, Trevor E. S. Smith says that INFOSERV has been built on the unremitting drive to help business leaders build teams and team cultures that will guarantee growth and sustainable development.
"For over 40 years, we have been on a mission to drive productivity by enhancing the performance of individuals, teams, and their organizations over technology and capacity development solutions.
Trevor E. S. Smith, Founder and Chairman of Infoserve
"We impact a range of HR and talent management activities from recruitment and selection to onboarding to training needs assessment, learning and development, career planning, succession planning, and also performance management which are keys to the success of the organization," he adds.
Richard Solomon, CEO, Infoserv
Chibueze Manly Nwankpa INFOSERV's General Manager in Nigeria says that the expansion is meant to increase the company's reach to major markets in Africa as well as extend its impact to businesses within the region. According to him, adopting technology transformation is key for organizations that seek to survive the new realities of the workplace today.
"Think about a typical workplace ten years ago, you will see how very manual a lot of levels were and see what it is today because of the introduction of technology. Thinking about the fisher of work also, every organization definitely needs a technology transformation. And the best place to go to is INFOSERV," he says.
The Success with People Academy (by INFOSERV) and the INFOSERV Institute of Technology are recognized by the Society for Human Resource Management (SHRM) to offer Professional Development Credits (PDCs) for SHRM-CP or SHRM-SCP recertification.
About the Free Webinar
In addition to launching in Nigeria, INFOSERV will be hosting a FREE webinar for business leaders and HR personnel on May 19, 2021. This 2-hour virtual session aims at helping business leaders and managers to identify and scale through team underperformance by proffering profit-boosting technology solutions.
They will share some of the knowledge from their vast range of experience of working with organizations like 3M, Unilever Coca Cola, PepsiCo, IBM, VODAFONE, NCC Nigeria, Methanex corporation, Bocra Botswana, Bofinet Botswana, Telkom South Africa, City of east point Georgia, Rcn networks USA, Nestle, British gas, Tantalus corporation Canada, These are the companies we have worked for and more.
This webinar is important for business leaders and HR professionals who are looking to build high-performing teams or struggling to scale through underperformance among members of their team. To register for this webinar, click here or send an email to [email protected] For more information about INFOSERV People Tech Solutions, visit www.infoservpeopletech.org.

redpajama_set_name: RedPajamaCommonCrawl


Show your support for your team with the authentic replica Newcastle Jets Home Jersey. Featuring a high-quality woven club badge, embroidered logos, sponsor logos and authentic locker tag. Strategically placed mesh panels maximise heat disposition and sweat management.


Sage Pastel Xpress Advantage is an easy to use, full featured accounting solution for the small to medium enterprise. Made is South Africa - for South African businesses, and now also international! You cannot get better for your money matters than Pastel Xpress or Partner.


text:
De dierentuin en botanische tuin van Saigon (Vietnamees: Thảo Cầm Viên Sài Gòn) ligt in het eerste arrondissement van Ho Chi Minhstad, de grootste stad van Vietnam. Het bevindt zich op de hoek van Nguyen Binh Khiem en Le Duan tegenover het Herenigingspaleis en aan de voorzijde van het Historisch Museum van Vietnam. Het park is lid van de Bond van dierentuinen in Zuidoost-Azië en de Wereldbond van dierentuinen en aquaria.

Externe link
 Officiële site (Vietnamees)

Saigon
Saigon
Ho Chi Minhstad

redpajama_set_name: RedPajamaWikipedia


text:
britney Mar. 28, 2011
Watch Britney Spears's Two Weekend Performances
By Willa Paskin
Britney Spears made two appearances over the weekend to promote her new record, Femme Fatale, out tomorrow. The first was in Vegas, and the second was in San Francisco, where she taped a bit for Good Morning America. Spears danced more in both of these performances than she has in a while, but she's still not in fighting shape: Her moves mostly involve her throwing her arms around dramatically, as male dancers gyrate to create the illusion of high-energy motion. She does some footwork, but it's only in short bursts, and there's something particularly notable about the way the dancers all seem very attentive to Spears staying vertical — helping her take the stairs like she's elderly. (If it seems like we're being harsh on the dancing, it's not like she's doing something else, like, say, singing, while she's onstage.) As with all things related to this latest record: could be worse, once was better. We'd feel more positive about the whole thing if girl could work a pair of pants, or, really, anything under than sequined undies, into her tour closet.
In Vegas:
For GMA:


text:
Maricopa County animal control director out after bullying complaints
By Randall Perry Last updated Dec 20, 2022
Maricopa County announced Monday that it is looking to replace Michael Mendel, director of Animal Care and Control, who left his job after employees complained that he bullied his staff and had emotional outbursts.
According to new documents released to The Arizona Republic via a public records request, three staff members told the county's human resources division that Mendel screamed and gestured wildly at them during a routine daily meeting in early November. The outburst brought several employees to tears, employee complaints and notes on interviews with staff showed.
"The director has a reputation for being a bully, but this was my first time seeing it firsthand," one employee said in one complaint. The names of Mendel's accusers were redacted for privacy reasons. "His emotional outburst included him pacing back and forth, shaking his fists, getting into people's faces and yelling."
Maricopa County officials said in a prepared statement that Mendel resigned.
But in a text, Mendel said simply, "I have no comment, other than I did not resign." He did not immediately clarify.
The news of Mendel's departure comes less than a month after he was placed on administrative leave, amid allegations of incompetent management and bullying behavior. He has headed the county's animal shelter system since March 2022.
Maricopa County will seek a new leader for the embattled department, officials said in a statement. It employs about 50 people and has about 700 animals in its care.
Until then, the animal shelters will be overseen by Bill Wiley, a longtime government administrator who's previously served in a variety of temporary roles for the county.
Once hired, the new director will also have a new boss. The department will be reassigned from Assistant County Manager Valerie Beckett to Assistant County Manager Jen Pokorski.
"Jen Pokorski will bring a fresh set of eyes but remain focused on continuous improvement," said County Manager Joy Rich.
'I will kill 50 dogs this week if I have to.'
Mendel's meeting outburst came amid a distemper outbreak that started in October within the county's East Shelter in Mesa, staff said in the report.
Distemper is a highly contagious viral disease that can cause coughing, decreased appetite and vomiting in dogs and can be fatal.
The outbreak, which infected 240 animals, brought backlash from the public and led to several animals being euthanized to stop the spread of illness. Mendel's outburst began as a response to community criticism, employees reported in the documents.
"Someone said to Michael, 'They must rake you over the coals,'" an employee told human resources in an interview. "Michael said, 'Oh, I'll tell him, bring it on, bring it,' a couple times. Michael's voice was raised, and he started yelling."
At one point, Mendel yelled that the shelters were "his life's work" and that "I will kill 50 dogs this week if I have to," according to a human resources complaint.
"His behavior was not only unprofessional but scary and intimidating, and I do not feel comfortable around him due to his outbursts such as this," an employee said in a complaint. "He seems unpredictable and unstable in his outbursts."
Of the 15 employees interviewed by human resources officials, five directly said Mendel's conduct made them and their colleagues uncomfortable. Several others said they didn't interpret Mendel's behavior as threatening, but that he was loud and is known to have a temper.
"No one apologized," one employee told human resources. "I feel like someone who had an outburst like that should have apologized, and he never did."
Mendel told human resources that he did not believe his behavior was unprofessional. He denied getting physically close to his employees during the meeting and saying he would "kill" animals.
"He said he was passionate because of all the hate mail and comments they all got on social media," the report stated.
Resignation adds to constant turnover in department
When Mendel was first hired, he entered a county shelter system long plagued by turnover and scandals. Mendel was the office's third director in three years, not counting Beckett, who briefly served as an interim director in 2020.
His arrival came on the heels of a 2019 investigation from The Republic that detailed concerns about a toxic workplace within the department and bad conditions within the shelters. An earlier investigation found that veterinarians were botching surgeries on some shelter animals, leading to a years-long string of injuries and deaths.
Mendel was a longtime volunteer with the county's animal shelters, and his hiring was heralded as a new page for the troubled organization. When he started his role, he said he would implement "a data-driven, evidence-based vision."
"I cherish the opportunity to continue my passion serving the animals in MCACC's care," he said in a statement on his hiring.
Sasha Hupka covers Maricopa County, Pinal County and regional issues for The Arizona Republic. Do you have a tip about county government or county services? Reach out to [email protected] Follow her on Twitter: @SashaHupka.
Tucson Police Department using new tactics to investigate fentanyl dealers
Farm Workforce Modernization Act could go to US Senate this week- what it could mean for workers and farmers in Yuma County


text:
Police Officers Recovering After Accidentally Shooting Each Other
Filed Under:Elk Grove News, Elk Grove Police Department
ELK GROVE (CBS13) — Two Elk Grove police officers are recovering from gunshot wounds they accidentally gave each other while chasing down a suspect.
On Saturday night around 11 p.m. police received the call of a travel trailer burglary in the area of Tegan Road, just off Franklin Road. The caller also said he saw a man move a gun from the pocket of his pants pocket to his sweatshirt pocket. An officer responded to the call and contacted a male and female near the trailer. The officer followed him to the Walgreens parking lot, near Laguna and Franklin, and by then, another officer showed up, according to a statement from Elk Grove Police Department.
ALSO: Florida Easter Bunny Brawl Caught On Video
"I said get out of the window because there's going to be bullets spraying here in a little bit," said Dean Trafton, a nearby resident.
One officer was on either side of the suspect, facing each other. The suspect then reportedly moved toward one of the officers with his hands near his waistband, and that's when the officers started firing — hitting the suspect and each other.
All three men were taken to the hospital. Each officer suffered a non-life threatening wound to their lower leg.
"We've seen the cops when we looked out the window and they all had their guns drawn towards the trailer and you know anytime guns are drawn there's a possibility of there being a shooting," Trafton said.
The SWAT team was able to safely clear the RV.
ALSO: Austrian Prison Escapee Returns, Fed Up Of Life In The Sun
Both officers were released from the hospital.
The suspect has been identified as a 41-year-old Sacramento man. He is still at the hospital being treated for his injuries. Once released from the hospital, he will be booked for multiple charges, including felon in possession of a firearm and resisting arrest.
Hodar 💥MAGA💥🇱🇷 (@Hodar40680423) says:
Keep your "Booger hook" off the "bang switch" until it's actually time to destroy something. This is the most basic lesson EVERY SHOOTER is taught.
One would like to think that Police Officers realize that the "trigger guard" is there for a reason. You never run with your finger on the trigger – unless you incredibly stupid, and want to discharge your weapon carelessly. Fools could have shot himself, or any innocent pedestrian.
I don't see his career advancing in the near future.
Andrew Moore says:
All they needed was a Model T, and the scene would've been complete!
Frank Johnson says:
Keystone Cops!
Stone Wall (@Stonewall_MAGA) says:
Nevermind the crossfire, SHOOT THAT FOCKER UNTIL HE STOPS MOVING!
Pg 4, Line2, Training Manual.
California…..derp*
Jeff Mitchell says:
Keystone Cops.
Vlad Dee says:
hahahhahaa
Uh one of the basic rules of gun safety is being aware what's behind the target before firing. Both of the fools need to be fired.
Sho Rembo says:
Only ones professional enough……
Leave a Reply to Sho Rembo	Cancel reply


Anna Paquin presenting Martin Landau with the Oscar® for Best Supporting Actor for his performance in "Ed Wood" at the 67th Academy Awards® in 1995. Introduced by David Letterman.
Oscars biggest losers are those top directors and actors in movies who have never won an Oscar .Alfred Hitchcock is about the best director in movies never won. Academy awards passed up the greatest performers like the legendary Greta Garbo and favorite stars like irene Dunn. Versatile Cary Grant was never honored with a best actor Oscar. Jeff Bridges was on the losers list for years but luckily won best actor in 2010. Glenn Close always on the red carpet at academy awards Oscars has never been blessed with one. The academy awards honorary Oscars. They gave one to Alfred Hitchcock after many years and a incredible body of work.
Pictures and Music are not mine, i don't own them..
Credits: All owners of the photos and music I used.


Wow! What a week it's been for fans of He Who Shall Not Be Named and his nemesis Harry Potter. The excitement of tickets finally going on sale for the much anticipated new Potter stage show over-shadowed by the fact that they sold out within a milli-second and more tickets had to be hurriedly released to placate the Hogwart loving public only for the same thing to happen again with the system asking fans to pay now for tickets in 2017.
May 2016 is going to be an amazing time for families visiting London anyway because the Broadway transfer of Disney's Aladdin which will begins its previews at the Prince Edward theatre after Miss Saigon has made its final helicopter trip on 27th February next year.
The Aladdin theatre break buying experience should be much less traumatic too – not quite as easy as rubbing a lamp, but up there none-the-less!
Of course we know the story of Aladdin. The same could not be said of Harry Potter.
So what exactly JK Rowling has in store for us in Part 8 of the worldwide phenomenon that has followed 11 year old Harry from the cupboard under the stairs to young adulthood culminating in the ultimate battle with evil magic?
At the end of the Deathly Hallows book and film, we saw Harry had married Ginny and become a father to three children. His oldest two James and Albus were off the Hogwarts at the beginning of the school term and there in the background of the commotion on Platform 9 ¾ was Harry's arch rival Draco Malfoy – himself a father sending his off-spring away to school. There was a slight moment between the two which leaves the reader/audience to wonder what might happen in the future.
And so, here it is not in book or film form but as a stage play written by Ms Rowling herself in collaboration with Let Me In writers Jack Thorne and John Tiffany. The story centres around Harry's second son Albus who must come to terms with being born into a family legacy he doesn't have the power to change and how Harry, now an over-worked Ministry of Magic employee, cannot leave the past behind him. The tag-line being "that darkness sometimes comes from unexpected places".
It all sounds fantastically tantalising doesn't it? Plus it's being offered as a 2 part package – a trend that was first started by the RSC in 1980 when they produced The Life and Times of Nicholas Nickelby in 2 parts. And I'm all for getting children to the theatre twice in one week!
As I am probably not going to stand a chance of seeing the plays until 2017 at the earliest, that gives me a nice long time to sew together my wizard outfit, train my Owl and find an Elder wand… or maybe I'll just head to Watford again and enjoy the Harry Potter Studio Tour – it's cheaper too!


The ever cheerful Pillsbury Doughboy is in mourning. Former ad man Rudolph Perz who created the giggly character, has died.
Perz's slightly flaky creation known as Poppin' Fresh has survived for 50 years with his chef's cap tilted and his scarf neatly knotted at his throat.
Perz's death was confirmed Thursday on General Mills (GIS)' website. He died on April 1 and was 89.
Perz was working on the Pillsbury account for the Leo Burnett ad agency in Chicago in 1965 when he came up with the crescent roll spokes-boy. The slightly chubby pastry boy quickly became one of the most recognized ad icons in the country. He spawned toys and became a regular in the Macy's Thanksgiving Day Parade line-up of balloons. In 1987 the doughboy was declared "America's most-loved character," according to ADWEEK .
The first television commercial featuring Poppin' Fresh cost $16,000 to make and required five bodies and 15 heads for the stop action film, according to the General Mills website. In the ad, he introduced himself to the world with the now famous, "Hi! I'm Poppin' Fresh, the Pillsbury Doughboy." His voice was originally created by actor Paul Frees.
Over the years, the Doughboy became more active, singing opera, riding a skateboard, helping in the kitchen and playing musical instruments. He recently was given his first pair of pants, a tiny pair of jeans.
The Doughboy and Perz's work to bring him to life are scheduled to be part of an exhibit next month at the Chicago Museum of Broadcast Communications honoring "advertising's greatest icons." Other honorees include Tony the Tiger, the Jolly Green Giant, Morris the cat, Mr. Clean and Ronald McDonald.


In a medium bowl, stir together flour, baking powder, baking soda and ¾ tsp salt and set aside.
In a mixer bowl, beat sugar and butter together with an electric mixer till light, scraping sides of bowl often. Add eggs, one at the time, and the milk, beating till smooth after each addition.
Add flour mixture and banana alternately to creamed mixture, beating till smooth after each addition. Fold in nuts.
Turn batter into a lightly greased 8 x 4 x 2 loaf pan.
Bake at 350 F for 60 – 65 minutes or till a wooden toothpick inserted near the center comes out clean.
Cool in pan for 10 minutes. Remove from pan, cool.


text:
Energy Conservation & Modeling
Cost Estimating, Budgeting and Value Engineering
Fundamental & Best Practice Commissioning
Owner's Representative
Design Compliance Reviews
Catching problems early in the design is the lowest cost way to ensure a properly functioning building with the fewest expensive change orders down the road. Our "peer reviews" provide a fresh pair of eyes to examine the design and working drawings of the M&E systems and identify issues that some designers sometimes overlook but which contractors rarely do.
Independent Engineer Services
Today's buildings are increasingly complicated due to new energy efficiency technologies integrated through complex computer controls. Owners, contractors and building operators are finding it increasingly difficult to keep abreast of all these new technologies. ONSA staff has first-hand experience in the most complex technologies being incorporated into today's designs and we have the ability to ensure proper operation of these new technologies. ONSA is often brought in to trouble shoot facilities that aren't operating as expected and ensure that energy performance and occupant satisfaction is realized.
Validation of Energy Savings
Green buildings hold the promise of cutting energy costs in half as a result of a myriad of measures ranging from simple occupancy sensors to complex heat recovery systems. But these theoretical savings will only occur if energy saving systems are properly designed / specified, the correct products are supplied & installed, and systems are thoroughly tested in all modes of operation. ONSA will come in and perform an in depth analysis of the design and as constructed works and recommend adjustments as necessary to ensure that the energy and maintenance bills are as low as possible.
First Year Operational Support
At ONSA, our belief is that our professional services (including commissioning) should not stop once construction and testing is complete, but should continue for the first year of occupancy to ensure that all M&E systems are working properly and these systems adapt as they move from heating season to cooling season (and reverse) occurs. Our technical staff ensures that the training of operations staff is thorough and provides detailed instruction for proper building system and equipment operation & maintenance.
Resident Inspection / Clerk of the Works
Amherst RCMP Detachment


EZ Does It: EZHTML's color-coded interface makes finding HTML tags easy.
EZHTML from CSVTech is an interactive online reference for HTML, and it's also one of the growing number of commercially available Linux products that justify their cost by providing support via either telephone or e-mail. Unfortunately, we ran into a surprising number of problems when installing the product, making such support more necessary than expected.
Although EZHTML is provided as an RPM file (and only in that format), installing it via an rpm-i command under SuSE 6.2 wasn't sufficient. When we tried this, RPM complained about two missing files on the system (/etc/psd/psd.config and /etc/psd/ rfwdh), which are supposed to be created during the installation process. Installing under Red Hat 6.0 also caused the missing-file error, which we circumvented by creating empty files with those names. Under SuSE 6.3 the program installed and ran without any problems.
When we asked CSV via e-mail for help on these issues they said that "hundreds" of people had experienced no problems with the product, most of them running under Red Hat and Caldera, and suggested that we use the command rpm -i –force –nodeps eztml-1.1-1.i386.rpm. This didn't fix the missing-files problem under SuSE 6.2, but it did under Red Hat 6.0.
The final obstacle to installation concerned the glibc 2.0 library. Installing under SuSE 6.1 failed because the system lacked glibc 2.0, a requirement not mentioned on CSV's Web site. This will not be an issue for many users, since glibc 2.0 support has been incorporated into the major distributions for quite some time.
Web-based support is clearly an area where CSV Technologies could use some improvement. The support page points you to an FAQ list, but the only link there is to another product (EZTerm), and there's nothing specific to EZHTML.
EZHTML groups HTML tags by functional area (structure, formatting, lists, tables, frames, and so forth) and then lists them in alphabetical order along with their corresponding attributes. In most cases you can click on the HTML tag or attribute to get an example, but unless you already know what the tag is used for, the terse descriptions probably won't help much. In fact, you need a working knowledge of HTML to get much value from the program.
One of EZHTML's most useful features is the ability to copy tags and attributes and then paste them into an editor by right-clicking the tag. This saves you some typing, but at the expense of switching between windows. The Color Picking feature is also useful, since it presents you with a choice of 15 predefined colors, or you can use three slide bars to create custom colors. You are then given the eight-digit hexadecimal value for that color, which you can transfer to any tags via standard X Windows copy-and-paste. Unfortunately, when you return to the color picker, EZHTML resets the slide bars to their default values.
The concept behind EZHTML is attractive enough: A quick online reference for HTML. But the problems we had with the product make it hard to recommend. Many people will find the need to switch between windows and the lack of detailed explanations of the tags a serious hindrance. The sparse detail is a side effect of the product's intended use — it isn't meant to be a comprehensive tutorial, but a quick reference for those who already know HTML. If you're in that category and can work with the program's system requirements and support issues, EZHTML can be a handy tool. For everyone else, the cost of the program might be better spent on a good HTML reference book.


Statistics from the Australian School Students Alcohol and Drug survey of WA showed between 2005-14, the proportion of young people reporting having drunk alcohol in the past month had reduced from 43.5 per cent to 23.9 per cent and in the past week halved from 28.9 per cent to 13.9 per cent.
Curtin University National Drug Institute research fellow Tina Lam said there was no attributable reason for the trend, which appeared to be worldwide, other than possible parental awareness.
"Declines in Australian adolescent drinking over the past decade are consistent with trends observed in other countries such as the US, England, Sweden and Russia," she said.
Dr Lam said young people were equally forgoing drugs.
"A (drugs) survey seems to be telling the same story over the past decade and cannabis remains the most popular drug," she said.
In 2002, 25 per cent of young people had used cannabis, while in 2011 15 per cent of young people reported using the drug.
Dr Lam said while there was more alcohol abstinence, young people who were drinking were doing so at levels considered risky.
"There are also indications that a significant number of young people who choose to drink are drinking at higher levels than before," she said.
Dr Lam warned that young people's brains could be affected by alcohol but the infancy of the research made conclusions about the damage difficult to draw.
"There is emerging evidence that drinking during adolescence is associated with subtle but significant neurological changes which go on to adversely affect a young person's memory and capacity to learn," she said.


text:
> Legal Opinions
Nonstandard Bylaw Amendment
90-0428 / May 1990
GC/HMU:bhs
SSIC: 3700
[redacted]
FROM: Hattie M. Ulan, Associate General Counsel
SUBJ: Nonstandard Bylaw Amendment, [redacted]
(Your April 9, 1990, Memorandum)
You requested our comments on a proposed nonstandard bylaw amendment to Article VIII, Section 7 of the Federal Credit Union Bylaws (Bylaws). We have no legal objections to the proposed amendment, although it does seem to be a bit restrictive.
The proposed amendment imposes a prohibition on directors and supervisory committee members serving as FCU employees. It is very similar to a standard amendment to Article VIII, Section 7. The proposed amendment makes several technical changes to the standard amendment with which we have no problems.
The last sentence of the proposed nonstandard amendment does seem a bit restrictive. The last clause of the standard amendment reads "That no director or committee member or member of the immediate family of a director or committee member may be a paid employee of this credit union." It is proposed to be replaced with "That no director or supervisory committee member, past, present or future may become a paid employee of the credit union." We do not know how the FCU will enforce the restriction against future board members since it does not know who these future board members will be. We also believe a lifetime restriction against directors and supervisory committee members becoming employees is probably not necessary. However, we have no legal problems with the restrictions and defer to your judgment and that of the FCU on this issue.


text:
> Mass Incarceration
Since 1966, CCR has pioneered daring and innovative legal strategies in pursuit of its mission to advance and protect the rights guaranteed by the United States Constitution and the Universal Declaration of Human Rights. Our work began on behalf of civil rights activists, and since then CCR has lent its expertise and support to virtually every popular progressive movement.
Many of the Center's historic victories have established major legal precedents – from Filártiga v. Peña-Irala, which opened U.S. courts for victims of serious human rights violations from anywhere in the world to Rasul v. Bush, which established the right of Guantánamo detainees to challenge their detention.
State of North Carolina v. Joan Little
State of North Carolina v. Joan Little is a 1975 case for which the Center for Constitutional Rights (CCR) provided assistance to the defense. Joan Little was a prisoner who killed her white jailer...
Sosa v. Alvarez-Machain (amicus)
Sosa v. Alvarez-Machain is a lawsuit against Francisco Sosa for wrongly detaining Dr. Humberto Alvarez-Machain. Mr. Alvarez-Machain charged Sosa and his other captors with violating international...
Salas v. United States
Salas v. United States is a case in which the Center for Constitutional Rights (CCR) brought charges against the United States for the 1989 illegal invasion of Panama and subsequent human rights...
People v. Mandel
People v. Mandel is a criminal case in which the Center for Constitutional Rights (CCR) sought to bar evidence of the complainant's prior sexual conduct from a rape trial. To support the growing...
Paul v. Avril
Paul v. Avril is a case in which Haitian President Proper Avril was charged with human rights violations. Months before the September 1991 coup which overthrew Haitian President Jean Bertrand...
National Organization of Women (NOW) v. WABC-TV, FCC, and WRC-TV
NOW v. WABC-TV is a lawsuit in which the Center for Constitutional Rights (CCR) on behalf of NOW challenged the license renewal of WABC-TV in New York City on grounds of sexual discrimination. In the...
Nguyen Da Yen, et al. v. Kissinger
Nguyen Da Yen, et al. v. Kissinger is a class action suit in which the Center for Constitutional Rights (CCR) in cooperation with attorneys in California argued that the detention of Vietnamese...
Martinez-Baca v. Suarez-Mason
Martinez-Baca v. Suarez-Mason is a case in which Argentinean General Guillermo Suarez-Mason was charged with human rights abuses during the military dictatorship in the 1980s. As Commander of the...
In the Matter of Randall
In the Matter of Randall , the INS invoked the McCarran-Walter Act's ideological exclusion provision to force Margaret Randall, a prominent poet and essayist who was born in the United States, to...
In the Matter of Civilian Population of Chiapas
In the Matter of Civilian Population of Chiapas is an emergency complaint filed by the Center for Constitutional Rights (CCR), in conjunction with the Center for Human Rights Legal Action in...
Go to Active Cases
Corporate Human Rights Abuses (18) Apply Corporate Human Rights Abuses filter
Criminalizing Dissent (37) Apply Criminalizing Dissent filter
Discriminatory Policing (11) Apply Discriminatory Policing filter
Drone Killings (2) Apply Drone Killings filter
Guantanamo (24) Apply Guantanamo filter
(-) Remove Mass Incarceration filter Mass Incarceration
Muslim Profiling (8) Apply Muslim Profiling filter
Palestinian Solidarity (7) Apply Palestinian Solidarity filter
Racial Injustice (39) Apply Racial Injustice filter
Support CCR
Join us on the front lines for social justice!