text:
Quality And Structure
: HIGH-SPEED STEEL
The quality of high-speed steel is dependent to a very great extent
upon its structure. The making of the structure begins under the
hammer, and the beneficial effects produced in this stage persist
through the subsequent operations, provided they are properly carried
out. The massive carbides and tungstides present in the ingot are
broken down and uniformly distributed throughout the billet.
To accomplis
this the reduction in area must be sufficient and the
hammer blows should be heavy, so as to carry the compression into
the center of the billet; otherwise, undesirable characteristics
such as coarse structure and carbide envelopes will exist and cause
the steel treater much trouble. Surface defects invisible in the
ingot may be opened up under the hammering operation, in which
event they are chipped from the hot billet.
Ingots are first hammered into billets. These billets are carefully
inspected and all surface defects ground or chipped. The hammered
billets are again slowly heated and receive a second hammering,
known as cogging. The billet resulting therefrom is known as
a cogged billet and is of the proper size for the rolling mill
or for the finishing hammer.
Although it is not considered good mill practice, some manufacturers
who have a large rolling mill perform the very important cogging
operation in the rolling mill instead of under the hammer. Cogging
in a rolling mill does not break up and distribute the carbides and
tungstides as efficiently as cogging under the hammer; another objection
to cogging in the rolling mill is that there is no opportunity to
chip surface defects developed as they can be under the trained eye
of a hammer-man, thereby eliminating such defects in the finished
billet.
The rolling of high-speed steel is an art known to very few. The
various factors governing the proper rolling are so numerous that
it is necessary for each individual rolling mill to work out a
practice that gives the best results upon the particular analysis
of steel it makes. Important elements entering into the rolling
are the heating and finishing temperatures, draft, and speed of
the mill. In all of these the element of time must be considered.
High-speed steel should be delivered from the rolling mill to the
annealing department free from scale, for scale promotes the formation
of a decarbonized surface. In preparation of bars for annealing,
they are packed in tubes with a mixture of charcoal, lime, and
other material. The tubes are sealed and placed in the annealing
furnace and the temperature is gradually raised to about 1,650 deg.F.,
and held there for a sufficient length of time, depending upon the
size of the bars. After very slow cooling the bars are removed
from the tubes. They should then show a Brinnell number of between
235 and 275.
The inspection department ranks with the chemical and metallurgical
departments in safeguarding the quality of the product. It inspects
all finished material from the standpoint of surface defects, hardness,
size and fracture. It rejects such steel as is judged not to meet
the manufacturer's standard. The inspection and metallurgical
departments work hand in hand, and if any department is not functioning
properly it will soon become evident to the inspectors, enabling
the management to remedy the trouble.
The successful manufacture of high-speed steel can only be obtained
by those companies who have become specialists. The art and skill
necessary in the successful working of such steel can be attained
only by a man of natural ability in his chosen trade, and trained
under the supervision of experts. To become an expert operator
in any department of its manufacture, it is necessary that the
operator work almost exclusively in the production of such steel.
As to the heat treatment, it is customary for the manufacturer
to recommend to the user a procedure that will give to his steel
a high degree of cutting efficiency. The recommendations of the
manufacturer should be conservative, embracing fairly wide limits,
as the tendency of the user is to adhere very closely to the
manufacturer's recommendations. Unless one of the manufacturer's
expert service men has made a detailed study of the customer's
problem, the manufacturer is not justified in laying down set rules,
for if the customer does a little experimenting he can probably
modify the practice so as to produce results that are particularly
well adapted to his line of work.
The purpose of heat-treating is to produce a tool that will cut so
as to give maximum productive efficiency. This cutting efficiency
depends upon the thermal stability of the complex hardenites existing
in the hardened and tempered steel. The writer finds it extremely
difficult to convey the meaning of the word hardenite to those that
do not have a clear conception of the term. The complex hardenites
in high-speed steel may be described as that form of solid solution
which gives to it its cutting efficiency. The complex hardenites are
produced by heating the steel to a very high temperature, near the
melting point, which throws into solution carbides and tungstides,
provided they have been properly broken up in the hammering process
and uniformly distributed throughout the steel. By quenching the
steel at correct temperature this solid solution is retained at
atmospheric temperature.
It is not the intention to make any definite recommendations as to
heat-treating of high-speed steel by the users. It is recognized
that such steel can be heat-treated to give satisfactory results
by different methods. It is, however, believed that the American
practice of hardening and tempering is becoming more uniform. This
is due largely to the exchange of opinions in meetings and elsewhere.
The trend of American practice for hardening is toward the following:
First, slowly and carefully preheat the tool to a temperature
of approximately 1,500 deg.F., taking care to prevent the formation
of excessive scale.
Second, transfer to a furnace, the temperature of which is
approximately 2,250 to 2,400 deg.F., and allow to remain in the furnace
until the tool is heated uniformly to the above temperature.
Third, cool rapidly in oil, dry air blast, or lead bath.
Fourth, draw back to a temperature to meet the physical requirements
of the tool, and allow to cool in air.
It was not very long ago that the desirability of drawing hardened
high-speed steel to a temperature of 1,100 deg. was pointed out, and it
is indeed encouraging to learn that comparatively few treaters have
failed to make use of this fact. Many treaters at first contended
that the steel would be soft after drawing to this temperature and
it is only recently, since numerous actual tests have demonstrated
its value, that the old prejudice has been eliminated.
High-speed steel should be delivered only in the annealed condition
because annealing relieves the internal strains inevitable in the
manufacture and puts it in vastly improved physical condition. The
manufacturer's inspection after annealing also discloses defects
not visible in the unannealed state.
The only true test for a brand of high-speed steel is the service that
it gives by continued performance month in and month out under actual
shop conditions. The average buyer is not justified in conducting a
test, but can well continue to purchase his requirements from a
reputable manufacturer of a brand that is nationally known. The
manufacturer is always willing to cooperate with the trade in the
conducting of a test and is much interested in the information
received from a well conducted test. A test, to be valuable, should be
conducted in a manner as nearly approaching actual working conditions
in the plant in which the test is made as is practical. In conducting
a test a few reputable brands should be allowed to enter. All tools
entered should be of exactly the same size and shape. There is much
difference of opinion as to the best practical method of conducting
a test, and the decision as to how the test should be conducted
should be left to the customer, who should cooperate with the
manufacturers in devising a test which would give the best basis
for conclusions as to how the particular brands would perform under
actual shop conditions.
The value of the file test depends upon the quality of the file and
the intelligence and experience of the person using it. The file
test is not reliable, but in the hands of an experienced operator,
gives some valuable information. Almost every steel treater knows
of numerous instances where a lathe tool which could be touched
with a file has shown wonderful results as to cutting efficiency.
Modern tool-steel practice has changed from that of the past, not
by the use of labor-saving machinery, but by the use of scientific
devices which aid and guide the skilled craftsman in producing a
steel of higher quality and greater uniformity. It is upon the
intelligence, experience, and skill of the individual that quality
of tool steel depends.
Pyrometry And Pyrometers
Knowing What Takes Place
How are we to know if we have given a piece of steel the very best possible treatment? The best method is by microscopic examination of polished and etched sections, but this requires a certain expense for laboratory equipment and upkeep, which m... Lathe And Planer Tools
FORGING.--Gently warm the steel to remove any chill, is particularly desirable in the winter, then heat slowly and carefully to a scaling heat, that is a lemon heat (1,800 to 2,000 deg.F.), and forge uniformly. Reheat the tool for further forging di... Lathe And Planer Tools
TO FORGE.--Gently warm the steel to remove any chill is particularly desirable in the winter. Then heat slowly and carefully to a scaling heat, that is a lemon heat (1,800 deg.-2,000 deg.F.), and forge uniformly. Reheat the tool for further forging ... Leeds And Northrup Optical Pyrometer
The principles of this very popular method of measuring temperature are sketched in Fig. 123. The instrument is light and portable, and can be sighted as easily as an opera glass. The telescope, which is held in the hand, weighs only 25 oz.;... Liberty Motor Connecting Rods
The requirements for materials for the Liberty motor connecting rods are so severe that the methods of securing the desired qualities will be of value in other lines. The original specifications called for chrome-nickel but the losses due to the dif... Machineability
Reheating for machine ability was done at 100 deg. less than the drawing temperature, but the time of soaking is more than double. After both drawing and reheating, the blanks were buried in lime where they remain, out of contact with the air, until... Making Steel Balls
Steel balls are made from rods or coils according to size, stock less than 9/16-in. comes in coils. Stock 5/8-in. and larger comes in rods. Ball stock is designated in thousandths so that 5/8-in. rods are known as 0.625-in. stock. Steel for makin... Manganese
MANGANESE is a metal much like iron. Its chemical symbol is Mn. It is somewhat more active than iron in many chemical changes--notably it has what is apparently a stronger attraction for oxygen and sulphur than has iron. Therefore the metal is used ... Manganese
Manganese adds considerably to the tensile strength of steel, but this is dependent on the carbon content. High carbon materially adds to the brittleness, whereas low-carbon, pearlitic-manganese steels are very tough and ductile and are not at all b... Molybdenum
Molybdenum steels have been made commercially for twenty-five years, but they have not been widely exploited until since the war. Very large resources of molybdenum have been developed in America, and the mining companies who are equipped to produce... Mushet And Bessemer
That Mushet was "used" by Ebbw Vale against Bessemer is, perhaps, only an assumption; but that he was badly treated by Ebbw Vale is subject to no doubt. Mushet's business capacity was small but it is difficult to believe that he could have been so f... Nickel
Nickel may be considered as the toughest among the non-rare alloys now used in steel manufacture. Originally nickel was added to give increased strength and toughness over that obtained with the ordinary rolled structural steel and little attempt wa... Nickel-chromium
A combination of the characteristics of nickel and the characteristics of chromium, as described, should obviously give a very excellent steel as the nickel particularly affects the ferrite of the steel and the chromium the carbon. From this combina... Non-shrinking Oil-hardening Steels
Certain steels have a very low rate of expansion and contraction in hardening and are very desirable for test plugs, gages, punches and dies, for milling cutters, taps, reamers, hard steel bushings and similar work. It is recommended that for for... Oil-hardening Steel
Heat slowly and uniformly to 1,450 deg.F. and forge thoroughly. Do not under any circumstances attempt to harden at the forging heat. After cooling from forging reheat to about 1,450 deg.F. and cool slowly so as to remove forging strains. ... Open Hearth Process
The open hearth furnace consists of a big brick room with a low arched roof. It is charged with pig iron and scrap through doors in the side walls. Through openings at one end of the furnace come hot air and gas, which burn in the furnace, prod... Optical System And Electrical Circuit Of The Leeds & Northrup Optical Pyrometer
For extremely high temperature, the optical pyrometer is largely used. This is a comparative method. By means of the rheostat the current through the lamp is adjusted until the brightness of the filament is just equal to the brightness of the image ... Phosphorus
PHOSPHORUS is an element (symbol P) which enters the metal from the ore. It remains in the steel when made by the so-called acid process, but it can be easily eliminated down to 0.06 per cent in the basic process. In fact the discovery of the basic ... Phosphorus
Phosphorus is one of the impurities in steel, and it has been the object of steel makers for years to eliminate it. On cheap grades of steel, not subject to any abnormal strain or stress, 0.1 per cent phosphorus is not objectionable. High phosphorus... Pickling The Forgings
The forgings were then pickled in a hot solution of either niter cake or sulphuric acid and water at a temperature of 170 deg.F., and using a solution of about 25 per cent. The solution was maintained at a constant point by taking hydrometer reading... Piston Pin
The piston pin on an aviation engine must possess maximum resistance to wear and to fatigue. For this reason, the piston pin is considered, from a metallurgical standpoint, the most important part on the engine to produce in quantities and still pos... Placing Of Pyrometers
The fourth method of manufacturing steel is by the electric furnace. These furnaces are of various sizes and designs; their size may be sufficient for only 100 lb. of metal--on the other hand electric furnaces for making armor-plate steel will hold ...


