Keith Damiani
Connecting the Dots:
Graph Databases and Laravel
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
,
,
*
/
#
#
#
#
%
%
%
%
%
%
&
%
&
&
&
&
&
&
%
%
#
/
,
.
.
.
.
.
,
*
(
#
%
%
%
%
%
%
%
%
%
%
%
%
%
&
%
&
&
&
&
&
&
&
&
&
&
&
&
%
%
&
%
(
/
,
,
.
.
.
.
.
.
.
.
,
*
(
#
%
%
%
%
%
%
#
%
%
%
%
%
%
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
%
#
/
*
*
.
.
.
.
.
.
.
.
.
,
*
*
(
#
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
&
%
&
&
&
&
&
&
&
&
&
&
&
&
&
&
@
@
@
@
@
@
@
&
&
&
%
/
/
*
,
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
,
/
/
(
#
#
%
#
%
#
#
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
&
%
%
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
@
@
@
@
@
@
&
&
&
(
/
/
*
,
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
,
/
/
(
#
#
#
#
#
#
#
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
&
%
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
@
@
@
@
@
&
#
#
/
/
,
,
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
,
*
*
*
(
#
#
#
#
#
#
#
#
%
#
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
&
&
&
&
&
&
%
&
&
&
&
&
&
&
&
@
@
@
%
(
#
(
/
*
,
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
*
/
/
/
(
#
#
#
#
#
#
#
#
#
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
&
%
%
&
&
&
&
&
&
@
@
%
(
#
%
(
*
,
,
,
,
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
*
*
/
/
(
#
#
#
#
#
#
#
#
#
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
&
%
&
&
&
&
@
&
#
(
#
(
/
*
*
,
,
,
,
,
,
,
,
,
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
*
/
/
(
(
#
#
#
#
#
#
#
#
#
%
%
%
#
#
#
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
#
#
%
%
#
%
%
%
%
&
&
&
&
&
&
&
#
#
#
#
/
*
*
,
,
,
,
,
,
,
,
,
,
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
,
/
(
(
/
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
%
#
%
%
%
%
%
%
#
%
%
%
%
%
%
%
%
%
%
#
#
#
%
#
%
%
#
%
%
%
%
%
%
%
#
#
%
%
%
&
&
&
&
%
#
#
(
(
/
/
*
*
*
*
*
,
,
,
,
,
,
,
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
,
,
,
/
/
/
(
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
%
%
%
#
#
#
%
%
%
#
#
%
%
%
%
#
%
%
%
#
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
&
%
%
#
#
#
(
(
(
*
*
*
*
*
*
*
*
*
*
*
,
,
,
,
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
,
,
,
*
*
/
(
(
(
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
%
%
%
%
%
%
#
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
#
%
%
%
%
%
%
%
%
%
%
#
#
#
#
(
#
/
/
/
/
/
/
/
/
/
/
*
*
*
,
,
,
,
,
.
.
.
.
.
.
.
.
.
.
.
.
.
,
,
,
,
,
,
,
,
,
/
(
(
#
#
#
#
#
#
#
#
#
#
#
(
#
#
#
#
#
#
#
%
%
%
%
%
%
%
%
%
%
%
%
#
#
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
#
%
%
%
%
%
%
#
%
%
%
%
#
#
(
(
(
/
/
/
/
/
/
*
*
*
*
*
,
,
,
,
,
,
,
.
.
.
.
.
.
.
.
.
.
.
.
,
,
,
,
,
,
,
,
*
*
/
(
(
#
(
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
%
%
%
%
%
%
%
%
%
%
%
%
%
#
%
%
%
%
%
%
%
%
%
%
%
%
&
%
%
%
&
%
%
%
%
#
%
%
%
%
%
%
%
%
%
#
#
%
#
#
(
(
#
#
(
/
*
*
*
*
*
*
,
,
,
,
*
*
,
,
,
,
.
.
.
.
.
.
.
.
.
.
.
,
,
,
*
*
,
,
,
,
*
*
*
/
(
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
%
%
%
%
%
%
%
%
%
%
%
#
%
%
#
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
#
%
%
&
&
&
#
%
(
(
/
(
%
%
#
(
/
/
*
*
*
*
,
,
*
*
*
,
,
,
,
,
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
,
,
*
*
*
/
*
*
*
,
,
*
/
/
(
#
%
#
#
#
#
#
#
#
#
#
%
%
%
%
%
%
%
%
%
%
%
%
%
#
#
#
#
#
#
#
#
#
#
%
%
#
%
#
#
#
#
%
%
%
%
%
%
%
%
&
&
&
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
&
#
%
#
(
(
(
(
(
(
/
/
/
/
/
*
*
*
*
*
*
*
*
,
,
,
,
,
,
,
,
.
.
.
.
.
.
.
.
.
.
.
.
.
.
,
,
,
,
,
,
*
*
/
/
/
*
*
*
/
/
/
(
#
#
#
#
(
#
#
#
#
#
#
%
%
#
#
#
#
#
(
(
(
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
(
(
(
*
/
/
/
/
(
/
(
(
#
#
%
%
%
%
%
%
%
%
%
%
#
&
%
#
#
#
(
#
#
(
(
(
/
/
/
/
/
/
*
*
*
*
*
,
*
*
*
*
,
,
,
,
,
,
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
,
,
,
,
*
*
*
*
*
*
*
/
/
/
/
/
/
/
(
(
#
#
#
(
#
#
#
#
#
#
#
#
(
/
/
/
/
/
*
*
*
*
*
*
/
/
*
/
/
/
(
(
(
(
(
(
(
(
(
(
(
/
*
*
*
,
,
,
,
,
,
,
,
*
*
/
(
(
(
#
%
%
%
%
%
&
&
%
%
%
%
%
#
(
(
(
(
#
#
(
(
/
/
/
/
/
*
*
/
/
*
*
*
*
*
,
,
,
,
,
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
,
,
*
*
*
*
*
*
*
/
/
/
/
/
/
/
/
(
(
(
(
(
#
(
(
#
#
#
#
#
#
(
(
/
/
/
/
/
/
/
/
/
*
,
,
*
*
*
*
*
/
/
/
(
(
(
(
(
(
(
/
*
*
*
*
*
*
*
*
*
*
/
(
(
(
(
(
(
/
/
(
#
%
%
%
%
%
&
%
#
%
&
#
(
#
(
(
/
(
(
(
(
/
(
(
(
/
/
/
/
/
/
*
/
/
*
*
*
*
*
,
,
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
,
,
,
,
*
*
/
*
/
/
(
/
/
/
(
/
/
/
/
(
(
(
#
#
#
#
#
#
#
#
#
(
(
/
/
(
(
(
#
#
(
(
(
(
/
/
/
/
*
*
*
*
/
/
(
(
#
#
(
(
(
/
*
*
*
*
*
*
*
*
*
(
(
#
#
#
*
*
/
(
(
(
(
#
%
%
%
&
%
&
#
&
%
#
(
(
(
(
(
(
(
(
(
/
/
(
/
/
/
/
/
/
/
*
*
*
,
,
,
,
,
,
,
,
,
.
.
.
.
.
.
.
.
.
.
.
.
.
.
,
,
,
,
,
*
*
*
/
(
(
#
#
(
(
(
(
(
(
#
#
#
#
(
#
(
/
#
#
#
#
#
#
(
/
(
(
(
(
/
*
/
#
(
(
*
/
/
*
,
*
/
*
*
*
/
#
%
%
%
%
%
#
(
/
*
*
*
,
*
*
*
,
.
.
.
.
,
,
/
/
,
*
/
(
(
#
%
%
%
&
&
%
#
&
%
/
#
#
&
&
(
(
#
(
(
(
(
(
/
/
(
/
(
/
*
*
*
,
,
,
,
,
,
,
,
,
,
.
.
.
.
.
.
.
.
.
.
.
.
.
,
,
,
,
*
*
*
*
*
*
*
/
/
(
/
(
#
%
#
#
(
#
#
%
#
(
(
/
#
#
#
#
#
(
(
(
(
/
/
,
/
*
,
,
,
.
.
.
.
,
*
*
,
*
*
*
/
#
%
%
%
&
&
%
(
/
,
,
,
*
,
,
/
.
.
.
.
,
.
*
*
*
,
,
*
/
(
(
%
%
&
%
%
%
#
%
#
(
(
#
/
*
#
#
(
(
(
(
(
(
/
/
(
/
/
/
/
*
*
*
,
,
,
.
.
.
,
,
,
.
.
.
.
.
.
.
.
.
.
.
,
,
,
*
*
*
*
*
*
/
(
(
(
,
/
(
#
#
#
#
(
(
#
(
#
(
(
(
#
#
#
#
#
#
#
(
/
/
,
,
*
*
/
*
,
.
.
.
,
*
/
*
,
*
/
/
(
#
%
%
%
%
&
%
#
(
/
/
*
*
*
*
/
/
,
,
,
/
/
/
/
(
(
(
/
/
/
(
#
%
%
%
%
%
%
#
&
#
(
*
*
*
(
(
(
(
(
(
(
/
/
/
/
/
*
*
*
*
*
,
,
,
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
,
,
,
,
,
*
*
*
*
/
/
/
/
*
*
*
*
/
#
/
(
(
(
(
#
#
#
#
(
#
#
(
#
#
#
(
(
/
*
(
(
(
(
(
(
(
(
(
(
(
/
/
(
(
(
(
(
(
#
#
%
%
%
&
%
#
#
(
/
*
/
/
/
/
/
/
/
/
/
/
(
(
/
(
#
#
#
%
%
%
#
#
#
%
#
#
#
#
#
(
*
*
/
(
(
(
(
(
(
(
/
/
/
/
*
*
*
*
*
*
*
,
,
,
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
,
*
*
*
*
*
*
*
,
,
,
,
,
,
*
*
/
(
(
/
/
(
(
/
/
(
(
/
#
(
#
#
#
#
#
#
#
#
(
#
(
(
#
(
(
(
/
/
/
(
(
(
(
#
#
#
#
#
#
%
%
%
%
%
#
#
#
(
(
(
(
/
/
/
/
/
/
/
/
/
(
(
(
#
#
#
#
#
#
#
#
%
%
#
%
#
%
(
#
*
*
/
(
(
(
(
(
(
(
(
/
/
/
/
*
*
*
*
*
,
,
,
,
,
,
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
,
,
*
*
,
,
*
*
*
*
*
*
/
*
/
(
/
/
*
*
*
/
(
*
*
(
(
#
(
#
(
#
#
#
#
#
#
#
#
#
(
(
(
(
(
(
(
(
#
#
#
#
#
#
#
#
#
#
#
%
%
%
%
#
#
#
#
(
#
#
#
#
#
#
(
(
(
#
#
#
#
%
%
%
%
#
#
%
#
#
%
#
#
%
%
&
%
#
#
*
/
#
(
(
#
(
(
(
(
(
/
/
/
/
/
*
*
*
*
,
,
,
,
,
,
,
.
.
.
.
.
.
.
.
.
.
.
.
.
,
,
,
,
,
,
,
*
*
/
/
*
(
(
/
(
(
/
(
(
/
(
/
/
#
/
(
(
(
#
#
#
#
#
#
#
#
%
#
#
#
#
#
#
#
%
#
#
%
#
#
#
#
#
#
#
#
#
%
%
%
%
%
%
#
#
#
#
#
#
#
#
#
#
#
%
#
%
%
%
%
%
%
%
%
%
%
#
#
#
#
%
#
%
&
/
(
#
(
/
(
#
(
(
(
(
(
(
(
(
(
/
/
/
*
*
*
*
*
,
,
,
,
,
,
,
.
.
.
.
.
.
.
.
.
,
,
,
,
*
,
*
*
*
*
,
,
*
/
*
/
(
/
(
/
*
*
/
/
(
(
/
/
#
#
#
(
(
#
#
#
#
#
#
%
#
%
%
%
%
%
%
%
%
%
#
#
#
#
#
(
#
#
#
#
%
%
%
#
%
%
%
#
#
#
#
/
(
(
#
#
#
#
#
%
%
%
%
%
%
%
%
%
%
%
#
#
#
#
#
#
%
%
&
/
/
(
#
/
(
#
#
(
(
#
#
#
(
(
/
/
/
/
*
*
*
*
*
*
,
,
,
,
,
,
,
,
.
.
.
.
.
.
,
,
,
,
*
*
*
*
*
*
*
/
/
/
,
,
*
(
(
/
(
(
#
#
(
(
(
(
#
(
#
#
(
(
#
#
#
#
%
%
%
#
%
%
%
%
%
#
#
#
#
(
(
/
/
%
#
#
(
#
#
#
#
#
#
#
#
(
#
#
#
#
(
/
/
(
(
#
#
#
#
#
#
#
#
#
%
#
#
#
#
#
#
#
#
#
#
%
&
(
*
/
(
(
(
(
/
(
(
(
(
(
#
(
(
(
(
/
/
*
*
*
*
*
,
,
,
,
,
,
,
,
,
.
.
.
.
.
.
.
.
,
*
*
*
*
*
/
*
/
/
,
,
*
/
(
#
(
#
(
*
*
/
(
(
#
(
(
#
#
(
(
(
#
#
#
%
%
#
%
%
%
#
#
#
#
(
(
/
/
/
/
#
#
#
#
(
(
(
(
(
/
/
/
/
/
/
(
(
#
%
(
/
/
/
/
(
(
(
(
#
#
#
#
#
#
#
#
#
#
#
#
#
#
%
#
%
&
/
/
/
#
(
(
(
(
(
/
/
(
(
(
(
(
(
(
/
/
/
/
*
*
*
,
,
,
,
,
,
,
,
.
.
.
.
.
,
,
,
,
,
,
*
*
*
*
*
,
.
,
.
.
,
*
(
/
(
(
/
*
(
#
#
(
(
#
(
#
(
(
#
#
#
#
#
#
#
#
#
#
#
(
(
/
/
*
*
/
(
(
(
/
*
,
/
/
/
*
*
*
*
*
,
.
.
,
*
/
/
/
/
*
*
/
/
/
(
(
(
(
(
(
(
#
#
#
#
#
#
#
#
%
#
%
%
/
/
#
(
(
(
(
(
(
/
/
/
(
/
(
(
(
(
/
/
/
*
*
*
*
*
,
,
,
,
,
,
.
.
.
.
.
.
.
.
,
,
*
,
,
,
,
,
.
.
,
,
,
,
,
,
*
(
(
(
/
(
%
#
(
#
#
%
#
(
(
(
(
#
#
#
#
#
#
#
#
(
(
/
/
*
*
*
*
/
(
(
(
*
,
,
*
*
/
*
*
*
*
*
*
,
,
,
*
/
(
/
/
/
*
*
*
*
/
/
/
/
/
(
(
(
(
(
#
#
#
%
#
#
%
%
#
%
%
(
(
(
(
(
#
(
(
(
/
/
/
*
*
*
/
*
*
*
*
*
*
*
*
,
,
,
,
,
,
.
.
.
.
.
.
,
,
,
.
,
,
,
,
.
*
*
*
*
*
*
/
(
#
(
#
(
(
#
#
%
#
(
#
#
(
(
(
(
(
(
#
(
(
(
(
(
(
(
/
/
*
,
,
*
*
*
/
*
,
,
,
,
*
*
*
*
*
*
,
*
*
,
,
*
,
*
*
*
/
*
*
*
*
*
*
/
*
/
/
/
(
(
(
(
#
#
#
#
#
%
%
%
%
#
(
#
#
(
#
#
#
(
(
(
/
/
/
*
*
*
*
*
*
*
*
*
*
,
,
,
,
,
,
.
.
.
.
.
.
.
.
.
.
.
.
.
.
,
,
.
.
.
,
,
*
/
/
*
/
/
(
#
(
/
/
/
(
#
#
#
#
#
(
#
#
(
#
#
(
#
(
(
(
(
(
(
/
/
*
*
,
,
,
*
*
,
,
*
,
,
,
,
,
,
,
,
,
,
,
,
,
.
,
,
.
,
,
*
*
*
,
,
,
,
,
*
*
*
/
/
/
/
(
(
(
(
#
#
#
#
#
%
(
#
%
#
(
(
#
#
#
(
#
(
/
/
/
/
/
*
*
*
*
,
*
*
*
,
,
,
,
,
,
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
,
,
,
,
,
,
,
,
*
/
(
(
/
(
/
/
/
/
/
#
#
#
#
(
#
#
#
#
#
#
#
(
(
(
(
(
(
(
/
/
*
*
,
.
,
*
,
,
,
.
,
.
.
.
,
,
,
.
.
,
.
,
,
,
.
.
,
,
,
,
,
,
,
,
,
,
,
,
.
*
*
/
/
/
/
/
/
(
(
(
#
#
%
%
%
#
%
#
%
(
#
#
#
#
#
#
#
(
(
/
/
/
/
*
*
*
*
*
*
*
*
,
,
,
,
,
,
.
.
.
.
.
.
.
.
.
.
.
.
,
,
,
,
,
,
,
,
,
,
(
(
(
*
/
/
(
(
*
*
/
(
#
&
%
#
#
#
(
(
(
(
(
(
(
(
(
(
/
/
/
*
*
,
,
,
*
,
,
,
,
,
,
,
,
,
,
.
.
.
,
,
.
.
.
,
,
.
,
,
.
,
,
,
,
.
,
,
.
,
,
*
/
/
/
/
/
/
(
(
(
(
(
#
(
/
#
%
#
(
(
#
#
#
(
(
/
/
(
(
(
(
/
/
*
/
*
*
*
*
*
*
*
,
,
,
,
,
.
.
.
.
.
.
.
.
.
.
.
.
.
.
,
*
*
*
*
/
*
/
/
/
(
(
(
/
/
/
/
#
(
#
%
%
%
%
%
%
#
(
#
#
(
(
(
(
(
(
(
/
/
/
/
,
,
/
,
.
.
,
,
*
,
,
,
,
,
,
*
*
,
,
,
,
.
,
.
,
,
,
,
,
,
,
,
.
.
,
.
.
,
,
*
/
/
/
/
/
/
(
(
(
#
(
(
#
(
(
#
%
%
#
#
#
#
(
(
/
/
*
*
*
/
/
/
/
/
/
*
*
*
*
*
*
,
,
,
,
.
.
.
.
.
.
.
.
.
.
.
.
.
,
,
,
*
*
*
/
*
*
*
/
/
/
/
(
#
/
/
(
%
%
%
#
#
%
%
(
#
(
%
(
(
(
(
(
(
(
/
(
/
/
,
,
.
.
.
.
,
,
*
*
,
*
*
,
*
*
*
,
,
,
,
.
.
.
,
,
*
*
*
,
,
,
.
.
.
,
*
/
/
/
/
/
(
/
(
/
(
#
#
#
#
%
#
#
(
(
#
#
#
(
(
/
/
/
/
*
*
*
/
/
/
/
*
*
*
*
*
,
,
,
,
,
.
.
.
.
.
.
.
.
.
.
.
.
,
,
,
,
,
,
,
,
,
*
*
*
/
/
/
/
(
#
#
#
#
%
%
%
%
%
%
#
(
#
#
#
#
#
(
(
(
(
(
(
/
/
/
/
*
,
.
.
.
.
,
*
/
/
/
/
/
(
(
(
(
(
(
(
(
(
/
(
(
/
(
(
(
(
/
/
*
,
.
.
.
.
,
*
*
/
/
(
(
/
/
*
/
(
/
/
%
#
#
#
(
(
(
#
#
#
#
(
(
(
/
/
/
/
/
*
*
*
*
*
,
,
*
*
*
,
,
,
,
,
.
.
.
.
.
.
.
.
.
.
.
,
,
,
,
,
*
,
*
*
*
/
/
/
/
#
#
#
%
%
%
%
%
%
#
(
#
#
#
%
%
#
(
(
(
(
(
(
/
(
/
(
/
/
*
*
,
.
,
*
/
/
/
(
(
(
(
(
(
(
(
/
/
/
/
/
/
/
/
/
/
(
(
/
/
/
/
*
.
.
.
.
.
*
/
/
*
/
/
*
*
*
(
/
(
/
(
#
%
#
(
(
/
/
/
(
(
(
(
(
/
/
/
/
/
/
*
*
*
*
*
*
,
,
,
,
,
,
,
.
.
.
.
.
.
.
.
.
.
.
.
.
,
,
,
,
,
*
*
*
*
*
*
/
/
(
#
#
#
(
(
#
#
%
%
#
#
#
#
#
%
%
%
#
(
/
(
/
(
/
/
(
(
/
/
*
*
,
.
,
/
/
/
/
(
/
/
/
*
*
*
*
*
,
*
*
,
*
*
*
*
*
*
*
*
/
/
*
,
,
.
.
.
.
,
,
,
.
,
,
.
,
,
/
*
/
/
#
(
#
#
#
#
/
*
*
*
/
/
/
/
/
(
(
(
/
/
/
/
/
/
*
*
*
*
*
*
,
,
,
,
.
.
.
.
.
.
.
.
.
.
.
,
,
,
,
,
,
*
*
*
*
*
*
*
*
*
,
*
*
/
/
*
/
/
*
(
#
(
(
(
(
#
#
(
#
(
(
/
/
*
(
*
/
/
*
,
,
,
*
,
*
*
/
/
/
/
(
/
*
*
,
,
,
.
,
,
,
,
*
*
/
,
,
*
,
,
*
*
*
,
*
,
,
.
.
,
.
,
,
,
,
*
,
*
*
*
(
(
(
#
#
#
(
(
/
/
/
(
(
(
/
/
/
/
(
/
/
/
/
/
*
*
,
,
*
*
,
,
,
,
,
.
.
.
.
.
.
.
.
.
.
.
.
.
,
,
,
,
,
*
,
,
,
,
,
*
*
/
/
/
(
(
(
#
#
#
#
#
#
#
#
#
(
(
(
(
/
*
*
*
*
/
*
.
,
,
,
/
*
/
/
/
/
(
/
*
,
,
,
,
,
,
,
*
,
*
,
,
,
,
*
,
,
*
*
,
,
.
,
,
,
.
,
.
.
,
,
,
,
,
*
*
/
(
#
(
(
(
(
/
(
/
/
(
/
(
/
/
/
/
/
/
/
/
*
*
*
*
*
,
,
,
,
,
,
,
,
,
,
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
,
,
,
,
*
*
*
*
*
*
*
*
/
/
/
/
(
(
(
(
(
#
#
#
(
(
(
(
(
(
#
/
(
*
/
/
*
/
*
,
,
.
,
,
*
/
*
*
*
*
*
*
*
*
,
,
.
,
*
.
.
,
,
.
.
,
,
,
,
,
*
,
,
,
,
*
,
,
,
,
.
,
*
*
,
,
,
*
*
/
#
(
(
(
(
(
(
(
/
/
/
/
/
/
/
/
/
/
/
/
/
*
/
/
*
*
*
*
,
,
,
*
,
,
,
,
.
.
.
.
.
.
.
.
.
.
.
.
.
,
,
,
,
,
,
*
*
*
*
*
/
*
*
/
/
%
%
%
#
%
&
%
%
%
#
#
%
#
#
#
%
%
(
(
*
*
*
/
*
,
*
*
,
,
*
*
,
*
,
,
*
,
,
*
,
,
.
,
,
,
,
,
,
*
*
,
*
.
/
,
/
,
,
*
*
*
.
*
,
,
.
.
,
*
,
,
*
,
(
(
#
(
(
(
(
(
(
(
(
/
/
/
/
/
/
/
/
*
*
/
/
*
*
*
*
*
*
*
*
*
*
,
,
,
,
,
,
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
,
,
,
,
,
,
*
*
/
(
#
#
(
(
/
(
#
%
%
#
%
&
&
%
(
#
#
#
#
#
%
%
%
#
(
*
*
*
*
,
*
.
,
,
,
.
,
,
/
,
*
*
*
.
,
,
,
,
,
,
,
,
,
,
*
,
*
*
.
,
*
*
/
*
,
*
/
(
,
,
*
*
.
.
.
*
,
*
/
(
#
(
%
(
(
(
(
(
/
(
(
/
/
/
/
/
/
/
*
*
*
*
*
*
,
,
,
,
,
,
,
,
,
,
,
.
.
.
.
.
.
.
.
.
.
.
.
.
.
,
,
,
,
*
*
*
*
*
/
(
(
(
(
#
#
#
#
#
#
#
%
%
%
%
%
(
(
(
(
(
%
&
&
#
%
%
%
/
/
*
*
,
*
*
.
,
,
,
*
/
/
*
*
*
,
,
,
,
,
,
*
,
,
,
*
,
*
*
*
/
,
/
*
*
,
*
*
(
,
*
.
*
.
,
.
,
*
*
,
*
/
(
(
#
#
(
(
(
(
(
(
(
(
(
(
/
/
/
/
/
/
/
*
*
*
*
*
*
*
*
*
*
,
,
,
,
,
,
.
.
.
.
.
.
.
.
.
.
.
.
.
,
,
,
,
*
*
*
*
*
/
/
/
/
(
(
#
%
#
(
(
#
#
(
#
#
(
#
(
(
(
%
&
&
%
%
%
%
%
%
%
/
/
,
,
,
.
.
*
,
*
/
*
/
(
/
*
/
*
,
,
,
,
,
,
,
,
,
/
/
*
/
*
,
#
/
,
*
*
*
,
*
.
.
.
.
,
,
.
.
.
/
/
(
(
#
#
%
%
#
#
%
%
%
#
#
#
(
(
/
/
/
/
/
/
*
*
*
*
*
*
*
*
,
,
,
,
,
,
,
,
.
.
.
.
.
.
.
.
.
.
,
,
,
,
*
*
*
*
*
*
*
*
*
/
(
/
(
(
#
(
(
(
(
#
#
#
#
%
(
#
%
%
#
(
*
/
%
%
%
%
%
%
#
*
*
,
,
,
,
*
*
*
*
*
/
(
/
(
/
,
/
,
*
,
/
.
.
,
*
,
*
/
/
/
*
*
*
(
(
*
/
*
,
.
.
.
.
.
.
,
*
/
/
(
(
(
#
#
%
%
%
%
%
%
&
&
%
%
%
#
(
/
/
/
/
/
*
*
*
*
/
/
*
,
*
*
,
,
,
,
,
.
.
.
.
.
.
.
.
.
.
.
.
,
,
,
,
,
*
*
*
/
/
/
/
/
/
(
(
#
#
(
/
/
(
(
(
(
#
#
#
%
#
#
(
(
/
(
/
/
#
%
#
&
%
%
(
*
,
*
.
.
.
,
,
*
/
*
#
*
/
*
/
,
/
*
,
,
*
,
*
/
,
,
,
*
/
/
*
,
/
*
*
*
,
,
.
,
,
.
,
,
/
/
/
/
(
(
(
#
#
%
/
.
.
.
.
,
*
/
#
#
#
#
(
/
/
/
/
/
(
(
/
*
*
*
*
*
*
,
,
,
,
,
,
.
.
.
.
.
.
.
.
.
.
,
,
,
,
*
*
*
*
*
*
*
*
/
(
(
#
(
/
(
#
(
(
(
#
(
#
%
&
%
%
/
#
#
/
(
(
(
#
%
&
%
%
%
#
/
/
*
,
.
*
.
.
*
/
*
*
,
,
/
*
*
*
*
.
.
,
,
/
*
,
*
/
*
*
.
,
*
,
,
.
.
.
,
,
,
.
/
*
/
/
/
/
/
(
(
(
(
#
#
%
/
.
.
.
.
.
/
(
(
#
#
#
/
/
/
/
(
(
/
/
*
*
*
*
*
*
,
,
,
,
,
.
.
.
.
.
.
.
.
.
.
.
,
,
,
,
*
*
*
*
,
*
*
*
*
/
(
/
(
(
/
(
(
#
%
(
#
%
#
#
%
&
(
(
/
(
/
(
#
#
(
(
(
#
#
&
(
(
/
/
/
,
*
.
/
*
*
/
*
*
/
*
*
/
*
*
*
*
,
*
,
/
/
.
.
,
.
,
,
,
,
,
,
.
.
,
,
*
*
/
/
/
/
/
(
/
(
(
(
(
(
#
#
#
,
.
.
/
(
(
(
(
#
(
/
*
*
*
/
/
/
/
/
/
*
*
*
*
,
,
,
,
,
,
.
.
.
.
.
.
.
.
.
.
,
,
,
*
*
*
*
,
,
,
*
/
/
*
/
(
(
/
(
#
#
%
(
#
#
%
#
#
(
/
/
/
/
/
(
(
(
(
(
(
/
(
(
(
(
(
/
/
/
*
/
,
*
/
*
*
,
*
,
*
*
*
,
*
*
*
,
*
.
,
.
,
.
,
.
,
.
,
,
,
*
*
*
/
/
/
/
/
/
/
/
(
(
(
(
(
#
#
#
#
(
/
/
(
/
/
/
(
(
(
/
*
*
*
/
/
(
(
(
/
/
*
*
*
,
,
,
,
,
,
.
.
.
.
.
.
.
.
.
.
,
.
.
,
,
,
,
*
*
*
*
*
*
*
/
/
/
(
/
(
(
(
#
#
%
(
#
%
#
*
(
#
%
(
/
/
(
(
/
/
(
(
#
(
/
(
(
/
(
/
(
(
/
/
*
/
*
*
,
,
,
.
*
,
*
,
,
*
*
,
.
.
.
.
.
.
,
,
*
*
*
*
*
/
/
/
/
/
/
/
/
/
/
(
(
(
(
(
#
#
(
(
/
/
/
/
/
/
/
/
(
(
(
(
(
/
/
(
(
(
/
*
*
*
*
*
*
,
,
,
,
.
.
.
.
.
.
.
.
.
.
.
,
,
,
,
*
*
*
*
*
/
*
*
/
/
/
(
/
(
(
#
(
%
%
#
/
(
#
%
%
%
&
#
(
(
(
/
/
/
#
#
(
#
(
/
(
(
/
(
(
(
(
(
/
/
/
/
/
*
*
,
*
,
*
,
.
,
,
.
,
*
,
,
,
,
*
*
*
*
*
*
*
*
*
/
*
*
*
/
/
/
/
/
(
(
(
(
(
(
(
/
/
/
/
*
/
/
/
/
/
/
/
/
(
(
(
(
(
/
*
,
*
*
*
*
*
*
,
,
,
.
.
.
.
.
.
.
.
.
.
.
.
.
.
,
,
,
,
,
*
,
*
/
*
(
(
(
(
/
/
(
#
(
%
&
(
/
(
#
(
#
%
&
%
#
#
(
/
/
(
(
(
#
(
/
*
(
(
(
/
(
(
(
(
(
(
/
/
/
/
/
/
/
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
/
/
/
/
/
/
/
(
(
(
(
(
(
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
(
/
*
*
*
*
*
*
*
,
,
,
.
.
,
.
.
.
.
.
.
.
.
.
.
,
,
,
,
*
*
*
*
*
*
/
(
(
(
*
/
/
(
#
(
#
%
%
(
#
%
(
#
%
/
/
/
#
#
(
(
(
#
(
(
(
/
,
,
(
(
(
(
(
(
(
(
(
/
/
(
/
/
/
/
/
/
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
/
/
/
/
/
/
/
(
/
(
(
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
*
,
,
,
.
.
.
.
.
.
.
.
.
.
.
.
.
.
,
,
,
*
*
*
/
*
*
*
*
*
*
/
(
/
(
#
#
(
(
#
#
#
#
(
#
(
#
(
%
&
%
#
(
*
,
*
(
(
/
/
.
.
(
(
(
(
(
(
(
(
(
(
(
(
(
(
/
/
/
*
/
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
/
/
/
/
/
/
/
/
/
/
*
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
*
/
/
*
*
*
,
*
*
*
*
*
*
*
,
.
.
.
.
.
.
.
.
.
.
.
.
.
,
,
*
*
*
*
*
*
*
*
/
/
(
(
(
(
(
(
(
(
/
#
#
/
(
%
#
(
(
#
#
*
,
*
*
/
(
/
/
/
*
.
,
(
(
(
(
(
(
(
(
(
(
(
(
(
(
/
/
/
/
*
*
*
*
*
*
/
/
/
*
*
*
*
*
*
*
*
*
/
*
/
*
/
/
/
/
/
/
/
*
/
*
*
/
*
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
*
,
,
,
,
,
,
,
,
,
,
,
.
.
.
.
.
.
.
.
,
.
.
,
,
,
,
*
*
*
*
/
/
/
(
(
#
(
/
(
#
/
/
/
/
(
#
#
#
/
*
,
,
*
*
/
/
/
(
/
(
/
*
*
,
(
(
(
(
(
(
(
(
(
(
(
(
/
(
/
/
/
/
/
*
*
*
/
/
/
/
*
*
*
*
/
/
/
*
*
*
/
/
/
/
/
*
/
/
/
*
*
*
/
/
*
*
/
*
/
*
/
/
/
/
/
/
/
/
/
/
*
/
*
/
*
/
*
*
/
*
*
*
,
,
,
,
,
,
.
,
,
,
.
.
.
.
.
.
.
.
.
.
,
,
,
,
,
,
*
*
*
/
/
/
(
(
(
(
/
/
,
,
*
/
/
(
#
*
*
*
/
/
/
/
/
/
(
(
/
/
/
*
.
,
/
(
(
(
(
(
(
(
(
(
(
(
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
*
*
*
/
/
/
*
*
*
*
*
/
/
/
/
*
/
*
*
*
*
*
*
*
/
*
/
/
/
*
/
/
*
/
/
/
*
/
/
*
*
*
*
*
*
*
*
*
*
,
,
,
,
,
,
,
,
.
.
.
.
.
.
.
.
.
.
.
.
.
,
,
,
,
,
,
,
*
*
*
/
(
(
(
(
/
/
*
*
*
*
*
/
(
(
*
/
/
/
/
(
#
(
(
(
/
/
/
*
*
,
.
*
/
/
/
(
(
(
/
(
(
/
/
/
/
/
/
/
/
/
/
*
/
/
/
/
*
*
*
/
*
*
/
*
*
/
/
*
*
/
*
*
/
*
*
*
*
/
/
*
/
/
/
/
/
/
/
/
/
/
/
*
*
/
*
/
*
*
*
*
*
*
*
,
,
*
,
,
,
,
,
,
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
,
,
,
,
*
*
*
,
,
,
*
/
/
*
/
/
/
/
/
/
(
(
(
(
/
/
(
/
(
(
(
(
/
*
*
*
/
*
*
*
.
*
*
/
/
/
/
/
/
/
/
/
/
/
/
/
/
*
/
/
/
*
/
*
*
*
*
*
*
/
*
/
/
*
/
*
*
*
*
/
*
*
*
/
*
/
*
*
/
/
/
*
/
/
/
/
/
*
*
*
*
*
*
/
,
*
/
*
*
*
*
,
*
,
,
,
,
,
,
,
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
,
,
,
,
,
,
.
.
.
.
,
*
(
/
/
/
*
/
/
/
(
(
(
/
(
/
/
/
/
/
/
*
*
*
*
*
*
*
*
*
,
,
*
*
*
/
/
/
/
/
/
/
/
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
/
/
*
*
/
*
*
*
*
*
*
*
*
*
*
*
*
*
*
/
*
*
*
*
*
/
*
*
*
*
,
*
,
*
*
*
*
*
,
,
,
,
,
,
,
,
,
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
,
.
.
.
.
.
,
,
,
*
*
/
/
*
*
/
*
*
/
(
/
/
/
/
*
*
*
*
*
/
*
*
*
*
*
*
*
*
*
*
*
,
,
,
,
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
,
,
,
*
*
*
*
,
,
,
*
*
,
,
*
,
,
,
,
,
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
,
,
,
,
,
,
*
*
*
,
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
,
,
,
,
,
.
.
.
,
,
,
,
,
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
,
*
,
*
*
,
*
,
*
,
,
*
,
,
,
,
,
,
,
*
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
,
,
,
,
,
,
*
,
,
,
,
,
,
*
*
*
*
,
,
*
*
*
*
*
*
,
,
,
,
,
,
.
.
,
,
,
,
,
*
,
,
,
*
,
,
,
,
,
,
*
*
*
*
*
*
*
*
.
.
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
.
,
,
,
,
,
,
,
,
.
,
,
,
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
,
.
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
*
,
,
,
,
,
,
,
,
,
.
.
.
.
.
.
,
.
.
,
,
,
,
,
,
,
,
,
,
,
,
,
*
*
,
,
.
.
,
,
,
,
,
,
,
,
.
.
.
.
.
.
,
.
.
.
.
.
.
,
,
.
.
,
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
,
.
.
,
,
,
,
,
,
,
,
,
.
,
,
,
,
.
,
.
.
.
,
.
.
.
.
.
.
.
.
,
,
,
,
,
,
,
,
,
,
,
,
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
,
,
,
,
,
,
,
,
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
,
,
,
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.