text:
\section{Introduction}

The rapid development of many world's economies has been followed by an increasing proportion of population moving to cities \cite{kuz2016graph, derrible2009network}. Through a "domino-effect" of such a huge societal change, world's urban traffic congestion has become, and is likely to remain, an overwhelming issue. In addition, underground traffic networks frequently experience signal failures and train derailments - not to mention emergency measures due to accidents - while closure of one station may impact the service across the entire network. The economic costs of such transport delays to central London business are estimated to be $\pounds 1.2$ billion per year. Appropriate and physically meaningful tools to understand, quantify, and plan for the resilience of transportation networks to disruptions are therefore a pre-requisite for the planning and daily running of public transport, a subject of this work.

Graph representations for traffic planning have a long history \cite{badger2012evolution, gattuso2005compared, stoilova2015application, guze2014graph, boulmakoul2017combinatorial}; as far back as in 1926, a map-maker named Fred Stingemore produced a map of the London underground by regularising the spacing between stations, while allowing himself some artistic freedom with the routes of the various lines. Stingemore's work was further abstracted by Harry Beck in 1933 to the graph form we have today. In this article, we move beyond the graphs themselves and employ the concepts of Data on Graph \cite{stankovic2019graph, stankovic2019graphII, stankovic2020graphIII}, to address some burning issues in underground public transport, such as "sensitivity" of the network to station closures. We further demonstrate how graph theory can be used to identify those stations in the London underground network which have the greatest influence on the functionality of the traffic, and proceed, in an innovative way, to assess the impact of a station closure on service levels across the city. Such underground network vulnerability analysis is shown to provide the opportunity to analyse, optimize and enhance the connectivity of the traffic networks in a mathematically tractable and physically meaningful way. We also explore the benefits of modelling the London underground graph via modern deep learning approaches, through leveraging models such as graph neural network and hyper-graph neural networks to perform semi-supervised learning on graphs.

\section{Traffic Centrality and Vulnerability}

\begin{figure}[h!]
	\centering
	\vspace{-8mm}
	\includegraphics[width=1\columnwidth]{Figures/tube.pdf}
	\vspace{-12mm}
	\caption{\label{fig:underground_graph}{Graph representation of the London underground network in Zones 1 and 2. The circles denote the vertices (stations) and the lines between the circles designate the underground lines.}}
\end{figure}

We consider the underground network as an undirected $N$-vertex graph, denoted by $\mathcal{G} = \{ \mathcal{V}, \mathcal{E} \}$, with $\mathcal{V}$ as the set of $N$ vertices (stations) and $\mathcal{E}$ the set of edges (underground lines) connecting the vertices (stations). The connectivity of the network is designated by the (undirected) adjacency matrix, $\mathbf{A} \in \mathbb{R}^{N \times N}$, where $a_{ij} = 1$ if a connection between the $i$-th and $j$-th station exists, and 0 otherwise  \cite{stankovic2019graph}. Figure \ref{fig:underground_graph} shows the proposed graph model of the London underground network, with each vertex representing a station, and each edge designating the the connection between two adjacent stations through one or more underground lines. For visualization purposes, we show the graph representation for the central zones 1-2, out of the 6 zones of the London underground network. Notice that standard Data Analytics typically assume regular grids in time and in space, and are thus ill-equipped to deal with this class of problems, which reside on irregular domains that may exhibit multiple paths between adjacent vertices (stations). This inadequacy becomes even more prominent during the "anomaly" times, such as the morning an evening rush hours.

The graph representation of the traffic network allows us to explore the usefulness of the \textit{betweenness centrality} metric as a measure of the vulnerability of a certain station to traffic disruption. This metric is quite natural in the context of transportation planning, as the betweenness centrality measures the extent to which a given vertex lies in between pairs or groups of other vertices of the graph, and is given by
\begin{align}
	B_{n} = \sum_{k,m \in \mathcal{V}} \frac{\sigma(k,m|n)}{\sigma(k,m)}
\end{align}
where $\sigma(k,m)$ denotes the number of shortest paths between vertices $k$ and $m$, and $\sigma(k,m|n)$ the number of those paths passing through a vertex $n$ \cite{Freeman1977}. In other words, betweenness centrality reflects the extent to which a vertex (station) is an intermediate in the communication over the graph (underground network). Figure \ref{fig:betweenness} depicts the values of betweenness centrality of stations in the London underground network in Zones 1 and 2. Observe that, as expected, the stations at the centre of the city exhibit the largest betweenness centrality, while the stations in the outer residential area have the smallest betweenness centrality. Physically, this means that disruptions to lines passing through stations with high betweenness centrality would cause less impact on the overall network, as there are alternative ways of accessing the same station via other underground lines. Conversely, if connections to low centrality stations were to be disrupted, it would cut-off both that station and those further out from accessing the rest of the network.

\begin{figure}[h!]
	\centering
	\vspace{-8mm}
	\includegraphics[width=0.99\columnwidth]{Figures/tube_centrality.pdf}
	\vspace{-12mm}

	\caption{\label{fig:betweenness}{Betweenness centrality, designated by magenta-coloured bars, of the London underground network in Zones 1 and 2.}}
\end{figure}

\begin{table}[h!]
	\setlength{\tabcolsep}{7pt}
	\renewcommand{\arraystretch}{1.2}
	\begin{center}
		\caption{\label{table:centrality_top_3}{Stations with largest betweenness centrality.}}
		\begin{tabular}{l|r r r}
			\hline
			\textbf{Station} & \textbf{Entries} & \textbf{Exits} & \textbf{Net out-flow} \\
			\hline
			Bank          & $17,577$   & $69,972$  & $52,395$   \\
			Canary Wharf  & $8,850$    & $56,256$  & $47,406$   \\
			Oxford Circus & $3,005$    & $44,891$  & $41,886$   \\ \hline
		\end{tabular}
		\vspace{-6mm}
	\end{center}
\end{table}

\section{K-Edge Augmentation for Robust Transport Networks}

Given that the partial closure of a line between any two metro stations will severely impact the entire metro system \cite{anop2016using}, we set out to analyse the vulnerability of the metro system in terms of the level of connectivity, and proceed to explore possible improvements towards increased resilience.

To this end, we introduce a measure of the underground network robustness in terms of connectivity; this is achieved through the concept of \textit{$k$-edge connectivity}. Formally, a graph is said to be $k$-edge connected if it cannot be regrouped into distinct sub-graphs unless $k$ or more edges are removed. For the London underground network in Zones 1 and 2 in Figure \ref{fig:underground_graph}, the graph topology forms a $1$-edge connected graph. This implies that a removal of even one connection (between two adjacent stations) suffices to disconnect some stations from the rest of the network. It then comes as no surprise that the stations exhibiting lowest betweeness centrality (see Figure \ref{fig:betweenness}) are most vulnerable to the closure of other stations.

Our solution for improving the robustness of the overall network is based on \textit{$k$-edge augmentation}, a search problem for determining the minimum set of additional edges, $\mathcal{A}$, such that $\mathcal{A} \cap \mathcal{E} = \varnothing$ and the resulting graph $\mathcal{G}_k = (\mathcal{V}, \mathcal{E} \cup \mathcal{A})$ remains $k$-edge connected \cite{watanabe1987edge}. Figure \ref{fig:kedge_raw} shows an example of $k$-edge augmentation for the London underground network for $k=2$.

\begin{figure}[h!]
	\centering
	\vspace{-8mm}
	\includegraphics[width=0.99\columnwidth]{Figures/kedge_raw.pdf}
	\vspace{-12mm}

	\caption{\label{fig:kedge_raw}{Graph of the London underground network in Zones 1 and 2, after performing a naive k-edge augmentation, for $k$=2.}}
\end{figure}

Although the solution presented in Figure \ref{fig:kedge_raw} is optimal in terms of the number of new connections required, $|\mathcal{A}|$, it is highly unrealistic to build such direct long-range connections between stations. To this end, assuming that the cost of building a new connection is proportional to the geographic distance between two stations, we can constrain the search space of the k-edge augmentation problem so as to include only new connections which are quite short, that is $d(v_1, v_2) < \alpha$ for all $(v_1, v_2) \in \mathcal{A}$, where $d(\cdot)$ denotes the geographic distance between any two stations and $\alpha$ is a user chosen threshold. Figure \ref{fig:kedge_constrained} shows such a physically more realistic augmented network, with significantly shorter new connections.

\begin{figure}[h!]
	\centering
	\vspace{-8mm}
	\includegraphics[width=0.99\columnwidth]{Figures/kedge_constrained.pdf}
	\vspace{-12mm}

	\caption{\label{fig:kedge_constrained}{Graph of the London underground network in Zones 1 and 2 after performing geographically constrained k-edge augmentation, for $k$=2.}}
