text:
U.Va. Miller Center to Begin Releasing Clinton Presidential History Project Friday
H. Brevy Cannon, brevy@virginia.edu
Kristy Schantz, kkschantz@virginia.edu
At 4:30 p.m. Friday afternoon, the University of Virginia's Miller Center will release a first batch of interviews online conducted for the Clinton Presidential History Project. The release will occur at the conclusion of a symposium on the Clinton administration as part of the 10th anniversary celebration of the Clinton Presidential Center in Little Rock, Arkansas.
Comprising more than 100 interviews with Cabinet secretaries, White House aides, members of Congress and foreign leaders, the project provides a detailed history of the Clinton administration in the words of those who knew it best. Teams of scholars conducted the interviews, many of which run more than 100 pages long. The interviews provide firsthand accounts from all perspectives on a wide range of issues.
"The value in these interviews is that they take us behind the scenes in the White House, into a world where human memory is often the only record of what transpired," said Russell Riley, co-chair of the Miller Center's Oral History Program, who led the Clinton project.
"These oral histories are conducted in such a way as to foster complete candor – and so the reader of these transcripts gets a front row seat to history," Riley said. "The portraiture of the Clinton presidency painted here will be indispensable for anyone who wants to develop a full understanding of the Clinton presidency in all its many dimensions."
Forty-seven interview transcripts will be posted Friday and available at millercenter.org/president/clinton/oralhistory.
A second batch of interviews will be released Nov. 24.
"A decade of interviews, with scores of individuals, went into the Clinton Project," said former Virginia Gov. Gerald L. Baliles, director and CEO of the Miller Center. "We spoke to those most familiar with the Clinton administration. Preserved for the future use of scholars, historians and the general public are the memories, impressions and recollections about specific programs, people, challenges and changes of the eight consequential years of one president, Bill Clinton. Here the future will find great insights into the closing years of the 20th century and the enduring importance of one American's singular leadership."
Among the interviews to be released Friday will be those with Secretaries of State Madeleine Albright and Warren Christopher, Defense Secretary William Perry, Treasury Secretary Robert Rubin, Health and Human Services Secretary Donna Shalala, National Security Adviser Sandy Berger, White House Chief of Staff Leon Panetta and U.S. Sens. George Mitchell, D-Maine, and Alan Simpson, R-Wyo.
Scholars who conducted the interviews will discuss what they learned Friday at a special event at the Clinton Presidential Center in Little Rock. They will take part in panel discussions with former Clinton administration officials examining Clinton's domestic, economic and foreign policies.
A live webcast of the event, which starts at 10:30 a.m. EST Friday, will be available here.
The Clinton Project was launched in 2001 as a collaborative effort between the Miller Center and the David and Barbara Pryor Center for Arkansas Oral and Visual History.
The nonpartisan Miller Center also has conducted the oral histories of Presidents Jimmy Carter, Ronald Reagan and George H.W. Bush. These interview transcripts are available at millercenter.org/oralhistory.
Early next year, the center will release the oral history of U.S. Sen. Edward M. Kennedy, D-Mass.
Kim Curtis
Miller Center
kcurtis@virginia.edu 434-243-2985
Kristy Schantz
kkschantz@virginia.edu 202-758-3918


text:
Q: Does SonarQube 5.4's 'Sonar way' quality profile contain Findbugs? There was saying that 'SonarQube Java Analyzer'  will be containing FindBug rules  .so we need not to add any external findbug rule to sonar .
http://www.sonarqube.org/sonarqube-java-analyzer-the-only-rule-engine-you-need/
Is this already added in SonarQube 5.4 ?
Thanks
Ganesh

A: What you should focus here is not the version of SonarQube but version of SonarQube Java Analyzer. Last release of the analyzer (3.12 at time of writing) contains rules that cover more than 80% of findbugs rules and this coverage is likely to keep increasing.
So yes, by updating to the latest version of SonarQube and the java analyzer, you don't need to use the FindBugs plugin anymore.
(Disclaimer, I am maintainer of the SonarQube java plugin, and author of the mentioned blog post in the question so I am a bit biaised here ;) )

redpajama_set_name: RedPajamaStackExchange


"I may be old/I may be fat," sings Dan Weintraub, and with those hilariously revealing lines he has totally won us over. Far too many of today's acoustic-pop artists are so focused on whoring themselves to suburban housewives and teenage girls that they've forgotten the folk roots of the genre. (Sadly, it has happened to country music as well.) This is lyrically driven style, and the words should not be nonsense. Weintraub writes candidly; you almost feel that you're trespassing into the forbidden territory of someone's mind. On "When I Was," Weintraub cleverly observes how people often view the past with rose-colored glasses, letting sentimentality and nostalgia disguise the biting reality of truth. So "When I Was" isn't about what Weintraub used to be; it's merely his original perception of himself.
The Lou Reed-esque "Too Many Lindas" jumps to the shuffling riffs of the Violent Femmes' "Kiss Off" while "Just Before You" aches with the morose introspection of American Music Club and Buffalo Tom. This is quiet music with loud emotions. Don't let the softness trick you. There is turbulence beneath the cozy embrace of Weintraub's acoustic riffs.


Our health and fitness are determined by the diet system we are follow. Dependent on our body's condition and requirements, the doctors and dietitians endorse different types of diet systems to be followed. you can prepare to improve your health these days, one of the most popular and frequent beneficial is to switch to an all organic diet. Organic foods are quite simply the finest possible source of food that you can be take in today. There are no injurious chemicals and no products that are destined to boost the growth of the foods are presented. With the popularity that is being shown with this type of the food, this should be no surprise the number of rations that are really starting to offer this.
When you decide that you are starting to go with an all organic diet, this is important to know that you are not going to be Organic Diet losing out on anything. These are simply too many wonderful choices that can be had when this comes to be food of this kind, that seeing back may actually be tough.
If you have decided that this is a good idea to take on an organic diet, you will be happy to see that everything that you will be buying is of the finest quality. The freshness in produce is going to be one of the major attention grabbers for you, as you will directly notice a difference. Not only does the organic fruits and vegetables taste healthier than their non-organic counterparts, they simply look healthier too. These tend to be brighter and fuller than non-organic fruits and vegetables. These will also have more care given to them by the produce department in the store. This is destined to draw you to the produce as this will look Organic Diet more attractive that what you were originally accustomed too. This is not necessarily a trick to get you to spend more money, as much as this is to get you to see the change between the products being offered. This is one of the best ways for stores to support you shift to an organic diet.
If the time has come for you to present an organic diet into your home for your family, you will be happy to know that there is a vast and apparently endless array of choices to be had with organic foods. you are not limited with just fruits and vegetables when this comes to organics, as the milk and even meats are now on board as well. This will brand life much easier for you if you have to tell your family that they are creation a switch. For the most part though, you would not have to remark anything at all, as much of the food is the same only pleasanter looking and tasting.
From this facet, you will be able to place these new accompaniments on the table and most likely not even provoke a response other than that the food tastes great. This will make the whole proposition of Organic Diet going to a full organic diet easier, if the young peoples in the family can be convinced that the food is healthier tasting than that of non-organic foods.


The PUMA Suede Gold Toe shoes are inspired by the popular PUMA Creeper by Rihanna.
The PUMA Suede Gold Toe shoes are inspired by the popular PUMA Creeper by Rihanna. In this version, they feature a monochromatic suede upper with gold toe and laces for a perfect fit. They feature the signature PUMA formstrip at lateral and medial sides and ridged tooling rubber platform outsole.


Frank and I completed this hike together. This hike included 2.9 miles on Lakeshore Trail (plus 1.5 miles on a wrong turn that lead to Lake Fontana, the lake was low and we actually ended up walking in the lake bed),11 miles on Forney Creek Trail,1.1 miles on forney Ridge Trail, 0.5 miles on Clingman's peak trail, 6 miles on the Appalachian Trail, and finally 1.8 miles on the Clingman's Dome Access Road. Plus about two miles of wondering for a total of 26 miles.
Our Hike began at the end of "The Road to Nowhere", Lakeview Drive and finished at Newfound Gap on Highway 441 where Frank's girlfriend picked us up.
Our trip began on Friday night just after dark. The trail begins by going through an abandoned tunnel, with plenty of graffiti, which was a cool start. We got to a certain point and decided to take the way that may lead to the lake, soon after this we missed a turn to stay on the lakeshore trail and actually ended up walking into the lake bed. For some reason the lake was 20-30' below its potential level. From here we headed back ond got back on the Lakeshore trail and met the Forney creek trail. From here we hiked until we reached campsite 69 just off of Forney Creek. To get here we had to make several creek crossings. For the first we tried to rock hop across, after I slipped and almost went into the water I suggested wading. Frank wasn't ready to give in and tried one more time, but ended up slipping into the water, after this he agreed to wade. We waded across pantless, shoeless and sockless. The water had to be near freezing, my toes immediately started stinging. At the next crossing our only non-wading option was a tree fallen across the creek. We had to straddle and scoot across this tree as it was too narrow to walk across. This wasn't too bad with exception to a huge knot that was difficult to get your manhood over. The final creek crossing we made over dry. We made it to camp at 2 AM, at camp 69, after just over 10 miles of hiking. I didn't sleep great as I got a little cold.
The next day we woke up around 8 AM and started packing up camp and we were back on the trail around 8:30 AM. Several more creek crossings on this day, we were able to make it across all of them dry, only the 1st crossing provided any real difficulty. Today the uphill started, I somehow misread the map and thought we were closer to the junction of Forney Creek and Forney Ridge than we were. Eventually we came up on camp 68, which unlike other sites, was well marked. (*Note: There were actually two camp 68s, both marked, I would guess 0.5 miles apart, this added to our confusion on exactly where were). Finally we reached the junction of Forney Creek and Ridge. Here we stopped for a decent size meal.
After a short discussion about going to Andrew's Bald we decided to skip it and continue to Clingmans. By this time we were both slowing down, Frank a bit more than I. We made it to the parking lot (empty since the access road was closed), the final 0.5 miles up a paved path was torturous, but we made it. The lookout tower is certainly unique and the views were beautiful. While at the top we saw the only other people over the two days.
From here we contacted Frank's girlfriend to pick us up, we asked her to meet us at 6:10 PM. We started back on the AT and crossed Mount Love and Mount Collins. Frank was slowing down considerably and it appeared we would end up making his girlfriend wait. Luckily we came out next to the Clingman's Dome Access Road, here we took the road and were able to pick up our pace. We actually reached Newfound Gap before Frank's girlfriend made it by about 1 minute. It was actually amazing timing. As I was being taken back to my truck I got to see my first wild boar, I would estimate the boar weighed at least 200 lbs.
Overall the hike was too much for one night and one day. It may be reasonable for two full days, but would probably be best for a three day trip. I enjoyed it just wished I had slept better at camp.
The drive home: I had a 2+ hour drive home from where my truck was parked. On the drive home I got to the point where I was so tired I couldn't concentrate on the road and had to pull over. I pulled into a gas station and set my alarm for 30 minutes. I awoke about 2 hours later to a gas attendant pecking at my window. At first he was kind of hateful, probably assuming I was drunk, but he calmed down when I told him I had been hiking and was just trying to get some sleep. He asked me to move to the other side of the gas station as he was getting a gas delivery, I went ahead and drove home. My alarm had been going off, but was in a setting that it didn't wake me up.
This page has been served 1181 times since 2005-01-15.