text:
Home › cinema › Debbie Reynolds auctions legendary memorabilia collection: costumes worn by Caron, Streisand, Monroe, Tallchief, Charisse, Hayworth…
Debbie Reynolds auctions legendary memorabilia collection: costumes worn by Caron, Streisand, Monroe, Tallchief, Charisse, Hayworth…
Movie costumes worn by Charlie Chaplin, Judy Garland and Marilyn Monroe will go up for sale in June from a collection belonging to fellow actress Debbie Reynolds.
Monroe's subway dress from The Seven Year Itch, Judy Garland's blue cotton dress and ruby red slippers from The Wizard of Oz and Charlie Chaplin's Tramp bowler hat are among the 3,500 items up for auction in Beverly Hills on June 18.
Barbra Streisand's sleeveless gold velvet, jeweled gown from Hello, Dolly – said to be the most expensive dress ever made for a film – will also be up for sale as will Audrey Hepburn's Ascot dress from My Fair Lady and Julie Andrews' costumes from The Sound of Music.
Reynolds, 79, who starred in such films as "Singin' in the Rain" and "The Unsinkable Molly Brown," has been collecting film memorabilia for more than 50 years.
Aside from the iconic items above, there are also many costumes from musicals, iconic for those who have seen the routines over and over throughout the years. Here are some of the costumes made for the leading ladies, astonishingly owned by one of them, Debbie Reynolds.
From top to bottom: American in Paris (Leslie Caron); The Barkley's of Broadway (Ginger Rogers); Broadway Melody of 1940 (Eleonor Powell); Bye Bye Birdie (Janet Leigh); Cover Girl (Rita Hayworth); Easter Parade (Ann Miller); Funny Girl (Barbra Streisand); Hello Dolly! (Barbra Streisand); Million Dollar Mermaid (Maria Tallchief); Pal Joey (Kim Novak); Salomé (Rita Hayworth); Singin' in the Rain (Cyd Charisse); Singin' in the Rain (Debbie Reynolds); The Sound of Music (Julie Andrews); There's No Business Like Show Business (Marilyn Monroe); There's No Business Like Show Business (Mitzi Gaynor)
Filed Under: cinema, design Tagged With: Audrey Hepburn, Barbra Streisand, Charlie Chaplin, Debbie Reynolds, gay, Judy Garland, Julie Andrews, Marilyn Monroe, My Fair Lady, Singin' in the Rain
Post a comment... Cancel reply
Russian ballerina Maya Plisetskaya dies at 89
Photographer Barbara Luisi brings the mystique of Puglia's olive trees to New York
Mauro Bigonzetti's Progetto Händel, with Zakharova and Bolle, wows La Scala
Mauro Bigonzetti's new work for La Scala: preview of Progetto Händel
Balanchine's Dream sprinkles its magic fairy dust over La Scala for the last time
Sarah Lamb on débuting at La Scala in Manon with Claudio Coviello
Tamara Rojo and Isaac Hernández: "a possible conflict of interest"?
Tsiskaridze: Real ballet dancers are trained in Paris, Moscow or St Petersburg
Alessandra Ferri returns to dance the end of her marriage
Would you like an email
when we publish a new post?

redpajama_set_name: RedPajamaCommonCrawl


