From 2b109ab105f7b8e21c136755d7fa88d01a6053a2 Mon Sep 17 00:00:00 2001 From: Fahmi Akbar Wildana Date: Sun, 16 Feb 2025 18:13:12 +0700 Subject: [PATCH] downscale the result if it get to big --- d2renderers/d2ascii/d2ascii.go | 80 ++- docs/examples/flipt/output.txt | 180 ++---- docs/examples/japan-grid/japan.txt | 504 ++++++--------- docs/examples/twitter/out.txt | 723 ++++++---------------- docs/examples/vector-grid/vector-grid.txt | 355 +++-------- 5 files changed, 633 insertions(+), 1209 deletions(-) diff --git a/d2renderers/d2ascii/d2ascii.go b/d2renderers/d2ascii/d2ascii.go index 4f8f014cf..146c9abf1 100644 --- a/d2renderers/d2ascii/d2ascii.go +++ b/d2renderers/d2ascii/d2ascii.go @@ -62,6 +62,15 @@ func Render(diagram *d2target.Diagram, opts *RenderOpts) ([]byte, error) { } } + // If the canvas is too large, downscale it + const maxWidth = 120 + if canvas.w > maxWidth { + ratio := float64(canvas.h) / float64(canvas.w) + newWidth := maxWidth + newHeight := int(float64(maxWidth) * ratio) + canvas.DownscaleGrid(newWidth, newHeight) + } + return canvas.TrimBytes(), nil } @@ -224,7 +233,7 @@ func (c *Canvas) drawLine(x1, y1, x2, y2 int) { for ; x1 <= x2; x1++ { if steep { - c.set(y1, x1, '/') + c.set(y1, x1, '|') } else { c.set(x1, y1, '/') } @@ -308,6 +317,75 @@ func (c *Canvas) TrimBytes() []byte { return buf.Bytes() } +// DownscaleGrid reduces the size of ASCII art using a pixel-like sampling technique +func (c *Canvas) DownscaleGrid(targetWidth, targetHeight int) { + if targetWidth >= c.w || targetHeight >= c.h { + return // No downscaling needed + } + + // Calculate sampling box size + boxWidth := float64(c.w) / float64(targetWidth) + boxHeight := float64(c.h) / float64(targetHeight) + + // Create new grid + newGrid := make([][]rune, targetHeight) + for i := range newGrid { + newGrid[i] = make([]rune, targetWidth) + } + + // Sample characters from original grid + for y := 0; y < targetHeight; y++ { + for x := 0; x < targetWidth; x++ { + // Calculate sampling box boundaries + startX := int(float64(x) * boxWidth) + endX := int(float64(x+1) * boxWidth) + startY := int(float64(y) * boxHeight) + endY := int(float64(y+1) * boxHeight) + + // Count character occurrences in the sampling box + charCount := make(map[rune]int) + for sy := startY; sy < endY && sy < c.h; sy++ { + for sx := startX; sx < endX && sx < c.w; sx++ { + ch := c.grid[sy][sx] + charCount[ch]++ + } + } + + // Choose the most appropriate character + var maxCount int + var dominant rune = ' ' + + // Priority order for characters + priorities := []rune{'+', '|', '-', '/', '\\', '.', ' '} + for _, ch := range priorities { + if count := charCount[ch]; count > maxCount { + maxCount = count + dominant = ch + } + } + + // Special cases for line preservation + hasVertical := charCount['|'] > 0 || charCount['+'] > 0 + hasHorizontal := charCount['-'] > 0 || charCount['+'] > 0 + + // Determine final character + if hasVertical && hasHorizontal { + newGrid[y][x] = '+' + } else if hasVertical { + newGrid[y][x] = '|' + } else if hasHorizontal { + newGrid[y][x] = '-' + } else { + newGrid[y][x] = dominant + } + } + } + + c.grid = newGrid + c.w = targetWidth + c.h = targetHeight +} + func min(a, b int) int { if a < b { return a diff --git a/docs/examples/flipt/output.txt b/docs/examples/flipt/output.txt index 61978a9a7..7eacda64c 100644 --- a/docs/examples/flipt/output.txt +++ b/docs/examples/flipt/output.txt @@ -1,116 +1,64 @@ - +--------------------------------------------------------+ - | | - | | - | | - | | - | | - | | - | +-------------------------------------------------+ | - | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | | +----+ +----+ +----+ +----+ | | - | | | | | | | | | | | | - | | | | | | | | | | | | - | | | | | | | | | | | | +--------------------------------+ - | | | | | | | | | | | | | | - | | | | | | | | | | | | | | - | | | | | | | | | | | | | | - | | | | | | | | | | | | | | - | | | | | | | | | | | | | | - | | | | | | | | | | | | | | - | | +----+ +----+ +----+ +----+ | | | +-------+ | - | | | | | | | | - | | | | | | | | - | | | | | | | | - | | | | | | | | -+------------------------------------------------------------------+ | | | | | | | | -| | | | | | | | | | -| | | | | | | | | | -| | | | | | | | | | -| | | | | | | ------ | | -| | | | +----+ +----+ +----+ +----+ | | | // | | | -| | | | | | | | | | | | | | | / | | | -| | | | | | | | | | | | | | | | | | | -| +----------+ | | | | | | | | | | | | | | | | | | -| | | | | | | | | | | | | | | | | | | | | -| | | | | | | | | | | | | | | | | | | | | -| | | | | | | | | | | | | | | | | | | | | -| | | | | | | | | | | | | | | | | | +-------+ | -| | | | | | | | | | | | | | | | | | | -| | | | | | | | | | | | | | | | | | | -| | | | | | +----+ +----+ +----+ +----+ | | | +----+| | -| ------ linked -----/ | | | | | | | | | -| // | | // | | | | | | | | | -| / | | | | | | | | | | | | -| | | | | +-----------+ | | | | | | | | | -| | | | | | | | | | Test -------------------------- | Release | -| | | | | | | | | | | | | | | | -| | | | | | | | | | | | | | | | -| | | | || | | | | | | | | | | -| +----------| +----------+ | | | | | | | | | | | -| | | | | | | | +----+ +----+ +----+ +----+ | | | +----| | -| | | | | | | | | | | | | | | | | | | | | -| | | | | | | | | | | | | | | | | | | | | -| | | | | | | | | | | | | | | | | | | | +-------+ | -| | | | | | | | | | | | | | | | | | | | | | | -| | | | | | | | | | | | | | | | | | | | | | | -| | | Build | | | | | | | | | | | | | | | | | | | | -| | source | | -------------------------- | | | | | | | | | | | | | | | -| | | | | | | | | | | | | | | | | | | | | | | -| | | | | | | | | | | | | | | | | | | / | | | -| | | | | | | | +----+ +----+ +----+ +----+ | | | / | | | -| | | | | | | | | | | / | | | -| | | | | | | | | | | ------ | | -| | | | | | | | | | | | | | -| | | +----------+ | | | | | | | | | | | -| +----------+| | | | | | | | | | | | | | -| | | | || | | | | | | | | | | -| | | | | | | | | | | | | | | | -| | | | | | | | | | | | | | | | -| | | | | +-----------+ | | | | | | | | | -| | | | | | | | +----+ +----+ +----+ +----+ | | | +-------+ | -| / | | | | | | | | | | | | | | | | | | -| // | assets | // | | | | | | | | | | | | | | | -| ------ -----/ | | | | | | | | | | | | | | | -| | | | | | | | | | | | | | | | | | -| | | | | | | | | | | | | | | | | | -| | | | | | | | | | | | | | | | | | -| | | | | | | | | | | | | | | | | | -| | | | | | | | | | | | | | | | +--------------------------------+ -| | | | | | | | | | | | | | | | -| +----------+ | | | +----+ +----+ +----+ +----+ | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -+------------------------------------------------------------------+ | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | +-------------------------------------------------+ | - | | - | | - | | - | | - | | - | | - | | - +--------------------------------------------------------+ + +------------------------------+ + | | + | | + | | + | +--------------------------+ | + | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | | +--+ +--+ +--+ +--+ | | + | | | | | | | | | | | | + | | | | | | | | | | | | +-----------------+ + | | | | | | | | | | | | | | + | | | | | | | | | | | | | | + | | | | | | | | | | | | | | + | | +--+ +--+ +--+ +--+ | | | +---+ | + | | | | | | | | ++-----------------------------------+ | | | | | | | | +| | | | | | | | | | +| | | | | | | ---+ | | +| | | | +--+ +--+ +--+ +--+ | | | // | | | +| | | | | | | | | | | | | | | | | | | +| +-----+ | | | | | | | | | | | | | | | | | | +| | | | | | | | | | | | | | | | | | | | | +| | | | | | | | | | | | | | | | | | +---+ | +| | | | | | +--+ +--+ +--+ +--+ | | | +--+ | +| ---- ---/ | | | | | | | | | +| / | | | | | | | | | | | | +| || | | | +-----+ | | | +-+---------+-+ | | +| | | | ||| | | | | | | | | | | +| +-----| +-----+ || | | | | | | | | | | +| | | | | | | | +--+ +--+ +--+ +--+ | | | +--| | +| | | | | | | | | | | | | | | | | | | | | +| | | | | | | | | | | | | | | | | | | | +---+ | +| | | | | | | | | | | | | | | | | | | | | | | +| | | | +-+---------+-+ | | | | | | | | | | | | | | | +| | | | | | | | +--+ +--+ +--+ +--+ | | | / | | | +| | | | | | | | | | | ---+ | | +| | | | | | | | | | | | | | +| +-----+ +-----+ | | | | | | | | | | | +| || | | || | | | | | | | | | | +| || | | ||+-----+ | | | | | | | | | +| | | | || | | | +--+ +--+ +--+ +--+ | | | +---+ | +| /---+ +--/ | | | | | | | | | | | | | | | +| | | | | | | | | | | | | | | | | | +| | | | | | | | | | | | | | | | | | +| | | | | | | | | | | | | | | | +-----------------+ +| +-----+ | | | +--+ +--+ +--+ +--+ | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | ++-----------------------------------+ | | | | + | | | | + | | | | + | +--------------------------+ | + | | + | | + | | + | | + +------------------------------+ diff --git a/docs/examples/japan-grid/japan.txt b/docs/examples/japan-grid/japan.txt index 16e72c339..ee7b4bc8c 100644 --- a/docs/examples/japan-grid/japan.txt +++ b/docs/examples/japan-grid/japan.txt @@ -1,301 +1,203 @@ -+-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | 北 海 道 | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -+-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -+-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | 青 森 | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -+-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | 秋 田 | 岩 手 | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -+-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | 石 川 | || 新 潟 | 山 形 | 宮 城 | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -+-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | 福 井 | 富 山 || 群 馬 | 栃 木 | 福 島 | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -+-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | 山 口 | 島 根 || 鳥 取 | 兵 庫 || 京 都 | 滋 賀 | 長 野 || 山 梨 | 埼 玉 | 茨 城 | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -+-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | 広 島 || 岡 山 | 大 阪 || 奈 良 | 岐 阜 | 愛 知 || 静 岡 | TOKYO | 千 葉 | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -+-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| 長 崎 || 佐 賀 | 福 岡 | || | || 和 歌 山 | 三 重 | || | 神 奈 川 | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -+-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || 熊 本 | 大 分 | || 愛 媛 | 香 川 || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -+-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || 鹿 児 島 | 宮 崎 | || 高 知 | 徳 島 || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -+-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| 沖 縄 || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -| || | | || | || | | || | | | -+-----------++------------+-----------+-----------++-----------+-----------++------------+-----------+-----------++-----------+------------+------------+ ++-------++--------+-------+-------++-------+-------+--------+-------+-------++-------+--------+--------+ +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | ++-------++--------+-------+-------++-------+-------+--------+-------+-------++-------+--------+--------+ +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | ++-------++--------+-------+-------++-------+-------+--------+-------+-------++-------+--------+--------+ +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | ++-------++--------+-------+-------++-------+-------+--------+-------+-------++-------+--------+--------+ +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | ++-------++--------+-------+-------++-------+-------+--------+-------+-------++-------+--------+--------+ +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | ++-------++--------+-------+-------++-------+-------+--------+-------+-------++-------+--------+--------+ +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | ++-------++--------+-------+-------++-------+-------+--------+-------+-------++-------+--------+--------+ +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | ++-------++--------+-------+-------++-------+-------+--------+-------+-------++-------+--------+--------+ +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | ++-------++--------+-------+-------++-------+-------+--------+-------+-------++-------+--------+--------+ +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | ++-------++--------+-------+-------++-------+-------+--------+-------+-------++-------+--------+--------+ +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | ++-------++--------+-------+-------++-------+-------+--------+-------+-------++-------+--------+--------+ +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | ++-------++--------+-------+-------++-------+-------+--------+-------+-------++-------+--------+--------+ +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | +| || | | || | | | | || | | | ++-------++--------+-------+-------++-------+-------+--------+-------+-------++-------+--------+--------+ diff --git a/docs/examples/twitter/out.txt b/docs/examples/twitter/out.txt index 8118e85e2..819e7ea2b 100644 --- a/docs/examples/twitter/out.txt +++ b/docs/examples/twitter/out.txt @@ -1,530 +1,193 @@ - +---------------+ +---------------+ +---------------+ - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | Android | | Iphone | | Web | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - +---------------+ +---------------+ +---------------+ - - - - - - | | | - | | | - | | | - | | | - | | | - | | | - | | | - | | | - | | | - | | | - | | | - | | | - | | | - | | | - | | | - | | | - | | | - | | | - | | | - | +-------|-------+ | - | | | | - | | | | - | | | | - | | | | - || || - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - Twitter Frontend - | | - | | - // | - // | | - /// | / - /// | |// - // | | / - /// | | / - // | | // - /// | | / - /// | | / - // | | // - /// | | / - // | | / - /// | | // - // +---------------+ / - /// / - /// // - // / - /// / - // // - /// / - /// / - // // - |/ / - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - +-----------------|---------------------------------------------------------------------------------------------------------------------------|----------+ - | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | | +-------|-------+ | - | | | | | - | | | | | - | | | | | - | | | | | - | | | | | - | | | | | - | +-------------|--------------+ | | | - | | | | | | - | | | | | | - | | | | | | - | | | +-------------------------------------------------------------+ | | | - | | | | | | | | - | | | | | | | | - | | | | | | | | - | | TLS-API (being deprecated) | | ## Tweet/user content hydration, visibility filtering | | GraphQL | | - | | | | | Federated Strato Column - | | | | | | | | - | | | | | // | | - | | | | | /// | | | - | | | +-------------------------------------------------------------+ // | | | - | | | /// | / | - | | | /// | |//| - | +----------------------------+ /// | | / - | | // | | |// - | | /// | | | // - | | /// | | | / - | | /// | | | // - | | // | | | / - | | /// | | | // - | | /// | | | / - | | /// | | | // - | | /// +---------------+ | / - | | // | // - | | /// | // - | | /// | / - | | /// | // - | | // | / - | | /// | // - | | // | | - | | // | | - | | // | | - | | // | | - +-------------------|------------------------------------------------/-----------------------------------------------------------------------------------+ | - | // | - | // | - | // | - | | | - | | | - | | | - | | | - | | | - | | | - | | | - | // | - | //// | - | /// | - | /// | - | //// | - | /// | - |/ /// | - /////// | - /// //// | - //// //// | - /// /// | - /// //// | - //// //// | - /// /// | - //// //// | - /// //// | - /// //// | - //// /// | - /// //// | - /// //// | - //// +-----------------------------------------//----------------------------------------------------------------------------------------------------|--+ - |/ | | - | | | - | | | - | | | - | | | - | | | - | | | - | | +----------------------------------+ | - | | | | | - | | | | | - | | | | | - | | | | | - | | | | | - | | | | | - | | | | | - | | | | | - | | | | | - | | | | | - | | | | | - | | | | | - | | | | | - | | | | | - +-------|-------+ | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | | | - | | | | ## **Timeline mixer** | | - | | | - Inject ads, who-to-follow, onboarding | - | Home mixer | | | - Conversation module | | - | | | | - Cursoring,pagination | | - | | | | - Tweat deduplication | | - | | | | - Served data logging | | - /| | | | | | - // | | | | | | - // /| | | | | | - // / | | | | | | - // // +---------------/ | | | | - // / | | | | / | | | | - // / | | | | / | | | | - // // | | | | / | | | | - // / | | | | / | | | | - // / | | | | / | | | | - // // | | | | / | | | | - // / | | | | / | | | | - // / | | | | / | | | | - // // | | | | / | | | | - // / | | | | / | | | | - // / | | | | / | | | | - // // | | | | / | | | | - // / | | | | / | | | | - // / | | | | / | | | | - // // | | | | / | | | | - // / | | | | / | +----------------------------------+ | - // / | | | | / | | - // // | | | | / | | - // / | | | | / | | - // / | | | | / | | - // // | | | | / | | - |/ / | | | | / | | - | | | | | | | +--------------------------------------------------------------------------------------------------------------------------------------------------+ - | | | | | | | | | | | | | - | | | | | | | | | | | | | - | | | | | | | | | | | | | - | | | | | | | | | | | | | - | | | | | | | | | | | | | - | | | | | | | | | | | | | - | | | | | | | | | | | | | - | | | | | | | | | | | | | - | | | | | | | | | | | | | - | | | | | | | | | | | | | - | | | | | | | | | | | | | - | | | | | | | | | | | | | - | | | | | | | | | | | | | - | | | | | | | | | | | | | - | | | | | | | | | | | | | - | | | | | | | | | | | | | - | | | | | | | | | | | | | - | | | | | | | | | | | | | - | | | | | | | | | | | | | - | | | | | | | | | | | | | - | | | | | | | | | | | | | - | | | | | | | | | | | | | - | | | | | | | | | | | | | - | | | | | | | | | | | | | - | | | | | | / / | | | | | - | | | | | | / / | | | | | - | | | | | | // // | | | | | - | | | | | | / | | | | | - | | | | | | / / | | | | | - | | | | | | / / | | | | | - | | | | | | // / | | | | | - | | | | | | / // | | | | | - | | | | | | / / | | | | | - | | | | | | // / | | | | | - | | | | | | / | | | | | - | | | | | / | //| | | | | +--------------+ - | | | | | / | |/ | | | | | | - | | | | | // | | / | | | | | | - | | | | | / | | / +------------+ | +---------------+ +-------------------+ | | - | | | | | / | | / | | | | | | | | | -+--------------+ +---------------+ +--------------+ +--------------+ +-------------------+ +----------------+ // | | +------------+ | | | | | | -| | | | | | | | | | | | /| | | | | | | | | | -| | | | | | | | | | | | / | | | | | | | | | -| | | | | | | | | | | | | | | | | | | | | | -| | | | | | | | | | | | | | | | | | | | | | -| | | | | | | | | | | | | | | | | | | | | | -| | | | | | | | | | | | | | | | | | | | | | -| | | | | | | | | | | | | Timeline | | | | Onboarding | | People discovery | | Fetch | -| Tweety Pie | | Social graph | | Gizmoduck | | Manhattan | | Timeline Service | | Home Ranker | | Scorer | | Ad mixer | | service | | service | | | -| | | | | | | | | | | | | | | | | | | | | // | -| | | | | | | | | | | | | | | | | | | | /// | -| | | | | | | | | | | | | | | | | | | | ///| | -| | | | | | | | | | | |// | | | | | | | |//// | | -| | | | | | | | | | | | // | | | | | | | /// | | -| | | | | | | | | | | | // | | | | | | | /// | | | -| | | | | | | | | | | | // | | | | | | /// | | | -+--------------+ +---------------+ +--------------+ +--------------+ +-------------------+ +------|---------+ |/// | +------------+ | | | /// | | | - | | // | | | | //// | | | - | +-----//-----+ +---------------+ +-///---------------+ | | - | // /// | | - | /// /// +--------|-----+ - | // /// | - | // //// | - | /// /// | - | // /// | - | // /// | - | // /// | - | /// //// | - | // /// | - | // /// | - | // // | - | // / | - | //// / | - | /// / | - | //// // | - | /// / | - | //// / | - | /// / | - | //// / | - | /// / | - | //// / | - | /// / | - | //// / | - | //// // | - | /// / | - | //// / | - |/// / | - ///| / | - /// | / | - //// | / | - /// | / | - //// | // | - /// | / | - //// | / | - |/ | / | - | | // | - | | // | - | | /// | - | | /// | - | | // | - | +-------|----------------------------------------///---------------------------------------------------------------------+ | - | | | // | | - | | | /// | - | | | /// | +----------------+ - | | | // | | | - | | | /// | | | - | | | /// | | | - | | | // | | | - +----------------+ | +-----------+ /// +------------+ +--------+ +---------+ +----------------+ | | | - | | | | | // | | | | | | | | | | | - | | | | | /// | | | | | | | | | | | - | | | | | /// | | | | | | | | | | | - | | | | | // | | | | | | | | | | | - | | | | // | | | | | | | | | | | - | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | Feature | - | Home Scorer | | | CrMixer | | EarlyBird | | Utag | | Space | | Communities | | | | - | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | / | - | | | | | | | | | | | | | | |// | - | | | | | | | | | | | | | | // | - | | | | | | | | | | | | | | / | | - | | | | | | | | | | | | | | // | / | - +---|--||---|----+ | +-----------+ +------------+ +--------+ +---------+ +----------------+ | // |/ | - | || | | | / / | - | || | | | // /| | - | || | | | / / | | - | | | | | | // / +--|--------|----+ - | | | | | | // / | | - | | | | | | / / | | - | || | +------------------------------------------------------------------------------------------------------------------------+ // / | | - | || | // / | | - | || | / / | | - | | | | // / | | - | | | | // / | | - | | | | | / | | - / | / / | | | | - / | / / | | | | - / | / // | | | | - / | / / | | | | - / | // / | | | | - / | / // | | | | - / | / / | | | | - / | / / | | | | - /| / / | | | | - / / // | | | | - |/ / / | | | | - | / / / | | | | - | / // // | | | | - | / / / | | | | - | / / / | | | | - | / / / | | | | - | / / // | | | | - | / / / | | | | - | / / / | | | | - | / / / | | | | - | / / // | | | | - | / // / | | | | - | / / / | | | | - | / / // | | | | - | / / / | | | | - | /// /// /// | | | | - | //// ///// ///// | | | | - | ///// //// ////// | | | | - | //// ///// ///// | | | | - | //// ///// ///// | | | | - | ///// ///// ///// | | | | - | //// //// ///// | | | | - | ///// ///// ////// | | | | - | //// ///// ///// | | | | - +-------|-------+ //// ///// ///// | | | | - | | ///// //// ///// | | | | - | | //// ///// ////// | | | - | | ///// ///// ///// | | | - | | //// //// ///// | | | +----------------+ - | | ///// ///// ///// | +--------------|--+ | | | - | | //// ///// ///// | | | | | | - | | //// ///// ////// | | | | | | - | | ///// //// +---------/|/// | | +--------|-----+ | | - | | //// ///// | | ///// | | | | | - | | ///// ///// | | ///// | | | | | - | | //// |///// | | ///// | | | | | - | | //// | ////| | ////// | | | | - | | ///// | ///// | |///// | | | | - | | //// | | /// | /// | | | - | | /// | | | | | | | - Prediction Service | ...etc | | Memcache | | Manhattan | | Scoring | - | | | | | | | | | | - | | | | | | | | | | - | | | | | | | | | | - | | | | | | | | | | - | | | | | | | | | | - | | | | | | | | | | - | | | | | | | | | | - | | +---------+ | | +--------------+ | | - | | | | | | - | | | | | | - | | | | | | - | | +-----------------+ | | - | | +-------|--------+ - | | | - | | | - +---------------+ | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - +-------|-------+ - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - Prediction Service - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - | | - +---------------+ + +----+ +-----+ +-----+ + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + | | | | | | + +----+ +-----+ +-----+ + + | | | + | | | + || | | + || | || + | | || + | | | + || | | + ||+--+--+|| + || || + | | + | | + | | + | | + | | + | | + | | + | | + / | | + +-----+ + + + / / + | | + || | + || | + | | + || | + | | + || | + | | + || | + +------+--------------------------------------------+---+ + | | | | + | | | | + | | +--+--+| + | | | || + | +----+----+ | || + | | | | || + | | | +----------------------+ | || + | | - | | | | || + | | | | | | || + | | | +----------------------+ //| || + | +---------+ | || + | | | || + | | | || + | | // | || + | | +-----+| + | | | + | | | | + | | / | | + +-------+-----------------------------------------------+ || + || | | + || | | + | | || + || | + || || + |/// | + // // | + | + | + | + |/ +----------------------------------------------------++ + | | | + | | | + | | +------------+ | + | | | | | + | | | | | + | | | | | + | | | | | + +--+--+ | | | | + | | | | | | + | | | | | | + | | | + - -- | | + | | | | - | | + | | | | | | + +--++++ | | | | + | |||| | | | | + / / | | | | | | | | + || | | || | | | | + | | || | | | | | + | | | | | | | | + / | | | || | +------------+ | + || | | || | | + | | | | | | | +-----------------------------------------------------+ + | || | | | || || | | | | | | + | | | | | | | | | | | | | + || | | | | | || | | | | | | + | || | | | || | | | | | | | + || | | | || | | | | | | | | + | | | | | | | | | | | | | + || || | | | | | || | | | | | + | | || | | || | | || | | | | + | || | | | | | | | | | | | + | | | | | | / || | | | | + | | | | || || | | | | | + | | | | | || | || | | | + | | | | || || | | | | | +-----+ + | | | | | | | || | | | | | ++--+--+ +-+--+ +--+--+ +--+-+ +--+---+ ++----+ +----+ +--+-+ +-----+ +------+ | | +| | | | | | | | | | | | | | | | | | | | | | +| | | | | | | | | | | | | | | | | | | | | | +| | | | | | | | | | | | | | | | | | | | | | +| | | | | | | | | | | | | | | | | | | | | | +| | | | | | | | | | | | | | | | | | | | | | ++-----+ +----+ +-----+ +----+ +------+ +--+--+ | | +----+ | | | | | | + | +----+ +-----+ +/-----+ | | + || +--+--+ + | || + | | + | / / | + | | + | | + | | + | // | + | | + | | + || | + // | | + | | | + | | | + | +--+----------------------------------------+ | + | | | / | +-----+ + | | | | | | + +--+--+ | ++--+ +----+ +---+ +---+ +-----+| | | + | | | | | | | | | | | | || | | + | | | | | | | | | | | | || | | + | | | | | | | | | | | | || | | + | | | | | | | | | | | | || | | + | | | | | | | | | | | | || | | + ++-++-+ | +---+ +----+ +---+ +---+ +-----+| / | | + ||| | | | ++---++ + | || | +-------------------------------------------+ | | + || || | | | + | || || | | | + | | | | | + | | | | | + | | | | | + | / | | | | + | | | | | + | | | | | + | || | || | + | / / / | | | | + | | | | | + | | | | | + | | | | | + | /// /// //// | | | | + +--+--+ | | | | + | | || || | +-----+ + | | ||+-----++ | | | + | | // /// +---|/| | +--+-+ | | + | | | | | | | | | | + | | | | | | | | | | + | | | | | | | | | | + | | | | | | | | | | + | | | | | | | | | | + | | +---+ | | +----+ | | + | | +------+ +--+--+ + | | | + +-----+ | + | + | + | + | + | + | + | + | + +--+--+ + | | + | | + | | + | | + | | + | | + | | + | | + | | + | | + +-----+ diff --git a/docs/examples/vector-grid/vector-grid.txt b/docs/examples/vector-grid/vector-grid.txt index 50bd9979b..c26b789cb 100644 --- a/docs/examples/vector-grid/vector-grid.txt +++ b/docs/examples/vector-grid/vector-grid.txt @@ -1,261 +1,94 @@ -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| | -| | -| | -| | -| | -| | -| | -| | -| | -| | -| | -| | -| | -| | -| +----------------------------------------------------------------------------------------------------------------------------------------+ +------------------------------------+ | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | Random Matrix Generator | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -| +----------------------------------------------------------------------------------------------------------------------------------------+ +-----------------|------------------+ | -| | | -| | | -| | | -| | | -| | | -| | | -| | | -| | | -| | | -| | | -| | | -| | | -| | | -| | | -+----------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------+ - | - | - | - | - | - | - | - | - | -+----------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------+ -| | | -| | | -| | | -| | | -| | | -| | | -| | | -| | | -| | | -| | | -| | | -| | | -| | | -| | | -| +-----------------------------------------------------------------------------------+ +---------------------------+ +-----------------------------------|----------------------------+ +-----------+ +-----------------------------------------------------------------------------------+ | -| | | | | | | | | | | | | -| | | | | | | | | | | | | -| | | | | | | | | | | | | -| | | | | | | | | | | | | -| | | | | | | | | | | | | -| | | | | | | | | | | | | -| | | | | | | | | | | | | -| | | | | | | | | | | | | -| | | | | | | | | | | | | -| | | | | | | | | | | | | -| | | | | | | | | | | | | -| | | | | | | | | | | | | -| | | | | | | | | | | | | -| | | | | | | | | | | | | -| | | | +------------+ | | | | | | | | | -| | | | | | | | | | | | | | -| | | | | | | | | | | | | | -| | | | | | | | | | | | | | -| | | | | | | | | | | | | | -| | | | | | | | | | | | | | -| | | | | | | | | | | | | | -| | | | | | | | | | | | | | -| | +--------+--------++-----------+-----++-----------+--------++--------+ | | | | | | +-----------++-----------+-----------++-----------+ | | | | +--------+--------++-----------+------+-----------++--------+--------+ | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | 0.62 | 0.15 |-------------zen V|------------- 0.91 || 0.48 | | | | | | | | 0.41 || 0.32 | 0.92 || 0.13 | | | | | | 0.62 | 0.15 |-------------zem Ve-------------- 0.91 | 0.48 | | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | +------------+ | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | +--------+--------++-----------+-----++-----------+--------++--------+ | | | | +-----------++-----------+-----------++-----------+ | | | | +--------+--------++-----------+------+-----------++--------+--------+ | | -| | | | | | | || | || | | | | | | | -| | | | +---------+ | | | || | || | | | | | | | -| | | | | | | | | || | || | | | | | | | -| | | | | | | | | || | || | | | | | | | -| | | | | | | | | || | || | | | | | | | -| | | | | | | | | || | || | | | | | | | -| | | | | | | | | || | || | | | | | | | -| | | | | | | | | || | || | | | | | | | -| | | | | | | | | || | || | | | | | | | -| | | | | +-+ | | | | || | || | | | | | | | -| | | | | | | | | | | || | || | | | | | | | -| | | | Dot |r|duct | | | 0.74 || 0.15 | 0.53 || 0.21 | | | | | | | -| | | | | | | | | | | || | || | | | | | | | -| | | | | | | | | | | || | || | | | | | | | -| | | | | +-+ | | | | || | || | | | | | | | -| | | | | | | | | || | || | | | | | | | -| | | | | | | | | || | || | | | | | | | -| | +--------+--------++-----------+-----++-----------+--------++--------+ | | | | | | | || | || | | | | | +--------+--------++-----------+------+-----------++--------+--------+ | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | +---------+ | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | +-----------++-----------+-----------++-----------+ | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | ----------------------- | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | 0.62 | 0.15 |-------------zen V|------------- 0.91 || 0.48 | | | | | | || | || | | | | | | 0.62 | 0.15 |-------------zem Ve-------------- 0.91 | 0.48 | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | 0.97 || 0.45 | 0.11 || 0.05 | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | +--------+--------++-----------+-----++-----------+--------++--------+ | | | | | || | || | | | | | +--------+--------++-----------+------+-----------++--------+--------+ | | -| | | | | | | || | || | | | | | | | -| | | | | | | || | || | | | | | | | -| | | | | | | || | || | | | | | | | -| | | | | | | || | || | | | | | | | -| | | | | | | || | || | | | | | | | -| | | | | | | || | || | | | | | | | -| | | | | | +-----------++-----------+-----------++-----------+ | | | | | | -| | | | | | | || | || | | | | | | | -| | | | | | | || | || | | | | | | | -| | | | | | | || | || | | | | | | | -| | | | | | | || | || | | | | | | | -| | | | | | | || | || | | | | | | | -| | | | | | | || | || | | | | | | | -| | | | | | | || | || | | | | | | | -| | | | | | | || | || | | | | | | | -| | | | | | | || | || | | | | | | | -| | +--------+--------++-----------+-----++-----------+--------++--------+ | | | | | || | || | | | | | +--------+--------++-----------+------+-----------++--------+--------+ | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | 0.61 || 0.77 | 0.59 || 0.83 | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | 0.62 | 0.15 || n-s|zen V||tor | 0.91 || 0.48 | | | | | | || | || | | | | | | 0.62 | 0.15 || m-s|zem Ve|tor || 0.91 | 0.48 | | | -| | | | |------------- |------------- || | | | | | | || | || | | | | | | | |------------- -------------- | | | | -| | | | || | || | || | | | | | | || | || | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | +-----------++-----------+-----------++-----------+ | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | | | | || | | || | | | | -| | | | || | || | || | | | | | | | | | | | || | | || | | | | -| | +--------+--------++-----------+-----++-----------+--------++--------+ | | | | | | | | +--------+--------++-----------+------+-----------++--------+--------+ | | -| | | | | | | | | | | | -| | | | | | | | | | | | -| | | | | | | | | | | | -| | | | | | | | | | | | -| | | | | | | | | | | | -| | | | | | | | | | | | -| | | | | | | | | | | | -| | | | | | | | | | | | -| | | | | | | | | | | | -| | | | | | | | | | | | -| | | | | | | | | | | | -| | | | | | | | | | | | -| | | | | | | | | | | | -| | | | | | | | | | | | -| +-----------------------------------------------------------------------------------+ +---------------------------+ +----------------------------------------------------------------+ +-----------+ +-----------------------------------------------------------------------------------+ | -| | -| | -| | -| | -| | -| | -| | -| | -| | -| | -| | -| | -| | -| | -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ ++--------------------------------------------------------------------------------------------------------------+ +| | +| | +| | +| | +| +------------------------------------------------+ +------------+ | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| | | | | | +| +------------------------------------------------+ +-----+------+ | +| | | +| | | +| | | +| | | ++-----------------------------------------------------------+--------------------------------------------------+ + | + | + | ++-----------------------------------------------------------+--------------------------------------------------+ +| | | +| | | +| | | +| | | +| +-----------------------------+ +---------+ +------------+---------+ +---+ +-----------------------------+ | +| | | | | | | | | | | | | +| | | | | | | | | | | | | +| | | | | | | | | | | | | +| | | | | | | | | | | | | +| | | | | | | | | | | | | +| | | | +----+ | | | | | | | | | +| | | | | | | | | | | | | | +| | | | | | | | | | | | | | +| | +--+--+----+-+---+---+--+ | | | | | | +----+---+---++---+ | | | | +--+--++---+-+----+--+--+ | | +| | | | | | | | | | | | | | | | | | | || | | | | | | | || | | | | | | | +| | | | | | | | | | | | | | | | | | | || | | | | | | | || | | | | | | | +| | | | | | | | | | | | | | | | | | | || | | | | | | | || | | | | | | | +| | | | +----+ +---+ | | | | | | | | | | | || | | | | | | | |+---+ +----+ | | | | +| | | | | | | | | | | | | | | | | | | || | | | | | | | || | | | | | | | +| | | | | | | | | | | | +----+ | | | | | || | | | | | | | || | | | | | | | +| | | | | | | | | | | | | | | | | || | | | | | | | || | | | | | | | +| | | | | | | | | | | | | | | | | || | | | | | | | || | | | | | | | +| | +--+--+----+-+---+---+--+ | | +---+ | | +----+---+---++---+ | | | | +--+--++---+-+----+--+--+ | | +| | | | | | | | | | | || | | | | | | | +| | | | | | | | | | | || | | | | | | | +| | | | | + | | | | | | || | | | | | | | +| | | | | | | | | | | | || | | | | | | | +| | | | | + | | | | | | || | | | | | | | +| | +--+--+----+-+---+---+--+ | | | | | | | | | || | | | | | +--+--++---+-+----+--+--+ | | +| | | | | | | | | | | | +---+ | | | | | || | | | | | | | || | | | | | | | +| | | | | | | | | | | | | | +----+---+---++---+ | | | | | | || | | | | | | | +| | | | | | | | | | | | | | | | | || | +-+---+-+ | | || | | | | | | | +| | | | +----+ +---+ | | | | | | | | | || | | | | | | | |+---+ +----+ | | | | +| | | | | | | | | | | | | | | | | || | | | | | | | || | | | | | | | +| | | | | | | | | | | | | | | | | || | | | | | | | || | | | | | | | +| | | | | | | | | | | | | | | | | || | | | | | | | || | | | | | | | +| | | | | | | | | | | | | | | | | || | | | | | | | || | | | | | | | +| | +--+--+----+-+---+---+--+ | | | | | | | || | | | | | +--+--++---+-+----+--+--+ | | +| | | | | | | | | || | | | | | | | +| | | | | | +----+---+---++---+ | | | | | | +| | | | | | | | | || | | | | | | | +| | | | | | | | | || | | | | | | | +| | | | | | | | | || | | | | | | | +| | +--+--+----+-+---+---+--+ | | | | | | | || | | | | | +--+--++---+-+----+--+--+ | | +| | | | | | | | | | | | | | | | | || | | | | | | | || | | | | | | | +| | | | | | | | | | | | | | | | | || | | | | | | | || | | | | | | | +| | | | | | | | | | | | | | | | | || | | | | | | | || | | | | | | | +| | | | | -| | | | | | | | | | | | || | | | | | | | || -| | | | | | | +| | | | +----+ +---+ | | | | | | +----+---+---++---+ | | | | | | |+---+ +----+ | | | | +| | | | | | | | | | | | | | | | | | | | || | | | | | | | +| | | | | | | | | | | | | | | | | | | | || | | | | | | | +| | | | | | | | | | | | | | | | | | | | || | | | | | | | +| | +--+--+----+-+---+---+--+ | | | | | | | | +--+--++---+-+----+--+--+ | | +| | | | | | | | | | | | +| | | | | | | | | | | | +| | | | | | | | | | | | +| | | | | | | | | | | | +| +-----------------------------+ +---------+ +----------------------+ +---+ +-----------------------------+ | +| | +| | +| | +| | +| | ++--------------------------------------------------------------------------------------------------------------+