Serveur d'exploration sur la recherche en informatique en Lorraine

Attention, ce site est en cours de développement !
Attention, site généré par des moyens informatiques à partir de corpus bruts.
Les informations ne sont donc pas validées.

Throwing stones inside simple polygons

Identifieur interne : 000364 ( PascalFrancis/Corpus ); précédent : 000363; suivant : 000365

Throwing stones inside simple polygons

Auteurs : Otfried Cheong ; Hazel Everett ; Hyo-Sil Kim ; Sylvain Lazard ; René Schott

Source :

RBID : Pascal:08-0006939

Descripteurs français

English descriptors

Abstract

Given two sets A and B of m non-intersecting line segments in the plane, we show how to compute in O(m log m) time a data structure that uses O(m) space and allows to answer the following query in O(log m) time: Given a parabola γ: y = ax2 + bx + c, does separate A and B? This structure can be used to build a data structure that stores a simple polygon and allows ray-shooting queries along parabolic trajectories with vertical main axis. For a polygon with complexity n, we can answer such "stone throwing" queries in O(log2 n) time, using O(n log n) space and O(n log2 n) preprocessing time. This matches the best known bound for circular ray shooting in simple polygons.

Notice en format standard (ISO 2709)

Pour connaître la documentation sur le format Inist Standard.

pA  
A01 01  1    @0 0302-9743
A05       @2 4041
A08 01  1  ENG  @1 Throwing stones inside simple polygons
A09 01  1  ENG  @1 Algorithmic aspects in information and management : Second international conference, AAIM 2006, Hong Kong, China, June 20-22, 2006 : proceedings
A11 01  1    @1 CHEONG (Otfried)
A11 02  1    @1 EVERETT (Hazel)
A11 03  1    @1 KIM (Hyo-Sil)
A11 04  1    @1 LAZARD (Sylvain)
A11 05  1    @1 SCHOTT (René)
A12 01  1    @1 CHENG (Siu-Wing) @9 ed.
A12 02  1    @1 POON (Chung Keung) @9 ed.
A14 01      @1 Division of Computer Science, KAIST @2 Daejeon @3 KOR @Z 1 aut. @Z 3 aut.
A14 02      @1 LORIA & IECN -INRIA Lorraine, Universities Nancy 1 & 2 @2 Nancy @3 FRA @Z 2 aut. @Z 4 aut. @Z 5 aut.
A20       @1 185-193
A21       @1 2006
A23 01      @0 ENG
A26 01      @0 3-540-35157-4
A43 01      @1 INIST @2 16343 @5 354000172801250170
A44       @0 0000 @1 © 2008 INIST-CNRS. All rights reserved.
A45       @0 9 ref.
A47 01  1    @0 08-0006939
A60       @1 P @2 C
A61       @0 A
A64 01  1    @0 Lecture notes in computer science
A66 01      @0 DEU
A66 02      @0 USA
C01 01    ENG  @0 Given two sets A and B of m non-intersecting line segments in the plane, we show how to compute in O(m log m) time a data structure that uses O(m) space and allows to answer the following query in O(log m) time: Given a parabola γ: y = ax2 + bx + c, does separate A and B? This structure can be used to build a data structure that stores a simple polygon and allows ray-shooting queries along parabolic trajectories with vertical main axis. For a polygon with complexity n, we can answer such "stone throwing" queries in O(log2 n) time, using O(n log n) space and O(n log2 n) preprocessing time. This matches the best known bound for circular ray shooting in simple polygons.
C02 01  X    @0 001D02B07D
C02 02  X    @0 001D02A05
C03 01  X  FRE  @0 Algorithmique @5 01
C03 01  X  ENG  @0 Algorithmics @5 01
C03 01  X  SPA  @0 Algorítmica @5 01
C03 02  X  FRE  @0 Polygone @5 06
C03 02  X  ENG  @0 Polygon @5 06
C03 02  X  SPA  @0 Polígono @5 06
C03 03  X  FRE  @0 Structure donnée @5 07
C03 03  X  ENG  @0 Data structure @5 07
C03 03  X  SPA  @0 Estructura datos @5 07
C03 04  X  FRE  @0 Interrogation base donnée @5 08
C03 04  X  ENG  @0 Database query @5 08
C03 04  X  SPA  @0 Interrogación base datos @5 08
C03 05  X  FRE  @0 Requête @5 09
C03 05  X  ENG  @0 Query @5 09
C03 05  X  SPA  @0 Pregunta documental @5 09
C03 06  X  FRE  @0 Trajectoire @5 10
C03 06  X  ENG  @0 Trajectory @5 10
C03 06  X  SPA  @0 Trayectoria @5 10
C03 07  X  FRE  @0 Segment droite @5 18
C03 07  X  ENG  @0 Line segment @5 18
C03 07  X  SPA  @0 Segmento recta @5 18
C03 08  X  FRE  @0 Fichier log @5 19
C03 08  X  ENG  @0 Log file @5 19
C03 08  X  SPA  @0 Fichero actividad @5 19
N21       @1 007
N44 01      @1 OTO
N82       @1 OTO
pR  
A30 01  1  ENG  @1 International Conference on Algorithmic Aspects in Information and Management @2 2 @3 Hong Kong CHN @4 2006