\end{figure}

\section{Modelling Commuter Population from Net Passenger Flow}

\begin{figure}[h!]
	\centering
	\vspace{-2mm}
	\includegraphics[width=0.3\textwidth, trim={0 3cm 0 4cm}, clip]{Figures/tube_ideal.pdf}
	\vspace{-2mm}
	\caption{\label{fig:ficks_law}{A graph representation of the London underground network through Fick's law of diffusion. Consider a simplified path graph with two stations surrounded by the respective populations, $\phi_{1}$ and $\phi_{2}$ (proportional to the circle area), which exhibit the corresponding net fluxes, $q_{1}$ and $q_{2}$. Stations surrounded by large population (residential areas) exhibit a net in-flow of passengers, while stations surrounded by low population (business districts) experience net out-flow of passengers. The overall net flow (in-flow and out-flow) of passengers across the entire network sums up to zero.}}
\end{figure}

We shall now demonstrate that the graph theoretic approach to transportation modelling allows us to answer even broader societal questions, such as to infer the resident population surrounding each station solely based on the net passenger flow during the morning rush hour.

To derive the corresponding graph model, we employ the \textit{Fick's law of diffusion} which relates the diffusive flux to the concentration of a given vector field, under the assumption of a steady state. According to Fick's law, the flux flows from regions of high concentration (population) to regions of low concentration (population), with a magnitude proportional to the concentration gradient. Mathematically, the Fick law is given by
\begin{align} \label{eq:fickslaw_eq}
	\mathbf{q} = - k \nabla \boldsymbol{\phi}
\end{align}
where
$\mathbf{q}$ is the flux which measures the amount of substance per unit area per unit time (mol m$^{-2}$ s$^{-1}$), $k$ is the coefficient of diffusivity measured in area per unit time (m$^{2}$ s$^{-1}$), while $\boldsymbol{\phi}$ represents the concentration (mol m$^{-3}$).

This framework allows us to model the passenger flow in the London underground network as a diffusion process, whereby during the morning rush hour the population mainly flows from population-dense residential areas to sparsely populated business districts. Based on the general Fick's law in (\ref{eq:fickslaw_eq}), the variables in our proposed metro traffic model are: (i) $\mathbf{q} \in \mathbb{R}^{N}$, the net passenger flow vector, with the $i$-th entry as the net passenger flow at the $i$-th station during the morning rush hour, given by: $q_{i} = \ln{({p_i^{(o)}})} - \ln{({p_i^{(i)}})}$, where $p_i^{(o)}$ and $p_i^{(i)}$ denote respectively the number of passengers exiting and entering the $i$-th station, with its dimension equal to ``passengers per station per unit time''; (ii) $k=1$, the coefficient of diffusivity, with its dimension equal to ``stations per unit time''; (iii) $\boldsymbol{\phi} \in \mathbb{R}^{N}$, which represents the resident population in the area surrounding the station.

The proposed graph-theoretic model is physically meaningful and suggests that, in the morning, the net passenger flow at the $i$-th station, $q_{i}$, is proportional to the population difference between the areas surrounding a station $i$ and the adjacent stations $j$, that is
\begin{equation}
    \begin{split}
    	q_{i}
    	&= - k \sum_{j} A_{ij}(\phi_{i} - \phi_{j}) \\
    	&= - k \left( \phi_{i} \sum_{j} A_{ij} - \sum_{j} A_{ij}\phi_{j} \right)  \\
    	&= - k \left( \phi_{i} D_{ii} - \sum_{j} A_{ij} \phi_{j} \right) \\
    	&= - k \sum_{j}\left( \delta_{ij} D_{ii} - A_{ij} \right) \phi_{j} \\
    	&= - k \sum_{j} L_{ij} \phi_{j}
    \end{split}
\end{equation}

The model in (\ref{eq:fickslaw_eq}) also allows us to jointly consider $N$ stations, to yield a matrix form
\begin{align}
	\mathbf{q} = -k\mathbf{L}\boldsymbol{\phi} \label{eq:graph_Fick_law}
\end{align}
where $\mathbf{L} = (\mathbf{D}-\mathbf{A}) \in \mathbb{R}^{N \times N}$ is the Laplacian matrix of the graph in Figure \ref{fig:underground_graph} \cite{stankovic2019graphII}. Also, the commuter dynamics model based on Fick's law has an intimate connection with the graph shift operators \cite{stankovic2019graph, stankovic2019graphII}. For enhanced physical intuition, Figure \ref{fig:ficks_law} shows a signal within this diffusion model on a $2$-vertex path graph obeying the Fick law.

The data for the average daily net flow of passengers during the morning rush hour at each station in $2016$ was obtained from Transport for London (TFL) \cite{TFL}, and is visualised as a signal on the London underground graph model in Figure \ref{fig:tube_net_flow}.

Table \ref{table:netflows_top5} shows the average net flow of passengers for the top $5$ stations with the greatest net in-flow and out-flow. Observe that the stations which exhibits largest net out-flow of passengers are located within the financial (Bank, Canary Wharf, Green Park) and commercial (Oxford Circus, Holborn) districts. In contrast, the stations exhibiting the greatest net in-flow of passengers are located in residential areas.

\begin{figure}[h!]
	\centering
	\vspace{-8mm}
	\includegraphics[width=0.99\columnwidth]{Figures/tube_net_flow.pdf}
	\vspace{-12mm}

	\caption{\label{fig:tube_net_flow}{Net passenger out-flow (in magenta) and in-flow (in blue) during the morning rush hour.}}
\end{figure}

\begin{table}[h!]
	\setlength{\tabcolsep}{7pt}
	\renewcommand{\arraystretch}{1.2}
	\begin{center}
		\caption{\label{table:netflows_top5}{Stations with largest net passenger out-flow and in-flow.}}
		\begin{tabular}{l|r r r}
			\hline
			\textbf{Station} & \textbf{Entries} & \textbf{Exits} & \textbf{Net out-flow} \\
			\hline
			Bank          & $17,577$   & $69,972$  & $52,395$   \\
			Canary Wharf  & $8,850$    & $56,256$  & $47,406$   \\
			Oxford Circus & $3,005$    & $44,891$  & $41,886$   \\ \hline

			Finsbury Park & $20,773$   & $8,070$   & $- 12,703$ \\
			Canada Water  & $31,815$   & $14,862$  & $- 16,953$ \\
			Brixton       & $24,750$   & $4,369$   & $- 20,381$ \\ \hline

		\end{tabular}
		\vspace{-2mm}
	\end{center}
\end{table}

To obtain an estimate of the resident population surrounding each station, recall that the vector of populations, $\boldsymbol{\phi} \in \mathbb{R}^{N}$, is subject to (\ref{eq:graph_Fick_law}), that is
\begin{align}
	\hat{\boldsymbol{\phi}} = -\frac{1}{k} \mathbf{L}^{+}\mathbf{q} \label{eq:population_estimate}
\end{align}
where the symbol $(\cdot)^{+}$ denotes the matrix pseudo-inverse operator. It is important to mention that the population vector can only be estimated up to a constant, hence the vector $\hat{\boldsymbol{\phi}}$ actually quantifies the \textit{relative} population between stations, whereby the station with the lowest estimated surrounding population takes the value of $0$. The so estimated resident population, based on the morning net passenger flow, is displayed as a signal on a graph in Figure \ref{fig:population}. Observe that the so obtained estimates are reasonable, since most of the resident population in London is concentrated toward the more remote areas of Zone 2, while business districts at the centre of Zone 1 are sparsely populated in the evening.

\begin{figure}[h!]
	\centering
	\vspace{-8mm}
	\includegraphics[width=1\columnwidth]{Figures/tube_population.pdf}
	\vspace{-12mm}
	\caption{\label{fig:population}{Population density implied by our graph model in (\ref{eq:population_estimate}), obtained from the net passenger out-flow during the morning rush hour within Zones 1 and 2. As expected, business districts exhibit the lowest population density, while residential areas (Zone 2) exhibit the highest commuter population density.}}
\end{figure}

\section{A Hypergraph Model of Metro Network}

The analysis of the London metro system carried out so far has been based on the classical graph adjacency matrix, $\textbf{A} \in \mathbb{R} ^ {N \times N}$ (and the corresponding graph Laplacian matrix $\textbf{L} = \textbf{D} - \textbf{A}$), where $A_{ij} = 1$ if a connection exists between the $i$-th and $j$-th station, and $0$ otherwise. However, despite its ability to capture the underlying network topology, the classical graph adjacency matrix cannot account for higher order connectivity information, such as multiple connections between the adjacent stations. To this end, we here explore the hypergraph representation of the underground network, which naturally accounts for higher order connectivity in a graph.

A hypergraph \cite{feng2019hypergraph}, $\mathcal{H} = (\mathcal{V}, \mathcal{E})$, is a generalization of the classical graph, and is characterized by a vertex set, $\mathcal{V}$, and a hyperedge set, $\mathcal{E}$, whereby each hyperedge can contain any number of vertices. To compactly represent such a hypergraph, we shall represent $\mathcal{H}$ with the "vertex-edge" incidence matrix, $\mathbf{M} \in \mathbb{R}^{|\mathcal{V}| \times |\mathcal{E}|}$, such that $M_{v, e} = 1$ if $v \in e$ and $0$ otherwise. Notice the difference from the "vertex-vertex" adjacency matrix, \textbf{A}. The degree of a vertex in a hypergraph is defined as $d(v) = \sum_{e \in \mathcal{E}} M_{v,e}$, while the degree of an edge is defined as $d(e) = \sum_{v \in \mathcal{V}} M_{v,e}$.

\begin{figure}[h!]
	\centering
	\includegraphics[width=0.8\columnwidth]{Figures/Hypergraph.png}
	\caption{\label{fig:hypergraph}{Graphs (left) vs Hypergraphs (right)}}

\end{figure}

The hypergraph matrix of a normalized undirected hypergraph can then be defined as
\begin{equation}
    \boldsymbol{\Theta} = \textbf{D}_v^{-\frac{1}{2}} \textbf{M} \textbf{D}_e^{-1} \textbf{M}^T \textbf{D}_v^{-\frac{1}{2}}
\end{equation}
where $\textbf{D}_v \in \mathbb{R}^{|\mathcal{V}| \times |\mathcal{V}|}$ is the \textit{vertex degree} diagonal matrix composed of the individual vertex degrees, $d(v)$, for all vertices $v \in \mathcal{V}$, and $\textbf{D}_e \in \mathbb{R}^{|\mathcal{E}| \times |\mathcal{E}|}$ is the \textit{edge degree} diagonal matrix composed of edge degrees, $d(e)$, for all $e \in \mathcal{E}$. The normalised hypergraph Laplacian matrix is defined as $\boldsymbol{\Delta} = \textbf{I} - \boldsymbol{\Theta}$ \cite{feng2019hypergraph}.

To construct the hypergraph representation for the metro network, we shall simply append all multi-modal connections of the system (i.e. connections across different metro lines) as additional edges in the incidence matrix.

To validate the expressive power of the hypergraph modelling, we employ a semi-supervised regression experiment, where we estimate the net passenger out-flow during the evening rush hour for each of the underground stations, given the morning passenger flow data and the network connectivity structure. More specifically, given an input matrix, $\textbf{X} \in \mathbb{R}^{N \times F}$, with $F$ as passenger flow features for each of the $N$ stations, we build a neural network model that estimates the vector, $\textbf{y} \in \mathbb{R}^N$, of which each entry, $y_i$, corresponds to the evening rush hour net passenger out-flow for the $i$-th station.

The proposed neural network model implements a first order spatial hypergraph filter given by
\begin{equation}
    \textbf{Y} = \sigma \big( \left(\textbf{I} + \alpha \boldsymbol{\Theta} \right) \textbf{X} \textbf{W} \big)
\end{equation}
where $\alpha$ is a learnable graph filter coefficient, $\textbf{W}$ is a learnable weight matrix performing feature extraction, and $\sigma$ is an activation function. In a classical graph neural network implementation, we simply replace the hypergraph matrix, $\boldsymbol{\Theta}$, with the standard adjacency matrix, $\textbf{A}$ \cite{stankovic2020graphIII}.

Table \ref{table:experiment_res} shows the corresponding Mean Squared Error (MSE), with both graph neural network models out-performing the standard neural network in the prediction of the evening traffic based on the morning rush hour data. The Hypergraph graph neural network model exhibited the best performance, verifying its expressivity and ability to compactly capture the multi-modal connectivity information. Figure \ref{fig:tube_transportation_modalities} shows the prediction results from the proposed experiment using a hypergraph model, where the estimated evening passenger flow for each of the station is plotted on the underground graph. When measuring the out-of-sample performance, the hypergraph model achieved the lowest MSE, shown in Table \ref{table:experiment_res}, hence demonstrating its ability to capture multi-way connections between stations.

\begin{table}[h!]
	\setlength{\tabcolsep}{7pt}
	\renewcommand{\arraystretch}{1.2}
	\begin{center}
		\caption{\label{table:experiment_res}{Semi-supervised learning results from the proposed experiment.}}
		\begin{tabular}{c|rrr}
			\hline
			\textbf{Model} & \textbf{Training MSE} & \textbf{Testing MSE} \\
			\hline
			Neural Network    & $0.2736$ & $0.3171$ \\
			Graph Neural Network    & $\textbf{0.2383}$ & $0.2750$ \\
			Hypergraph Neural Network    & $0.2400$ & $\textbf{0.2683}$ \\
			\hline
		\end{tabular}
		\vspace{-2mm}
	\end{center}
\end{table}

\begin{figure}[h!]
	\centering
	\vspace{-4mm}
	\includegraphics[width=0.99\columnwidth]{Figures/tube_transportation_modalities.pdf}
	\vspace{-8mm}
	\caption{\label{fig:tube_transportation_modalities}{The evening net passenger-flow, estimated from the morning rush hour data, based on the hypergaph neural network model. The power of the proposed hypergraph model is reflected in the reverse net flow from the morning rush hours, as people move from central business areas back to residential zones.}}
\end{figure}

\section{Conclusion}
\label{sec:conclusion}

We have introduced a graph-theoretic framework which makes it possible to assess the functional design and operation of public transport networks in a mathematically tractable and intuitive manner. The formulation allows not only for an assessment of the functionality, but also offers an opportunity to facilitate enhancements and assess vulnerabilities, notwithstanding the possibility of a dynamic management of the network. Our focus has been on establishing a link between the laws of diffusive fields and the parameters of urban underground traffic. In this way, we have been able to leverage on the ability of graphs to represent data on irregular domains to introduce an intuitive model for the population migration during the rush hours. Furthermore, we have employed the hyper-graph representation of the network connections, and have demonstrated that this accounts for multiple links between underground stations in a natural way, which is not achievable based on the standard graph model. Finally, we have explored the connection between graphs and modern graph neural networks models in this context, demonstrating the power of this approach on the prediction of the evening traffic based on the morning traffic data. It is our hope to have provided a platform to approach both traffic planning and urban transition issues from a rigorous engineering perspective using graph signal processing techniques.

\bibliographystyle{IEEEtran.bst}

redpajama_set_name: RedPajamaArXiv


text:
Farm ShowsOrchard CropsFruitVegetablesLivestock
Virginia's Saunders named Southeast Farmer of the YearVirginia's Saunders named Southeast Farmer of the Year
Virginia farmer Robert Saunders is the 2022 Swisher/Sunbelt Expo Southeastern Farmer of the Year.
Brad Haire 1
Robert Saunders accepts the 2022 Swisher/Sunbelt Expo Southeastern Farmer of the Year award Oct. 18 at the Sunbelt Expo in Moultrie, Ga., on stage with this wife, Pat, Van McCall, the award's master of ceremony, and Georgia Governor Brian Kemp. Willie Vogt
The anticipation in the airplane hangar finally settled. The announcement had been made. Robert Saunders shook congratulatory hands of nine farmers on the stage. He moved to the podium, where his wife, Pat, joined him as the Swisher/Sunbelt Expo Southeastern Farmer of the Year award for 2022.
"What a moment to be in this room when they brought the (U.S.) flag down the aisle … and there was total silence, and everyone stood and said the pledge of allegiance to the flag and everyone stood for the American anthem," he said. "An incredible moment to be in the room with people who love agriculture, like my family and I do, who love God like we do and have been blessed in so many ways in everything that we do."
In Piney River, Virginia, Saunders and his family grow woody ornamentals, annuals, perennials, field ornamentals, grafted trees, peaches, nectarines, apples, and Asian pears with a robust, technological approach to conservation and efficiency. The family operation began in 1915, has remained in the family since and now has wholesale customers along the East Coast.
Saunders father, Paul, passed away March 11. Saunders said his father instilled farming principles to Saunders and his six brothers. "He told us he lived a dream every day of his life doing what he loves to do every day," Saunders told the crowd. "And that's what we get to do today."
At first, Saunders said, he didn't want to return to the farm. In 1986, he graduated Virginia Tech with a BS in Agricultural Engineering. He married Pat in 1987. He went for a job offer for a textile company in North Carolina. He came back from the interview and told Pat he turned it down and decided to return to the farm. "Thank God I'm a farmer and not a textile man. What a life I've had on that one."
The overall winner was announced to more than 800 attendees inside one of the Maule Flight Inc. hangars during the opening day luncheon at the Sunbelt Ag Expo Oct. 18 in Moultrie, Ga. Saunders and nine state farmer of the year winners from Alabama, Arkansas, Florida, Georgia, Kentucky, Mississippi, North Carolina, South Carolina, Tennessee vied for the overall spot.
The overall winner is picked by three judges. This year, they were John McKissick, long-time University of Georgia agricultural economist; David Wildy of Arkansas and the overall winner of the award in 2016; and Joe West, Tifton, Ga., retired dairy scientist and assistant dean of the University of Georgia Tifton Campus.
Each state winner receives $2,500 in cash and an expense-paid trip to the Sunbelt Ag Expo from Swisher. A Columbia vest from Ivey's Outdoor and Farm Supply is given to each state winner and nominator. Syngenta donates $500 to each state winner's charity of choice and Massey Ferguson North America provides each winner with a gift package.
As the overall winner, Saunders received an additional $15,000 from Swisher. Other prizes for the overall winner include use of a Massey Ferguson tractor for a year or up to 250 hours from Massey Ferguson North America, a Columbia jacket from Ivey's Outdoor and Farm Supply, a Hays LTI Smoker/Grill, and a Henry Repeating Arms American Farmer Tribute Edition .22 rifle from Reinke Irrigation.
See more from Brad Haire 1

redpajama_set_name: RedPajamaCommonCrawl


Can't connect to Android phones as of late - "server did not respond in the given time frame"
I can't connect to Android phones anymore. I get the message "The server did not respond in the given time frame" every time I try to connect to them. All clients, on all sides, are up-to-date, including both Quick Support and the Add-on for the Samsung and Huawei phones I've previously had no problem to connect to.
Also, one important fact before you consider blaming firewalls, virus or network settings. If I use Teamviewer I can still connect to computers all over the place. So far I've tried a bunch of different computers with different setups and it all works fine. Phones are the problems.
This didn't happen before, just a few weeks ago everything worked fine, so I'm guessing one of your updates did something, or something in the newer Android versions is blocking Quick Support without telling it.
Please, help me out and let me know what's wrong and how to fix it.


text:
Planning and Allocating Aged Care Places and Capital Grants
Health and Ageing
Department of Health and Ageing
The objective of the audit was to assess the effectiveness of DoHA's management of the planning and allocation of aged care places and capital grants, in accordance with the Aged Care Act 1997.
1. The Australian government has a primary role in the funding and regulation of Australia's aged care services. The provision of aged care is a high profile area of government activity, involving large amounts of government expenditure and the delivery of services to vulnerable populations.
2. Rather than directly providing aged care services, the Australian government supports the provision of aged care to those people who are assessed as requiring care, via subsidies and grants to aged care providers. The Department of Health and Ageing (DoHA) manages the planning and allocation of Australian government-funded aged care, under the Aged Care Act 1997 (the Act).
3. The Australian government budget for aged care subsidies for residential, community and flexible care in 2008–09 is $6.7 billion.1 Up to $44.5 million in capital grants for residential aged care will also be made available in 2008–09. The government's expenditure on aged care is expected to rise in coming years, in line with Australia's ageing population.
4. The providers of aged care services include commercial companies and the not-for-profit sector. Indicative of the composition of the industry in terms of residential care services, in 2006–07 providers accounted for the following shares: religious organisations (28.8 per cent); private providers (26.9 per cent); community-based providers (17.5 per cent); charitable organisations (15.0 per cent); state government (9.1 per cent); and local government (2.6 per cent).
5. The government controls the supply of subsidised aged care places through its role in setting the aged care planning ratio target. In accordance with this target, DoHA allocates and funds aged care places supplied by approved aged care providers, for a set number of operational aged care places for every 1000 Australians aged 70 years and over. The current planning ratio target is 113 operational aged care places per 1000 people aged 70 years and over, to be achieved by June 2011. The target mix of care type within this target total is 44 high-care residential places, 44 low-care residential places and 25 community care places.
6. Owing to the time lag that necessarily occurs between DoHA allocating places and those places becoming operational (usually due to the need to construct a residential facility), DoHA has adopted an approach that 'over-allocates' places in order to meet the target ratio by the target date. At 30 June 2008, DoHA had allocated a total of 247 371 aged care places (resulting in the allocated ratio being 123.6 per 1000 people aged 70 and over). At the same point in time 223 107 aged care places were operational, that is, in a position to provide care (resulting in an operational ratio of 111.5 places per 1000 people aged 70 and over).
7. DoHA, as a matter of broad principle, seeks to achieve the national aged care planning ratio (currently 113 operational places per 1000 people aged 70 years and over) uniformly in all states and territories, as a way to provide equitable access to aged care for all older Australians.
8. DoHA provides advice to the Minister for Ageing on the number of new aged care places required to reach the planning ratio target. The decision on how many places to release each year is made by the Minister, taking into account the DoHA advice. Following this decision, DoHA allocates aged care places via a competitive, tender-like process—the Aged Care Approvals Round (ACAR). In recent years over 10 000 new places have been allocated each year. The ACAR is highly contested by current and prospective aged care providers because 'gaining a place' is a necessary step in participating in the provision of aged care, with access to ongoing government subsidies.
9. The provision of aged care places and capital grants fits within a broader context of government and non-government activity in aged care and associated fields at the national, state and local levels.
Audit objective and scope
10. The objective of the audit was to assess the effectiveness of DoHA's management of the planning and allocation of aged care places and capital grants, in accordance with the Aged Care Act 1997.
11. Australian government-funded aged care relevant to this audit comprises:
residential aged care;
community aged care packages which provide care services in a care recipient's home;
several flexible care programs including high care services in the care recipient's home and services for people with dementia living at home; and
support for aged care infrastructure via capital grants.
12. The Department of Health and Ageing (DoHA) manages the planning and allocation of aged care places under the Aged Care Act 1997 (the Act). The Act prescribes in detail much of the planning and allocation processes to be undertaken by DoHA. The planning and allocation of aged care places is a mature process and, overall, DoHA has adopted an appropriate approach to its planning, implementation and reporting against government targets. It has effectively managed the planning and allocation of aged care places and capital grants, in accordance with the Act. DoHA has sound administrative processes that: take into account the objectives of the Act when providing advice to Minister for Health and Ageing on the planning ratio target; allow staff to follow established legislative and internal guidelines to implement each step of the the Aged Care Approvals Round (ACAR); and provide adequate information for the department to report on outcomes against government targets.
13. DoHA achieved the government's 2004 and 2007 targets for the provision of aged care places. The national targets were designed to strike a balance between costs and the community's aged care needs. As at 30 June 2008 there were 111.5 operational places per 1000 people aged 70 years and over. Given the government's target is to achieve 113 operational places per 1000 people aged 70 and over by June 2011, DoHA is well placed to achieve the current target.
14. Although DoHA has an effective approach to managing and allocating aged care places, there are two high-level processes that could be augmented to strengthen aged care planning and the transparency of DoHA's provision of places to Indigenous Australians, and more generally, improve the equity of access to aged care for older Australians:
DoHA providing advice to the Minister for Ageing on options for incorporating the Indigenous aged 50-69 population numbers into the planning ratio target; and
DoHA assessing alternatives to how the department applies the government's national aged care planning ratio across state and territories, so as to better take account of state demographic differences.
15. The government's ratio target determines the number of places to be released each year, based on the number of people aged 70 and over. DoHA also allocates places for the Aboriginal and Torres Strait Islander population aged 50-69, recognising that the conditions associated with ageing generally affect Indigenous people earlier than the wider Australian population. In doing so, however, DoHA uses places that were determined based on the Australian population aged 70 years and over.
16. Changing the aged care planning ratio is a matter for government. DoHA could provide advice to the Minister for Ageing on options for incorporating the Indigenous population aged 50-69 into the national planning ratio target. Taking account of the Indigenous population aged 50-69 in the ratio would enhance DoHA's ability to plan for the aged care needs of that population and plan the distribution of places accordingly, without the need for DoHA to reallocate places initially determined on the basis of the Australian population aged 70 and over.
17. In directing places to the Indigenous population aged 50-69, DoHA uses its administrative discretion to better facilitate Indigenous access to aged care services. In taking this approach, the department is recognising the demographic situation of a particular population. There is an opportunity to extend this approach to deal with other demographic differences between states and territories.
18. DoHA seeks to achieve the national aged care ratio uniformly in all states and territories. This approach is seen by DoHA as enhancing equitable access to aged care for all older Australians. However, the uniform application of the aged care planning ratio target does not recognise state and territory demographic differences. In order to better address state and territory differences, DoHA should, in consultation with its Minister and other stakeholders, assess the merits of alternative methods of planning the distribution of places across the states and territories.
19. DoHA advised the ANAO that it agrees that these matters should be considered in the context of the Government's planned review of the aged care planning ratios and allocation process. 2
20. The ACAR has been conducted for over ten years and, during this time its scale and complexity has continued to grow. In order to manage in this environment, decision makers need to be supported by appropriate management information relating to ACAR costs, particularly costing information on the key components of the process including at the state level.
Chapter Two – The aged care planning ratio
21. The national aged care planning ratio, set by government, has a number of positive features, such as being a transparent and measurable planning tool that can be applied by DoHA to control supply and expenditure, by matching provision levels to population growth.
22. DoHA recognises that the conditions associated with ageing generally affect Aboriginal and Torres Strait Islander people substantially earlier than other Australians, and takes account of the Indigenous population aged 50-69 in determining the distribution of places to regions, directing places to this population. In effect, DoHA uses places planned and determined based on the Australian aged 70 and over population, as required by government, to meet the particular needs of the Indigenous population aged 50-69.
23. Although DoHA is working appropriately within its parameters to attempt to address the needs of Indigenous people aged 50-69 years, it would be preferable if DoHA did not have to reallocate places to this population that would otherwise be allocated to the entire Australian population aged 70 and over.
24. DoHA could provide advice to the Minister for Ageing on options for incorporating the Indigenous population aged 50-69 into the national planning ratio target. Taking account of the Indigenous population aged 50-69 in the ratio would improve DoHA's ability to plan for the aged care needs of that population and plan the distribution of places accordingly.
25. In terms of the wider population, data from the Australian Bureau of Statistics and DoHA indicate that there are demographic differences across states and territories, as demonstrated in this report in Tables 1.2, 2.2 and 2.3.
26. DoHA's approach to seek equal aged care planning ratios across all states and territories could lead to inequality of access to aged care places in the particular states and territories where demographic patterns differ markedly from the others. The result of having equal aged care planning ratios is that consumers living in different states and territories may face varied levels of competition for access to aged care. This means that a state with an 'older' population (or more complex health needs) would have a higher demand for high care residential aged care, compared with a state with a 'younger' population (or less complex health needs).
27. There are opportunities for DoHA, in consultation with its Minister and other stakeholders, to assess the merits of alternative methods for planning the distribution of aged care places across states and territories in order to better address states and territory differences and thereby seek to improve the equity of access to aged care places across states and territories.
Chapter Three – Planning for the ACAR
28. DoHA allocates the majority of aged care places via the ACAR. DoHA begins the ACAR processes by estimating the total number of places to be made available each year and how these are to be distributed amongst the states and territories. With advice from DoHA, the Minister for Ageing determines the numbers of places to be made available, for each care type, for each state and territory.
29. The Level One process, which determines the number of places to be released each year, appropriately takes account of the objectives of the planning process under the Act, and correctly calculates the number of places required to achieve the target ratio.
30. In the Level Two process, DoHA effectively uses its Aged Care Planning Advisory Committees to assist the Secretary in distributing places amongst regions according to government and legislative specifications. Some improvements could be made by DoHA in its provision of data, particularly with respect to special needs groups, to the committees.
31. DoHA performs the underpinning tasks that are required to plan for, and design the ACAR. ACAR is a considerable administrative undertaking involving staff in DoHA's central and state offices. As an indicator of the large scale of the ACAR process, in the 2007 ACAR, aged care providers submitted: 444 applications seeking 21 456 residential places (with DoHA offering 6525 residential places); and 1871 applications seeking 40 210 community and flexible care places (with DoHA offering 4013 community care places). In line with the growing number of Australians requiring aged care, the number of places to be made available will increase.
32. In this environment, sound financial information on the costs associated with the ACAR process is an important tool for management and accountability purposes. It should provide alongside non-financial data, a picture of how the program is operating including the efficiency of operations and cost effectiveness. During the audit, DoHA was not able to provide specific data or estimates on the costs and funding approach related to the planning and allocation of aged care places and capital grants. Information on costs is important to inform management decisions about opportunities to improve operations within agencies, and satisfy internal and external accountability requirements. The level of cost information maintained should be sufficient for this purpose.
Chapter Four – Running the ACAR
33. After the number and location of aged care places are determined, DoHA conducts a tender-like process to allocate aged care places to aged care providers. For this step of the ACAR, DoHA advertises the type and location of the aged care places available, and invites applications from approved aged care providers. DoHA assesses the applications and the Secretary of DoHA allocates aged care places.
34. The ANAO reviewed key steps in the ACAR allocation process including the promotion of the call for applications; staff training and probity controls; the assessment and decision processes; and DoHA's debriefs for unsuccessful applicants. For each step of the process the ANAO found that DoHA's controls and review mechanisms were appropriate. The process has matured over more than ten years in operation, with DoHA electing to put in place a number of layers of review prior to the allocation decision by the Secretary's delegate.
35. The conduct of an ACAR is a large, annual undertaking for DoHA, both in terms of the scale and complexity of the assessment process, and the staff resourcing and time required to complete the process. While some industry parties have suggested that DoHA could streamline the ACAR process, the ANAO recognises that DoHA must balance any perceived efficiency advantages for it and industry against the risks attaching to not managing the process as well as it assesses is required.
36. DoHA has indicated to the ANAO that it intends to continue to improve its communication with the aged care industry about how and why decisions are made. For instance, DoHA could be more open about its internal processes for ACAR, in order to provide a greater measure of assurance to the aged care industry (and the public) regarding the integrity of the process.
Chapter Five – Monitoring and reporting
37. DoHA has a number of information technology systems to assist its planning and decision making. These systems effectively assist staff in their planning and allocation roles, by providing timely and user-friendly access to comprehensive and consistent information.
38. Performance monitoring is included in corporate planning documents, from the Portfolio Budget Statements through to Branch Operational Plans. The performance targets in these plans are realistic and measurable. There are appropriate internal reporting mechanisms such as exception reports for instances where targets have not been met. DoHA has acted upon previous internal and external reviews (including performance audits by the ANAO).
39. DoHA effectively reports on its achievement of the planning ratio target, the main performance indicator related to its planning and allocation activities. DoHA also reports on a broad range of other planning and allocation-related information in releasing the results of each ACAR and its annual reports to parliament on the operation of the Act. While DoHA intends to provide more information about the extent of unmet demand for places by providers, there could be benefit in DoHA improving its monitoring and reporting on the extent of unmet demand for places by consumers. DoHA could also improve its reporting on provision of aged care to special needs groups, with increased detail about its actions to address these needs.
40. The ANAO made two recommendations designed to improve DoHA's management of the planning and allocation of aged care places and capital grants.
Summary of agency response
41. DoHA is supportive of the audit report as a constructive and generally extremely positive appraisal of the aged care places planning and allocations process. This program has been the subject of a number of audit and review processes in recent years and DoHA has been able to institute a program of continuous improvement to ensure the planning and allocation of new aged care places is supported by a sound, well-conducted process with an emphasis on high probity and ethics standards.
1 While the Australian government provides the majority of the funding for aged care, care recipients may also make a means-tested contribution towards the cost of their care.
2 DoHA advice to the ANAO, 19 March 2009.


The benefits of this compound essentially make it an exercise regime available in pills or powdered forms.
SR 9011 changes the skeletal muscle's metabolic profile is in the same way that you would have observed changes after endurance training. It essentially sends signals to the muscle telling it to alter its metabolism.
After your endurance workout training, you can notice that the metabolic profile of skeletal muscle changes. It offers an efficient way to send signals into your muscles to quickly alter its metabolism.
As you increase your metabolism using taking SR 9011, it is possible to improve your muscle development.
SR 9011 is not an appetite suppressant and works directly by increasing the muscle's metabolic rate.
It is because the food is sometimes used as energy or stored as fat. This compound helps to re-sync the metabolic clock that is in total disarray.
With that, it can ensure that the body's food and excess fat sores can be used as energy.
With proper intake and dosage, the food you take, and excess fat can be converted as energy.


text:
Global Classic 7" Hollow-Ground Santoku Knife
In honor of your special day and to thank you for fulfilling $450 or more of Global cutlery from your wedding registry at Williams-Sonoma, you are eligible to receive a complimentary Global 3" peeler Knife (a $59.95 retail value).
Print Registry
Sugg. Price $165 Our Price $129.95
Global's award-winning knives are made to the exacting standards of professional Japanese chefs. A versatile knife for chopping and slicing, the santoku combines the benefits of a cleaver and a chef's knife. Indentations on the blade edge reduce drag and minimize sticking. Made in Japan, this knife features a lightweight, ergonomic handle that provides a slip-resistant grip.
Stamped blade is made of exceptionally hard Cromova 18 high-carbon stainless steel, ice tempered and hardened to resist corrosion.
Prominent 1/4" edge is visible to the naked eye and ground straight to a point rather than beveled, resulting in remarkable sharpness and edge retention.
Hollow-ground indentations along blade increase efficiency and decrease sticking.
Stainless-steel handle is seamlessly constructed and textured for superior grip.
Crafted to professional standards, this knife is lightweight yet perfectly balanced.
7" blade, 5 1/2" handle.
Always use caution when handling sharp objects.
Avoid cutting on hard surfaces such as stone, metal or glass.
It is not advisable to use any knife but a meat cleaver to cut through bone or frozen food, as the blade can be easily damaged.
Hand-wash with warm water and a mild detergent. Rinse and dry immediately.
Use the honing steel only when you feel the knife has lost some of its original sharpness, usually no sooner than 6 months after its first use. As you continue to use your Global knife, it will require more frequent honing. If you need to hone knife more than once every 2 weeks, it's time to have it sharpened.
Sharpen knife using a whetstone or knife sharpener, or have it sharpened by a professional.
Store knife in a safe place to protect its edge and prevent injury.
UPS can deliver most in-stock items within 3–5 business days. UPS is unable to deliver to P.O. boxes.
For an additional charge of $26 per address, we can expedite delivery to most destinations. This service is not available for some oversize items, items shipped directly from the supplier (including perishable and custom-manufactured items), out-of-stock items and items to be shipped outside the contiguous 48 states.
Orders received by 9:00 p.m. ET Monday through Thursday will arrive the next business day; orders placed Friday through Sunday will arrive on the following Tuesday.
For all cutlery returns (knife sets, single knives, cutting boards, knife sharpeners and knife storage), please contact us at 888.922.4108 to initiate the return.
We cannot accept returns on monogrammed, personalized, special-order items, custom upholstery, food, items shipped direct from the vendor or on items damaged through normal wear and tear. Final sale items ending in .97 or .99 cannot be returned.
Made to Order and Final Sale Furniture items are non-returnable and cannot be cancelled once the order is placed.


Linwood Animal Hospital is a full-service companion animal veterinary practice. We offer complete medical and surgical care for your cats, dogs and pocket pets including surgery, preventative medicine, dentistry, counseling, and much more. We have a fully stocked veterinary pharmacy, in-clinic diagnostic laboratory and digital radiology, as well as a very caring and experienced staff.
Meet our team and learn about our clinic!
Submit your new client forms ahead of time!
Our services not only care for your pet, but pamper them too.
Download your free PetDesk App today for easy access to appointments and records.
See what are our clients are saying!
Have any questions? Feel free to contact our friendly staff.


text:
package net.roboconf.messaging.rabbitmq.internal;

import static net.roboconf.messaging.rabbitmq.RabbitMqConstants.RABBITMQ_SSL_AS_USER_DATA;
import static net.roboconf.messaging.rabbitmq.RabbitMqConstants.RABBITMQ_SSL_KEY_MNGR_FACTORY;
import static net.roboconf.messaging.rabbitmq.RabbitMqConstants.RABBITMQ_SSL_KEY_STORE_PASSPHRASE;
import static net.roboconf.messaging.rabbitmq.RabbitMqConstants.RABBITMQ_SSL_KEY_STORE_PATH;
import static net.roboconf.messaging.rabbitmq.RabbitMqConstants.RABBITMQ_SSL_KEY_STORE_TYPE;
import static net.roboconf.messaging.rabbitmq.RabbitMqConstants.RABBITMQ_SSL_PROTOCOL;
import static net.roboconf.messaging.rabbitmq.RabbitMqConstants.RABBITMQ_SSL_TRUST_MNGR_FACTORY;
import static net.roboconf.messaging.rabbitmq.RabbitMqConstants.RABBITMQ_SSL_TRUST_STORE_PASSPHRASE;
import static net.roboconf.messaging.rabbitmq.RabbitMqConstants.RABBITMQ_SSL_TRUST_STORE_PATH;
import static net.roboconf.messaging.rabbitmq.RabbitMqConstants.RABBITMQ_SSL_TRUST_STORE_TYPE;
import static net.roboconf.messaging.rabbitmq.RabbitMqConstants.RABBITMQ_USE_SSL;

import java.io.IOException;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.logging.Logger;

import com.rabbitmq.client.AMQP.BasicProperties;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.Recoverable;

import net.roboconf.core.model.beans.Application;
import net.roboconf.core.userdata.UserDataHelpers;
import net.roboconf.messaging.api.MessagingConstants;
import net.roboconf.messaging.api.extensions.IMessagingClient;
import net.roboconf.messaging.api.extensions.MessagingContext;
import net.roboconf.messaging.api.extensions.MessagingContext.RecipientKind;
import net.roboconf.messaging.api.jmx.RoboconfMessageQueue;
import net.roboconf.messaging.api.messages.Message;
import net.roboconf.messaging.api.reconfigurables.ReconfigurableClient;
import net.roboconf.messaging.api.utils.MessagingUtils;
import net.roboconf.messaging.api.utils.SerializationUtils;
import net.roboconf.messaging.rabbitmq.RabbitMqConstants;
import net.roboconf.messaging.rabbitmq.internal.impl.RoboconfConsumer;
import net.roboconf.messaging.rabbitmq.internal.impl.RoboconfRecoveryListener;
import net.roboconf.messaging.rabbitmq.internal.impl.RoboconfReturnListener;
import net.roboconf.messaging.rabbitmq.internal.utils.RabbitMqUtils;

/**
 * Common RabbitMQ client-related stuffs.
 * @author Pierre Bourret - Université Joseph Fourier
 * @author Vincent Zurczak - Linagora
 */
public class RabbitMqClient implements IMessagingClient {

	private final Logger logger = Logger.getLogger( getClass().getName());
	private final Map<String,String> configuration;
	private final WeakReference<ReconfigurableClient<?>> reconfigurable;

	private RoboconfMessageQueue messageQueue;
	private RecipientKind ownerKind;
	private String applicationName, scopedInstancePath, domain;

	String consumerTag;
	Channel channel;

	/**
	 * Constructor.
	 * @param reconfigurable
	 * @param messagingProperties
	 */
	protected RabbitMqClient( ReconfigurableClient<?> reconfigurable, Map<String,String> messagingProperties ) {
		this( reconfigurable, messagingProperties, reconfigurable.getOwnerKind());
	}

	/**
	 * Constructor.
	 * @param reconfigurable
	 * @param messagingProperties
	 * @param ownerKind
	 */
	protected RabbitMqClient( ReconfigurableClient<?> reconfigurable, Map<String,String> messagingProperties, RecipientKind ownerKind ) {
		this.reconfigurable = new WeakReference<ReconfigurableClient<?>>( reconfigurable );
		this.ownerKind = ownerKind;

		Map<String,String> copy = new LinkedHashMap<>( messagingProperties );
		copy.put( MessagingConstants.MESSAGING_TYPE_PROPERTY, RabbitMqConstants.FACTORY_RABBITMQ );
		this.configuration = Collections.unmodifiableMap( copy );
	}

	/**
	 * @return the wrapping reconfigurable client (may be {@code null}).
	 */
	public final ReconfigurableClient<?> getReconfigurableClient() {
		return this.reconfigurable.get();
	}

	@Override
	public final void setMessageQueue( RoboconfMessageQueue messageQueue ) {
		this.messageQueue = messageQueue;
	}

	@Override
	public final synchronized boolean isConnected() {
		return this.channel != null;
	}

	@Override
	public final String getMessagingType() {
		return RabbitMqConstants.FACTORY_RABBITMQ;
	}

	@Override
	public final Map<String,String> getConfiguration() {

		// Filter SSL parameters so that there are not
		// written in user data if the configuration says so.
		Map<String,String> result = new HashMap<>( this.configuration );
		String useSsl = this.configuration.get( RABBITMQ_USE_SSL );

		List<String> allSslProperties = new ArrayList<>( Arrays.asList(
				RABBITMQ_SSL_KEY_STORE_PASSPHRASE,
				RABBITMQ_SSL_KEY_STORE_PATH,
				RABBITMQ_SSL_KEY_STORE_TYPE,
				RABBITMQ_SSL_KEY_MNGR_FACTORY,
				RABBITMQ_SSL_TRUST_MNGR_FACTORY,
				RABBITMQ_SSL_TRUST_STORE_PASSPHRASE,
				RABBITMQ_SSL_TRUST_STORE_PATH,
				RABBITMQ_SSL_TRUST_STORE_TYPE,
				RABBITMQ_SSL_AS_USER_DATA,
				RABBITMQ_SSL_PROTOCOL,
				RABBITMQ_USE_SSL
		));

		// SSL disabled? Remove all the SSL properties
		if( useSsl == null || "false".equalsIgnoreCase( useSsl )) {
			result.keySet().removeAll( allSslProperties );
		}

		// SSL but do not send stores as user data
		else if( "false".equalsIgnoreCase( this.configuration.get( RABBITMQ_SSL_AS_USER_DATA ))) {
			allSslProperties.remove( RABBITMQ_SSL_AS_USER_DATA );
			allSslProperties.remove( RABBITMQ_SSL_PROTOCOL );
			allSslProperties.remove( RABBITMQ_USE_SSL );
			result.keySet().removeAll( allSslProperties );
		}

		// Otherwise (SSL enabled and full user data)
		else {
			result.put( RABBITMQ_SSL_AS_USER_DATA, "true" );

			// Indicate which properties point to files whose content should be sent to agents
			result.put( UserDataHelpers.ENCODE_FILE_CONTENT_PREFIX + RABBITMQ_SSL_KEY_STORE_PATH, "" );
			result.put( UserDataHelpers.ENCODE_FILE_CONTENT_PREFIX + RABBITMQ_SSL_TRUST_STORE_PATH, "" );
		}

		return result;
	}

	@Override
	public void setOwnerProperties( RecipientKind ownerKind, String domain, String applicationName, String scopedInstancePath ) {

		this.ownerKind = ownerKind;
		this.applicationName = applicationName;
		this.scopedInstancePath = scopedInstancePath;
		this.domain = domain;

		this.logger.fine( "Owner properties changed to " + getId());
	}

	@Override
	public void openConnection() throws IOException {

		// Already connected? Do nothing
		this.logger.info( getId() + " is opening a connection to RabbitMQ." );
		if( isConnected()) {
			this.logger.info( getId() + " has already a connection to RabbitMQ." );
			return;
		}

		// Initialize the connection
		ConnectionFactory factory = new ConnectionFactory();
		RabbitMqUtils.configureFactory( factory, this.configuration );
		this.channel = factory.newConnection().createChannel();
		this.logger.info( getId() + " established a new connection with RabbitMQ. Channel # " + this.channel.getChannelNumber());

		// Be notified when a message does not arrive in a queue (i.e. nobody is listening)
		this.channel.addReturnListener( new RoboconfReturnListener());

		// Add a recoverable listener (when broken connections are recovered).
		// Given the way the RabbitMQ factory is configured, the channel should be "recoverable".
		((Recoverable) this.channel).addRecoveryListener( new RoboconfRecoveryListener());

		// Declare the exchanges.
		RabbitMqUtils.declareGlobalExchanges( this.domain, this.channel );
		RabbitMqUtils.declareApplicationExchanges( this.domain, this.applicationName, this.channel );

		// Declare the dedicated queue.
		String queueName = getQueueName();
		this.channel.queueDeclare( queueName, true, false, true, null );

		// Start listening to messages.
		RoboconfConsumer consumer = new RoboconfConsumer( getId(), this.channel, this.messageQueue );
		consumer.handleConsumeOk( queueName );
		this.consumerTag = this.channel.basicConsume( queueName, true, consumer );
		this.logger.finer( "A new consumer tag was created: " + this.consumerTag );
	}

	@Override
	public void closeConnection() throws IOException {

		StringBuilder sb = new StringBuilder( getId() + " is closing its connection to RabbitMQ." );
		if( this.channel != null )
			sb.append(" Channel # ").append(this.channel.getChannelNumber());

		this.logger.info( sb.toString());

		// Stop listening messages
		if( this.channel != null
				&& this.channel.isOpen()
				&& this.consumerTag != null ) {

			this.channel.basicCancel( this.consumerTag );
			this.logger.finer( "A consumer tag was cancelled: " + this.consumerTag );
		}

		// Close the connection
		this.consumerTag = null;
		if( isConnected()) {
			this.logger.finer( "Closing the connection and the channel # " + this.channel.getChannelNumber());
			RabbitMqUtils.closeConnection( this.channel );
		}

		this.channel = null;
	}

	@Override
	public void deleteMessagingServerArtifacts( Application application )
	throws IOException {

		// We delete the application exchanges. There is only one now.
		// The DM and inter-applications stuff have each one a single exchange, shared by all the applications.
		this.channel.exchangeDelete( RabbitMqUtils.buildExchangeNameForAgent( this.domain, application.getName()));
		this.logger.fine( "Messaging artifacts were deleted for application " + application );
		// Queues are deleted automatically by RabbitMQ.
	}

	@Override
	public void publish( MessagingContext ctx, Message msg ) throws IOException {

		// To which exchange?
		String exchangeName = RabbitMqUtils.buildExchangeName( ctx );

		// With which routing key?
		String routingKey = ctx.getTopicName();

		// Log a trace.
		this.logger.fine( "A message is about to be published to " + exchangeName + " with routing key = " + routingKey );

		// Special case for the DM sending to the DM.
		// To prevent spamming and residual messages, messages sent by the DM
		// (to itself or its siblings) have a life span of 500 ms. If there is no
		// client connected during this period, the message will be dropped.
		BasicProperties props = null;
		if( ctx.getKind() == RecipientKind.DM ) {
			props = new BasicProperties.Builder().expiration( "500" ).build();
		}

		// Do we want to be notified when a message is not delivered to anyone?
		// Yes, when the DM sends a message to an agent or when an agent sends a
		// message to the DM. If the message is not delivered to any queue,
		// the client will be notified (RoboconfReturnListener).
		boolean mandatory = false;
		if( this.ownerKind == RecipientKind.DM && this.ownerKind != ctx.getKind()
				|| this.ownerKind == RecipientKind.AGENTS && ctx.getKind() == RecipientKind.DM )
			mandatory = true;

		// Send the message.
		this.channel.basicPublish(
				exchangeName,		// The exchange name
				routingKey, 		// The routing key
				mandatory, 			// Mandatory => we want it to be delivered
				false,				// Useless, RabbitMQ does not support it for now.
				props,				// The publish properties
				SerializationUtils.serializeObject( msg ));
	}

	@Override
	public void subscribe( MessagingContext ctx ) throws IOException {

		// Subscribing means creating a routing key between an exchange and a queue.
		String exchangeName = RabbitMqUtils.buildExchangeName( ctx );
		String queueName = getQueueName();
		this.logger.fine( "Binding queue " + queueName + " and exchange " + exchangeName + " with routing key = " + ctx.getTopicName());
		this.channel.queueBind( queueName, exchangeName, ctx.getTopicName());
	}

	@Override
	public void unsubscribe( MessagingContext ctx ) throws IOException {

		// Un-subscribing means deleting a routing key between an exchange and a queue.
		String exchangeName = RabbitMqUtils.buildExchangeName( ctx );
		String queueName = getQueueName();
		this.logger.fine( "Unbinding queue " + queueName + " and exchange " + exchangeName + " with routing key = " + ctx.getTopicName());
		this.channel.queueUnbind( queueName, exchangeName, ctx.getTopicName());

	}

	String getQueueName() {

		StringBuilder queueName = new StringBuilder();
		queueName.append( this.domain );
		queueName.append( "." );
		if( this.ownerKind == RecipientKind.DM ) {
			queueName.append( "roboconf-dm" );

		} else {
			queueName.append( this.applicationName );
			queueName.append( "." );
			queueName.append( MessagingUtils.escapeInstancePath( this.scopedInstancePath ));
		}

		return queueName.toString();
	}

	String getId() {
		return MessagingUtils.buildId( this.ownerKind, this.domain, this.applicationName, this.scopedInstancePath );
	}
}

redpajama_set_name: RedPajamaGithub


text:
Pages : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 [527] 528 529
Do you think the Fed Reserve should cut interest rates?
Third, and last, grandchild graduated high school alphabetical order
Expensive bits of kit in the harbour today
Disregard for the law
Gun nut nation—hey, at least no one got shot.
New Top Gear
Sonder p0rn
SpaceX Falcon Heavy to launch tonight.
anybody seen this
How to argue, charitably
A bit of humor for Wizbang, Norman, et al
Mr. Hublot
2020 Any DEMOCRAT with a pulse....
old tractor aesthetic
Study: political caricatures
About that evil Socialism meme so popular with todays reds
BROTM for July... Nominations here...
Oregon Republicans Pose Armed Threat
Morgan Freeman Hates Sailing
Hallberg P28
Zombie companies
Katherine is the BROTM of July...
Not my type!
southern border: whose making money?
My eclectic movie list
Must Love Something And Somesuch Doodle
Trump Not Over Losing Popular Vote
Bilge freshener - puppy pics
Sounds like he was a busy fellow!
Generator question
ICE Agents Left 5-Year-Old Children in a Parked Van for 39 Hours
brotm -#6. The inevitable sailing thread: 'cos that's essential.
AG Bill Barr killed 7 Robert Mueller lines of investigations...
Prudes and Puritans
And another one gone...First the
Mueller and staff to testify on July 17th
Metal siding-How did they do this?
Whatever NRATV was ...
Endangered Species listings are "incoming scud missiles"
Susan Collins challenged in 2020
The Dixie Chicks coming out with a new album & NRATV cancelled in the same day.
Earth Observatory pic o the day, ship tracks
sharpiefan missing
The most important SCOTUS case could change this country forever
I'm already tired of hearing about the debates....
Vintage Jet Skis
surviving ejection at mach 2
Medieval Market
cross word puzzle peeve
Trump Ventures
WoodenPlane Forum
Angry rambling ranting old codger.
Christopher Cox out at the NRA
Another genny question
#50 in eduction, #46 in healthcare but #1 in pandering.
Photobucket says sorry...
The Sound of Muzak..
SCOTUS supports the rights of sex offenders
Deer plays football
N.Y. to Norway in a woodenboat. (The boat that is.)
How to deal with an increasing independent young girl...
Six guys walk into a bar...
WTF !!! When Did Bill De Blasio enter the democratic presidential race ?
US is a threat
Happy birthday to P.I. Stazzer Newt..
Bluenose II
curious rope bridge
"surfboard being shot out of a cannon" in the builder's words
G20 Summit , not Festivus
SCOTUS decisions today
Of the people, by the people, and for the people.
Google Maps app leads drivers to get stuck in an empty field.
yellow boats, reprise
A new Kentucky gun law goes into effect today.
When is bike a motorcycle?
My Senator Visits Florida
My Takeaway From The Democratic Debate.
Shot while pregnant
Pregnant woman charged, shooter goes free
Census question
Asylum Workers Sue Trump
David Gilmour guitar auction
twitter to label rule breaking tweets from politicians
Skull found in a yard
13yo bully attacks mom
Delay the Census?
it takes a train to cry
The proper way to crush beer cans.
Coal train derails in Virginia wild life refuge
bse y'all
If they are indicting pharma CEOs on drug charges
Trump and Putin
Plans To Withdraw Deportation Protections For Families Of Active Troops
Capturing CO2
The yield curve points to a recession
Products to sell through an imaginary Bilge-inspired gift shop
Happy tau day
Dragonfly to Titan, 2034
Gun nut nation—10 YO shoots 7 YO & 5 YO after finding gun in laundry basket
Bama woman starts argument, gets shot, loses fetus, charged with manslaughter. . .
Wouldn't you rather The Stable Genius declare war instead of Congress?
Movie: 'Maiden'
Got message: no more support for Windows 7 come January
Some scooters for Joe.
peking duck animal rights walkout protest in china
for oznabrag
Anyone object to THIS campaign promise?
boom, baby
Something new every day.
Damage to the environment, habitat loss or jobs?
Seven! Years! Old!!!!!
Trump slams Jimmy Carter
Like a bad penny . . .
The bots attack: Kamala's not 'black enough'
The OFFICIAL Orange Jesus political poll
Let's re-elect Trump... we just LOVE corruption in government, don't we?
Master deal maker Donald, caves again
Add it to the cart?
Prehistoric Math
A Warning From Versailles
#ketchupmustard
Trumpsters; some questions
"I couldn't get it done"
Österreichring
adios Dalai Lama, we hardly knew ye
Climate migration
Mayor Pete Buttigieg Resource Thread
A vaccine against fake news
Salish 100.
Random shooting?
What good are laws
May I play through?
Sngle Use Plastic
what should i carve into this stump
Fox News Obama vs Fox news Trump.
It's ALL Socialist, I Tell You
President Trump has an Historic Meeting with Kim Jong Un in North Korea
Light weight first daughter, ivanka, out of her league at G-20
The U.S. political center of gravity
Don't Steal
schooner trimaran
William Barr Is Dangerous
Home Depot RWW to donate huge sums
Trump Sexual Assault: Roll Call
When boat yard art reveals itself
RIP Carlin Dunne - four times Pike Peak Motorcycle Champion
To steal a thread: Yes, Biden's done.
Tanks on The Mall
Dog Beach Fun
Hailstorm in Guadalajara
What is Ivanka doing in that picture?
Why, with universal healthcare, we don't require proof of citizenship
I am looking to buy a new Computer/Tablet.
This is absolutely fascinating.
Why aren't the rifle stocks rotted away?
Americans Seem Pretty Chill With Concentration Camps
Economics: who's prospering, who's not?
The Forum now has eight decks?
Just when you thought you knew something...
Boat Doodle. Because.
Calling Katherine, BROTM of July. Please check in...
Epic Word Salad
The Sears failure - and Ayn Rand
Psychologists look at Trump supporters
Exactly WHO is this supposed to help?
Lil Kim gets it right.
Ivanka Trump Strongly Against Bussing!
Silly Watch Complications
Briggs and Stratton pull start
Sorry England
Don't stow away in aircraft undercarriage bays.
Overcrowding in border detention centres
my relationship with trees
Since His Name is His Brand...
A "Car Guy" , meaning he knew - - - -
Do You Think Pence Will be Replaced...
US opposed humanitarian life saving
Office of Inspector General report
Chennai, India, has pretty much run out of water
Iran announces increased enrichment
'Oumuamua passing through
July 3, International Eat Your Beans day!
Sorry, a little late with this. Been busy...
Mustang Man
45,000 barrels of Jim Beam bourbon on fire.
Where do they find judges like this?
Tablesaw blade guard.
Why does the prospect of electric cars becoming common cause so much anger
Reasonable proposals on immigration
How free is your country?
HTTP Error 503????
Mueller to testify
unfortunate starlings
Remember when Trump claimed Google was biased?
Military aparades
Opportunities for Dictatorship
Continuing deaths as a result of World Trade & 9/11
The Capitol Steps
Moving to universal healthcare
Tarriff This
CBP Facebook Hate Speech
Will it rain on Trump's parade?
NRA: Large donor leads revolt
Republicans (some) for L.G.B.T. rights
A little Tom T. Hall to calm y'all down.
Gizmo-keep moving
A little river trip that has long been on our list to do.
Motorcycle Chariot Racing
Airplanes that didn't quite make the mark.
Anyone get shaken up today?
MAGA: A report from the trenches.
Trump out to kill the US solar industry
Happy birthday to Willmarsh3...
Happy birthday to Bob Cleek...
Happy birthday to Larks...
You got scammed again by the Dems: 4th of July in Washington DC
"Anti Democratic US Constitution" Paul Street.
Highest Water Levels Ever Recorded -- Lake Huron
" Rammed the ramparts "? LOL
Presidential Approval Polling


Hi, is anyone here currently in the LVC DPT program? I can't find much information about it online, so I want to know if anyone can offer opinions and experiences from the program. Is it worth applying to for me? Thank you!
I have recently been accepted to LVC DPT program. On their website it states they start in the summer but not the exact start date. Just wondering they start in summer 1, summer 2, or if they follow a different academic calendar than the rest of the school. Any help would be great!!! Thanks!!
I applied to Lebanon valley a while ago and got a letter confirming they received everything they needed for admissions. I've called a couple times after that and they said that by March 1st I'd hear a decision by mail. Just wondering if anyone received any acceptance or rejection yet.


We're not gonna lie, we're super-excited for Cheryl to make her return to the charts later this year.
Her first album in four years is reportedly due to drop this autumn – but there will be one big difference from her previous offerings. According to The Sun, she's been released by her record label Polydor.
A source says: 'Cheryl is still signed to Universal but is exploring which label she will put music out with.
'There wasn't anyone left at Polydor who worked with her in the past so it seemed the right time for a change. She is still contracted to Universal so now it's a case of figuring out which label is the correct fit for the direction she is going in.
Whichever label Cheryl opts for, we're sure we'll end up fully obsessed with her new music. She's already worked with Naughty Boy and is set to reunite with songwriter Miranda Cooper, who was behind Girls Aloud hits including Sound Of The Underground and Biology.
We can't wait to hear Fight For This Love 2K18.


With world-class surfing and diving, plentiful cultural, historical and archaeological attractions, and a wide range of accommodations, Bali is undoubtedly one of the most exotic island destinations in the world. From backpackers to frequent travelers, this city offers something to cater every traveler's need. Despite being Indonesia's most favorite tourist destination, Bali somehow managed to maintain its low-key charms and offers a perfect island getaway from the hustle and bustle of the western world.