Fan Kuan ( (fl. 990–1020) was a Chinese landscape painter of the Song Dynasty (960–1279). Almost no biographical details survive about him. He modeled his early work after that of the artist Li Cheng (919–967), but later concluded that nature was the only true teacher. He spent the rest of his life as a recluse in the Shanxi mountains. Little else is known of his life, except the admiration and love he had for viewing the mountains of northern China.
...foreground, presented at eye level, is executed in crisp, well-defined brush strokes.
Jutting boulders, tough scrub trees, a mule train on the road, and a temple in the forest on the cliff are all vividly depicted.
There is a suitable break between the foreground and the towering central peak behind, which is treated as if it were a backdrop, suspended and fitted into a slot behind the foreground.
There are human figures in this scene, but it is easy to imagine them overpowered by the magnitude and mystery of their surroundings.
Fan Kuan was listed as the 59th of the 100 most important people of the last millennium by Life magazine.
Ebrey, Cambridge Illustrated History of China, 162.
Ebrey, Cambridge Illustrated History of China, 163.
Ebrey, Cambridge Illustrated History of China, 162–163.
Ebrey, Patricia Buckley (1999). The Cambridge Illustrated History of China. Cambridge: Cambridge University Press. ISBN 0-521-66991-X (paperback).
Liu, Pingheng (1989). Shui mo yin yun, qi yun sheng dong de Zhongguo hui hua (水墨絪縕, 氣韻生動的中國繪畫) = Misty and Lively Chinese Painting. Taibei Shi: Guo li li shi bo wu guan (國立歷史博物館).


Where to aim for this year? Decisions, decisions!!
It's been two years since I wrote my 10 places I want to visit soon post and I have managed to tick 8/10 places off my list! I'd say that's mission (nearly) complete! 2017 was a fab year travel wise as I managed to divide the year into two month periods and spread the holidays out that way.
This year, with one month and one trip down, and 11 more to fill, there is plenty of time for other adventures and even more time to rest. I am keeping my list quite short as my new job as cabin crew starts soon so I am setting time aside for that, and who knows where that will take me!
Pizza and pasta overload? Yes please! The trip is already booked and I can't wait, only 4 weeks to go! Without a doubt I will be trying to go to the top 10 attractions and as many Roman ruins as I can to feel cultured.
I love the fact that it's always summer somewhere in the world, and it's my favourite season by a mile. Santorini and Mykonos look so pretty and relaxing, I feel like I just need to go to the Greek islands.
I definitely missed out when my family took a trip to the Algarve and now I know it's only a 3 hour flight away from home sunshine is fairly close by. With hidden beaches and colourful streets it's easy to see why Portugal is listed up top as one of the recommended places to visit this year.
Who wouldn't want to go?! It wouldn't take long for me to become even more obsessed with sunsets and palm trees and the rice terraces would be amazing to see!
Although after Kilimanjaro I said I would never wear my boots again, I am hoping there will be some good sports gear / walking boot weather for a few long hikes in the summer time. I would love to walk up Arthur's seat in Edinburgh or venture out to the Scottish highlands.
So that's my wish list! Let's see how far I can get into it.
On a different note, travel trends for 2018 seem to be a bit more further a field than in previous years, with countries like Japan, Cuba, Chile and Portugal being listed on most travel websites. It's exciting to see different places becoming more popular, even though I am into my capital cities and super touristy landmarks at the minute!
Can't wait to hear how Rome was! Will you maybe do a travel list about what to pack on certain trips as well if you haven't already?


Blasting onto Oblivious Pop is LA indie pop artist Layne. Her latest single Somebody is pristinely produced, adorned with spacious synths and percussion. Layne's voice complements the production, bringing this song over the top. This single is the first release after her 6 song EP titled "Warrior." Press play an cruise down the fast lane below!


Webroot delivers cybersecurity for endpoint, mobile and web. Designed with MSPs, resellers, distributors and other providers in mind, the Webroot® Channel Edge® Program offers competitive margins, recurring revenue, lower operational costs, improved productivity, and enablement tools for competitive advantage. Through its web-based management console or integration with RMM and PSA platforms, Webroot brings cloud-driven protection through partners to customers.
Partnering with businesses of all sizes, Webroot offers security solutions that protect against sophisticated threats—no matter how or where users connect.


Tennis style continues after the match. The RF Men's Long-Sleeve Polo ups the ante with the comfortable coverage of soft, long-sleeves. A ribbed collar and an adjustable placket offer a classic finish. Dri-FIT technology helps keep you dry and comfortable. Ribbed collar and sleeve cuffs help secure your fit. 2-button placket lets you customize your fit. Knit fabric has a soft feel. Hem vents provide a comfortable fit.


Dstv Installers MaOospoortyfield Park - Great Specials | So much more!
All of your DSTV, OVHD & CCTV repairs in and around MaOospoortyfield Park are only a call away at Dstv Installers MaOospoortyfield Park.
And Dstv Installers MaOospoortyfield Park will ensure that our services are highly efficient so that you may be satisfied with the end results.


Somach Simmons & Dunn proposes the following actions as the next steps in the Preliminary Process. The dates are tentative and may be adjusted to account for the Commissioners' schedules, changes in schedules with regard to other regulatory matters, or other intervening events. The Arizona Power Authority (APA) will also receive input from potential and existing customers before adopting a schedule.


Geographic Information Systems (GIS) is a technology that is set apart from other information technologies by the need to identify 'where' or location. Our members have diverse interests, but share similar geospatial challenges. ILGISA brings together the GIS community of Illinois through an annual conference, regional meetings, workshops, webinars, GeoTalk blog and the GIS Jobs Center. ILGISA serves GIS professionals from the public and private sector. We offer technical training and education opportunities, awards for service, an annual student scholarship and map competition.
CHECK OUT ILGISA'S NEW BLOG "GEOTALK"
DO YOU HAVE A GIS RELATED QUESTION?
Geographic Information Systems (GIS) is a technology that is set apart from other information technologies by the need to identify 'where' or location. Our members have diverse interests, but share similar geospatial challenges. ILGISA brings together the GIS community of the State of Illinois through an annual conference, regional meetings and the publication of Illinois GIS Notes. We offer technical training and education opportunities, awards for service, an annual student scholarship and map competition.


text:
Q: What did Stack Exchange use to build & do the data shaping for the Stack Exchange API V2.2? I know that Stack Exchange is a Microsoft shop. I know you are using Asp.Net MVC 5 and SQL Server 2014 CTP2 from this Which tools and technologies are used to build the Stack Exchange Network?.
However, the API you expose does some interesting things. You can shape your data, get a guid back and then use that guid to query the data and get the same result set back. Is Stack Overflow using OData and perhaps typeless models to shape the data on the backend or are you doing something else?

redpajama_set_name: RedPajamaStackExchange


EXTRACT from an article by Jamie Freestone, PhD student in literature, The University of Queensland.
SOURCE: Freestone, Jamie. "To get Conservative Climate Contrarians to Really Listen, Try Speaking Their Language." The Conversation, 16 May 2018.


Simple words by Alan Watts.
I own OhSo. Took 20 years to understand what an online community should look like. And, of course, it is and always will be a work-in-progress.
A platform made with love in the hope we will contribute to a more people-friendly, animal-friendly and environmentally-friendly world.


NJCA is a statewide grassroots organization that fights for social, racial and economic justice. We combine on the ground organizing, legislative advocacy, and electoral campaigns to win progressive policy and political victories that make a difference in people's lives.
and moderate-income individuals across New Jersey to empower people to take control of their economic futures.


text:
Home>Sinclair Broadcast Group: Republicans and Democrats disagree on COVID-stimulus allocations to state governments
Sinclair Broadcast Group: Republicans and Democrats disagree on COVID-stimulus allocations to state governments
By Ellie Bufkin, Sinclair Broadcast Group
WASHINGTON (SBG) - Some Republicans are claiming that the $1.9 trillion COVID-19 stimulus plan, dubbed the American Rescue Plan, offers large "bail-outs" to cities and states controlled by Democrats. Director of state and local policy at conservative think-tank The Manhattan Institute Michael Hendrix says that low unemployment rates in several states led by Republican governors kept them from big payouts.
"Some states have seen red, especially those dependent on energy and mining revenue, like Alaska. Declining tourism hurt Florida's budget to the tune of $2 billion, but the state's low unemployment means it will miss out on $2 billion in Biden bucks it would otherwise get if aid were simply allocated based on population," Hendrix wrote in The New York Post. "Nine of the ten states with the lowest unemployment in America are led by Republican governors, and they are the ones punished under the relief bill's formula."
The most recent bill will provide just under $200 billion in state and local government funding. Unlike the first two COVID-19 relief bills passed last year, the American Rescue Plan assesses unemployment numbers to decide the amount given in relief. It sets a baseline payout at $500 million per state and then adjusts the remainder of the funding based on the rate of unemployment at the close of 2020. Both relief bills last year paid out money to state and local governments based on populations.
Hendrix says that the Democrat-controlled states with the strictest lockdown orders during the COVID-19 pandemic are receiving the biggest windfall from the stimulus package, which President Joe Biden signed last week.
The U.S. Bureau of Labor and Statistics reports that California currently has the second-highest unemployment rate among the 50 states and the District of Columbia. At 9%, the rate is 3.5% higher than at the same point in 2020, in the early days of the pandemic. It is higher than the 8.2% reported in November.
The Associated Press reported in January that despite California's high unemployment rate, the state was "swimming in money." Democratic Gov. Gavin Newsom reported a $227 billion spending plan that included a $15 billion one-time surplus. California saw a 4.2% increase in general fund revenues in 2020 than in 2019. Newsom pointed to the highest earners in the state as boosters of the bottom line, noting a record $185 billion in capital gains income during the pandemic. That income resulted in $18.5 billion in state tax revenue.
"Folks at the top are doing pretty damn well," Newsom said.
That number helped usher in the biggest budget in the state's history. But the financial health of the state did not have a bearing on the distribution of funds via the American Rescue Plan, which targeted cities and states with the highest unemployment rate for the largest payouts.
The funds were built into the plan based on unemployment rates reported at the conclusion of 2020, which put populous states on the rebound from the pandemic at a financial disadvantage. Florida, with the third-highest population in the country, is set to receive $17.62 billion while boasting a 4.8% unemployment rate. New York, with 2 million fewer residents, will receive $23.8 billion while reporting an 8.8% unemployment rate.
Adam Andrzejewski, an advocate for government spending transparency and founder of OpenTheBooks, says that the inequity of distribution also extended to tribal governments, who account for a small portion of the population compared to many states with healthier unemployment numbers and large populations.
"Not enough attention has gone to the $20 billion flowing to the tribal governments. Tribal governments have 3 million Native Americans, and that includes the numbers in Alaska and Hawaii," he said during an interview with The National Desk. "Florida has seven times the population and is getting $2 billion less."
"Speaker Nancy Pelosi's House Democrats changed the formula, they changed the allocation from the traditional formula that was based on population to the unemployment rate in the fourth quarter," he said. "This had the effect of shifting dollars to states like California, New York, Illinois, and New Jersey – states whose governors had their economies more locked down than states like Florida. Florida is the big loser in this. They'll lose about $2 billion. New York, California, they'll reap an extra $6 billion on the allocation change."
Democratic governor of Connecticut Ned Lamont says that the notion that the bill contained a "blue-state bailout" was not true.
"That's absolutely nonsense don't give me this blue-state bail-out stuff," Lamont told Bloomberg Wall Street Week. Lamont said the $4.35 billion stimulus headed for Connecticut would prevent layoffs and help the state confidently set the budget for the next two years. He says that some of that money will be spent on education.
Democrats have said that money set aside for states in previous stimulus packages was too specifically allocated for special programslike Medicaid and prevented states from addressing COVID-19 and economic concerns that were specific to individual states.
"This gives us some certainty to make some investments we need," Lamont continued, saying that it would give more broad support to residents. "More people can get health insurance."


Organization to close racing season Sept. 23 with Kinsmen and Kinettes Final at Souris Race Track.
Jay Burton (pictured in the car far left) was one of the winners at Sunday's PASCAR series event on Sunday, but a 56-point performance vaulted Dave Dickenson to the top of the season leaderboard, giving him sole possession of the lead.
There's a new leader on top with one race to go in the Prairie Association of Stock Car Auto Racing (PASCAR) standings.
Dave Dickenson racked up 56 points in Sunday's Tri Wave Race in Souris, vaulting him into sole possession of first place.
Heading into the last race of the year, which will be the Kinsmen and Kinettes Final Race Day event on Sept. 23, Dickenson is in first place with 464 points, followed by Nathan McPhail/Darcy Koop with 370 and Shawn McPhail at 350.
Bicklmeier says as long as Dickenson finishes the final race of the year, he should win the overall championship. That would end Jay Burton's reign on top. Burton has been the only champion PASCAR has known since their inception a few years ago.
Last weekend's race featured a couple of super stock race cars, as well as some sprint cars, but PASCAR tracks the points for stock cars only.
There were also three brothers battling on the track Sunday afternoon – Mark, Jamie and Dan Devloo. Interestingly they all raced Dodge Neons on the track.
Bicklmeier says he expects a full slate of cars to come out for the final race of the year on Sept. 23. The fans are welcome to come out and cheer on the racers on final time.
The season will officially end with their year-end banquet Oct. 14.
For more information on PASCAR check out their Facebook page or visit www.pascar.ca.


We love this geometric print that is silk-light and stuns with a subtle shimmer. Simple slip-on style, it comes with a matching self-tie belt. The relaxed cut and silky fabric combine to make this dress drape beautifully, skimming any flaws. With front pockets, a button placket, side splits, long sleeves, it is the perfect modern dress for any occasion.
Dress is rated 4.5 out of 5 by 11.
Rated 5 out of 5 by Glibbers from Lovely dress Very easy to wear classic style. Dressy enough for a wedding/evening out but relaxed enough for daytime too. Lovely soft silky fabric which doesn't appear to crease as it came out of the box ready to wear!
Rated 4 out of 5 by Did 57 from Nice dress. I liked the dress and style, but returned it because it was a little to tight in the upper arm when bending forward to pick up anything.
Rated 5 out of 5 by Archie100 from Stunning dress and fit This dress doesn't disappoint. Great fit on the shoulders and length. Beautiful material. Very pleased with the purchase.
Rated 5 out of 5 by HRS 60 from Good fit,very slimming. This style is very slimming and the dress is versatile.Suitable for all occasions.
Rated 5 out of 5 by Eiles from Great material Looks delightful on a d can be worn at all kinds of occasions.
Rated 5 out of 5 by MRS1 from Simply perfect Love material, style everything except for me the navy was too dark an my husband said it made me look washed out. I tend to suit cream, pastel or white colours. Otherwise perfect.


text:
Q: Dealing with a longer running process in WCF In the app I'm currently working on we are using a couple of WCF services with a lot of methods. Until now, all methods are very short running, often just getting some data. I've just added a method that takes a way longer time to run.
I do not want to raise the timeout in the config, because 1 minute is long enough for all other methods on the service.
What is the best way to deal with 1 longer running method? And how do I provide feedback that it is still running?

A: A long running task should really be farmed off as an asynchronous call, that could then be polled for status (or an event through a duplex connection).  For a really long running task, you might even want to push it into something like Windows Workflow.

A: Combining WCF with WF (Workflow Foundation) seems like the best option here. Workflow Foundation gives you lots of goodies, including long-term persistence over the lifetime of your long-running process.
In .NET 3.5, it's possible to do so, but clumsy and a lot of work.
Here are a few links for this topic:

*

*http://channel9.msdn.com/posts/mwink/Introduction-to-Workflow-Services-building-WCF-Services-with-WF/

*http://code.msdn.microsoft.com/WorkflowServices

*http://msdn.microsoft.com/en-us/magazine/cc164251.aspx
With .NET 4.0, these "WorkflowServices" will be a big part of the new WF/WCF 4.0 package. You should basically be able to expose an interface for any workflow as a WCF service. Sounds very promising, haven't had a chance to try it myself.
Some links for the new stuff:

*

*WCF / WF 4.0 and "Dublin"

*http://blogs.msdn.com/murrayg/archive/2009/06/23/windows-azure-s-net-workflow-service-to-support-net-4-0-workflows.aspx

*http://channel9.msdn.com/shows/10-4/10-4-Episode-24-Monitoring-Workflow-Services/

*http://channel9.msdn.com/shows/10-4/10-4-Episode-16-Windows-Workflow-4/
Marc


text:
package com.gemstone.gemfire.internal.cache.tier.sockets;

import java.io.ByteArrayInputStream;
import java.io.DataInput;
import java.io.DataInputStream;
import java.io.DataOutput;
import java.io.IOException;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map.Entry;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;

import com.gemstone.gemfire.DataSerializer;
import com.gemstone.gemfire.GemFireIOException;
import com.gemstone.gemfire.InternalGemFireError;
import com.gemstone.gemfire.cache.query.CqQuery;
import com.gemstone.gemfire.cache.util.ObjectSizer;
import com.gemstone.gemfire.distributed.internal.InternalDistributedSystem;
import com.gemstone.gemfire.i18n.LogWriterI18n;
import com.gemstone.gemfire.internal.DSCODE;
import com.gemstone.gemfire.internal.InternalDataSerializer;
import com.gemstone.gemfire.internal.Sendable;
import com.gemstone.gemfire.internal.cache.CachedDeserializable;
import com.gemstone.gemfire.internal.cache.CachedDeserializableFactory;
import com.gemstone.gemfire.internal.cache.Conflatable;
import com.gemstone.gemfire.internal.cache.EntryEventImpl;
import com.gemstone.gemfire.internal.cache.Token;
import com.gemstone.gemfire.internal.cache.EntryEventImpl.NewValueImporter;
import com.gemstone.gemfire.internal.cache.EntryEventImpl.SerializedCacheValueImpl;
import com.gemstone.gemfire.internal.cache.EnumListenerEvent;
import com.gemstone.gemfire.internal.cache.EventID;
import com.gemstone.gemfire.internal.cache.LocalRegion;
import com.gemstone.gemfire.internal.cache.WrappedCallbackArgument;
import com.gemstone.gemfire.internal.cache.ha.HAContainerRegion;
import com.gemstone.gemfire.internal.cache.lru.Sizeable;
import com.gemstone.gemfire.internal.cache.tier.MessageType;
import com.gemstone.gemfire.internal.cache.versions.VersionTag;
import com.gemstone.gemfire.internal.offheap.SimpleMemoryAllocatorImpl;
import com.gemstone.gemfire.internal.shared.Version;

/**
 * Class ClientUpdateMessageImpl is a message representing a cache
 * operation that is sent from a server to an interested client.
 *
 * @author Barry Oglesby
 *
 * @since 4.2
 */
public class ClientUpdateMessageImpl implements ClientUpdateMessage, Sizeable, NewValueImporter
{
  private static final long serialVersionUID = 7037106666445312400L;

  /**
   * The operation performed (e.g. AFTER_CREATE, AFTER_UPDATE, AFTER_DESTROY,
   * AFTER_INVALIDATE, AFTER_REGION_DESTROY)
   */
  protected EnumListenerEvent _operation;

  /**
   * The name of the Region that was updated
   */
  private String _regionName;

  /**
   * The key that was updated
   */
  private Object _keyOfInterest;

  /**
   * The new value
   */
  private Object _value;

  /**
   * Whether the value is a serialized object or just a byte[]
   */
  protected byte _valueIsObject;

  /**
   * The callback argument
   */
  protected Object _callbackArgument;

  /**
   * The membership id of the originator of the event
   */
  protected ClientProxyMembershipID _membershipId;

  /**
   * The event id of the event
   */
  protected EventID _eventIdentifier;

  /**
   * The GemFire LogWriterI18n
   */
  protected LogWriterI18n _logger;

  private boolean _shouldConflate = false;

  /**
   * To determine if this client message is part of InterestList.
   */
  private volatile boolean _isInterestListPassed;

  /**
   * To determine if this client message is part of CQs.
   */
  private volatile boolean _hasCqs = false;

  /**
   * Map containing clientId and the cqs satisfied for the client.
   */
  private ClientCqConcurrentMap _clientCqs = null;

  /**
   * Client list satisfying the interestList who want values
   */
  private volatile Set<ClientProxyMembershipID> _clientInterestList;

  /**
   * Client list satisfying the interestList who want invalidations
   */
  private volatile Set<ClientProxyMembershipID> _clientInterestListInv;

  /**
   * To determine if the message is result of netLoad.
   * If its net load the message is not delivered to the client that has
   * requested the load.
   */
  private transient boolean _isNetLoad = false;

  /**
   * Represents the changed bytes of this event's _value.
   *
   * @since 6.1
   */
  private byte[] deltaBytes = null;

  private VersionTag versionTag;

  /* added up all constants and form single value */
  private static final int CONSTANT_MEMORY_OVERHEAD;

  /**
   * Constructor.
   *
   * @param operation
   *          The operation performed (e.g. AFTER_CREATE, AFTER_UPDATE,
   *          AFTER_DESTROY, AFTER_INVALIDATE, AFTER_REGION_DESTROY)
   * @param region
   *          The Region that was updated
   * @param keyOfInterest
   *          The key that was updated
   * @param value
   *          The new value
   * @param valueIsObject false if value is an actual byte[] that isn't serialized info
   * @param memberId
   *          membership id of the originator of the event
   * @param callbackArgument
   *          The callback argument
   * @param logger
   *          The GemFire LogWriterI18n
   */
  public ClientUpdateMessageImpl(EnumListenerEvent operation,
      LocalRegion region, Object keyOfInterest, Object value,
      byte valueIsObject, Object callbackArgument,
      ClientProxyMembershipID memberId, EventID eventIdentifier,
      LogWriterI18n logger) {
    this(operation, region, keyOfInterest, value, null, valueIsObject,
        callbackArgument, memberId, eventIdentifier, logger, null);
  }

  public ClientUpdateMessageImpl(EnumListenerEvent operation,
      LocalRegion region, Object keyOfInterest, Object value,
      byte[] delta, byte valueIsObject, Object callbackArgument,
      ClientProxyMembershipID memberId, EventID eventIdentifier,
      LogWriterI18n logger, VersionTag versionTag) {
//    this._clientInterestList = new HashSet();
//    this._clientInterestListInv = new HashSet();
    this._operation = operation;
    this._regionName = region.getFullPath();
    this._keyOfInterest = keyOfInterest;
    this._value = value;
    this._valueIsObject = valueIsObject;
    this._callbackArgument = callbackArgument;
    this._membershipId = memberId;
    this._eventIdentifier = eventIdentifier;
    this._logger = logger;
    this._shouldConflate = (isUpdate() && region.getEnableConflation());
    this.deltaBytes = delta;
    this.versionTag = versionTag;
  }

  /**
   * Constructor used by ClientInstantiatorMessage
   *
   * @param operation
   *          The operation performed (e.g. AFTER_CREATE, AFTER_UPDATE,
   *          AFTER_DESTROY, AFTER_INVALIDATE, AFTER_REGION_DESTROY)
   * @param memberId
   *          membership id of the originator of the event
   * @param eventIdentifier
   *          EventID of this message
   * @param logger
   *          The GemFire LogWriterI18n
   */
  protected ClientUpdateMessageImpl(EnumListenerEvent operation,
      ClientProxyMembershipID memberId, EventID eventIdentifier,
      LogWriterI18n logger) {
//    this._clientInterestList = new HashSet();
//    this._clientInterestListInv = new HashSet();
    this._operation = operation;
    this._membershipId = memberId;
    this._eventIdentifier = eventIdentifier;
    this._logger = logger;
  }

  /**
   * default constructor
   *
   */
  public ClientUpdateMessageImpl() {

  }

  public String getRegionName() {
    return this._regionName;
  }

  public Object getKeyOfInterest() {
    return this._keyOfInterest;
  }

  public EnumListenerEvent getOperation() {
    return this._operation;
  }

  public Object getValue() {
    return this._value;
  }

  public boolean valueIsObject() {
    return (this._valueIsObject == 0x01);
  }

  /**
   * @return the callback argument
   */
  public Object getCallbackArgument() {
    return this._callbackArgument;
  }

  /// Conflatable interface methods ///

  /**
   * Determines whether or not to conflate this message. This method will answer
   * true IFF the message's operation is AFTER_UPDATE and its region has enabled
   * are conflation. Otherwise, this method will answer false. Messages whose
   * operation is AFTER_CREATE, AFTER_DESTROY, AFTER_INVALIDATE or
   * AFTER_REGION_DESTROY are not conflated.
   *
   * @return Whether to conflate this message
   */
  public boolean shouldBeConflated()
  {
    // If the message is an update, it may be conflatable. If it is a
    // create, destroy, invalidate or destroy-region, it is not conflatable.
    // Only updates are conflated. If it is an update, then verify that
    // the region has conflation enabled.
    return this._shouldConflate;
  }

  /**
   * {@inheritDoc}
   */
  public boolean shouldBeMerged() {
    return false;
  }

  /**
   * {@inheritDoc}
   */
  public boolean merge(Conflatable existing) {
    throw new AssertionError("not expected to be invoked");
  }

  public String getRegionToConflate()
  {
    return this._regionName;
  }

  public Object getKeyToConflate()
  {
    return this._keyOfInterest;
  }

  public Object getValueToConflate()
  {
    return this._value;
  }

  public void setLatestValue(Object value)
  {
    // does this also need to set _valueIsObject
    this._value = value;
  }

  /// End Conflatable interface methods ///

  public ClientProxyMembershipID getMembershipId()
  {
    return this._membershipId;
  }

  /**
   * Returns the unqiue event eventifier for event corresponding to this
   * message.
   *
   * @return the unqiue event eventifier for event corresponding to this
   *         message.
   */
  public EventID getEventId()
  {
    return this._eventIdentifier;
  }

  public VersionTag getVersionTag() {
    return this.versionTag;
  }

  public boolean isCreate()
  {
    return this._operation == EnumListenerEvent.AFTER_CREATE;
  }

  public boolean isUpdate()
  {
    return this._operation == EnumListenerEvent.AFTER_UPDATE;
  }

  public boolean isDestroy()
  {
    return this._operation == EnumListenerEvent.AFTER_DESTROY;
  }

  public boolean isInvalidate()
  {
    return this._operation == EnumListenerEvent.AFTER_INVALIDATE;
  }

  public boolean isDestroyRegion()
  {
    return this._operation == EnumListenerEvent.AFTER_REGION_DESTROY;
  }

  public boolean isClearRegion()
  {
    return this._operation == EnumListenerEvent.AFTER_REGION_CLEAR;
  }

  public boolean isInvalidateRegion()
  {
    return this._operation == EnumListenerEvent.AFTER_REGION_INVALIDATE;
  }

  public boolean isClientCompatible()
  {
    return false;
  }

  public Message getMessage(CacheClientProxy proxy, boolean notify) throws IOException
  {
    // the MessageDispatcher uses getMessage(CacheClientProxy, byte[]) for this class
    throw new Error("ClientUpdateMessage.getMessage(proxy) should not be invoked");
  }

  /**
   * Returns a Message generated from the fields of this
   * ClientUpdateMessage.
   *
   * @param latestValue
   *          Object containing the latest value to use. This could be the
   *          original value if conflation is not enabled, or it could be a
   *          conflated value if conflation is enabled.
   * @return a Message generated from the fields of this
   *         ClientUpdateMessage
   * @throws IOException
   * @see com.gemstone.gemfire.internal.cache.tier.sockets.Message
   */

  protected Message getMessage(CacheClientProxy proxy, byte[] latestValue) throws IOException
  {
    Version clientVersion = proxy.getVersion();
    byte[] serializedValue = null;
    Message message = null;
    boolean conflation = false;
    conflation = (proxy.clientConflation == HandShake.CONFLATION_ON)
        || (proxy.clientConflation == HandShake.CONFLATION_DEFAULT && this
            .shouldBeConflated());

    if(latestValue != null) {
      serializedValue = latestValue;
    }
    else {
      /**
       * This means latestValue is instance of Delta, and its delta has already
       * been extracted and put into deltaBytes. We serialize the value.
       */
      if (this.deltaBytes == null || isCreate()) {
        // Delta could not be extracted. We would need to send full value.
        // OR A CREATE operation has a value which has delta. But we send full value for CREATE.
        // So serialize it.
        this._value = serializedValue = CacheServerHelper
            .serialize(latestValue);
      }
    }
    if (clientVersion.compareTo(Version.GFE_70) >= 0) {
      message = getGFE70Message(proxy, serializedValue, conflation, clientVersion);
    } else if (clientVersion.compareTo(Version.GFE_65) >= 0) {
      message = getGFE65Message(proxy, serializedValue, conflation, clientVersion);
    } else if (clientVersion.compareTo(Version.GFE_61) >= 0) {
      message = getGFE61Message(proxy, serializedValue, conflation, clientVersion);
    } else if (clientVersion.compareTo(Version.GFE_57) >= 0) {
      message = getGFEMessage(proxy.getProxyID(), latestValue, clientVersion);
    } else {
      throw new IOException(
          "Unsupported client version for server-to-client message creation: "
              + clientVersion);
    }

    return message;
  }

  protected Message getGFEMessage(ClientProxyMembershipID proxyId,
      byte[] latestValue, Version clientVersion) throws IOException {
    Message message = null;
    // Add CQ info.
    int cqMsgParts = 0;
    boolean clientHasCq = this._hasCqs && (this.getCqs(proxyId) != null);

    if (clientHasCq) {
      cqMsgParts = (this.getCqs(proxyId).length * 2) + 1;
    }

    if (isCreate() || isUpdate()) {
      // Create or update event
      if (this._clientInterestListInv != null && this._clientInterestListInv.contains(proxyId)) {
        // Notify all - do not send the value
        message = new Message(6, clientVersion);
        message.setMessageType(MessageType.LOCAL_INVALIDATE);
        message.addStringPart(this._regionName);
        // Currently serializing the key here instead of when the message
        // is put in the queue so that it can be conflated it later
        message.addStringOrObjPart(this._keyOfInterest);
        message.addObjPart(this._callbackArgument);
        message.addObjPart(Boolean.valueOf(isClientInterested(proxyId)));
        message.addObjPart(Boolean.FALSE);

      } else {
        // Notify by subscription - send the value
        message = new Message(7 + cqMsgParts, clientVersion);

        // Set message type
        if (isCreate()) {
          message.setMessageType(MessageType.LOCAL_CREATE);
        }
        else {
          message.setMessageType(MessageType.LOCAL_UPDATE);
        }
        message.addStringPart(this._regionName);
        // Currently serializing the key here instead of when the message
        // is put in the queue so that it can be conflated it later
        message.addStringOrObjPart(this._keyOfInterest);
        message.addRawPart(latestValue, (this._valueIsObject == 0x01));
        message.addObjPart(this._callbackArgument);
        message.addObjPart(Boolean.valueOf(isClientInterested(proxyId)));
        message.addObjPart(Boolean.valueOf(clientHasCq));

        if (clientHasCq) {
          this.addCqsToMessage(proxyId, message);
        }
      }
    }
    else if (isDestroy() || isInvalidate()) {
      message = new Message(6 + cqMsgParts, clientVersion);
      if (isDestroy()) {
        message.setMessageType(MessageType.LOCAL_DESTROY);
      }
      else {
        message.setMessageType(MessageType.LOCAL_INVALIDATE);
      }
      message.addStringPart(this._regionName);

      // Currently serializing the key here instead of when the message
      // is put in the queue so that it can be conflated it later
      message.addStringOrObjPart(this._keyOfInterest);
      message.addObjPart(this._callbackArgument);
      message.addObjPart(Boolean.valueOf(isClientInterested(proxyId)));
      message.addObjPart(Boolean.valueOf(clientHasCq));

      if (clientHasCq) {
        this.addCqsToMessage(proxyId, message);
      }
    } else if (isDestroyRegion()) {
      message = new Message(4 + cqMsgParts, clientVersion);
      message.setMessageType(MessageType.LOCAL_DESTROY_REGION);
      message.addStringPart(this._regionName);
      message.addObjPart(this._callbackArgument);
      message.addObjPart(Boolean.valueOf(clientHasCq));

      if (clientHasCq) {
        this.addCqsToMessage(proxyId, message);
      }
    }
    else if (isClearRegion()) {
      message = new Message(4 + cqMsgParts, clientVersion);
      message.setMessageType(MessageType.CLEAR_REGION);
      message.addStringPart(this._regionName);
      message.addObjPart(this._callbackArgument);
      message.addObjPart(Boolean.valueOf(clientHasCq));

      if (clientHasCq) {
        this.addCqsToMessage(proxyId, message);
      }
    }
    else if (isInvalidateRegion()) {
      message = new Message(4 + cqMsgParts, clientVersion);
      message.setMessageType(MessageType.INVALIDATE_REGION);
      message.addStringPart(this._regionName);
      message.addObjPart(this._callbackArgument);
      message.addObjPart(Boolean.valueOf(clientHasCq));

      if (clientHasCq) {
        this.addCqsToMessage(proxyId, message);
      }
    }
    else {
      throw new InternalGemFireError("Don't know what kind of message");
    }

    message.setTransactionId(0);
    // Add the EventId since 5.1 (used to prevent duplicate events
    // received on the client side after a failover)
    message.setLogger(this._logger);
    message.addObjPart(this._eventIdentifier);
    return message;
  }

  protected Message getGFE61Message(CacheClientProxy proxy, byte[] latestValue,
      boolean conflation, Version clientVersion) throws IOException {
    Message message = null;
    ClientProxyMembershipID proxyId = proxy.getProxyID();

    // Add CQ info.
    int cqMsgParts = 0;
    boolean clientHasCq = this._hasCqs && (this.getCqs(proxyId) != null);

    if (clientHasCq) {
      cqMsgParts = (this.getCqs(proxyId).length * 2) + 1;
    }

    if (isCreate() || isUpdate()) {
      // Create or update event
      if (this._clientInterestListInv != null && this._clientInterestListInv.contains(proxyId)) {
        // Notify all - do not send the value
        message = new Message(6, clientVersion);
        message.setMessageType(MessageType.LOCAL_INVALIDATE);

        // Add the region name
        message.addStringPart(this._regionName);

        // Add the key
        // Currently serializing the key here instead of when the message
        // is put in the queue so that it can be conflated it later
        message.addStringOrObjPart(this._keyOfInterest);

        // Add the callback argument
        message.addObjPart(this._callbackArgument);

        // Add interestlist status.
        message.addObjPart(Boolean.valueOf(isClientInterested(proxyId)));

        // Add CQ status.
        message.addObjPart(Boolean.FALSE);

      }
      else {
        boolean isClientInterested = isClientInterested(proxyId);
        // Notify by subscription - send the value
        message = new Message(8 + cqMsgParts, clientVersion);

        // Set message type
        if (isCreate()) {
          message.setMessageType(MessageType.LOCAL_CREATE);

          // Add the region name
          message.addStringPart(this._regionName);

          // Add the key
          // Currently serializing the key here instead of when the message
          // is put in the queue so that it can be conflated it later
          message.addStringOrObjPart(this._keyOfInterest);

          message.addObjPart(Boolean.FALSE); // NO delta
          // Add the value (which has already been serialized)
          message.addRawPart(latestValue, (this._valueIsObject == 0x01));
        }
        else {
          message.setMessageType(MessageType.LOCAL_UPDATE);

          // Add the region name
          message.addStringPart(this._regionName);

          // Add the key
          // Currently serializing the key here instead of when the message
          // is put in the queue so that it can be conflated it later
          message.addStringOrObjPart(this._keyOfInterest);

          if (this.deltaBytes != null
              && !conflation
              && !proxy.isMarkerEnqueued()
              && !proxy.getRegionsWithEmptyDataPolicy()
                  .containsKey(_regionName)) {
            message.addObjPart(Boolean.TRUE);
            message.addBytesPart(this.deltaBytes);
            proxy.getStatistics().incDeltaMessagesSent();
          }
          else {
            message.addObjPart(Boolean.FALSE);
            byte[] l = latestValue;
            if (l == null) {
              if (!(this._value instanceof byte[])) {
                this._value = CacheServerHelper.serialize(this._value);
              }
              l = (byte[])this._value;
            }
            // Add the value (which has already been serialized)
            message.addRawPart(l, (this._valueIsObject == 0x01));
          }
        }

        // Add the callback argument
        message.addObjPart(this._callbackArgument);

        // Add interest list status.
        message.addObjPart(Boolean.valueOf(isClientInterested));

        // Add CQ status.
        message.addObjPart(Boolean.valueOf(clientHasCq));

        if (clientHasCq) {
          this.addCqsToMessage(proxyId, message);
        }
      }
    }
    else if (isDestroy() || isInvalidate()) {
      // Destroy or invalidate event
      message = new Message(6 + cqMsgParts, clientVersion);

      if (isDestroy()) {
        message.setMessageType(MessageType.LOCAL_DESTROY);
      }
      else {
        message.setMessageType(MessageType.LOCAL_INVALIDATE);
      }

      message.addStringPart(this._regionName);

      // Currently serializing the key here instead of when the message
      // is put in the queue so that it can be conflated later
      message.addStringOrObjPart(this._keyOfInterest);

      message.addObjPart(this._callbackArgument);
      message.addObjPart(Boolean.valueOf(isClientInterested(proxyId)));
      message.addObjPart(Boolean.valueOf(clientHasCq));

      if (clientHasCq) {
        this.addCqsToMessage(proxyId, message);
      }
    }
    else if (isDestroyRegion()) {
      message = new Message(4 + cqMsgParts, clientVersion);
      message.setMessageType(MessageType.LOCAL_DESTROY_REGION);
      message.addStringPart(this._regionName);
      message.addObjPart(this._callbackArgument);
      message.addObjPart(Boolean.valueOf(clientHasCq));

      if (clientHasCq) {
        this.addCqsToMessage(proxyId, message);
      }
    }
    else if (isClearRegion()) {
      message = new Message(4 + cqMsgParts, clientVersion);
      message.setMessageType(MessageType.CLEAR_REGION);
      message.addStringPart(this._regionName);
      message.addObjPart(this._callbackArgument);
      message.addObjPart(Boolean.valueOf(clientHasCq));

      if (clientHasCq) {
        this.addCqsToMessage(proxyId, message);
      }
    }
    else if (isInvalidateRegion()) {
      message = new Message(4 + cqMsgParts, clientVersion);
      message.setMessageType(MessageType.INVALIDATE_REGION);
      message.addStringPart(this._regionName);
      message.addObjPart(this._callbackArgument);
      message.addObjPart(Boolean.valueOf(clientHasCq));

      if (clientHasCq) {
        this.addCqsToMessage(proxyId, message);
      }
    }
    else {
      throw new InternalGemFireError("Don't know what kind of message");
    }

    message.setTransactionId(0);
    // Add the EventId since 5.1 (used to prevent duplicate events
    // received on the client side after a failover)
    message.setLogger(this._logger);
    message.addObjPart(this._eventIdentifier);
    return message;
  }

  protected Message getGFE65Message(CacheClientProxy proxy,
    byte[] p_latestValue, boolean conflation, Version clientVersion) throws IOException {
    byte[] latestValue = p_latestValue;
    Message message = null;
    ClientProxyMembershipID proxyId = proxy.getProxyID();

    // Add CQ info.
    int cqMsgParts = 0;
    boolean clientHasCq = this._hasCqs && (this.getCqs(proxyId) != null);

    if (clientHasCq) {
      cqMsgParts = (this.getCqs(proxyId).length * 2) + 1;
    }

    if (isCreate() || isUpdate()) {
      // Create or update event
      if (this._clientInterestListInv != null && this._clientInterestListInv.contains(proxyId)) {
        // Client is registered for invalidates.
        if (cqMsgParts > 0) {
          cqMsgParts++; // To store base operation type for CQ.
        }

        message = new Message(6 + cqMsgParts, clientVersion);
        message.setMessageType(MessageType.LOCAL_INVALIDATE);

        // Add the region name
        message.addStringPart(this._regionName);

        // Add the key
        // Currently serializing the key here instead of when the message
        // is put in the queue so that it can be conflated it later
        message.addStringOrObjPart(this._keyOfInterest);
      }
      else {
        // Notify by subscription - send the value
        message = new Message(8 + cqMsgParts, clientVersion);

        // Set message type
        if (isCreate()) {
          message.setMessageType(MessageType.LOCAL_CREATE);

          // Add the region name
          message.addStringPart(this._regionName);

          // Add the key
          // Currently serializing the key here instead of when the message
          // is put in the queue so that it can be conflated it later
          message.addStringOrObjPart(this._keyOfInterest);

          message.addObjPart(Boolean.FALSE); // NO delta
          // Add the value (which has already been serialized)
          message.addRawPart(latestValue, (this._valueIsObject == 0x01));
        }
        else {
          message.setMessageType(MessageType.LOCAL_UPDATE);

          // Add the region name
          message.addStringPart(this._regionName);

          // Add the key
          // Currently serializing the key here instead of when the message
          // is put in the queue so that it can be conflated it later
          message.addStringOrObjPart(this._keyOfInterest);

          if (this.deltaBytes != null
              && !conflation
              && !proxy.isMarkerEnqueued()
              && !proxy.getRegionsWithEmptyDataPolicy()
                  .containsKey(_regionName)) {
            message.addObjPart(Boolean.TRUE);
            message.addBytesPart(this.deltaBytes);
            proxy.getStatistics().incDeltaMessagesSent();
          }
          else {
            message.addObjPart(Boolean.FALSE);
            if (latestValue == null) {
              if (!(this._value instanceof byte[])) {
                this._value = CacheServerHelper.serialize(this._value);
              }
              latestValue = (byte[])this._value;
            }
            // Add the value (which has already been serialized)
            message.addRawPart(latestValue, (this._valueIsObject == 0x01));
          }
        }
      }

      message.addObjPart(this._callbackArgument);
      message.addObjPart(Boolean.valueOf(isClientInterested(proxyId)));
      message.addObjPart(Boolean.valueOf(clientHasCq));

      if (clientHasCq) {
        if (message.getMessageType() == MessageType.LOCAL_INVALIDATE) {
          //in case of invalidate, set the region operation type.
          message.addIntPart(isCreate() ? MessageType.LOCAL_CREATE:MessageType.LOCAL_UPDATE);
        }
        this.addCqsToMessage(proxyId, message);
      }
    }
    else if (isDestroy() || isInvalidate()) {
      if (isDestroy()) {
        message = new Message(6 + cqMsgParts, clientVersion);
        message.setMessageType(MessageType.LOCAL_DESTROY);
      }
      else {
        if (clientHasCq){
          cqMsgParts++;/* To store the region operation for CQ */
        }
        message = new Message(6 + cqMsgParts, clientVersion);
        message.setMessageType(MessageType.LOCAL_INVALIDATE);
      }
      message.addStringPart(this._regionName);
      message.addStringOrObjPart(this._keyOfInterest);
      message.addObjPart(this._callbackArgument);
      message.addObjPart(Boolean.valueOf(isClientInterested(proxyId)));
      message.addObjPart(Boolean.valueOf(clientHasCq));

      if (clientHasCq) {
        if (isInvalidate()){
          // This is to take care when invalidate message is getting sent
          // to the Client. See the code for create/update operation.
          message.addIntPart(MessageType.LOCAL_INVALIDATE);
        }
        this.addCqsToMessage(proxyId, message);
      }
    }
    else if (isDestroyRegion()) {
      message = new Message(4 + cqMsgParts, clientVersion);
      message.setMessageType(MessageType.LOCAL_DESTROY_REGION);
      message.addStringPart(this._regionName);
      message.addObjPart(this._callbackArgument);
      message.addObjPart(Boolean.valueOf(clientHasCq));

      if (clientHasCq) {
        this.addCqsToMessage(proxyId, message);
      }
    }
    else if (isClearRegion()) {
      message = new Message(4 + cqMsgParts, clientVersion);
      message.setMessageType(MessageType.CLEAR_REGION);
      message.addStringPart(this._regionName);
      message.addObjPart(this._callbackArgument);
      message.addObjPart(Boolean.valueOf(clientHasCq));

      if (clientHasCq) {
        this.addCqsToMessage(proxyId, message);
      }
    }
    else if (isInvalidateRegion()) {
      message = new Message(4 + cqMsgParts, clientVersion);
      message.setMessageType(MessageType.INVALIDATE_REGION);
      message.addStringPart(this._regionName);
      message.addObjPart(this._callbackArgument);

      // Add CQ status.
      message.addObjPart(Boolean.valueOf(clientHasCq));

      if (clientHasCq) {
        this.addCqsToMessage(proxyId, message);
      }
    }
    else {
      throw new InternalGemFireError("Don't know what kind of message");
    }

    message.setTransactionId(0);
    // Add the EventId since 5.1 (used to prevent duplicate events
    // received on the client side after a failover)
    message.setLogger(this._logger);
    message.addObjPart(this._eventIdentifier);
    return message;
  }

  protected Message getGFE70Message(CacheClientProxy proxy,
      byte[] p_latestValue, boolean conflation, Version clientVersion) throws IOException {
      byte[] latestValue = p_latestValue;
      Message message = null;
      ClientProxyMembershipID proxyId = proxy.getProxyID();

      // Add CQ info.
      int cqMsgParts = 0;
      boolean clientHasCq = this._hasCqs && (this.getCqs(proxyId) != null);

      if (clientHasCq) {
        cqMsgParts = (this.getCqs(proxyId).length * 2) + 1;
      }

      if (isCreate() || isUpdate()) {
        // Create or update event
        if (this._clientInterestListInv != null && this._clientInterestListInv.contains(proxyId)) {
          // Client is registered for invalidates.
          if (cqMsgParts > 0) {
            cqMsgParts++; // To store base operation type for CQ.
          }

          message = new Message(7 + cqMsgParts, clientVersion);
          message.setMessageType(MessageType.LOCAL_INVALIDATE);
          message.addStringPart(this._regionName);
          message.addStringOrObjPart(this._keyOfInterest);
        }
        else {
          // Notify by subscription - send the value
          message = new Message(9 + cqMsgParts, clientVersion);
          if (isCreate()) {
            message.setMessageType(MessageType.LOCAL_CREATE);
            message.addStringPart(this._regionName);
            message.addStringOrObjPart(this._keyOfInterest);
            message.addObjPart(Boolean.FALSE); // NO delta
            // Add the value (which has already been serialized)
            message.addRawPart(latestValue, (this._valueIsObject == 0x01));
          }
          else {
            message.setMessageType(MessageType.LOCAL_UPDATE);
            message.addStringPart(this._regionName);
            message.addStringOrObjPart(this._keyOfInterest);

            if (this.deltaBytes != null
                && !conflation
                && !proxy.isMarkerEnqueued()
                && !proxy.getRegionsWithEmptyDataPolicy()
                    .containsKey(_regionName)) {
              message.addObjPart(Boolean.TRUE);
              message.addBytesPart(this.deltaBytes);
              proxy.getStatistics().incDeltaMessagesSent();
            }
            else {
              message.addObjPart(Boolean.FALSE);
              if (latestValue == null) {
                if (!(this._value instanceof byte[])) {
                  this._value = CacheServerHelper.serialize(this._value);
                }
                latestValue = (byte[])this._value;
              }
              // Add the value (which has already been serialized)
              message.addRawPart(latestValue, (this._valueIsObject == 0x01));
            }
          }
        }

        message.addObjPart(this._callbackArgument);
        message.addObjPart(this.versionTag);
        message.addObjPart(Boolean.valueOf(isClientInterested(proxyId)));
        message.addObjPart(Boolean.valueOf(clientHasCq));

        if (clientHasCq) {
          if (message.getMessageType() == MessageType.LOCAL_INVALIDATE) {
            //in case of invalidate, set the region operation type.
            message.addIntPart(isCreate() ? MessageType.LOCAL_CREATE:MessageType.LOCAL_UPDATE);
          }
          this.addCqsToMessage(proxyId, message);
        }
      }
      else if (isDestroy() || isInvalidate()) {
        if (isDestroy()) {
          message = new Message(7 + cqMsgParts, clientVersion);
          message.setMessageType(MessageType.LOCAL_DESTROY);
        }
        else {
          if (clientHasCq){
            cqMsgParts++;/* To store the region operation for CQ */
          }
          message = new Message(7 + cqMsgParts, clientVersion);
          message.setMessageType(MessageType.LOCAL_INVALIDATE);
        }
        message.addStringPart(this._regionName);
        message.addStringOrObjPart(this._keyOfInterest);
        message.addObjPart(this._callbackArgument);
        message.addObjPart(this.versionTag);
        message.addObjPart(Boolean.valueOf(isClientInterested(proxyId)));
      message.addObjPart(Boolean.valueOf(clientHasCq));

      if (clientHasCq) {
          if (isInvalidate()){
            // This is to take care when invalidate message is getting sent
            // to the Client. See the code for create/update operation.
            message.addIntPart(MessageType.LOCAL_INVALIDATE);
          }
        this.addCqsToMessage(proxyId, message);
      }
    }
      else if (isDestroyRegion()) {
        message = new Message(4 + cqMsgParts, clientVersion);
        message.setMessageType(MessageType.LOCAL_DESTROY_REGION);
        message.addStringPart(this._regionName);
        message.addObjPart(this._callbackArgument);
        message.addObjPart(Boolean.valueOf(clientHasCq));

        if (clientHasCq) {
          this.addCqsToMessage(proxyId, message);
        }
      }
      else if (isClearRegion()) {
        message = new Message(4 + cqMsgParts, clientVersion);
        message.setMessageType(MessageType.CLEAR_REGION);
        message.addStringPart(this._regionName);
        message.addObjPart(this._callbackArgument);
        message.addObjPart(Boolean.valueOf(clientHasCq));

        if (clientHasCq) {
          this.addCqsToMessage(proxyId, message);
        }
      }
    else if (isInvalidateRegion()) {
      message = new Message(4 + cqMsgParts, clientVersion);
      message.setMessageType(MessageType.INVALIDATE_REGION);
      message.addStringPart(this._regionName);
      message.addObjPart(this._callbackArgument);

      // Add CQ status.
      message.addObjPart(Boolean.valueOf(clientHasCq));

      if (clientHasCq) {
        this.addCqsToMessage(proxyId, message);
      }
    }
    else {
      throw new InternalGemFireError("Don't know what kind of message");
    }

    message.setTransactionId(0);
    // Add the EventId since 5.1 (used to prevent duplicate events
    // received on the client side after a failover)
    message.setLogger(this._logger);
    message.addObjPart(this._eventIdentifier);
    return message;
  }

  /**
   * @return boolean true if the event is due to net load.
   */
  public boolean isNetLoad() {
    return this._isNetLoad;
  }

  /**
   * @param isNetLoad boolean true if the event is due to net load.
   */
  public void setIsNetLoad(boolean isNetLoad) {
    this._isNetLoad = isNetLoad;
  }

  /**
   * @return boolean true if cq info is present for the given proxy.
   */
  public boolean hasCqs(ClientProxyMembershipID clientId) {
    if (this._clientCqs != null) {
      CqNameToOp cqs = this._clientCqs.get(clientId);
      if (cqs != null && !cqs.isEmpty()) {
        return true;
      }
    }
    return false;
  }

  /**
   * @return boolean true if cq info is present.
   */
  public boolean hasCqs() {
    return this._hasCqs;
  }

  /**
   * Returns the cqs for the given client.
   * @return cqNames
   */
  public String[] getCqs(ClientProxyMembershipID clientId) {
    String[] cqNames = null;
    if (this._clientCqs != null) {
      CqNameToOp cqs = this._clientCqs.get(clientId);
      if (cqs != null && !cqs.isEmpty()) {
        cqNames = cqs.getNames();
      }
    }
    return cqNames;
  }

  public ClientCqConcurrentMap getClientCqs(){
    return this._clientCqs;
  }

  /**
   * Add cqs for the given client.
   * @param clientId
   * @param filteredCqs
   */
  public void addClientCqs(ClientProxyMembershipID clientId, CqNameToOp filteredCqs) {
    if (this._clientCqs == null) {
      this._clientCqs = new ClientCqConcurrentMap();
      this._hasCqs = true;
    }
    this._clientCqs.put(clientId, filteredCqs);
  }

  public void addClientCq(ClientProxyMembershipID clientId, String cqName, Integer cqEvent){
    if (this._clientCqs == null) {
      this._clientCqs = new ClientCqConcurrentMap();
      this._hasCqs = true;
    }
    CqNameToOp cqInfo = this._clientCqs.get(clientId);
    if (cqInfo == null) {
      cqInfo = new CqNameToOpSingleEntry(cqName, cqEvent);
      this._clientCqs.put(clientId, cqInfo);
    } else if (!cqInfo.isFull()) {
      cqInfo.add(cqName, cqEvent);
    } else {
      cqInfo = new CqNameToOpHashMap((CqNameToOpSingleEntry)cqInfo);
      cqInfo.add(cqName, cqEvent);
      this._clientCqs.put(clientId, cqInfo);
    }
  }

  private void addCqsToMessage(ClientProxyMembershipID proxyId, Message message) {
    if (this._clientCqs != null) {
      CqNameToOp cqs = this._clientCqs.get(proxyId);
      if (cqs != null) {
        message.addIntPart(cqs.size() * 2);
        cqs.addToMessage(message);
      }
    }
  }

  public void removeClientCq(ClientProxyMembershipID clientId, CqQuery cqToClose) {
    CqNameToOp cqs = getClientCq(clientId);
    if (cqs != null) {
      cqs.delete(cqToClose.getName());
      //remove clientId key if no more cqs exist for this clientId
      if (cqs.isEmpty()) {
        this._clientCqs.remove(clientId);
      }
    }
  }

  /**
   * Set the region name that was updated.
   */
  public void setRegionName(String regionName)
  {
    this._regionName = regionName;
  }

  /**
   * @param eventId
   * @see HAEventWrapper#fromData(DataInput)
   * @see HAContainerRegion#get(Object)
   */
  public void setEventIdentifier(EventID eventId) {
    if (this._eventIdentifier == null) {
      this._eventIdentifier = eventId;
    }
  }

  /**
   * @param clientCqs
   * @see HAEventWrapper#fromData(DataInput)
   * @see HAContainerRegion#get(Object)
   */
  public void setClientCqs(ClientCqConcurrentMap clientCqs) {
    if (this._clientCqs == null) {
      this._clientCqs = clientCqs;
    }
  }

  /*
  private void writeCqInfo(ObjectOutput out) throws IOException {
    // Write Client CQ Size
    out.writeInt(this._clientCqs.size());
    // For each client.
    Iterator entries = this._clientCqs.entrySet().iterator();
    while (entries.hasNext()) {
      Map.Entry entry = (Map.Entry)entries.next();

      // Write ProxyId.
      ClientProxyMembershipID proxyId = (ClientProxyMembershipID)entry.getKey();
      proxyId.toData(out);

      HashMap cqs = (HashMap)entry.getValue();
      // Write CQ size for each Client.
      out.writeInt(cqs.size());
      Iterator clients = cqs.entrySet().iterator();
      while (clients.hasNext()) {
        Map.Entry client = (Map.Entry)clients.next();
        // Write CQ Name.
        String cq = (String)client.getKey();
        out.writeObject(cq);
        // Write CQ OP.
        int cqOp = ((Integer)client.getValue()).intValue();
        out.writeInt(cqOp);
      }
    } // while
  }
  */

  /*
  private void readCqInfo(ObjectInput in) throws IOException,
	    ClassNotFoundException {
    // Read Client CQ Size
	int numClientIds = in.readInt();
	this._clientCqs = new HashMap();

	// For each Client.
	for (int cCnt=0; cCnt < numClientIds; cCnt++){
	  ClientProxyMembershipID proxyId = new ClientProxyMembershipID();

	  // Read Proxy id.
	  proxyId.fromData(in);
	  // read CQ size for each Client.
	  int numCqs = in.readInt();
	  HashMap cqs = new HashMap();

	  for (int cqCnt=0; cqCnt < numCqs; cqCnt++){
	    // Get CQ Name and CQ Op.
	    // Read CQ Name.
	    String cqName = (String)in.readObject();
	    int cqOp = in.readInt();

	    // Read CQ Op.
	    cqs.put(cqName, Integer.valueOf(cqOp));
	  }
	  this._clientCqs.put(proxyId, cqs);
	}
  }
  */

  public void addClientInterestList(Set clientIds, boolean receiveValues) {
    if (receiveValues) {
      if (this._clientInterestList == null) {
        this._clientInterestList = clientIds;
      } else {
        this._clientInterestList.addAll(clientIds);
      }
    } else {
      if (this._clientInterestListInv == null) {
        this._clientInterestListInv = clientIds;
      } else {
        this._clientInterestListInv.addAll(clientIds);
      }
    }
  }

  public void addClientInterestList(ClientProxyMembershipID clientId, boolean receiveValues) {
    // This happens under synchronization on HAContainer.
    HashSet <ClientProxyMembershipID>newInterests;
    if (receiveValues) {
      if (this._clientInterestList == null) {
        newInterests = new HashSet<ClientProxyMembershipID>();
      } else {
        newInterests = new HashSet<ClientProxyMembershipID>(this._clientInterestList);
      }
      newInterests.add(clientId);
      this._clientInterestList = newInterests;
    } else {
      if (this._clientInterestListInv == null) {
        newInterests = new HashSet<ClientProxyMembershipID>();
      } else {
        newInterests = new HashSet<ClientProxyMembershipID>(this._clientInterestListInv);
      }
      newInterests.add(clientId);
      this._clientInterestListInv = newInterests;
    }
  }

  public boolean isClientInterested(ClientProxyMembershipID clientId) {
    return (this._clientInterestList != null && this._clientInterestList.contains(clientId))
    || (this._clientInterestListInv != null && this._clientInterestListInv.contains(clientId));
  }

  public boolean isClientInterestedInUpdates(ClientProxyMembershipID clientId) {
    return (this._clientInterestList != null && this._clientInterestList.contains(clientId));
  }

  public boolean isClientInterestedInInvalidates(ClientProxyMembershipID clientId) {
    return (this._clientInterestListInv != null && this._clientInterestListInv.contains(clientId));
  }

  protected Object deserialize(byte[] serializedBytes)
  {
    Object deserializedObject = serializedBytes;
    // This is a debugging method so ignore all exceptions like
    // ClassNotFoundException
    try {
      DataInputStream dis = new DataInputStream(new ByteArrayInputStream(
          serializedBytes));
      deserializedObject = DataSerializer.readObject(dis);
    }
    catch (Exception e) {
    }
    return deserializedObject;
  }

  @Override
  public String toString()
  {
    StringBuffer buffer = new StringBuffer();
    buffer.append("ClientUpdateMessageImpl[")
        .append("op=").append(this._operation)
        .append(";region=").append(this._regionName)
        .append(";key=").append(this._keyOfInterest);
    if (this._logger != null && this._logger.finestEnabled()) {
      buffer.append(";value=").append(
          (this._value instanceof byte[]) ? deserialize((byte[])this._value)
              : this._value);
    }
    buffer
        .append(";isObject=").append(_valueIsObject)
        .append(";cbArg=").append(this._callbackArgument)
        .append(";memberId=").append(this._membershipId)
        .append(";eventId=").append(_eventIdentifier)
        .append(";shouldConflate=").append(_shouldConflate)
        .append(";versionTag=").append(this.versionTag)
        .append(";hasCqs=").append(this._hasCqs)
        // skip _logger :-)
        .append("]");
    return buffer.toString();
  }

  public int getDSFID() {
    return CLIENT_UPDATE_MESSAGE;
  }

  public void toData(DataOutput out) throws IOException
  {
    out.writeByte(_operation.getEventCode());
    DataSerializer.writeString(_regionName,out);
    DataSerializer.writeObject(_keyOfInterest,out);
    if (_value instanceof byte[]) {
      DataSerializer.writeByteArray((byte[])_value, out);
    }
    else {
      DataSerializer.writeByteArray(CacheServerHelper.serialize(_value), out);
    }
    out.writeByte(_valueIsObject);
    DataSerializer.writeObject(_membershipId,out);
    //DataSerializer.writeObject(_eventIdentifier,out);
    out.writeBoolean(_shouldConflate);
    out.writeBoolean(_isInterestListPassed);
    DataSerializer.writeByteArray(this.deltaBytes, out);
    out.writeBoolean(_hasCqs);
    //if (_hasCqs) {
    //  DataSerializer.writeHashMap(this._clientCqs, out);
    //}
    DataSerializer.writeObject(_callbackArgument ,out);
    DataSerializer.writeHashSet((HashSet)this._clientInterestList, out);
    DataSerializer.writeHashSet((HashSet)this._clientInterestListInv, out);
    DataSerializer.writeObject(this.versionTag, out);
  }

  public void fromData(DataInput in) throws IOException, ClassNotFoundException
  {
    this._operation = EnumListenerEvent.getEnumListenerEvent(in.readByte());
    this._regionName =DataSerializer.readString(in);
    this._keyOfInterest = DataSerializer.readObject(in);
    this._value = DataSerializer.readByteArray(in);
    this._valueIsObject = in.readByte();
    this._membershipId = ClientProxyMembershipID.readCanonicalized(in);
    //this._eventIdentifier = (EventID)DataSerializer.readObject(in);;
    this._shouldConflate = in.readBoolean();
    this._isInterestListPassed = in.readBoolean();
    this.deltaBytes = DataSerializer.readByteArray(in);
    this._hasCqs = in.readBoolean();

    //if (this._hasCqs) {
    //  this._clientCqs = DataSerializer.readHashMap(in);
    //}
    this._callbackArgument = DataSerializer.readObject(in);

    CacheClientNotifier ccn = CacheClientNotifier.getInstance();
    this._logger = InternalDistributedSystem.getLoggerI18n();

    HashSet ids = DataSerializer.readHashSet(in);

    if (ccn != null && ids != null) { // use canonical IDs in servers
      ids = (HashSet)ccn.getProxyIDs(ids);
    }
    this._clientInterestList = ids;

    ids = DataSerializer.readHashSet(in);
    if (ccn != null && ids != null) {
      ids = (HashSet)ccn.getProxyIDs(ids);
    }
    this._clientInterestListInv = ids;

    this.versionTag = (VersionTag)DataSerializer.readObject(in);
  }

  private Object getOriginalCallbackArgument() {
    Object result = this._callbackArgument;
    while (result instanceof WrappedCallbackArgument) {
      WrappedCallbackArgument wca = (WrappedCallbackArgument)result;
      result = wca.getOriginalCallbackArg();
    }
    return result;
  }

  /*
   * Statically calculate constant overhead for ClientUpdateMessageImpl
   * instance.
   */
  static {

    // The sizes of the following variables are calculated:
    // - primitive and object instance variable references
    //
    // The sizes of the following variables are not calculated:

    // - the key because it is a reference
    // - the region and regionName because they are references
    // - the operation because it is a reference
    // - the membershipId because it is a reference
    // - the logger because it is a reference
    // - the keyOfInterest because it is a reference
    // - the clientCqs because it is a reference
    // - the clientInterestList because it is a reference
    // - the eventIdentifier because it is a reference

    // The size of instances of the following internal datatypes were estimated
    // using a NullDataOutputStream and hardcoded into this method:

    // - the id (an instance of EventId)
    int size = 0;

    // Add overhead for this instance.
    size += Sizeable.PER_OBJECT_OVERHEAD;

    // Add object references
    //_operation reference = 4 bytes
    //_regionName reference = 4 bytes
    //_keyOfInterest reference = 4 bytes
    //_value reference = 4 bytes
    //_callbackArgument reference = 4 bytes
    //_membershipId reference = 4 bytes
    //_eventIdentifier reference = 4 bytes
    //_logger reference = 4 bytes
    //_clientCqs reference = 4 bytes
    //_clientInterestList reference = 4 bytes
    size += 40;

    // Add primitive references
    // byte _valueIsObject = 1 byte
    // boolean _shouldConflate = 1 byte
    // boolean _isInterestListPassed = 1 byte
    // boolean _hasCqs = 1 byte
    // boolean _isNetLoad = 1 byte
    size += 5;

    // not sure on the kind on wrapper is around callbackArgument
    // The callback argument (a GatewayEventCallbackArgument wrapping an Object
    // which is the original callback argument)
    // The hardcoded value below represents the GatewayEventCallbackArgument
    // and was estimated using a NullDataOutputStream
    size += Sizeable.PER_OBJECT_OVERHEAD + 194; // do we need it
    // add overhead for callback Argument
    size += Sizeable.PER_OBJECT_OVERHEAD;
    // total overhead
    CONSTANT_MEMORY_OVERHEAD = size;
  }

  public int getSizeInBytes() {

    int size = CONSTANT_MEMORY_OVERHEAD;

    // The value (a byte[])
    if (this._value != null) {
      size += CachedDeserializableFactory.calcMemSize(this._value);
    }

    // The sizeOf call gets the size of the input callback argument.
    size += sizeOf(getOriginalCallbackArgument());
    return size;
  }

  private int sizeOf(Object obj) {
    int size = 0;
    if (obj == null) {
      return size;
    }
    if (obj instanceof String) {
      size = ObjectSizer.DEFAULT.sizeof(obj);
    }
    else if (obj instanceof Integer) {
      size = 4; // estimate
    }
    else if (obj instanceof Long) {
      size = 8; // estimate
    }
    else {
      size = CachedDeserializableFactory.calcMemSize(obj)
          - Sizeable.PER_OBJECT_OVERHEAD;
    }
    return size;
  }

  /* (non-Javadoc)
   * @see com.gemstone.gemfire.internal.cache.tier.sockets.ClientUpdateMessage#needsNoAuthorizationCheck()
   */
  public boolean needsNoAuthorizationCheck() {
    return false;
  }

  @Override
  public CqNameToOp getClientCq(ClientProxyMembershipID clientId) {
    return this._clientCqs.get(clientId);
  }

  @Override
  public Version[] getSerializationVersions() {
    return null;
  }

  // NewValueImporter methods

  @Override
  public boolean prefersNewSerialized() {
    return true;
  }

  @Override
  public boolean isUnretainedNewReferenceOk() {
    return false;
  }

  @Override
  public void importNewObject(Object nv, boolean isSerialized) {
    if (!isSerialized) {
      throw new IllegalStateException("Expected importNewBytes to be called.");
    }
    try {
      this._value = CacheServerHelper.serialize(nv);
    } catch (IOException e) {
      throw new GemFireIOException("Exception serializing entry value", e);
    }
  }

  @Override
  public void importNewBytes(byte[] nv, boolean isSerialized) {
    if (!isSerialized) {
      // The value is already a byte[]. Set _valueIsObject flag to 0x00
      // (not an object)
      this._valueIsObject = 0x00;
    }
    this._value = nv;
  }

  /**
   * Even though this class is just a ConcurrentHashMap I wanted it to be
   * its own class so it could be easily identified in heap dumps.
   * The concurrency level on these should be 1 to keep their memory footprint down.
   */
  public static class ClientCqConcurrentMap extends ConcurrentHashMap<ClientProxyMembershipID, CqNameToOp> {
    public ClientCqConcurrentMap(int initialCapacity, float loadFactor, int concurrencyLevel) {
      super(initialCapacity, loadFactor, concurrencyLevel);
    }
    public ClientCqConcurrentMap() {
      super(16, 1.0f, 1);
    }
  }
  /**
   * Replaces what used to be a HashMap<String, Integer>.
   */
  public interface CqNameToOp extends Sendable {
    public boolean isEmpty();
    /**
     * Returns true if calling add would fail.
     */
    public boolean isFull();
    public void addToMessage(Message message);
    public int size();
    public String[] getNames();
    public void add(String name, Integer op);
    public void delete(String name);
  }
  /**
   * Contains either zero or one String to int tuples.
   * This is a common case and this impl has a much smaller
   * memory footprint than a HashMap with one entry.
   */
  public static class CqNameToOpSingleEntry implements CqNameToOp {
    private String name;
    private int op;

    public CqNameToOpSingleEntry(String name, Integer op) {
      this.name = name;
      this.op = op.intValue();
    }

    @Override
    public void sendTo(DataOutput out) throws IOException {
      // When serialized it needs to look just as if writeObject was called on a HASH_MAP
      out.writeByte(DSCODE.HASH_MAP);
      int size = size();
      InternalDataSerializer.writeArrayLength(size, out);
      if (size > 0) {
        DataSerializer.writeObject(this.name, out);
        DataSerializer.writeObject(Integer.valueOf(this.op), out);
      }
    }

    @Override
    public boolean isEmpty() {
      return this.name == null;
    }

    @Override
    public void addToMessage(Message message) {
      if (!isEmpty()) {
        message.addStringPart(this.name);
        message.addIntPart(this.op);
      }
    }

    @Override
    public int size() {
      return isEmpty() ? 0 : 1;
    }

    @Override
    public String[] getNames() {
      if (isEmpty()) {
        return new String[0];
      } else {
        return new String[]{this.name};
      }
    }

    @Override
    public void add(String name, Integer op) {
      if (isEmpty()) {
        this.name = name;
        this.op = op.intValue();
      } else if (this.name.equals(name)) {
        this.op = op.intValue();
      } else {
        throw new IllegalStateException("tried to add to a full CqNameToOpSingleEntry");
      }
    }

    @Override
    public void delete(String name) {
      if (name.equals(this.name)) {
        this.name = null;
      }
    }

    @Override
    public boolean isFull() {
      return !isEmpty();
    }
  }
  /**
   * Basically just a HashMap<String, Integer> but limits itself to the
   * CqNameToOp interface.
   */
  public static class CqNameToOpHashMap extends HashMap<String, Integer> implements CqNameToOp {
    public CqNameToOpHashMap(int initialCapacity) {
      super(initialCapacity, 1.0f);
    }
    public CqNameToOpHashMap(CqNameToOpSingleEntry se) {
      super(2, 1.0f);
      add(se.name, se.op);
    }
    @Override
    public void sendTo(DataOutput out) throws IOException {
      // When serialized it needs to look just as if writeObject was called on a HASH_MAP
      out.writeByte(DSCODE.HASH_MAP);
      DataSerializer.writeHashMap(this, out);
    }
    @Override
    public String[] getNames() {
      String[] cqNames = new String[size()];
      cqNames = keySet().toArray(cqNames);
      return cqNames;
    }
    @Override
    public void addToMessage(Message message) {
      Iterator<Entry<String, Integer>> entries = entrySet().iterator();
      while (entries.hasNext()) {
        Entry<String, Integer> entry = entries.next();
        // Add CQ Name.
        String cq = entry.getKey();
        message.addStringPart(cq);
        // Add CQ Op.
        int op = entry.getValue().intValue();
        message.addIntPart(op);
      }
    }
    @Override
    public void add(String name, Integer op) {
      put(name, op);
    }
    @Override
    public void delete(String name) {
      remove(name);
    }
    @Override
    public boolean isFull() {
      return false;
    }
  }

}

redpajama_set_name: RedPajamaGithub


Obituary of Wayne C. Wypych Sr.
Wayne C. Wypych Sr., 73, of Waukegan, IL passed away peacefully on Monday, November 5, 2018.
Wayne was born on September 18,1945 in Waukegan, IL to Steve and Lorraine Wypych. On May 19, 1990, he married Laura Etteldorf at Prince of Peace Lutheran Church. He played on the church's softball team and served as an elder. Wayne was employed with OMC of Waukegan for over 30 years. He loved Elvis and singing his music.
Wayne is survived by his wife of 28 years, Laura; children, Wayne Jr. and Christine; grandchildren, Kelsey, Shawn, Hayley, Jaden, Kaylin, Luke and Lilyanna; and his cat Leon.
He was preceded in death by his parents and brother, Steve.
Visitation will take place on Saturday, November 10, 2018 from 9:30 a.m. until 11:00 a.m. with a memorial service immediately following at 11:00 a.m. at Prince of Peace Lutheran Church, 2720 N. McAree Rd, Waukegan, IL 60087. Pastor John Shumate officiating. Memorial donations to Laura Wypych would be appreciated.


text:
Q: Specifically, how would you compile a folder of decompiled actionscript back into a runable .swf I know there is some information on compiling actionscript out there but i am finding it really hard to understand and I can't seem to get anything to work.
I have recently taken interest in a spirograph maker flash game and wanted to see see how it was coded. Link if it helps
I eventually found a decompiler which does what I want and was able to see all of the actionscript code.
image 1
image 2
image 3
However as you can see it is not a single file but a collection of libraries which is simply do not know how to recompile after editing. I have tried AIRSDK mxmlc compiler and flash develop but it's not obvious what I have to do.
Am I missing something? A very foolproof explanation will be much appreciated as I have tried to understand everything I've found and not getting anywhere for two days now and could really do with some help.


Meghan Markle was seen wearing a new piece of jewelry this past week.
Meghan Markle was reportedly baptized in a secret ceremony this week.
She was reportedly confirmed into the Church of England by the Archbishop of Canterbury on Tuesday.
She was later seen wearing a diamond cross bracelet, which is believed to be a baptism gift.
Meghan Markle was recently seen sporting a new diamond bracelet on a visit to Birmingham, UK, with Prince Harry on Thursday.
According to the Daily Mail, Markle was baptized into the Church of England on Tuesday. The diamond bracelet is believed to be a gift in celebration of the secret ceremony, People reports.
Here you can see it from afar on her visit to Birmingham to celebrate International Women's Day.
Christening gifts, such as a baptism bracelet, are common little keepsakes to remember the special day — although, in Markle's case, the bracelet isn't exactly a little gift.
The Diamond Horizontal Bar Bracelet is from the jeweler, Birks' Rosée du Matin, and comes with a cool $925 price tag.
Birks' Rosée du Matin Diamond Horizontal Bar Bracelet.
Queen Elizabeth, Harry's grandmother, is the head of the Church of England. For Markle, who was raised Episcopalian, the cross bracelet and reported baptism are a nice way to show deference to her future grandmother-in-law before her wedding in May.


Let us suppose that the Brexit Withdrawal Agreement is adopted, will Theresa May remain as Prime Minister to manage the next stage in the process of non-withdrawal? If so we are totally screwed. At every stage so far she has made terrible mistakes or caved in to EU demands despite clear, advance warnings of EU negotiating tactics – for instance from Yanis Varoufakis, ex-finance minister of Greece: see his book, 'Adults in the Room' or his numerous media interviews since the Referendum (and see Germany calling the shots).
First, she triggered Article 50 with no 'backstop' plan in the event that a deal could not be agreed on fair terms; she had no intention of developing a plan because a 'no deal' outcome would be unthinkable and therefore time and money spent would be wasted. Some think triggering Article 50 was done merely to have something to tell her party conference.
Second, she agreed to a staged process whereby nothing would be discussed until three arbitrary terms were agreed that locked in advantages to the EU: divorce money, Irish border concessions and the rights of EU citizens in the UK prior to exit, which were not even reciprocated. The tactic of gaining a set of irreversible steps towards its goals (such as Ever Closer Union) has been used by the EU since its beginning; they are experts at this.
To make matters worse May called for a vote of confidence in her leadership from electors and lost her Parliamentary majority because of an appalling campaign which simply tried to promote her brilliant leadership. It is a record of breath-taking incompetence.
May now claims that No Deal will not get past Parliament and no other deal will be agreed by the EU, so the choice is between her deal and not leaving. That would negate the first "People's Vote" in June 2016 – game, set and match then? Now apparently, a bad deal is better than no deal. She seems only to have been concerned about EU immigration, as though it was all that Leavers had really voted on – more likely it was the most readily identifiable and quantifiable issue, but just one issue of concern among many.
Macron has been explicit, France will demand continued access to British fishing waters at present levels or it won't agree to end the Irish backstop. Spain and The Netherlands won't accept less than the French of course and Spain will exploit the Gibraltar issue to the maximum. It is clear what will happen with this completely Non-ferrous Lady in charge; she will surrender us all, yet again. So much for the Daily Telegraph's headline in July 2016, "The Tory Party may have found another iron lady in Theresa May". It found a jelly baby instead.
Our only hope if this deal is agreed is that the Permanent Court of International Justice would overturn the Agreement by invoking the Vienna Convention on the Law of Treaties. But how long would that take?