text:
#ifndef __eglext_h_
#define __eglext_h_

#ifdef __cplusplus
extern "C" {
#endif

#include <EGL/eglplatform.h>

/*************************************************************/

/* Header file version number */
/* Current version at http://www.khronos.org/registry/egl/ */
/* $Revision: 10185 $ on $Date: 2010-01-22 11:38:01 -0800 (Fri, 22 Jan 2010) $ */
#define EGL_EGLEXT_VERSION 5

#ifndef EGL_KHR_config_attribs
#define EGL_KHR_config_attribs 1
#define EGL_CONFORMANT_KHR			0x3042	/* EGLConfig attribute */
#define EGL_VG_COLORSPACE_LINEAR_BIT_KHR	0x0020	/* EGL_SURFACE_TYPE bitfield */
#define EGL_VG_ALPHA_FORMAT_PRE_BIT_KHR		0x0040	/* EGL_SURFACE_TYPE bitfield */
#endif

#ifndef EGL_KHR_lock_surface
#define EGL_KHR_lock_surface 1
#define EGL_READ_SURFACE_BIT_KHR		0x0001	/* EGL_LOCK_USAGE_HINT_KHR bitfield */
#define EGL_WRITE_SURFACE_BIT_KHR		0x0002	/* EGL_LOCK_USAGE_HINT_KHR bitfield */
#define EGL_LOCK_SURFACE_BIT_KHR		0x0080	/* EGL_SURFACE_TYPE bitfield */
#define EGL_OPTIMAL_FORMAT_BIT_KHR		0x0100	/* EGL_SURFACE_TYPE bitfield */
#define EGL_MATCH_FORMAT_KHR			0x3043	/* EGLConfig attribute */
#define EGL_FORMAT_RGB_565_EXACT_KHR		0x30C0	/* EGL_MATCH_FORMAT_KHR value */
#define EGL_FORMAT_RGB_565_KHR			0x30C1	/* EGL_MATCH_FORMAT_KHR value */
#define EGL_FORMAT_RGBA_8888_EXACT_KHR		0x30C2	/* EGL_MATCH_FORMAT_KHR value */
#define EGL_FORMAT_RGBA_8888_KHR		0x30C3	/* EGL_MATCH_FORMAT_KHR value */
#define EGL_MAP_PRESERVE_PIXELS_KHR		0x30C4	/* eglLockSurfaceKHR attribute */
#define EGL_LOCK_USAGE_HINT_KHR			0x30C5	/* eglLockSurfaceKHR attribute */
#define EGL_BITMAP_POINTER_KHR			0x30C6	/* eglQuerySurface attribute */
#define EGL_BITMAP_PITCH_KHR			0x30C7	/* eglQuerySurface attribute */
#define EGL_BITMAP_ORIGIN_KHR			0x30C8	/* eglQuerySurface attribute */
#define EGL_BITMAP_PIXEL_RED_OFFSET_KHR		0x30C9	/* eglQuerySurface attribute */
#define EGL_BITMAP_PIXEL_GREEN_OFFSET_KHR	0x30CA	/* eglQuerySurface attribute */
#define EGL_BITMAP_PIXEL_BLUE_OFFSET_KHR	0x30CB	/* eglQuerySurface attribute */
#define EGL_BITMAP_PIXEL_ALPHA_OFFSET_KHR	0x30CC	/* eglQuerySurface attribute */
#define EGL_BITMAP_PIXEL_LUMINANCE_OFFSET_KHR	0x30CD	/* eglQuerySurface attribute */
#define EGL_LOWER_LEFT_KHR			0x30CE	/* EGL_BITMAP_ORIGIN_KHR value */
#define EGL_UPPER_LEFT_KHR			0x30CF	/* EGL_BITMAP_ORIGIN_KHR value */
#ifdef EGL_EGLEXT_PROTOTYPES
EGLAPI EGLBoolean EGLAPIENTRY eglLockSurfaceKHR (EGLDisplay display, EGLSurface surface, const EGLint *attrib_list);
EGLAPI EGLBoolean EGLAPIENTRY eglUnlockSurfaceKHR (EGLDisplay display, EGLSurface surface);
#endif /* EGL_EGLEXT_PROTOTYPES */
typedef EGLBoolean (EGLAPIENTRYP PFNEGLLOCKSURFACEKHRPROC) (EGLDisplay display, EGLSurface surface, const EGLint *attrib_list);
typedef EGLBoolean (EGLAPIENTRYP PFNEGLUNLOCKSURFACEKHRPROC) (EGLDisplay display, EGLSurface surface);
#endif

#ifndef EGL_KHR_image
#define EGL_KHR_image 1
#define EGL_NATIVE_PIXMAP_KHR			0x30B0	/* eglCreateImageKHR target */
typedef void *EGLImageKHR;
#define EGL_NO_IMAGE_KHR			((EGLImageKHR)0)
#ifdef EGL_EGLEXT_PROTOTYPES
EGLAPI EGLImageKHR EGLAPIENTRY eglCreateImageKHR (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list);
EGLAPI EGLBoolean EGLAPIENTRY eglDestroyImageKHR (EGLDisplay dpy, EGLImageKHR image);
#endif /* EGL_EGLEXT_PROTOTYPES */
typedef EGLImageKHR (EGLAPIENTRYP PFNEGLCREATEIMAGEKHRPROC) (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list);
typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYIMAGEKHRPROC) (EGLDisplay dpy, EGLImageKHR image);
#endif

#ifndef EGL_KHR_vg_parent_image
#define EGL_KHR_vg_parent_image 1
#define EGL_VG_PARENT_IMAGE_KHR			0x30BA	/* eglCreateImageKHR target */
#endif

#ifndef EGL_KHR_gl_texture_2D_image
#define EGL_KHR_gl_texture_2D_image 1
#define EGL_GL_TEXTURE_2D_KHR			0x30B1	/* eglCreateImageKHR target */
#define EGL_GL_TEXTURE_LEVEL_KHR		0x30BC	/* eglCreateImageKHR attribute */
#endif

#ifndef EGL_KHR_gl_texture_cubemap_image
#define EGL_KHR_gl_texture_cubemap_image 1
#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X_KHR	0x30B3	/* eglCreateImageKHR target */
#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X_KHR	0x30B4	/* eglCreateImageKHR target */
#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y_KHR	0x30B5	/* eglCreateImageKHR target */
#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_KHR	0x30B6	/* eglCreateImageKHR target */
#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z_KHR	0x30B7	/* eglCreateImageKHR target */
#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_KHR	0x30B8	/* eglCreateImageKHR target */
#endif

#ifndef EGL_KHR_gl_texture_3D_image
#define EGL_KHR_gl_texture_3D_image 1
#define EGL_GL_TEXTURE_3D_KHR			0x30B2	/* eglCreateImageKHR target */
#define EGL_GL_TEXTURE_ZOFFSET_KHR		0x30BD	/* eglCreateImageKHR attribute */
#endif

#ifndef EGL_KHR_gl_renderbuffer_image
#define EGL_KHR_gl_renderbuffer_image 1
#define EGL_GL_RENDERBUFFER_KHR			0x30B9	/* eglCreateImageKHR target */
#endif

#ifndef EGL_KHR_reusable_sync
#define EGL_KHR_reusable_sync 1

typedef void* EGLSyncKHR;
typedef khronos_utime_nanoseconds_t EGLTimeKHR;

#define EGL_SYNC_STATUS_KHR			0x30F1
#define EGL_SIGNALED_KHR			0x30F2
#define EGL_UNSIGNALED_KHR			0x30F3
#define EGL_TIMEOUT_EXPIRED_KHR			0x30F5
#define EGL_CONDITION_SATISFIED_KHR		0x30F6
#define EGL_SYNC_TYPE_KHR			0x30F7
#define EGL_SYNC_REUSABLE_KHR			0x30FA
#define EGL_SYNC_FLUSH_COMMANDS_BIT_KHR		0x0001	/* eglClientWaitSyncKHR <flags> bitfield */
#define EGL_FOREVER_KHR				0xFFFFFFFFFFFFFFFFull
#define EGL_NO_SYNC_KHR				((EGLSyncKHR)0)
#ifdef EGL_EGLEXT_PROTOTYPES
EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateSyncKHR(EGLDisplay dpy, EGLenum type, const EGLint *attrib_list);
EGLAPI EGLBoolean EGLAPIENTRY eglDestroySyncKHR(EGLDisplay dpy, EGLSyncKHR sync);
EGLAPI EGLint EGLAPIENTRY eglClientWaitSyncKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout);
EGLAPI EGLBoolean EGLAPIENTRY eglSignalSyncKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode);
EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttribKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value);
#endif /* EGL_EGLEXT_PROTOTYPES */
typedef EGLSyncKHR (EGLAPIENTRYP PFNEGLCREATESYNCKHRPROC) (EGLDisplay dpy, EGLenum type, const EGLint *attrib_list);
typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync);
typedef EGLint (EGLAPIENTRYP PFNEGLCLIENTWAITSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout);
typedef EGLBoolean (EGLAPIENTRYP PFNEGLSIGNALSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode);
typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCATTRIBKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value);
#endif

/* EGL_MESA_screen extension  >>> PRELIMINARY <<< */
#ifndef EGL_MESA_screen_surface
#define EGL_MESA_screen_surface 1

#define EGL_BAD_SCREEN_MESA                    0x4000
#define EGL_BAD_MODE_MESA                      0x4001
#define EGL_SCREEN_COUNT_MESA                  0x4002
#define EGL_SCREEN_POSITION_MESA               0x4003
#define EGL_SCREEN_POSITION_GRANULARITY_MESA   0x4004
#define EGL_MODE_ID_MESA                       0x4005
#define EGL_REFRESH_RATE_MESA                  0x4006
#define EGL_OPTIMAL_MESA                       0x4007
#define EGL_INTERLACED_MESA                    0x4008
#define EGL_SCREEN_BIT_MESA                    0x08

typedef uint32_t EGLScreenMESA;
typedef uint32_t EGLModeMESA;