Format Inist (serveur)

NO : PASCAL 08-0006939 INIST
ET : Throwing stones inside simple polygons
AU : CHEONG (Otfried); EVERETT (Hazel); KIM (Hyo-Sil); LAZARD (Sylvain); SCHOTT (René); CHENG (Siu-Wing); POON (Chung Keung)
AF : Division of Computer Science, KAIST/Daejeon/Corée, République de (1 aut., 3 aut.); LORIA & IECN -INRIA Lorraine, Universities Nancy 1 & 2/Nancy/France (2 aut., 4 aut., 5 aut.)
DT : Publication en série; Congrès; Niveau analytique
SO : Lecture notes in computer science; ISSN 0302-9743; Allemagne; Da. 2006; Vol. 4041; Pp. 185-193; Bibl. 9 ref.
LA : Anglais
EA : Given two sets A and B of m non-intersecting line segments in the plane, we show how to compute in O(m log m) time a data structure that uses O(m) space and allows to answer the following query in O(log m) time: Given a parabola γ: y = ax2 + bx + c, does separate A and B? This structure can be used to build a data structure that stores a simple polygon and allows ray-shooting queries along parabolic trajectories with vertical main axis. For a polygon with complexity n, we can answer such "stone throwing" queries in O(log2 n) time, using O(n log n) space and O(n log2 n) preprocessing time. This matches the best known bound for circular ray shooting in simple polygons.
CC : 001D02B07D; 001D02A05
FD : Algorithmique; Polygone; Structure donnée; Interrogation base donnée; Requête; Trajectoire; Segment droite; Fichier log
ED : Algorithmics; Polygon; Data structure; Database query; Query; Trajectory; Line segment; Log file
SD : Algorítmica; Polígono; Estructura datos; Interrogación base datos; Pregunta documental; Trayectoria; Segmento recta; Fichero actividad
LO : INIST-16343.354000172801250170
ID : 08-0006939

Links to Exploration step

Pascal:08-0006939

Le document en format XML