#ifdef EGL_EGLEXT_PROTOTYPES
EGLAPI EGLBoolean EGLAPIENTRY eglChooseModeMESA(EGLDisplay dpy, EGLScreenMESA screen, const EGLint *attrib_list, EGLModeMESA *modes, EGLint modes_size, EGLint *num_modes);
EGLAPI EGLBoolean EGLAPIENTRY eglGetModesMESA(EGLDisplay dpy, EGLScreenMESA screen, EGLModeMESA *modes, EGLint modes_size, EGLint *num_modes);
EGLAPI EGLBoolean EGLAPIENTRY eglGetModeAttribMESA(EGLDisplay dpy, EGLModeMESA mode, EGLint attribute, EGLint *value);
EGLAPI EGLBoolean EGLAPIENTRY eglGetScreensMESA(EGLDisplay dpy, EGLScreenMESA *screens, EGLint max_screens, EGLint *num_screens);
EGLAPI EGLSurface EGLAPIENTRY eglCreateScreenSurfaceMESA(EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list);
EGLAPI EGLBoolean EGLAPIENTRY eglShowScreenSurfaceMESA(EGLDisplay dpy, EGLint screen, EGLSurface surface, EGLModeMESA mode);
EGLAPI EGLBoolean EGLAPIENTRY eglScreenPositionMESA(EGLDisplay dpy, EGLScreenMESA screen, EGLint x, EGLint y);
EGLAPI EGLBoolean EGLAPIENTRY eglQueryScreenMESA(EGLDisplay dpy, EGLScreenMESA screen, EGLint attribute, EGLint *value);
EGLAPI EGLBoolean EGLAPIENTRY eglQueryScreenSurfaceMESA(EGLDisplay dpy, EGLScreenMESA screen, EGLSurface *surface);
EGLAPI EGLBoolean EGLAPIENTRY eglQueryScreenModeMESA(EGLDisplay dpy, EGLScreenMESA screen, EGLModeMESA *mode);
EGLAPI const char * EGLAPIENTRY eglQueryModeStringMESA(EGLDisplay dpy, EGLModeMESA mode);
#endif /* EGL_EGLEXT_PROTOTYPES */

typedef EGLBoolean (EGLAPIENTRYP PFNEGLCHOOSEMODEMESA) (EGLDisplay dpy, EGLScreenMESA screen, const EGLint *attrib_list, EGLModeMESA *modes, EGLint modes_size, EGLint *num_modes);
typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETMODESMESA) (EGLDisplay dpy, EGLScreenMESA screen, EGLModeMESA *modes, EGLint modes_size, EGLint *num_modes);
typedef EGLBoolean (EGLAPIENTRYP PFNEGLGetModeATTRIBMESA) (EGLDisplay dpy, EGLModeMESA mode, EGLint attribute, EGLint *value);
typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSCRREENSMESA) (EGLDisplay dpy, EGLScreenMESA *screens, EGLint max_screens, EGLint *num_screens);
typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATESCREENSURFACEMESA) (EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list);
typedef EGLBoolean (EGLAPIENTRYP PFNEGLSHOWSCREENSURFACEMESA) (EGLDisplay dpy, EGLint screen, EGLSurface surface, EGLModeMESA mode);
typedef EGLBoolean (EGLAPIENTRYP PFNEGLSCREENPOSIITONMESA) (EGLDisplay dpy, EGLScreenMESA screen, EGLint x, EGLint y);
typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSCREENMESA) (EGLDisplay dpy, EGLScreenMESA screen, EGLint attribute, EGLint *value);
typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSCREENSURFACEMESA) (EGLDisplay dpy, EGLScreenMESA screen, EGLSurface *surface);
typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSCREENMODEMESA) (EGLDisplay dpy, EGLScreenMESA screen, EGLModeMESA *mode);
typedef const char * (EGLAPIENTRYP PFNEGLQUERYMODESTRINGMESA) (EGLDisplay dpy, EGLModeMESA mode);

#endif /* EGL_MESA_screen_surface */

#ifndef EGL_MESA_copy_context
#define EGL_MESA_copy_context 1

#ifdef EGL_EGLEXT_PROTOTYPES
EGLAPI EGLBoolean EGLAPIENTRY eglCopyContextMESA(EGLDisplay dpy, EGLContext source, EGLContext dest, EGLint mask);
#endif /* EGL_EGLEXT_PROTOTYPES */

typedef EGLBoolean (EGLAPIENTRYP PFNEGLCOPYCONTEXTMESA) (EGLDisplay dpy, EGLContext source, EGLContext dest, EGLint mask);

#endif /* EGL_MESA_copy_context */

#ifndef EGL_KHR_image_base
#define EGL_KHR_image_base 1
/* Most interfaces defined by EGL_KHR_image_pixmap above */
#define EGL_IMAGE_PRESERVED_KHR			0x30D2	/* eglCreateImageKHR attribute */
#endif

#ifndef EGL_KHR_image_pixmap
#define EGL_KHR_image_pixmap 1
/* Interfaces defined by EGL_KHR_image above */
#endif

#ifndef EGL_IMG_context_priority
#define EGL_IMG_context_priority 1
#define EGL_CONTEXT_PRIORITY_LEVEL_IMG		0x3100
#define EGL_CONTEXT_PRIORITY_HIGH_IMG		0x3101
#define EGL_CONTEXT_PRIORITY_MEDIUM_IMG		0x3102
#define EGL_CONTEXT_PRIORITY_LOW_IMG		0x3103
#endif

#ifdef __cplusplus
}
#endif

#endif

redpajama_set_name: RedPajamaGithub


text:
Artur Auladell Alfaro (El Masnou, (Barcelona); ) es un exjugador de baloncesto español.

Trayectoria
Se inicia en el mundo del baloncesto  con 15 años en su El Masnou natal. Con 17 años, en edad juvenil es fichado por la cantera del Joventut de Badalona, equipo donde llegaría al primer equipo, y donde jugaría hasta los 24 años, luego jugaría en el UE Mataró  durante 6 años, siendo entrenado por Antoni Serra, después se retiró durante dos años, y volvió a la práctica activa del baloncesto fichando por el Pineda de Jordi Parra, equipo donde jugaría 2 años, retirándose ya definitivamente con 34 años.

Internacionalidades
Fue internacional con España en 28 ocasiones
. Participó en los siguientes eventos:
 Juegos Mediterráneos de 1959: 2 posición.
 Juegos Mediterráneos de 1963: 2 posición.
 Eurobasket 1959: 15 posición.
 Eurobasket 1963: 7 posición.

Referencias

Baloncestistas de España
Baloncestistas de la selección de España
Baloncestistas del Unió Esportiva Mataró
Baloncestistas del Club Joventut de Badalona
Deportistas de Cataluña
Nacidos en El Masnou

redpajama_set_name: RedPajamaWikipedia


This event is registered to National Blueberry Festival and the User ID for this account is shblueberry. The email address that has control of this account is in∗∗∗ @ blueberryfestival.com. You must login with User ID shblueberry to update this event.
If you do not have the password for this account and don't have access to in∗∗∗ @ blueberryfestival.com (to have the password sent to you), please contact support@festivalnet.com to gain access to this event.


text:
Summary of the Introduced Bill
HB 533 -- Public Service Accountability Act
Sponsor:  Walsh
This bill establishes the Public Service Accountability Act which
requires most public bodies to analyze the costs and benefits of
privatizing any service valued at $25,000 or more.  The public
body must prepare a statement of services proposed to be the
subject of the privatization contract that includes the specific
quantity and standard of quality which will be used to solicit
sealed bids.  The bill contains requirements for the bidding
procedure.  A comprehensive written estimate of the cost of a
privatization contract and the cost of regular public employees
providing the services must be prepared.  A contract can only be
granted when the cost differential is more than a 10% savings.
Minimum wages for the privatization contract are established, and
no contract may exceed two years in length.  Privatization
contractors must offer employment positions to qualified agency
employees whose jobs are eliminated as a result of the contract.
The bill specifies other considerations for the awarding of a
privatization contract.  Certain restrictions are placed on the
hiring of a subcontractor and the guidelines for the contractor
to follow during the length of the privatization contract.
Remedies for a violation of a provision of the bill are
specified.  Funds of a public body may not be used to support or
oppose unionization.
A "privatization contract" is defined as an agreement, or a
combination or series of agreements, by which a nongovernmental
person or entity agrees with a public body to provide services
which are substantially similar to and in lieu of services which
have been provided, in whole or in part, by regular employees of
a public body.
The bill contains an emergency clause.
Copyright (c) Missouri House of Representatives
Last Updated July 25, 2007 at 11:19 am

redpajama_set_name: RedPajamaCommonCrawl


Moving Still is the most gorgeous, enticing, classic album of 2016 in jazz so far.
Three years ago, trumpeter and composer Jonathan Finlayson released his first recording as a leader, a riveting collection of engaging, modern music for quintet. The tunes presented on Moment and the Message spliced together the joys of crackling hard bop, bits of folk and funk music, and the modern experiments of his mentors/forefathers, Steve Coleman and Henry Threadgill. It didn't hurt that the band was astonishing and perfectly in sync with Finlayson's influences and aesthetic.
Moving Still brings back the same instrumentation and approach, and it proves that Finlayson is among the most exciting and puckish composers in the music today. This new collection may be an improvement on the first -- deeper in feeling while still jaunty, exceedingly clever, and able to cover lots of fancy footwork in joyous execution.
This time out, the trumpeter is again paired on many melodies with Miles Okazaki, the versatile guitarist from Steve Coleman's band. Matt Mitchell (a leader, certainly, but brilliantly showcased in Dave Douglas's quintet as a player who is both soulful and abstract at once) is now the pianist, and the more you hear him, the more you fall for him. The rhythm section pairs veteran bass player John Hebert and the young Craig Weinrib from Threadgill's latest recording. The band's work here is panoramic: it swings and it gets strange, it has a little funk and it earns your dazzle.
It starts off, perhaps surprisingly, with Okazaki playing a gentle, chordal introduction on "All of the Pieces" that might be at home on a folk ballad. The band enters with a grooving bass line of funky downward motion over which Finlayson plays a hip -- but quite simple -- melody on trumpet, which is then echoed by Mitchell's piano. Nice. But the game of chase and follow is only starting. Piano and guitar converge for a unison run played against trumpet, which leads to a third line with the trumpet playing accompaniment as the rhythm section surges to the front. Does it sound exhausting to listen to? It's not. The complexity here is so logical and melodic that it comes off as natural. Okazaki's solo is as clear and sculpted as anything by John Scofield or Pat Metheny. This music, for all its trickiness, invites you in.
Finlayson has found, in his writing and in the skills of this quintet, a bracing balance of lyricism and rhythmic intensity. Matt Mitchell embodies this, for example, in his playing on "Space And". The song begins with the pianist playing echoing piano clusters and chords, ringing them in both the high and low registers. A minute in, Okazaki starts playing a Morse Code pattern on guitar that is joined in polyrhythm by everyone else, including a punching trumpet melody -- and it sounds like a hip drum circle, so rhythmic is the whole band. Mitchell finds his way to a ringing repeated Steve Reich-ian pattern that gets repeated after a bit by Mitchell and Okazaki together. Still, the tune belongs to the pianist, whose lead-off solo moves from a set of jagged licks to a fully realized melody that flows through the original pattern.
There are moments when this band comes off like a downtown version of the Grateful Dead. "Flank and Center" begins as mostly groove and then gets more complicated. Weinrib starts with a dancing drum solo that culminates in a funky pattern of snare-click trades with two or three-note bursts of melody from trumpet, guitar, and bass/piano in a tight rotation. Eventually, the rotation breaks down into a collective improvisation, with Finlayson up top, but everyone else improvising in their own register -- the jam band effect is achieved, but at the highest level. By this point, however, the center of the tune has shifted to a flowing lyricism. The chaos never sounds like chaos. It is tight as can be, with the exploration both elastic and brief. Barely two minutes of improvisation and we are back to the groove.
Long-form melody is then featured on "Cap Vs. Nim". A melody written for all the instruments (including drums) in unison and octaves, this line features Finlayson using a mute. What is so keen about this, however, is that the melody ends up being inventive for some 50 or 60 bars, continually unwinding as a written theme for the whole band not repeating itself. Eventually, it gives way to much shorter improvisations by the players, but the track reverses the standard balance of a jazz performance, with a portion more written than improvised. The best solo comes from the leader, whose dialogue with his own written lines for piano become the counterpoint to his probing and ascending.
Two other songs on Moving Still reflect the specific influence of a trumpet player whose imprint on jazz today is everywhere, always. "Between Moves" is a sneaky and brilliant piece of improvised impressionism. Beginning with fluttering improv from the rhythm section, it eventually builds into a modal jam that sounds just enough like Miles Davis's "In a Silent Way". The slow boil of the trumpet solo highlights Finlayson's expertly modulated timbre on this record. While I have always associated him with a clear and quicksilver tone, here, he is more varied and expressive, using subtle tonal difference to express longing, passion, growth, and tension.
The very next song, "Folk Song", also leans on a feeling and push-pull rhythmic approach that I associate with the late records of Miles Davis's 1960s quintet. Like "Frelon Braun" and the title track from Filles de Kilimanjaro, this last song has a surging sense of swing that lunges in little controlled bursts -- funky but also gentle. The openness of the sound and the inevitable feeling of harmonic motion in the composition keeps you feeling every note.
That is a huge amount of ground for five musicians to cover in a half dozen compositions, but the work of Jonathan Finlayson and Sicilian Defense is ambitious. That it does not come off as mannered in its ambition is that much more proof that this is one of the brilliant projects in the music today. Moving Still is the most gorgeous, enticing, classic album of 2016 in jazz so far.


text:
Hooray for speedy I-580 reopening
On those happy occasions when the public and private sectors work together seamlessly to solve a nasty problem with record-breaking speed, all of us can feel a sense of proud satisfaction.
All citizens want to have confidence that when trouble strikes, their government will be there with innovative solutions and good management. That is exactly what happened in Northern California, as last night the second of two vital eastern Bay Bridge connectors reopened only 25 days after being destroyed in a fiery tanker truck crash.
The Bay Area highway commute is already pushing capacity. So when the earliest engineering estimates warned of an 18-month closure of the Interstate 580 overpass and the Interstate 80 connector to Interstate 880, drivers feared a lengthy period of crossbay pain and suffering.
But then Highway I-80 quickly proved to be repairable instead of necessitating total replacement. Caltrans crews working around the clock reinforced the damaged section so it could reopen to normal traffic only nine days after becoming impassable.
Still, a football-field length of the I-580 overpass was pulverized into falling rubble by the fuel explosion, and the official Caltrans replacement deadline was June 27. But the winning contractor got the job done in less than half that time —and the overpass even opened about nine hours earlier than previously announced.
Bountiful kudos all around for this impressive feat of public works! Although Gov. Arnold Schwarzenegger played an unaccustomed supporting role in this drama, he enabled immediate work to commence by doing everything possible to clear the way. He declared a state of emergency and ordered the state to advance necessary funding at once, without awaiting federal monies available for interstate highway emergencies. The governor even arranged to reimburse public transportation agencies the $2.5 million cost of free rides on the first closure day.
We already praised the "new Caltrans" in an editorial when I-80 reopened May 7. But under Schwarzenegger's Caltrans director Will Kempton, who again proved himself a maestro of public works management, the formerly stolid highway agency seems virtually reborn as a hard-charging creative force. Caltrans put through the I-580 work bids in record time, structuring the contract so the maximum $5 million bonus payout could only be earned by completing a safe replacement weeksahead of schedule.
Low bidder C.C. Myers added to his company's luster as California's foremost speed-bonus road builder first won in 1994. After the Northridge earthquake, Myers repaired the Santa Monica Freeway in Los Angeles 74 days ahead of schedule, earning a $15.4 million bonus atop the $14.7 million contract.
Myers' crews were working nonstop almost as soon as the contract was signed. And hard-to-get fabricated steel beams were en route from Arizona within days. The commuting public also deserves praise for acting sensibly throughout the closure, even riding BART in record numbers.
Housing quota charade time
Senators spending blindly, aimlessly