<record>
<TEI>
<teiHeader>
<fileDesc>
<titleStmt>
<title xml:lang="en" level="a">Throwing stones inside simple polygons</title>
<author>
<name sortKey="Cheong, Otfried" sort="Cheong, Otfried" uniqKey="Cheong O" first="Otfried" last="Cheong">Otfried Cheong</name>
<affiliation>
<inist:fA14 i1="01">
<s1>Division of Computer Science, KAIST</s1>
<s2>Daejeon</s2>
<s3>KOR</s3>
<sZ>1 aut.</sZ>
<sZ>3 aut.</sZ>
</inist:fA14>
</affiliation>
</author>
<author>
<name sortKey="Everett, Hazel" sort="Everett, Hazel" uniqKey="Everett H" first="Hazel" last="Everett">Hazel Everett</name>
<affiliation>
<inist:fA14 i1="02">
<s1>LORIA & IECN -INRIA Lorraine, Universities Nancy 1 & 2</s1>
<s2>Nancy</s2>
<s3>FRA</s3>
<sZ>2 aut.</sZ>
<sZ>4 aut.</sZ>
<sZ>5 aut.</sZ>
</inist:fA14>
</affiliation>
</author>
<author>
<name sortKey="Kim, Hyo Sil" sort="Kim, Hyo Sil" uniqKey="Kim H" first="Hyo-Sil" last="Kim">Hyo-Sil Kim</name>
<affiliation>
<inist:fA14 i1="01">
<s1>Division of Computer Science, KAIST</s1>
<s2>Daejeon</s2>
<s3>KOR</s3>
<sZ>1 aut.</sZ>
<sZ>3 aut.</sZ>
</inist:fA14>
</affiliation>
</author>
<author>
<name sortKey="Lazard, Sylvain" sort="Lazard, Sylvain" uniqKey="Lazard S" first="Sylvain" last="Lazard">Sylvain Lazard</name>
<affiliation>
<inist:fA14 i1="02">
<s1>LORIA & IECN -INRIA Lorraine, Universities Nancy 1 & 2</s1>
<s2>Nancy</s2>
<s3>FRA</s3>
<sZ>2 aut.</sZ>
<sZ>4 aut.</sZ>
<sZ>5 aut.</sZ>
</inist:fA14>
</affiliation>
</author>
<author>
<name sortKey="Schott, Rene" sort="Schott, Rene" uniqKey="Schott R" first="René" last="Schott">René Schott</name>
<affiliation>
<inist:fA14 i1="02">
<s1>LORIA & IECN -INRIA Lorraine, Universities Nancy 1 & 2</s1>
<s2>Nancy</s2>
<s3>FRA</s3>
<sZ>2 aut.</sZ>
<sZ>4 aut.</sZ>
<sZ>5 aut.</sZ>
</inist:fA14>
</affiliation>
</author>
</titleStmt>
<publicationStmt>
<idno type="wicri:source">INIST</idno>
<idno type="inist">08-0006939</idno>
<date when="2006">2006</date>
<idno type="stanalyst">PASCAL 08-0006939 INIST</idno>
<idno type="RBID">Pascal:08-0006939</idno>
<idno type="wicri:Area/PascalFrancis/Corpus">000364</idno>
</publicationStmt>
<sourceDesc>
<biblStruct>
<analytic>
<title xml:lang="en" level="a">Throwing stones inside simple polygons</title>
<author>
<name sortKey="Cheong, Otfried" sort="Cheong, Otfried" uniqKey="Cheong O" first="Otfried" last="Cheong">Otfried Cheong</name>
<affiliation>
<inist:fA14 i1="01">
<s1>Division of Computer Science, KAIST</s1>
<s2>Daejeon</s2>
<s3>KOR</s3>
<sZ>1 aut.</sZ>
<sZ>3 aut.</sZ>
</inist:fA14>
</affiliation>
</author>
<author>
<name sortKey="Everett, Hazel" sort="Everett, Hazel" uniqKey="Everett H" first="Hazel" last="Everett">Hazel Everett</name>
<affiliation>
<inist:fA14 i1="02">
<s1>LORIA & IECN -INRIA Lorraine, Universities Nancy 1 & 2</s1>
<s2>Nancy</s2>
<s3>FRA</s3>
<sZ>2 aut.</sZ>
<sZ>4 aut.</sZ>
<sZ>5 aut.</sZ>
</inist:fA14>
</affiliation>
</author>
<author>
<name sortKey="Kim, Hyo Sil" sort="Kim, Hyo Sil" uniqKey="Kim H" first="Hyo-Sil" last="Kim">Hyo-Sil Kim</name>
<affiliation>
<inist:fA14 i1="01">
<s1>Division of Computer Science, KAIST</s1>
<s2>Daejeon</s2>
<s3>KOR</s3>
<sZ>1 aut.</sZ>
<sZ>3 aut.</sZ>
</inist:fA14>
</affiliation>
</author>
<author>
<name sortKey="Lazard, Sylvain" sort="Lazard, Sylvain" uniqKey="Lazard S" first="Sylvain" last="Lazard">Sylvain Lazard</name>
<affiliation>
<inist:fA14 i1="02">
<s1>LORIA & IECN -INRIA Lorraine, Universities Nancy 1 & 2</s1>
<s2>Nancy</s2>
<s3>FRA</s3>
<sZ>2 aut.</sZ>
<sZ>4 aut.</sZ>
<sZ>5 aut.</sZ>
</inist:fA14>
</affiliation>
</author>
<author>
<name sortKey="Schott, Rene" sort="Schott, Rene" uniqKey="Schott R" first="René" last="Schott">René Schott</name>
<affiliation>
<inist:fA14 i1="02">
<s1>LORIA & IECN -INRIA Lorraine, Universities Nancy 1 & 2</s1>
<s2>Nancy</s2>
<s3>FRA</s3>
<sZ>2 aut.</sZ>
<sZ>4 aut.</sZ>
<sZ>5 aut.</sZ>
</inist:fA14>
</affiliation>
</author>
</analytic>
<series>
<title level="j" type="main">Lecture notes in computer science</title>
<idno type="ISSN">0302-9743</idno>
<imprint>
<date when="2006">2006</date>
</imprint>
</series>
</biblStruct>
</sourceDesc>
<seriesStmt>
<title level="j" type="main">Lecture notes in computer science</title>
<idno type="ISSN">0302-9743</idno>
</seriesStmt>
</fileDesc>
<profileDesc>
<textClass>
<keywords scheme="KwdEn" xml:lang="en">
<term>Algorithmics</term>
<term>Data structure</term>
<term>Database query</term>
<term>Line segment</term>
<term>Log file</term>
<term>Polygon</term>
<term>Query</term>
<term>Trajectory</term>
</keywords>
<keywords scheme="Pascal" xml:lang="fr">
<term>Algorithmique</term>
<term>Polygone</term>
<term>Structure donnée</term>
<term>Interrogation base donnée</term>
<term>Requête</term>
<term>Trajectoire</term>
<term>Segment droite</term>
<term>Fichier log</term>
</keywords>
</textClass>
</profileDesc>
</teiHeader>
<front>
<div type="abstract" xml:lang="en">Given two sets A and B of m non-intersecting line segments in the plane, we show how to compute in O(m log m) time a data structure that uses O(m) space and allows to answer the following query in O(log m) time: Given a parabola γ: y = ax
<sup>2</sup>
+ bx + c, does separate A and B? This structure can be used to build a data structure that stores a simple polygon and allows ray-shooting queries along parabolic trajectories with vertical main axis. For a polygon with complexity n, we can answer such "stone throwing" queries in O(log
<sup>2</sup>
n) time, using O(n log n) space and O(n log
<sup>2</sup>
n) preprocessing time. This matches the best known bound for circular ray shooting in simple polygons.</div>
</front>
</TEI>
<inist>
<standard h6="B">
<pA>
<fA01 i1="01" i2="1">
<s0>0302-9743</s0>
</fA01>
<fA05>
<s2>4041</s2>
</fA05>
<fA08 i1="01" i2="1" l="ENG">
<s1>Throwing stones inside simple polygons</s1>
</fA08>
<fA09 i1="01" i2="1" l="ENG">
<s1>Algorithmic aspects in information and management : Second international conference, AAIM 2006, Hong Kong, China, June 20-22, 2006 : proceedings</s1>
</fA09>
<fA11 i1="01" i2="1">
<s1>CHEONG (Otfried)</s1>
</fA11>
<fA11 i1="02" i2="1">
<s1>EVERETT (Hazel)</s1>
</fA11>
<fA11 i1="03" i2="1">
<s1>KIM (Hyo-Sil)</s1>
</fA11>
<fA11 i1="04" i2="1">
<s1>LAZARD (Sylvain)</s1>
</fA11>
<fA11 i1="05" i2="1">
<s1>SCHOTT (René)</s1>
</fA11>
<fA12 i1="01" i2="1">
<s1>CHENG (Siu-Wing)</s1>
<s9>ed.</s9>
</fA12>
<fA12 i1="02" i2="1">
<s1>POON (Chung Keung)</s1>
<s9>ed.</s9>
</fA12>
<fA14 i1="01">
<s1>Division of Computer Science, KAIST</s1>
<s2>Daejeon</s2>
<s3>KOR</s3>
<sZ>1 aut.</sZ>
<sZ>3 aut.</sZ>
</fA14>
<fA14 i1="02">
<s1>LORIA & IECN -INRIA Lorraine, Universities Nancy 1 & 2</s1>
<s2>Nancy</s2>
<s3>FRA</s3>
<sZ>2 aut.</sZ>
<sZ>4 aut.</sZ>
<sZ>5 aut.</sZ>
</fA14>
<fA20>
<s1>185-193</s1>
</fA20>
<fA21>
<s1>2006</s1>
</fA21>
<fA23 i1="01">
<s0>ENG</s0>
</fA23>
<fA26 i1="01">
<s0>3-540-35157-4</s0>
</fA26>
<fA43 i1="01">
<s1>INIST</s1>
<s2>16343</s2>
<s5>354000172801250170</s5>
</fA43>
<fA44>
<s0>0000</s0>
<s1>© 2008 INIST-CNRS. All rights reserved.</s1>
</fA44>
<fA45>
<s0>9 ref.</s0>
</fA45>
<fA47 i1="01" i2="1">
<s0>08-0006939</s0>
</fA47>
<fA60>
<s1>P</s1>
<s2>C</s2>
</fA60>
<fA61>
<s0>A</s0>
</fA61>
<fA64 i1="01" i2="1">
<s0>Lecture notes in computer science</s0>
</fA64>
<fA66 i1="01">
<s0>DEU</s0>
</fA66>
<fA66 i1="02">
<s0>USA</s0>
</fA66>
<fC01 i1="01" l="ENG">
<s0>Given two sets A and B of m non-intersecting line segments in the plane, we show how to compute in O(m log m) time a data structure that uses O(m) space and allows to answer the following query in O(log m) time: Given a parabola γ: y = ax
<sup>2</sup>
+ bx + c, does separate A and B? This structure can be used to build a data structure that stores a simple polygon and allows ray-shooting queries along parabolic trajectories with vertical main axis. For a polygon with complexity n, we can answer such "stone throwing" queries in O(log
<sup>2</sup>
n) time, using O(n log n) space and O(n log
<sup>2</sup>
n) preprocessing time. This matches the best known bound for circular ray shooting in simple polygons.</s0>
</fC01>
<fC02 i1="01" i2="X">
<s0>001D02B07D</s0>
</fC02>
<fC02 i1="02" i2="X">
<s0>001D02A05</s0>
</fC02>
<fC03 i1="01" i2="X" l="FRE">
<s0>Algorithmique</s0>
<s5>01</s5>
</fC03>
<fC03 i1="01" i2="X" l="ENG">
<s0>Algorithmics</s0>
<s5>01</s5>
</fC03>
<fC03 i1="01" i2="X" l="SPA">
<s0>Algorítmica</s0>
<s5>01</s5>
</fC03>
<fC03 i1="02" i2="X" l="FRE">
<s0>Polygone</s0>
<s5>06</s5>
</fC03>
<fC03 i1="02" i2="X" l="ENG">
<s0>Polygon</s0>
<s5>06</s5>
</fC03>
<fC03 i1="02" i2="X" l="SPA">
<s0>Polígono</s0>
<s5>06</s5>
</fC03>
<fC03 i1="03" i2="X" l="FRE">
<s0>Structure donnée</s0>
<s5>07</s5>
</fC03>
<fC03 i1="03" i2="X" l="ENG">
<s0>Data structure</s0>
<s5>07</s5>
</fC03>
<fC03 i1="03" i2="X" l="SPA">
<s0>Estructura datos</s0>
<s5>07</s5>
</fC03>
<fC03 i1="04" i2="X" l="FRE">
<s0>Interrogation base donnée</s0>
<s5>08</s5>
</fC03>
<fC03 i1="04" i2="X" l="ENG">
<s0>Database query</s0>
<s5>08</s5>
</fC03>
<fC03 i1="04" i2="X" l="SPA">
<s0>Interrogación base datos</s0>
<s5>08</s5>
</fC03>
<fC03 i1="05" i2="X" l="FRE">
<s0>Requête</s0>
<s5>09</s5>
</fC03>
<fC03 i1="05" i2="X" l="ENG">
<s0>Query</s0>
<s5>09</s5>
</fC03>
<fC03 i1="05" i2="X" l="SPA">
<s0>Pregunta documental</s0>
<s5>09</s5>
</fC03>
<fC03 i1="06" i2="X" l="FRE">
<s0>Trajectoire</s0>
<s5>10</s5>
</fC03>
<fC03 i1="06" i2="X" l="ENG">
<s0>Trajectory</s0>
<s5>10</s5>
</fC03>
<fC03 i1="06" i2="X" l="SPA">
<s0>Trayectoria</s0>
<s5>10</s5>
</fC03>
<fC03 i1="07" i2="X" l="FRE">
<s0>Segment droite</s0>
<s5>18</s5>
</fC03>
<fC03 i1="07" i2="X" l="ENG">
<s0>Line segment</s0>
<s5>18</s5>
</fC03>
<fC03 i1="07" i2="X" l="SPA">
<s0>Segmento recta</s0>
<s5>18</s5>
</fC03>
<fC03 i1="08" i2="X" l="FRE">
<s0>Fichier log</s0>
<s5>19</s5>
</fC03>
<fC03 i1="08" i2="X" l="ENG">
<s0>Log file</s0>
<s5>19</s5>
</fC03>
<fC03 i1="08" i2="X" l="SPA">
<s0>Fichero actividad</s0>
<s5>19</s5>
</fC03>
<fN21>
<s1>007</s1>
</fN21>
<fN44 i1="01">
<s1>OTO</s1>
</fN44>
<fN82>
<s1>OTO</s1>
</fN82>
</pA>
<pR>
<fA30 i1="01" i2="1" l="ENG">
<s1>International Conference on Algorithmic Aspects in Information and Management</s1>
<s2>2</s2>
<s3>Hong Kong CHN</s3>
<s4>2006</s4>
</fA30>
</pR>
</standard>
<server>
<NO>PASCAL 08-0006939 INIST</NO>
<ET>Throwing stones inside simple polygons</ET>
<AU>CHEONG (Otfried); EVERETT (Hazel); KIM (Hyo-Sil); LAZARD (Sylvain); SCHOTT (René); CHENG (Siu-Wing); POON (Chung Keung)</AU>
<AF>Division of Computer Science, KAIST/Daejeon/Corée, République de (1 aut., 3 aut.); LORIA & IECN -INRIA Lorraine, Universities Nancy 1 & 2/Nancy/France (2 aut., 4 aut., 5 aut.)</AF>
<DT>Publication en série; Congrès; Niveau analytique</DT>
<SO>Lecture notes in computer science; ISSN 0302-9743; Allemagne; Da. 2006; Vol. 4041; Pp. 185-193; Bibl. 9 ref.</SO>
<LA>Anglais</LA>
<EA>Given two sets A and B of m non-intersecting line segments in the plane, we show how to compute in O(m log m) time a data structure that uses O(m) space and allows to answer the following query in O(log m) time: Given a parabola γ: y = ax
<sup>2</sup>
+ bx + c, does separate A and B? This structure can be used to build a data structure that stores a simple polygon and allows ray-shooting queries along parabolic trajectories with vertical main axis. For a polygon with complexity n, we can answer such "stone throwing" queries in O(log
<sup>2</sup>
n) time, using O(n log n) space and O(n log
<sup>2</sup>
n) preprocessing time. This matches the best known bound for circular ray shooting in simple polygons.</EA>
<CC>001D02B07D; 001D02A05</CC>
<FD>Algorithmique; Polygone; Structure donnée; Interrogation base donnée; Requête; Trajectoire; Segment droite; Fichier log</FD>
<ED>Algorithmics; Polygon; Data structure; Database query; Query; Trajectory; Line segment; Log file</ED>
<SD>Algorítmica; Polígono; Estructura datos; Interrogación base datos; Pregunta documental; Trayectoria; Segmento recta; Fichero actividad</SD>
<LO>INIST-16343.354000172801250170</LO>
<ID>08-0006939</ID>
</server>
</inist>
</record>

Pour manipuler ce document sous Unix (Dilib)

EXPLOR_STEP=$WICRI_ROOT/Wicri/Lorraine/explor/InforLorV4/Data/PascalFrancis/Corpus
HfdSelect -h $EXPLOR_STEP/biblio.hfd -nk 000364 | SxmlIndent | more

Ou

HfdSelect -h $EXPLOR_AREA/Data/PascalFrancis/Corpus/biblio.hfd -nk 000364 | SxmlIndent | more

Pour mettre un lien sur cette page dans le réseau Wicri

{{Explor lien
   |wiki=    Wicri/Lorraine
   |area=    InforLorV4
   |flux=    PascalFrancis
   |étape=   Corpus
   |type=    RBID
   |clé=     Pascal:08-0006939
   |texte=   Throwing stones inside simple polygons
}}

Wicri

This area was generated with Dilib version V0.6.33.
Data generation: Mon Jun 10 21:56:28 2019. Site generation: Fri Feb 25 15:29:27 2022