Calling the expectations for the latest episode of Boruto high is quite the understatement, as is saying that it lived up to those dreams. All fans aware of what was brewing reached this episode anticipating an almost impossible sakuga extravaganza, and still got something that surpassed their hopes. But beyond the success of the team, what's really important this time around is the road that got them there. This is the power of international, intergenerational anime.
Chengxi Huang has been the darling of Boruto's fandom since before it even existed. His first venture into this industry dates back to 2013, when he joined Studio Candybox – a subcontracting company based in Japan that's gradually earned positive recognition in the field, while at the same time helping acclimate noteworthy Chinese artists like Huang. It was through them that he got the opportunity to work on Naruto, so it's no exaggeration to say that he owes them for the offer he received to properly join the team at Pierrot later down the line. He was able to contribute to the series that convinced him to chase this dream in the first place, and perhaps more importantly, learn under the person he came to admire most: Hiroyuki Yamashita. He did his best to absorb his mentor's mentality, his approach to work, and of course his technique; when he fondly reminisces about fans getting his work mixed up with Yamashita's for quite a long time he's not making a mountain out of a molehill – that did happen a lot, and in defense of all the people who mixed them up, his mimicry of scenes as iconic as Yamashita's hypnotic blade dances is exceptional. He gradually established a voice of his own by intermingling his personal interests into his work, becoming one of Pierrot's greatest animation assets in the process. By the time Boruto arrived, with Yamashita moving up to series direction duties, Huang had become the undisputed ace of the production.
Now that would be an impressive accomplishment on its own, but Huang had a goal in mind: becoming a director. Achieving that dream on the week of his birthday, in the franchise that he loves so dearly, under the supervision of his mentor, and being able to put together one of the all-time highs for the entire series makes this whole ordeal as sweet as it could possibly be. But that happy conclusion worthy of a movie wasn't reached following an equally pleasant path. For all of its qualitative goodness, Boruto #65 is supported by quantitative absurdity. Enough to force Huang to work 500 hours over the last month alone (don't do the basic math unless you want your soul to shatter). Perhaps hearing that it was composed of 510 cuts of animation doesn't tell you much, but once you realize that episodes generally fluctuate around 250~300, and that only one of a kind productions like Violet Evergarden peak that high, you'll begin understanding the ridiculous amount of work it took – especially since this episode is functionally a full-length sakuga action compilation, densely packed with spectacle and with little to no downtime.
It's no coincidence that so much effort was channeled into this episode, of course. It's a climactic moment with emotional baggage that extends back to its predecessor Naruto, serving as the true baton pass between the two. This whole arc is covering content that was depicted in Boruto: Naruto the Movie in the first place, meaning that it has to live up to the footage of a film that they've actually repurposed on multiple occasions, including a handful of scenes in this very same episode. That said, I don't want to give the impression that this was the natural result of the production as a whole planning for it. The studio did allocate resources reserved for special occasions and the schedule was solid enough (Huang got to contact animators between February-March and the animation process started the next month, though not everyone's experiences are the same in that regard) but something like Boruto #65 wouldn't have happened if that's all there was. Much as we stress that the strongest TV anime offerings tend to be a result of exceptionally good scheduling and project management, this episode was an anomaly brute-forced into existence by a team led by Chengxi Huang. They're the ones you should be most thankful to.
That's been quite the lengthy introduction, but in this case I really feel like it's more important to be thorough regarding the circumstances, as the episode itself is already eloquent enough. Huang's first major attempt at storyboarding is straightforward but genius in its simplicity. The episode is adorned with a handful of neat concepts, like this seamless transition in and out a flashback using Boruto himself to create a match cut. Since there are a couple of instances where partial obscuring is used as a means of transition – like using the existing effects to allow Naruto to elegantly switch forms and physically putting an end to his son's cheering before we're back into combat – this might develop into one of his early directorial traits. His emotional delivery was similarly uncomplicated: it does what it should and that's more than enough for an episode that cashes out on feelings cultivated for decades. As a massive fan himself, Huang understands the narrative significance of the baton pass in the form of a rasengan, the franchise's iconic technique. An important moment that becomes even sweeter when you consider the metatext; just a few years ago, Huang animated an excellent cut that flashed through characters as they slowly raised their hand. That was in Naruto Shippuden's 18th opening, directed, storyboarded, and supervised by his mentor Yamashita. Now, Huang gets to occupy the same role and include a similar concept. The switch into a new generation is occurring on multiple levels.
If there's an aspect where Huang's work outperforms any reasonable expectations of what a beginner should be capable of, it's got to be the action storyboarding. He guided the hands of the animators and our eyes as viewers with an expertise that makes you shudder when you imagine what he might be capable of in a few years. Huang has the understanding of movement you'd expect from an ace animator, but he's also proved to have a solid grasp on what makes the flow of battle exciting in the first place, as well as technical knowledge regarding fighting techniques. His passion for martial arts and desire to implement them into this franchise have never been a secret, so a fight against a foe they were forced to fight at close quarters was a perfect match – sakugabooru's biggest martial arts nerd had as much of a field day with this as Huang did conceptualizing the whole thing. His animation work is very tactile and he succeeded at conveying that principle to the team working under him. None of those ideas rooted in realism stopped a confrontation between people at the level of deities from feeling as grandiose as it should, though. The layouts highlight the absurd scale of the fight, as do the characters constantly walking into the frame to suggest an even larger space. Touches of exaggeration (like emulating ludicrous force by shaking the lineart, which he'd had applied to his animation before) are sprinkled throughout, even via his trademark externalized acting and grimaces that are present among the 70 cuts he personally key animated but also within other people's sequences. Boruto #65 is, to the surprise of no one, covered in Huang's flair.
This is what guzzu's wonderful animation looked like before he started drawing on top of an ancient burial ground and cursed his scene with infinite ghosting.
But that's not all there is to this episode. As crucial as Huang's herculean efforts were, the international mention in the title doesn't simply refer to his origins. The team he assembled includes people from all over the globe, starting from his direct acquaintances and extending further to people recommended by them. They all did such an exceptional job that I feel like we'd be here all day if I took my time to gush about every single notable moment. Weiling Zhang, credited as Golge, earned the love of countless fans with his breath-taking execution of some of the most exhilarating concepts in the episode, which Tilfinning managed to follow-up with one of those grand pieces of background animation that go a long way to illustrate the sheer scale of the fight. Though we won't be able to enjoy guzzu's sequence in its full glory until the DVD release gets rids of the nasty ghosting, at least Kilocrescent's usual sharpness couldn't be ruined by technical shenanigans. The effortless superlative strength conveyed by Hartova Maverick, that focus on expression during hectic battle by Hero and Muggle's indie action charm, the relay between Hiromatsu Shuu, David Bradshaw, and the Green Monster Team duo Zhenhua Liu and Optical Core that's all about the magnitude of the confrontation, the feeling of solidity in Spencer Wan's short but magnificent sequence… Even if you only focus on the contributions by non-Japanese artists, there's no end to the exceptional cuts.
Though of course, the point of the internet shattering barriers isn't to make anime rely exclusively on overseas talent, hence why equally talented Japanese youngsters in similar positions were also recruited; Ren Onodera, who already stood out alongside Sute in Black Clover's brilliant third opening, was entrusted with part of a scene so demanding that even a team like this had to majorly fall back on the movie's version of the events. This kind of online networking is key in modern projects of this ilk, but that's not the only way in which Boruto #65 is a product of its time. Certain predominant aesthetic trends are embraced so transparently that even an older living legend like Toshiyuki Inoue was able to immediately sniff out people's influences, even though he was only acquainted with Wan's work beforehand. The Norio Matsumoto and especially Yutaka Nakamura inspiration he detected from animators like Gem is honestly palpable in their work, but it still brings a smile to my face to see one of the major voices in this field quickly noticing the exact influences many of these artists had listed in the exclusive To be Heroine interview we held on this site last season. Further proof that they do channel their idols effectively!
After all this celebration of young talent comes the tricky part, which is to point out that as valuable as the contributions of all these up-and-coming artists were, they wouldn't have reached this level without the support of veterans. The likes of Hirofumi Suzuki and Hirofumi Masuda are scattered within action sequences, while experienced animation directors shielded the youngsters' experimentation and wild work from usual criticism by keeping stuff on-model as much as it was reasonable. Pierrot and Production I.G icon Tetsuya Nishio, quite the institution when it comes to the franchise as well, quietly stole the show with a final scene that doesn't take many flourishes to sell the relaxation after a tense battle. If you feel these are minor points, keep in mind Tatsuya Yoshihara's lamentation that Pierrot isn't able to provide the same for him. Yoshihara is a digital animation ringleader who's spent years leading teams of youngsters and consistently discovering new talent (including people who contributed to this episode!), and yet his current role as Black Clover's series director is driving him nuts; without the studio's proper support and a regular influx of experienced staff, it's impossible to create an environment where newcomers can do their best. Now that's something that Boruto arguably doesn't achieve on the regular either, but it's undeniable that it paid a huge role in this episode.
In many ways, this episode is reminiscent of Fate/Apocrypha #22, perhaps the greatest production achievement among 2017's TV anime. A newcomer director not born in Japan, who'd already gained recognition as animator, put together a team with international representation to create a spectacular episode notoriously influenced by modern trends. But even more so than that case, Boruto #65 achieved what it did through the support of older and more experienced staff, resting on layers upon layers of mentorships. While the rise of new stars is to be celebrated, we shouldn't take the title Boruto: The Next Generation too literally to the point of assuming that anime's path to triumph is simply to discard older creators in favor of new voices. This ability to congregate different generations from people all around the planet is the real strength at the core of this episode. Those who joined the industry because of this series, working alongside the ones who first produced it, no matter their nationality. That is what we should strive for.
I'm proud of Huang for achieving his dream and in special representing all the long time fans of Naruto even if they don´t follow Boruto like me. This episode was just fantastic for a while i forgot that i was watching Boruto and got back in time, and at the same time i was bring back to Boruto to watch a pass of the baton. I'm excited to see what this promising group of talented animators will bring us in the future and of course Huang more direction tasks.
Sadly, Boruto doesn't actually have any Blu-ray releases in Japan. Just DVD. Unless VIZ Media does a Blu-ray release once it's all dubbed, it'll never be seen in HD without the ghosting. It's odd, as Boruto is produced slightly over 720p, so it could get a Blu-ray release, but it doesn't.
I was under the impression that they'd switched to BD for the boxes with Boruto, but it was just the movie I'd seen available on Amazon. I know disc releases aren't the focus on long-running shows majorly aimed at younger viewers, but it's still pretty unfortunate. Even the DVD will feel like a blessing for guzzu's scene though!
Sorry for the late response, but it looks like Boruto will be getting a BD release in France, at least. So now there's a way to see all the broadcast ruined content in its full glory!
Guzzu the sakuga ghost will finally come back to life.


text:
/* =============================================================================
 *
 *                  COPYRIGHT 2010 BBN Technologies Corp.
 *                  1300 North 17th Street, Suite 600
 *                       Arlington, VA  22209
 *                          (703) 284-1200
 *
 *       This program is the subject of intellectual property rights
 *       licensed from BBN Technologies
 *
 *       This legend must continue to appear in the source code
 *       despite modifications or enhancements by any party.
 *
 *
 * ==============================================================================
 */
package com.bbn.c2s2.pint.pf;

import java.io.Serializable;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.bbn.c2s2.pint.Activity;
import com.bbn.c2s2.pint.Binding;
import com.bbn.c2s2.pint.IBinding;
import com.bbn.c2s2.pint.ISolutionReport;

/**
 * This class provides all of the information for a particular solution,
 * including the score, list of ordered activities, bindings, and process No
 * internal cache data is included in this object, so it can be considered a
 * lightweight object suitable for transmission.
 *
 * @author reblace
 *
 */
public class SolutionReport implements Serializable, Comparable<ISolutionReport>, ISolutionReport {

	private static final long serialVersionUID = 1223182083892462430L;
	public static final DateFormat DATE_FORMAT = new SimpleDateFormat(
			"yyyy-MM-dd'T'HH:mm:ssZ");

	private double solutionScore = -1.0;
	private List<Activity> orderedActivities;
	private Map<Integer, IBinding> bindings;
	private String processLabel;
	private String processUri;

	/**
	 * Creates a new solution report copying from an {@link EvaluatedSolution}.
	 * All of the significant data structures are copied over.
	 *
	 * @param solution
	 *            The {@link EvaluatedSolution} to copy
	 */
	public SolutionReport(EvaluatedSolution solution) {

		bindings = convertBindingMap(solution.getActivityToBindingMap());
		solutionScore = solution.getScore();
		processLabel = solution.getProcess().getLabel();
		processUri = solution.getProcess().getProcessUri();
		orderedActivities = solution.getProcess().getOrderedActivities();
	}

	private Map<Integer, IBinding> convertBindingMap(Map<Integer, Binding> map) {
		Map<Integer, IBinding> rv = new HashMap<Integer, IBinding>(map.size());
		for(Integer i : map.keySet()) {
			rv.put(i, (IBinding)map.get(i));
		}
		return rv;
	}

	/* (non-Javadoc)
	 * @see com.bbn.c2s2.pint.pf.ISolutionReport#getOrderedBindings()
	 */
	public List<IBinding> getOrderedBindings() {
		List<IBinding> out = new ArrayList<IBinding>(this.bindings.size());
		for (Activity a : this.orderedActivities) {
			out.add(this.bindings.get(a.getID()));
		}
		return out;
	}

	/* (non-Javadoc)
	 * @see com.bbn.c2s2.pint.pf.ISolutionReport#getSolutionScore()
	 */
	public double getSolutionScore() {
		return solutionScore;
	}

	/* (non-Javadoc)
	 * @see com.bbn.c2s2.pint.pf.ISolutionReport#getBindings()
	 */
	public Collection<IBinding> getBindings() {
		return bindings.values();
	}

	/* (non-Javadoc)
	 * @see com.bbn.c2s2.pint.pf.ISolutionReport#getProcessLabel()
	 */
	public String getProcessLabel() {
		return (null == processLabel) ? "" : processLabel;
	}

	/* (non-Javadoc)
	 * @see com.bbn.c2s2.pint.pf.ISolutionReport#getProcessUri()
	 */
	public String getProcessUri() {
		return processUri;
	}

	@Override
	public String toString() {
		String endl = System.getProperty("line.separator");
		StringBuilder sb = new StringBuilder();
		sb.append("   Detected Process: " + processLabel + endl);
		sb.append("   [" + processUri + "]" + endl);
		sb.append("   Score: " + solutionScore + endl);
		String format = "|    %1$-30s|   %2$-40s|    %3$-30s|    %4$-30s|%n";
		sb.append(String
				.format(format, "----ACTIVITY----", "----OBSERVATION----",
						"----TIME STAMP----", "----LOCATION----"));
		for (Activity act : this.orderedActivities) {
			IBinding tca = bindings.get(act.getID());
			String actName = act.getLabel();
			String obsLabel = (tca.getObservation() != null) ? tca
					.getObservation().getLabel() : "UNBOUND";
			String timeString = (tca.getObservation() != null) ? DATE_FORMAT
					.format(tca.getObservation().getTimestamp()) : "";
			String locString = (tca.getObservation() != null) ? String.format(
					"%1$2.6f, %2$2.6f", tca.getObservation().getLat(), tca
							.getObservation().getLon()) : "";
			sb.append(String.format(format, actName, obsLabel, timeString,
					locString));
		}
		return sb.toString();
	}

	@Override
	public int compareTo(ISolutionReport arg) {
		if (solutionScore > arg.getSolutionScore()) {
			return -1;
		}
		if (solutionScore < arg.getSolutionScore()) {
			return 1;
		}
		return 0;
	}
}


Born Helen Kirkland at Grimsby, Ontario, she was educated at Toronto before moving to Winnipeg then, in 1936, to The Pas where she met and married Hugh Pollitt Smith. In 1940, they moved to Lac du Bonnet where, for 15 years, she operated the community's first travelling library from her home and campaigned for its first permanent library. In 1974, she became a founding member and first Vice-Chair of the Manitoba League of the Physically Handicapped. Two years later, she was successful at convincing the City of Winipeg to establish Handi-Transit as part of the Winnipeg Transit System. She was Chair of the Manitoba Human Rights Commission. In retirement she lived in the Kiwanis Centre for the Deaf, in Winnipeg. She died at the Princess Elizabeth Hospital on 4 May 1987.
"Helen Pollitt Smith," Lac du Bonnet Leader, 22 July 1980, page 7.
Obituary, Lac du Bonnet Leader, 12 May 1987, page 16.


Dan Peapenburg has accepted an expanded role with ABS Global, Inc. as a genetic management specialist. "Many ABS customers throughout Wisconsin are familiar with Peapenburg's top-notch work as a Genetic Management System® (GMS®) evaluator.
Six winners have been selected in the second annual ABS Global, Inc. photo contest. In the dairy division, an entry from Bethany Couchman of California was named the winner.


text:
Shape Shape
Sex and Love
Explore Shape
The Keto Meal Plan for Beginners
Everything you need to know to get started with this high-fat, low-carb diet. Read More
10 Things I Learned During My Body Transformation
Twenty months and 17 pounds later, I came away with 10 big lessons. Read More
Your Guide to Strength Training for Beginners
This total-body beginner weight lifting routine is the easiest way to ease into strength training as a newbie. Read More
Exercise Recovery
Race Training
Workout Trends
See All Celebrities
Celebrity Workouts
Healthy IRL
See All Video
Workout Shoes
Shape.com
WTF Is 'Flurona' and Is It Really Worth Worrying About?
Although it's currently making headlines, "flurona" isn't new. Still, here's what you need to know about getting COVID-19 and the flu at the same time, especially as Omicron surges.
Photo of Arielle Tschinkel
By Arielle Tschinkel January 07, 2022
Flurona , Portrait of sick African American woman sneezes in white tissue, suffers from rhinitis and running nose, has allergy on something, looks unhealthy, feels unwell. Symptoms of cold or allergy.
Credit: Adobe Stock
Nearly two full years into a global pandemic, it's understandable if you're effing tired. With new variants popping up practically every other day (or so it feels like that), ever-changing public health guidelines, and trying to stay on top of your own mental health through it all, it's continued to be, well, a lot. And now you might also be seeing an influx of headlines and memes about a not-so-little-sounding something called "flurona," leaving you to ask, as The Cut so fittingly put it, "'what fresh hell is flurona,' exactly?" And "why is the world talking about it now?"
Simply put, flurona is a co-infection of flu and COVID-19. And with both illnesses currently spreading, more and more people seem to be focused on whether the odds of contracting the two simultaneously are actually growing, especially given recent news. Just last week, The Times of Israel reported the country's first "confirmed case" of flurona after a pregnant individual (who, BTW, was unvaccinated) tested positive for both COVID-19 and influenza. Additional cases of the co-infection (which is not a distinct disease) have also been confirmed elsewhere, including Brazil, Hungary, the Philippines, and the U.S., according to The Washington Post. But before you panic, know that it's not a new concept; instances of flurona were reported in America nearly two years ago. It just now has a catchy, clicky name.
Doctors and public health experts have worried about a potential "twindemic" (dual outbreaks of both viruses) since the start of the pandemic. But COVID-19 mitigation measures (e.g. wearing face masks, staying home, school closures, reduced travel, hand washing, etc.) contributed to "unusually low" flu circulation during the 2020-2021 flu season, according to the Centers for Disease Control and Prevention. So much so, in fact, that the agency warns a reduced population immunity as a result of last year's low activity could lead to "widespread flu," with more serious illness. And, as of the week of December 25, the CDC confirmed that flu activity in the U.S. is increasing alongside record-high COVID cases nationwide (the latter of which are largely due to the highly- transmissible Omicron variant). Point being: There might very well be a greater chance of catching both viruses, particularly until this year's flu season subsides, which can be as late as May. (Related: Can the Flu Shot Protect You from Coronavirus?)
Meanwhile, experts are still learning about the potential impacts of flurona — think: the probability of contracting it and the effects of those who do experience a dual infection — especially since so much about the impacts of COVID-19 is still unknown. What they do seem to know, though, is that COVID-19 appears to spread more easily than the flu, which is likely why rates are not parallel between the two. "Of course, common sense would dictate being infected with two viruses is probably not good," said Jonathan Grein, M.D., director of hospital epidemiology at Cedars-Sinai Medical Center in Los Angeles told The Wall Street Journal. "That being said, we just don't have enough data, and we haven't seen clear evidence of worse outcomes with both infections."
If you're feeling under the weather, the CDC recommends getting tested for both viruses, which requires two separate tests. Though both flu and COVID are contagious respiratory illnesses, you can have the two simultaneously and present with symptoms of both. In other words, because they're classified as the same type of condition, they can cause similar effects, including fever/chills, shortness of breath, fatigue, sore throat, runny or stuffy nose, body aches, headache, and gastrointestinal issues (e.g. vomiting, diarrhea). But since they're caused by different types of viruses, they can also bring disparate symptoms to the table. For example, although technically possible, loss of taste and/or smell is far more common with COVID-19 than with the flu, according to the Mayo Clinic. Another distinction to keep in mind? Flu symptoms typically appear one to four days post-infection while those of COVID tend to present anywhere from two to 14 days. (See also: How to Tell the Difference Between COVID-19 and Seasonal Allergies)
Thankfully, the same preventative measures that protect against COVID-19 also work well against the flu, including wearing masks with two or more layers when around other people, washing your hands correctly, and getting vaccinated, and, in the case of COVID, boosted as soon as you're eligible. The good news is, you can get the two vaccines at the same time, making it even easier to significantly reduce your chances of becoming seriously ill with the flu and/or COVID-19 — a much-needed breath of fresh air in a time of consistently terrible headlines that sound like something out of the Sharknado universe.
The information in this story is accurate as of press time. As updates about coronavirus COVID-19 continue to evolve, it's possible that some information and recommendations in this story have changed since initial publication. We encourage you to check in regularly with resources such as the CDC, the WHO, and your local public health department for the most up-to-date data and recommendations.
Shop | Shape
Shape may receive compensation when you click through and purchase from links contained on this website.
MeredithShape is part of the Instyle Beauty Group. © Copyright 2022 Meredith Corporation. All Rights Reserved. Privacy Policythis link opens in a new tab Terms of Servicethis link opens in a new tab Ad Choicesthis link opens in a new tab California Do Not Sellthis link opens a modal window Web Accessibilitythis link opens in a new tab
© Copyright Shape. All rights reserved. Printed from https://www.shape.com


How do I ensure my property is safe for Hipcampers and the environment?
Make it very clear where and how Hipcampers should dispose of their garbage, recycling and compost, or make it clear that they should pack it out with them. Both are fine!
Pro-tip: Show Hipcampers which items should be garbage vs recycling vs compost to ensure that everything ends up where you'd like it.
Either provide an indoor toilet or other permitted toilet (such as a porta-potty, composting toilet, etc.), or ensure that you and Hipcampers are disposing of human waste in a way that is good for the environment, human health, and compliant with local laws. To ensure that you are following our Hosting Standards, you cannot list on Hipcamp if you do not offer a toilet, and your property is less than 20 acres. If your land is greater than 20 acres, you do not need to offer a toilet. Additionally, if you only offer dry camping (RV), you do not need to provide a toilet, even if your property is less than 20 acres.


text:
The PMPC Star Award for Best Talent Search Program is given to the best talent search programs of the year and also talent search program hosts since 2004 (formerly known as "Best Talent Show & Host since 1987-89).

Winners

Total of number of awardees

 Luis Manzano - 11 awards (shared)
 Billy Crawford - 4 awards (3 shared & 1 solo)
 Alex Gonzaga - 2 awards (shared)
 Robi Domingo - 2 awards (shared)
 Jolina Magdangal - 2 awards (1 shared & 1 solo)
 Jodi Sta. Maria - 2 awards (shared)

Notes

 Showtime was changed category as "Best Reality & Game Show" in 2012, "Best Variety Show" in 2013 & 2014 as It's Showtime! and "Best Musical Variety Show" in 2015 to present.
 Luis Manzano have 2 nominations & 11 won awards (need more 4 awards will be the next PMPC Star Awards for TV's Hall of Fame).

PMPC Star Awards for Television


Angela K. Durden. Technology inventor protecting creator's copyrights. Business writer, novelist, songwriter, and Citizen Journalist. What do all these endeavors have in common? Why, The Uncertainty Principle (TUP), that's what. That is a principle with which I am not comfortable. I want things settled. Known. Efficiently working on my behalf to move my plans forward effectively.
Comfortable with uncertainty or not, we still live with it and suffer or benefit from its effects. Take technology. More companies have suffered from TUP than have benefited. As an inventor of a technology based service (SaaS) protecting and defending IP rights, I've suffered so much from Tech Giants changing how they operate, as well as the amount of control they have over my access to folks online, that I've had to close my company, Notes2Bucks, and its SaaS called MyDigitalCatalog.com.
As a writer of fiction and non-fiction, and a songwriter, I've suffered from Tech Giants theft of my IP property. As a graphic designer, print broker, and editor, I've suffered from technologies that make the public think my skill set can be automated, thereby rendering my services null and void. As a female, one of an age they don't want to hire no matter what, and who has been working successfully for herself until the last big economic meltdown, I am considered unhireable because I've not had a boss or gotten a W-2 since 1984. My skill set cannot be self-validated. I've got to have had bosses who worked for the same company as me be able to be called and validate I'm smart and able.
See? Uncertainty. Can't avoid it. Can't make it go away. Must deal with it. But even here technology is not our friend because companies write programs that intake information and decide at various places in that intake whether or not you are viable. Further, when you step outside that stricture and reach out to a real person, they always defer to the algorithm.
You can follow uncertainty down the rabbit hole and choices only get more limited. I would be feeling more sorry for myself if it wasn't for the fact there are millions of people in this country living on savings, or barely getting by with the largesse of another, who are smart, capable, have all the necessary degrees, and are third-party verifiable but who still cannot get hired.


Podcast episode: Best way to create a page with an spotify published podcast?
I already have a podcast series published on Spotify. I would like to create posts that highlight certain episodes and use the audio data already on Spotify (as opposed to uploading on SS). What is the best way to do this and do you have an example you can point me to?
Is it simply a blog with links to the episodes? What element do I use if I want the audio controls to appear on the SS page? (e.g. embedded).


text:
Science›
From applesauce in a tube to 'space noodles,' here's how astronaut food has evolved from the 1960s to today
Aria BendixJul 8, 2019, 20:28 IST
Astronaut food is packaged much the same way it was in the 1960s.jhorrocks/Getty Images
When Neil Armstrong and Buzz Aldrin became the first humans to land on the moon, they weren't treated to culinary delicacies on board the Apollo 11 spacecraft.
Their meals consisted of beef and vegetables that had been dehydrated and stuffed into a package.
Today's astronaut food is prepared similarly, but contains a lot more variety and flavor.
In the future, astronauts could be able to grow their own fresh fruit and vegetables in space.
Visit Business Insider's homepage for more.
July 20 marks the 50th anniversary of the Apollo 11 moon landing, when Neil Armstrong and Buzz Aldrin became the first humans to step onto the moon.
In the years since that crowning moment, the US space program has witnessed countless other achievements: the landing of a spacecraft on Mars, the launch of the Hubble telescope, and the permanent occupancy of the International Space Station.
It also also managed to improve the culinary experience for astronauts. While today's astronauts still eat packaged meals, their food has a lot more variety and flavor than what Armstrong and Aldrin ate in 1969.
Take a look at the evolution of astronaut food from the 1960s to now.
View As: One Page Slides
1962: John Glenn was the first American to eat in space. He had applesauce from a tube.
The first person to eat in outer space (and the first human to venture there) was Yuri Alekseyevich Gagarin, who orbited earth on board the Vostok 1 in April 1961. Gagarin ate beef and liver paste squeezed from a tube, followed by chocolate sauce for dessert.
Glenn's meal on board Friendship 7 in February 1962 was similarly unappetizing. The astronaut consumed applesauce and pureed beef and vegetables from a toothpaste-like tube. He also drank xylose sugar tablets dissolved in water.
1960s: Tang's powdered formula became popular on US spaceflights.
The artificial drink Tang wasn't very popular when it was released in 1959, but it turned out to be the ideal formula for astronauts since it could be mixed with water. Starting in the 1960s, the drink became so popular on NASA flights, it generated a myth that the product was developed for space.
Though John Glenn brought the drink along on his 1962 flight, the astronaut later admitted he didn't enjoy it very much.
But Tang in space doesn't look the same as Tang on the ground. It's sealed in a pouch that astronauts inject with water using a needle. They then sip the mixture — which is labeled "orange drink" or "peach mango drink" instead of Tang — through a straw.
1965: NASA dehydrated food and sealed it in plastic bags.
NASA's Gemini program conducted its first manned flight in 1965. In preparation for that launch, NASA began dehydrating food and sealing it in plastic bags. The bags were labeled with instructions on how to rehydrate the food in space using water.
Food items prepared for Gemini astronauts included scrambled eggs, shrimp with cocktail sauce, curried chicken, and raisin rice pudding. Drinks included coffee, grape juice, and milk.
Since weightless astronauts exerted less energy in space, meals contained fewer calories compared to what the astronauts were used to eating on earth. On average, the food consisted of 17% protein, 32% fat, and 51% carbohydrates.
1964: Gemini space missions also included sugar cookies.
To satisfy their sweet tooth, Gemini astronauts were given cubed sugar cookies designed to be eaten in a single bite. The cookies were coated in gelatin to prevent crumbs, which could clog electrical systems or air filters.
Astronaut Virgil Grissom learned this firsthand when he tried to eat a regular corned beef sandwich on rye during a Gemini mission.
The gelatin coating also kept the food from spoiling and preserved the flavor, though the astronauts still found their meals bland and lacking in texture.
1969: The Apollo 11 astronauts ate packaged beef and veggies.
Apollo astronauts were the first to have hot water and eat their packaged food with a spoon. While on board Apollo 11, Neil Armstrong and Buzz Aldrin were reportedly served beef and vegetables, pork with potato scallops, and Canadian bacon and apple sauce — all out of a package.
The meals were color-coded, individually wrapped, and labeled for each day. If something went wrong, such as the cabin losing pressure, the astronauts had a back-up food source that would feed them through a port in their helmet, ensuring they wouldn't have to take off their suits.
1971: Apollo 15 astronauts ate apricot bars on the Moon's surface.
Apollo 15 was the fourth US Apollo mission to land on the moon. While the astronauts worked long hours collecting surface material, they reportedly snacked on apricot bars, which were also served on Apollo 17.
Apollo 15 introduced new foods like beef steaks and hamburgers that were thermostabilized, or preserved by heat. Food packages came with a sulfate tablet to prevent them from spoiling, but some of them went uneaten.
Read more: Here is every Apollo mission explained
1972: US astronauts were almost allowed to drink wine in space.
In 1972, astronaut food was still somewhat bleak, so NASA briefly toyed with the idea of introducing wine to its menu. The organization designated a "space sommelier," who determined that sherry was the best option, since it wouldn't succumb drastically to changes in temperature.
Almost as soon as the idea came about, it was cut short due to public outcry — and indifference from many of the astronauts. Still, some astronauts were permitted to drink the packaged sherry during a pre-flight training exercise.
1973: NASA astronauts were served ice cream, but it wasn't the kind sold in gift shops.
Science museums are known to feature freeze-dried "astronaut ice cream" in their gift shops, but the concoction likely never made it to space. Whirlpool developed the product for the Apollo missions, but since there were no freezers, the substance would have been too crumbly to eat.
That all changed with NASA's 1973 Skylab mission, which was equipped with a refrigerator. The astronauts on board ate normal ice cream, not the freeze-dried substance.
1983: Astronauts on board NASA's ninth Space Shuttle mission ate rice pilaf.
NASA's Space Shuttle program launched crews into space for three decades (1981 to 2011). During the ninth Space Shuttle mission in 1983, astronauts ate from trays containing foods like meatballs with barbecue sauce, rice pilaf and Italian beans, and thermostabilized chocolate pudding.
Starting in around 1985, astronauts were given flour tortillas, which helped solved the breadcrumb issue. To make it easier to season their food, they were also given liquid pepper and salt.
To top it off, Space Shuttle astronauts had access to a "fresh food locker" with fruits and vegetables like apples, bananas, carrots, and celery sticks.
2004: A pilot released a pocketful of M&Ms aboard SpaceShipOne.
Chocolate has long been a favorite item among US astronauts. In 2015, the manager of the Space Food Systems Laboratory at NASA's Johnson Space Center told Smithsonian that NASA astronauts request chocolate "on pretty much every flight."
In 2004, pilot Mike Melvill advanced this trend while operating SpaceShipOne, an experimental aircraft that retired that same year.
"I reached into my pocket and I took out some M&Ms, all different colors, and let them go in front of my face," Melvill said at a press conference after the flight. "And they just spun around like little sparkling things. I was so blown away, I couldn't even fly the [craft]."
2005: The "space noodle" was introduced in Japan.
The Japanese food company Nissin released the first instant ramen noodles in 1958. Decades later, the company delivered a similar product for astronauts under the name "Space Ram." In 2005, Japanese astronaut Soichi Noguchi brought the noodles to space for the first time.
2006: NASA adapted five recipes from celebrity chef Emeril Lagasse.
Astronauts from the 2006 Space Shuttle Discovery launch received personalized menus based on their favorite foods. NASA even enlisted celebrity chef Emeril Lagasse to come up with a few recipes.
NASA ultimately chose five of Lagasse's dishes to send into space: Mardi Gras jambalaya, mashed potatoes with bacon, green beans with garlic, rice pudding, and mixed fruit.
In a press release, astronaut Jeff Williams said he liked the spiciness of the jambalaya, since an astronaut's "perception of taste is a little bit decreased" in space.
2011: Astronauts at the International Space Station eat from a set menu.
The first long-term residents of the International Space Station (ISS) arrived in November 2000. At that time, NASA thought it could personalize foods like it did for the Space Shuttle program.
The plan turned out to be difficult, since NASA sends its cargo shipments separately from the astronauts, preventing crew members from receiving their food choices on time.
The organization now offers a nutritionally-balanced menu with around 200 foods and beverages so astronauts still have some variety.
Read more: NASA says it will open the space station to tourists, at a cost of about $35,000 per night
2015: NASA funded research to make food from astronaut poop.
A trip to Mars would take longer than the typical stay on the International Space Station. To prepare for this scenario, NASA has considered whether astronauts would be able to sustain themselves by eating their own feces.
In 2005, the organization offered chemists and bio-engineers at Clemson University $200,000 a year to research whether human waste could be recycled into space food.
2017: Astronauts at the International Space Station received a care package of Blue Bell ice cream and Snickers ice cream bars.
SpaceX's Dragon capsule has the ability to transport objects to and from the International Space Station. In 2017, the spacecraft delivered Blue Bell ice cream and Snickers ice cream bars to astronauts living on the artificial satellite.
In addition to the occasional sweet treat, today's astronauts eat the traditional three meals per day. Meals are typically dehydrated, freeze-dried, or thermostabilized, then labeled and stored in locker trays.
2019: Astronauts could eventually grow their own food using LED lights.
NASA plans to build a moon-orbiting space station known as the Gateway with the goal of achieving a moon landing by 2024. One of the prototypes for this new station includes a "space garden" that can grow a head of lettuce in 24 days using LED lights. The garden can also produce strawberries, carrots, and potatoes without requiring much water.
In 2005, astronauts at the International Space Station proved this could be done by growing romaine lettuce.
Though astronaut food hasn't evolved much from its thermostabilized, freeze-dried history, growing fresh food could drastically improve diets in outer space.
Next StoryThese are the 3 global digital health hubs to watch
These are the 3 global digital health hubs to watch
These are the biggest losers in the future of healthcare
A South African pilot who trained with NASA and was set to become the first black African in space died in a motorbike crash
Telehealth industry defined: the services, systems, benefits & trends of a growing digital health segment
1From applesauce in a tube to 'space noodles,' here's how astronaut food has evolved from the 1960s to today
2These are the 3 global digital health hubs to watch
3These are the biggest losers in the future of healthcare
4A South African pilot who trained with NASA and was set to become the first black African in space died in a motorbike crash
5Telehealth industry defined: the services, systems, benefits & trends of a growing digital health segment


text:
var Plotly = require('@lib/index');
var Lib = require('@src/lib');
var Queue = require('@src/lib/queue');

var createGraphDiv = require('../assets/create_graph_div');
var destroyGraphDiv = require('../assets/destroy_graph_div');

describe('Test frame api', function() {
    'use strict';

    var gd, mock, f, h;

    beforeEach(function(done) {
        mock = [{x: [1, 2, 3], y: [2, 1, 3]}, {x: [1, 2, 3], y: [6, 4, 5]}];
        gd = createGraphDiv();
        Plotly.newPlot(gd, mock).then(function() {
            f = gd._transitionData._frames;
            h = gd._transitionData._frameHash;
        }).then(function() {
            Plotly.setPlotConfig({ queueLength: 10 });
        }).then(done);
    });

    afterEach(function() {
        destroyGraphDiv();
        Plotly.setPlotConfig({queueLength: 0});
    });

    describe('gd initialization', function() {
        it('creates an empty list for frames', function() {
            expect(gd._transitionData._frames).toEqual([]);
        });

        it('creates an empty lookup table for frames', function() {
            expect(gd._transitionData._counter).toEqual(0);
        });
    });

    describe('#addFrames', function() {
        it('issues a warning if a number-named frame would overwrite a frame', function(done) {
            var warnings = [];
            spyOn(Lib, 'warn').and.callFake(function(msg) {
                warnings.push(msg);
            });

            // Test with both multiframe additions and repeated `addFrames` calls - both should count toward the warn limit
            Plotly.addFrames(gd, [
                {name: 8, data: [{x: [8, 7, 6]}]},
                {name: 8888, data: [{x: [8, 7, 6]}]},
                {name: 8, data: [{x: [8, 7, 6]}]},
                {name: '8', data: [{x: [8, 7, 6]}]}
            ])
                .then(function() {
                    // so far, two warnings
                    expect(Lib.warn.calls.count()).toEqual(2);
                    expect(warnings[0]).toMatch(/^addFrames.*overwriting/);
                    return Plotly.addFrames(gd, [{name: 8, data: [{x: [3, 2, 1]}]}]);
                })
                .then(function() {return Plotly.addFrames(gd, [{name: 8, data: [{x: [3, 2, 1]}]}]);})
                .then(function() {return Plotly.addFrames(gd, [{name: 8, data: [{x: [3, 2, 1]}]}]);})
                .then(function() {
                    // so far, 5 + 1 warnings
                    expect(Lib.warn.calls.count()).toEqual(5 + 1);
                    expect(warnings[5]).toMatch(/^addFrames.*suppressed/);
                    return Plotly.addFrames(gd, [{name: 8, data: [{x: [3, 2, 1]}]}]);
                })
                .then(function() {return Plotly.addFrames(gd, [{name: 8, data: [{x: [3, 2, 1]}]}]);})
                .then(function() {return Plotly.addFrames(gd, [{name: 8, data: [{x: [3, 2, 1]}]}]);})
                .then(function() {return Plotly.addFrames(gd, [{name: 8, data: [{x: [3, 2, 1]}]}]);})
                .then(function() {return Plotly.addFrames(gd, [{name: 8, data: [{x: [3, 2, 1]}]}]);})
                .then(function() {
                    // Five (`var numericNameWarningCountLimit = 5`) warnings and one warning saying that there won't be more warnings
                    expect(Lib.warn.calls.count()).toEqual(5 + 1);
                })
                .then(done, done.fail);
        });

        it('treats an undefined list as a noop', function(done) {
            Plotly.addFrames(gd, undefined).then(function() {
                expect(Object.keys(h)).toEqual([]);
            })
            .then(done, done.fail);
        });

        it('compresses garbage when adding frames', function(done) {
            Plotly.addFrames(gd, [null, 'garbage', 14, true, false, {name: 'test'}, null]).then(function() {
                expect(Object.keys(h)).toEqual(['test']);
                expect(f).toEqual([{name: 'test'}]);
            })
            .then(done, done.fail);
        });

        it('treats a null list as a noop', function(done) {
            Plotly.addFrames(gd, null).then(function() {
                expect(Object.keys(h)).toEqual([]);
            })
            .then(done, done.fail);
        });

        it('treats an empty list as a noop', function(done) {
            Plotly.addFrames(gd, []).then(function() {
                expect(Object.keys(h)).toEqual([]);
            })
            .then(done, done.fail);
        });

        it('names an unnamed frame', function(done) {
            Plotly.addFrames(gd, [{}]).then(function() {
                expect(Object.keys(h)).toEqual(['frame 0']);
            })
            .then(done, done.fail);
        });

        it('casts names to strings', function(done) {
            Plotly.addFrames(gd, [{name: 5}]).then(function() {
                expect(Object.keys(h)).toEqual(['5']);
            })
            .then(done, done.fail);
        });

        it('creates multiple unnamed frames at the same time', function(done) {
            Plotly.addFrames(gd, [{}, {}]).then(function() {
                expect(f).toEqual([{name: 'frame 0'}, {name: 'frame 1'}]);
            })
            .then(done, done.fail);
        });

        it('creates multiple unnamed frames in series', function(done) {
            Plotly.addFrames(gd, [{}]).then(function() {
                return Plotly.addFrames(gd, [{}]);
            }).then(function() {
                expect(f).toEqual([{name: 'frame 0'}, {name: 'frame 1'}]);
            })
            .then(done, done.fail);
        });

        it('casts number names to strings on insertion', function(done) {
            Plotly.addFrames(gd, [{name: 2}]).then(function() {
                expect(f).toEqual([{name: '2'}]);
            })
            .then(done, done.fail);
        });

        it('updates frames referenced by number', function(done) {
            Plotly.addFrames(gd, [{name: 2}]).then(function() {
                return Plotly.addFrames(gd, [{name: 2, layout: {foo: 'bar'}}]);
            }).then(function() {
                expect(f).toEqual([{name: '2', layout: {foo: 'bar'}}]);
            })
            .then(done, done.fail);
        });

        it('avoids name collisions', function(done) {
            Plotly.addFrames(gd, [{name: 'frame 0'}, {name: 'frame 2'}]).then(function() {
                expect(f).toEqual([{name: 'frame 0'}, {name: 'frame 2'}]);

                return Plotly.addFrames(gd, [{}, {name: 'foobar'}, {}]);
            }).then(function() {
                expect(f).toEqual([{name: 'frame 0'}, {name: 'frame 2'}, {name: 'frame 1'}, {name: 'foobar'}, {name: 'frame 3'}]);
            })
            .then(done, done.fail);
        });

        it('inserts frames at specific indices', function(done) {
            var i;
            var frames = [];
            for(i = 0; i < 10; i++) {
                frames.push({name: 'frame' + i});
            }

            function validate() {
                for(i = 0; i < f.length; i++) {
                    expect(f[i].name).toEqual('frame' + i);
                }
            }

            Plotly.addFrames(gd, frames).then(validate).then(function() {
                return Plotly.addFrames(gd, [{name: 'frame5', data: [1]}, {name: 'frame7', data: [2]}, {name: 'frame10', data: [3]}], [5, 7, undefined]);
            }).then(function() {
                expect(f[5]).toEqual({name: 'frame5', data: [1]});
                expect(f[7]).toEqual({name: 'frame7', data: [2]});
                expect(f[10]).toEqual({name: 'frame10', data: [3]});

                return Queue.undo(gd);
            })
            .then(validate)
            .then(done, done.fail);
        });

        it('inserts frames at specific indices (reversed)', function(done) {
            var i;
            var frames = [];
            for(i = 0; i < 10; i++) {
                frames.push({name: 'frame' + i});
            }

            function validate() {
                for(i = 0; i < f.length; i++) {
                    expect(f[i].name).toEqual('frame' + i);
                }
            }

            Plotly.addFrames(gd, frames).then(validate).then(function() {
                return Plotly.addFrames(gd, [{name: 'frame10', data: [3]}, {name: 'frame7', data: [2]}, {name: 'frame5', data: [1]}], [undefined, 7, 5]);
            }).then(function() {
                expect(f[5]).toEqual({name: 'frame5', data: [1]});
                expect(f[7]).toEqual({name: 'frame7', data: [2]});
                expect(f[10]).toEqual({name: 'frame10', data: [3]});

                return Queue.undo(gd);
            })
            .then(validate)
            .then(done, done.fail);
        });

        it('implements undo/redo', function(done) {
            function validate() {
                expect(f).toEqual([{name: 'frame 0'}, {name: 'frame 1'}]);
                expect(h).toEqual({'frame 0': {name: 'frame 0'}, 'frame 1': {name: 'frame 1'}});
            }

            Plotly.addFrames(gd, [{name: 'frame 0'}, {name: 'frame 1'}]).then(validate).then(function() {
                return Queue.undo(gd);
            }).then(function() {
                expect(f).toEqual([]);
                expect(h).toEqual({});

                return Queue.redo(gd);
            })
            .then(validate)
            .then(done, done.fail);
        });

        it('overwrites frames', function(done) {
            // The whole shebang. This hits insertion + replacements + deletion + undo + redo:
            Plotly.addFrames(gd, [{name: 'test1', data: ['y']}, {name: 'test2'}]).then(function() {
                expect(f).toEqual([{name: 'test1', data: ['y']}, {name: 'test2'}]);
                expect(Object.keys(h)).toEqual(['test1', 'test2']);

                return Plotly.addFrames(gd, [{name: 'test1'}, {name: 'test3'}]);
            }).then(function() {
                expect(f).toEqual([{name: 'test1'}, {name: 'test2'}, {name: 'test3'}]);
                expect(Object.keys(h)).toEqual(['test1', 'test2', 'test3']);

                return Queue.undo(gd);
            }).then(function() {
                expect(f).toEqual([{name: 'test1', data: ['y']}, {name: 'test2'}]);
                expect(Object.keys(h)).toEqual(['test1', 'test2']);

                return Queue.redo(gd);
            }).then(function() {
                expect(f).toEqual([{name: 'test1'}, {name: 'test2'}, {name: 'test3'}]);
                expect(Object.keys(h)).toEqual(['test1', 'test2', 'test3']);
            })
            .then(done, done.fail);
        });
    });

    describe('#deleteFrames', function() {
        it('deletes a frame', function(done) {
            Plotly.addFrames(gd, [{name: 'frame1'}]).then(function() {
                expect(f).toEqual([{name: 'frame1'}]);
                expect(Object.keys(h)).toEqual(['frame1']);

                return Plotly.deleteFrames(gd, [0]);
            }).then(function() {
                expect(f).toEqual([]);
                expect(Object.keys(h)).toEqual([]);

                return Queue.undo(gd);
            }).then(function() {
                expect(f).toEqual([{name: 'frame1'}]);

                return Queue.redo(gd);
            }).then(function() {
                expect(f).toEqual([]);
                expect(Object.keys(h)).toEqual([]);
            })
            .then(done, done.fail);
        });

        it('deletes multiple frames', function(done) {
            var i;
            var frames = [];
            for(i = 0; i < 10; i++) {
                frames.push({name: 'frame' + i});
            }

            function validate() {
                var expected = ['frame0', 'frame1', 'frame3', 'frame5', 'frame7', 'frame9'];
                expect(f.length).toEqual(expected.length);
                for(i = 0; i < expected.length; i++) {
                    expect(f[i].name).toEqual(expected[i]);
                }
            }

            Plotly.addFrames(gd, frames).then(function() {
                return Plotly.deleteFrames(gd, [2, 8, 4, 6]);
            }).then(validate).then(function() {
                return Queue.undo(gd);
            }).then(function() {
                for(i = 0; i < 10; i++) {
                    expect(f[i]).toEqual({name: 'frame' + i});
                }

                return Queue.redo(gd);
            })
            .then(validate)
            .then(done, done.fail);
        });

        it('deletes all frames if frameList is falsey', function(done) {
            var i;
            var n = 10;
            var frames = [];
            for(i = 0; i < n; i++) {
                frames.push({name: 'frame' + i});
            }

            function validateCount(n) {
                return function() {
                    expect(f.length).toEqual(n);
                };
            }

            Plotly.addFrames(gd, frames).then(function() {
                // Delete with no args:
                return Plotly.deleteFrames(gd);
            }).then(validateCount(0)).then(function() {
                // Restore:
                return Queue.undo(gd);
            }).then(validateCount(n)).then(function() {
                // Delete with null arg:
                return Plotly.deleteFrames(gd, null);
            }).then(validateCount(0)).then(function() {
                // Restore:
                return Queue.undo(gd);
            }).then(validateCount(n)).then(function() {
                // Delete with undefined:
                return Plotly.deleteFrames(gd, undefined);
            })
            .then(validateCount(0))
            .then(done, done.fail);
        });

        it('deleteFrames is a no-op with empty array', function(done) {
            var i;
            var n = 10;
            var frames = [];
            for(i = 0; i < n; i++) {
                frames.push({name: 'frame' + i});
            }

            function validateCount(n) {
                return function() {
                    expect(f.length).toEqual(n);
                };
            }

            Plotly.addFrames(gd, frames).then(function() {
                // Delete with no args:
                return Plotly.deleteFrames(gd, []);
            })
            .then(validateCount(n))
            .then(done, done.fail);
        });
    });
});