playwright-runner 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: eb83cf6ffdbe44db313ffa0df1f4d4ea4bcec52d9e1794180c4743b4be5ccf36
4
+ data.tar.gz: f5e1161fe4e70c3341eb5061762c48d1268101fd233bcb949ff4e8e5ee59a03e
5
+ SHA512:
6
+ metadata.gz: ffbf52ebc42b1c0c32261a839dfc2d6f62f2b21371153c83873e665efba28f5745a38230d9874cbf3563b589bdbd581aba91cfa10e83924988cb6da8b8b72bd5
7
+ data.tar.gz: 3ca59db2b366e4d034da55c82caeaff811cf86a3d9862616a55dab221e87a692adc5111700215e5bae04020ffbb3c9c30ba2ef43e931b1c45d7792fc28ed7649
@@ -0,0 +1,18 @@
1
+ name: Ruby
2
+
3
+ on: [push,pull_request]
4
+
5
+ jobs:
6
+ build:
7
+ runs-on: ubuntu-latest
8
+ steps:
9
+ - uses: actions/checkout@v2
10
+ - name: Set up Ruby
11
+ uses: ruby/setup-ruby@v1
12
+ with:
13
+ ruby-version: 2.7.4
14
+ - name: Run the default task
15
+ run: |
16
+ gem install bundler -v 2.2.5
17
+ bundle install
18
+ bundle exec rake
data/.gitignore ADDED
@@ -0,0 +1,8 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /_yardoc/
4
+ /coverage/
5
+ /doc/
6
+ /pkg/
7
+ /spec/reports/
8
+ /tmp/
data/.rubocop.yml ADDED
@@ -0,0 +1,17 @@
1
+ AllCops:
2
+ DisplayCopNames: true
3
+ NewCops: enable
4
+ TargetRubyVersion: 2.7
5
+
6
+ require:
7
+ - rubocop-performance
8
+ - rubocop-rake
9
+
10
+ Metrics/MethodLength:
11
+ Max: 100
12
+
13
+ Metrics/AbcSize:
14
+ Max: 120
15
+
16
+ Style/Documentation:
17
+ Enabled: false
data/Gemfile ADDED
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://rubygems.org'
4
+
5
+ gemspec
6
+
7
+ gem 'rake', '~> 13.0'
8
+ gem 'rubocop', '~> 1.45.1'
9
+ gem 'rubocop-performance'
10
+ gem 'rubocop-rake'
11
+ gem 'simplecov'
12
+ gem 'test-unit'
data/LICENSE.txt ADDED
@@ -0,0 +1,19 @@
1
+ Copyright (c) 2023 Kenshi Muto
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ of this software and associated documentation files (the "Software"), to deal
5
+ in the Software without restriction, including without limitation the rights
6
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ copies of the Software, and to permit persons to whom the Software is
8
+ furnished to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in all
11
+ copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19
+ SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,131 @@
1
+ # Playwright Runner
2
+
3
+ Playwright Runner is a set of runners for [Playwright](https://playwright.dev/).
4
+
5
+ This module is intended to provide useful toolset for [Re:VIEW](https://reviewml.org/), but it can also be used for general purpose applications.
6
+
7
+ ## Installation
8
+
9
+ Add this line to your application's Gemfile:
10
+
11
+ ```ruby
12
+ gem 'playwrightrunner'
13
+ ```
14
+
15
+ And then execute:
16
+
17
+ $ bundle install
18
+
19
+ Or install it yourself as:
20
+
21
+ $ gem install playwright-runner
22
+
23
+ Of course PlaywrightRunner needs Playwright npm library.
24
+
25
+ $ npm install playwright (locally)
26
+ $ npm install -g playwright (globally)
27
+
28
+ ## Usage
29
+
30
+ ### Mermaid to PDF or SVG
31
+
32
+ Let's convert HTML files contain [Mermaid](https://mermaid.js.org/) to PDF/SVG.
33
+ You have to install two components also to crop and convert PDF before running:
34
+
35
+ - [pdfcrop](https://www.ctan.org/pkg/pdfcrop) in TeXLive.
36
+ - [pdftocairo](https://gitlab.freedesktop.org/poppler/poppler) in poppler (if you'd like to get SVG).
37
+
38
+ On Debian GNU/Linux or its derivatives, ues `apt-get install texlive-extra-utils poppler-utils`.
39
+
40
+ ```ruby
41
+ PlaywrightRunner.mermaids_to_images(
42
+ {
43
+ playwright_path: './node_modules/.bin/playwright', // playwright binary path
44
+ pdfcrop_path: 'pdfcrop', // pdfcrop path
45
+ pdftocairo_path: 'pdftocairo' // pdftocairo path
46
+ },
47
+ src: '.', // source folder contains html files
48
+ dest: '.', // destination folder to export pdf or svg
49
+ type: 'pdf' // 'pdf' or 'svg'
50
+ )
51
+ ```
52
+
53
+ It converts all HTML files in the folder specified by `src` into PDF or SVG files (specified by `type`) using that name and writes them in the folder specified by `dest`.
54
+
55
+ For Example, here is `p1.html` contains Mermaid code.
56
+
57
+ ```html
58
+ <!DOCTYPE html>
59
+ <html>
60
+ <head>
61
+ <meta charset="UTF-8">
62
+ <script type="module">import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs'; mermaid.initialize({ startOnLoad: true });</script>
63
+ </head>
64
+ <body>
65
+ <div id="p1">
66
+ <pre class="mermaid">
67
+ graph TD
68
+ A[Client] --> B[Load Balancer]
69
+ B --> C[Server1]
70
+ B --> D[Server2]
71
+ </pre>
72
+ </div>
73
+ </body>
74
+ </html>
75
+ ```
76
+
77
+ Now convert it to PDF. `p1.pdf` will be created.
78
+
79
+ ```ruby
80
+ require 'playwrightrunner'
81
+
82
+ PlaywrightRunner.mermaids_to_images(
83
+ {
84
+ playwright_path: './node_modules/.bin/playwright' // modify for your env
85
+ },
86
+ src: '.',
87
+ dest: '.',
88
+ type: 'pdf'
89
+ )
90
+ ```
91
+
92
+ Convert it to SVG. `p1.svg` will be created.
93
+
94
+ ```ruby
95
+ require 'playwrightrunner'
96
+
97
+ PlaywrightRunner.mermaids_to_images(
98
+ {
99
+ playwright_path: './node_modules/.bin/playwright' // modify for your env
100
+ },
101
+ src: '.',
102
+ dest: '.',
103
+ type: 'svg'
104
+ )
105
+ ```
106
+
107
+ ![sample SVG](p1.svg)
108
+
109
+ ## License
110
+
111
+ ```
112
+ Copyright (c) 2023 Kenshi Muto
113
+
114
+ Permission is hereby granted, free of charge, to any person obtaining a copy
115
+ of this software and associated documentation files (the "Software"), to deal
116
+ in the Software without restriction, including without limitation the rights
117
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
118
+ copies of the Software, and to permit persons to whom the Software is
119
+ furnished to do so, subject to the following conditions:
120
+
121
+ The above copyright notice and this permission notice shall be included in all
122
+ copies or substantial portions of the Software.
123
+
124
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
125
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
126
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
127
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
128
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
129
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
130
+ SOFTWARE.
131
+ ```
data/Rakefile ADDED
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'bundler/gem_tasks'
4
+ task default: %i[test rubocop]
5
+
6
+ desc 'Run tests'
7
+ task :test, :target do |_, argv|
8
+ if argv[:target].nil?
9
+ ruby('test/run_test.rb')
10
+ else
11
+ ruby('test/run_test.rb', "--pattern=#{argv[:target]}")
12
+ end
13
+ end
14
+
15
+ desc 'Check with rubocop'
16
+ task :rubocop do
17
+ require 'rubocop/rake_task'
18
+ RuboCop::RakeTask.new
19
+ rescue LoadError
20
+ warn 'rubocop not found'
21
+ end
data/bin/console ADDED
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require 'bundler/setup'
5
+ require 'playwright/runner'
6
+
7
+ # You can add fixtures and/or initialization code here to make experimenting
8
+ # with your gem easier. You can also use a different console, if you like.
9
+
10
+ # (If you use this, don't forget to add pry to your Gemfile!)
11
+ # require "pry"
12
+ # Pry.start
13
+
14
+ require 'irb'
15
+ IRB.start(__FILE__)
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PlaywrightRunner
4
+ VERSION = '1.0.0'
5
+ end
@@ -0,0 +1,49 @@
1
+ # Playwright Runner
2
+ # Copyright 2023 Kenshi Muto
3
+ # frozen_string_literal: true
4
+
5
+ require_relative 'playwrightrunner/version'
6
+
7
+ require 'playwright'
8
+ require 'open3'
9
+ require 'fileutils'
10
+
11
+ module PlaywrightRunner
12
+ def complement_config(config)
13
+ config[:playwright_path] ||= './node_modules/.bin/playwright'
14
+ config[:pdfcrop_path] ||= 'pdfcrop'
15
+ config[:pdftocairo_path] ||= 'pdftocairo'
16
+
17
+ config
18
+ end
19
+
20
+ def mermaids_to_images(config, src: '.', dest: '.', type: 'pdf')
21
+ Playwright.create(playwright_cli_executable_path: config[:playwright_path]) do |playwright|
22
+ playwright.chromium.launch(headless: true) do |browser|
23
+ page = browser.new_page
24
+ Dir.glob(File.join(src, '*.html')).each do |entry|
25
+ id = File.basename(entry).sub('.html', '')
26
+ page.goto("file:///#{File.absolute_path(entry)}")
27
+ page.locator('svg').click # to wait drawn
28
+
29
+ page.pdf(path: File.join(dest, '__PLAYWRIGHT_TMP__.pdf'))
30
+ Open3.capture2e(config[:pdfcrop_path],
31
+ File.join(dest, '__PLAYWRIGHT_TMP__.pdf'),
32
+ File.join(dest, "#{id}.pdf"))
33
+
34
+ next unless type == 'svg'
35
+
36
+ Open3.capture2e(config[:pdftocairo_path],
37
+ '-svg',
38
+ File.join(dest, "#{id}.pdf"),
39
+ File.join(dest, "#{id}.svg"))
40
+ FileUtils.rm_f(File.join(dest, "#{id}.pdf"))
41
+ end
42
+
43
+ FileUtils.rm_f(File.join(dest, '__PLAYWRIGHT_TMP__.pdf'))
44
+ end
45
+ end
46
+ end
47
+
48
+ module_function :complement_config, :mermaids_to_images
49
+ end
data/p1.svg ADDED
@@ -0,0 +1,165 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="146pt" height="151pt" viewBox="0 0 146 151" version="1.2">
3
+ <defs>
4
+ <g>
5
+ <symbol overflow="visible" id="glyph0-0">
6
+ <path style="stroke:none;" d="M 1.203125 -8.25 L 7.796875 -8.25 L 7.796875 0 L 1.203125 0 Z M 1.640625 -7.8125 L 1.640625 -0.453125 L 7.34375 -0.453125 L 7.34375 -7.8125 Z M 1.640625 -7.8125 "/>
7
+ </symbol>
8
+ <symbol overflow="visible" id="glyph0-1">
9
+ <path style="stroke:none;" d="M 4.640625 -7.46875 C 3.722656 -7.46875 3.007812 -7.171875 2.5 -6.578125 C 2 -5.992188 1.75 -5.191406 1.75 -4.171875 C 1.75 -3.160156 2.007812 -2.34375 2.53125 -1.71875 C 3.0625 -1.101562 3.78125 -0.796875 4.6875 -0.796875 C 5.84375 -0.796875 6.710938 -1.367188 7.296875 -2.515625 L 8.203125 -2.0625 C 7.867188 -1.351562 7.394531 -0.8125 6.78125 -0.4375 C 6.164062 -0.0625 5.453125 0.125 4.640625 0.125 C 3.804688 0.125 3.082031 -0.046875 2.46875 -0.390625 C 1.863281 -0.742188 1.398438 -1.238281 1.078125 -1.875 C 0.765625 -2.519531 0.609375 -3.285156 0.609375 -4.171875 C 0.609375 -5.484375 0.960938 -6.507812 1.671875 -7.25 C 2.390625 -8 3.375 -8.375 4.625 -8.375 C 5.507812 -8.375 6.242188 -8.203125 6.828125 -7.859375 C 7.421875 -7.515625 7.859375 -7.003906 8.140625 -6.328125 L 7.078125 -5.984375 C 6.878906 -6.460938 6.566406 -6.828125 6.140625 -7.078125 C 5.722656 -7.335938 5.222656 -7.46875 4.640625 -7.46875 Z M 4.640625 -7.46875 "/>
10
+ </symbol>
11
+ <symbol overflow="visible" id="glyph0-2">
12
+ <path style="stroke:none;" d="M 0.8125 0 L 0.8125 -8.703125 L 1.859375 -8.703125 L 1.859375 0 Z M 0.8125 0 "/>
13
+ </symbol>
14
+ <symbol overflow="visible" id="glyph0-3">
15
+ <path style="stroke:none;" d="M 0.796875 0 L 0.796875 -6.34375 L 1.859375 -6.34375 L 1.859375 0 Z M 0.796875 -7.6875 L 0.796875 -8.703125 L 1.859375 -8.703125 L 1.859375 -7.6875 Z M 0.796875 -7.6875 "/>
16
+ </symbol>
17
+ <symbol overflow="visible" id="glyph0-4">
18
+ <path style="stroke:none;" d="M 1.625 -2.953125 C 1.625 -2.222656 1.769531 -1.660156 2.0625 -1.265625 C 2.363281 -0.867188 2.804688 -0.671875 3.390625 -0.671875 C 3.847656 -0.671875 4.210938 -0.757812 4.484375 -0.9375 C 4.765625 -1.125 4.953125 -1.359375 5.046875 -1.640625 L 5.96875 -1.390625 C 5.59375 -0.378906 4.734375 0.125 3.390625 0.125 C 2.453125 0.125 1.738281 -0.15625 1.25 -0.71875 C 0.757812 -1.28125 0.515625 -2.113281 0.515625 -3.21875 C 0.515625 -4.257812 0.757812 -5.054688 1.25 -5.609375 C 1.738281 -6.171875 2.4375 -6.453125 3.34375 -6.453125 C 5.207031 -6.453125 6.140625 -5.332031 6.140625 -3.09375 L 6.140625 -2.953125 Z M 5.046875 -3.75 C 4.992188 -4.425781 4.828125 -4.914062 4.546875 -5.21875 C 4.265625 -5.519531 3.859375 -5.671875 3.328125 -5.671875 C 2.816406 -5.671875 2.410156 -5.5 2.109375 -5.15625 C 1.816406 -4.820312 1.65625 -4.351562 1.625 -3.75 Z M 5.046875 -3.75 "/>
19
+ </symbol>
20
+ <symbol overflow="visible" id="glyph0-5">
21
+ <path style="stroke:none;" d="M 4.828125 0 L 4.828125 -4.015625 C 4.828125 -4.429688 4.785156 -4.753906 4.703125 -4.984375 C 4.628906 -5.222656 4.5 -5.390625 4.3125 -5.484375 C 4.132812 -5.585938 3.875 -5.640625 3.53125 -5.640625 C 3.019531 -5.640625 2.617188 -5.460938 2.328125 -5.109375 C 2.035156 -4.765625 1.890625 -4.285156 1.890625 -3.671875 L 1.890625 0 L 0.828125 0 L 0.828125 -4.984375 C 0.828125 -5.722656 0.816406 -6.175781 0.796875 -6.34375 L 1.796875 -6.34375 C 1.796875 -6.320312 1.796875 -6.265625 1.796875 -6.171875 C 1.804688 -6.085938 1.8125 -5.988281 1.8125 -5.875 C 1.820312 -5.769531 1.832031 -5.5625 1.84375 -5.25 L 1.859375 -5.25 C 2.097656 -5.6875 2.375 -5.992188 2.6875 -6.171875 C 3.007812 -6.359375 3.410156 -6.453125 3.890625 -6.453125 C 4.578125 -6.453125 5.082031 -6.28125 5.40625 -5.9375 C 5.726562 -5.59375 5.890625 -5.019531 5.890625 -4.21875 L 5.890625 0 Z M 4.828125 0 "/>
22
+ </symbol>
23
+ <symbol overflow="visible" id="glyph0-6">
24
+ <path style="stroke:none;" d="M 3.25 -0.046875 C 2.894531 0.046875 2.539062 0.09375 2.1875 0.09375 C 1.34375 0.09375 0.921875 -0.382812 0.921875 -1.34375 L 0.921875 -5.578125 L 0.1875 -5.578125 L 0.1875 -6.34375 L 0.953125 -6.34375 L 1.265625 -7.765625 L 1.96875 -7.765625 L 1.96875 -6.34375 L 3.140625 -6.34375 L 3.140625 -5.578125 L 1.96875 -5.578125 L 1.96875 -1.578125 C 1.96875 -1.265625 2.015625 -1.046875 2.109375 -0.921875 C 2.210938 -0.804688 2.390625 -0.75 2.640625 -0.75 C 2.773438 -0.75 2.976562 -0.773438 3.25 -0.828125 Z M 3.25 -0.046875 "/>
25
+ </symbol>
26
+ <symbol overflow="visible" id="glyph0-7">
27
+ <path style="stroke:none;" d="M 0.984375 0 L 0.984375 -8.25 L 2.109375 -8.25 L 2.109375 -0.921875 L 6.28125 -0.921875 L 6.28125 0 Z M 0.984375 0 "/>
28
+ </symbol>
29
+ <symbol overflow="visible" id="glyph0-8">
30
+ <path style="stroke:none;" d="M 6.171875 -3.171875 C 6.171875 -2.066406 5.925781 -1.238281 5.4375 -0.6875 C 4.945312 -0.144531 4.238281 0.125 3.3125 0.125 C 2.382812 0.125 1.679688 -0.15625 1.203125 -0.71875 C 0.734375 -1.289062 0.5 -2.109375 0.5 -3.171875 C 0.5 -5.359375 1.445312 -6.453125 3.34375 -6.453125 C 4.3125 -6.453125 5.023438 -6.1875 5.484375 -5.65625 C 5.941406 -5.125 6.171875 -4.296875 6.171875 -3.171875 Z M 5.0625 -3.171875 C 5.0625 -4.046875 4.929688 -4.679688 4.671875 -5.078125 C 4.410156 -5.472656 3.972656 -5.671875 3.359375 -5.671875 C 2.742188 -5.671875 2.296875 -5.46875 2.015625 -5.0625 C 1.742188 -4.664062 1.609375 -4.035156 1.609375 -3.171875 C 1.609375 -2.335938 1.742188 -1.707031 2.015625 -1.28125 C 2.285156 -0.863281 2.710938 -0.65625 3.296875 -0.65625 C 3.929688 -0.65625 4.382812 -0.859375 4.65625 -1.265625 C 4.925781 -1.671875 5.0625 -2.304688 5.0625 -3.171875 Z M 5.0625 -3.171875 "/>
31
+ </symbol>
32
+ <symbol overflow="visible" id="glyph0-9">
33
+ <path style="stroke:none;" d="M 2.421875 0.125 C 1.785156 0.125 1.304688 -0.0390625 0.984375 -0.375 C 0.671875 -0.71875 0.515625 -1.179688 0.515625 -1.765625 C 0.515625 -2.421875 0.726562 -2.925781 1.15625 -3.28125 C 1.59375 -3.632812 2.289062 -3.820312 3.25 -3.84375 L 4.671875 -3.875 L 4.671875 -4.21875 C 4.671875 -4.726562 4.5625 -5.09375 4.34375 -5.3125 C 4.125 -5.539062 3.78125 -5.65625 3.3125 -5.65625 C 2.84375 -5.65625 2.5 -5.570312 2.28125 -5.40625 C 2.0625 -5.25 1.929688 -4.992188 1.890625 -4.640625 L 0.796875 -4.75 C 0.972656 -5.882812 1.816406 -6.453125 3.328125 -6.453125 C 4.128906 -6.453125 4.726562 -6.269531 5.125 -5.90625 C 5.53125 -5.539062 5.734375 -5.015625 5.734375 -4.328125 L 5.734375 -1.59375 C 5.734375 -1.28125 5.773438 -1.046875 5.859375 -0.890625 C 5.941406 -0.734375 6.097656 -0.65625 6.328125 -0.65625 C 6.429688 -0.65625 6.546875 -0.664062 6.671875 -0.6875 L 6.671875 -0.03125 C 6.410156 0.03125 6.140625 0.0625 5.859375 0.0625 C 5.472656 0.0625 5.1875 -0.0390625 5 -0.25 C 4.820312 -0.457031 4.722656 -0.78125 4.703125 -1.21875 L 4.671875 -1.21875 C 4.398438 -0.726562 4.082031 -0.378906 3.71875 -0.171875 C 3.363281 0.0234375 2.929688 0.125 2.421875 0.125 Z M 2.671875 -0.671875 C 3.054688 -0.671875 3.398438 -0.757812 3.703125 -0.9375 C 4.003906 -1.113281 4.238281 -1.351562 4.40625 -1.65625 C 4.582031 -1.96875 4.671875 -2.285156 4.671875 -2.609375 L 4.671875 -3.125 L 3.515625 -3.109375 C 3.015625 -3.097656 2.632812 -3.046875 2.375 -2.953125 C 2.125 -2.859375 1.929688 -2.710938 1.796875 -2.515625 C 1.660156 -2.328125 1.59375 -2.070312 1.59375 -1.75 C 1.59375 -1.40625 1.6875 -1.140625 1.875 -0.953125 C 2.0625 -0.765625 2.328125 -0.671875 2.671875 -0.671875 Z M 2.671875 -0.671875 "/>
34
+ </symbol>
35
+ <symbol overflow="visible" id="glyph0-10">
36
+ <path style="stroke:none;" d="M 4.8125 -1.015625 C 4.613281 -0.609375 4.351562 -0.316406 4.03125 -0.140625 C 3.707031 0.0351562 3.3125 0.125 2.84375 0.125 C 2.039062 0.125 1.445312 -0.144531 1.0625 -0.6875 C 0.6875 -1.226562 0.5 -2.046875 0.5 -3.140625 C 0.5 -5.347656 1.28125 -6.453125 2.84375 -6.453125 C 3.320312 -6.453125 3.71875 -6.363281 4.03125 -6.1875 C 4.351562 -6.019531 4.613281 -5.742188 4.8125 -5.359375 L 4.828125 -5.359375 L 4.8125 -6.0625 L 4.8125 -8.703125 L 5.859375 -8.703125 L 5.859375 -1.3125 C 5.859375 -0.644531 5.875 -0.207031 5.90625 0 L 4.890625 0 C 4.878906 -0.0625 4.863281 -0.207031 4.84375 -0.4375 C 4.832031 -0.664062 4.828125 -0.859375 4.828125 -1.015625 Z M 1.609375 -3.171875 C 1.609375 -2.285156 1.722656 -1.648438 1.953125 -1.265625 C 2.191406 -0.890625 2.578125 -0.703125 3.109375 -0.703125 C 3.703125 -0.703125 4.132812 -0.90625 4.40625 -1.3125 C 4.675781 -1.726562 4.8125 -2.375 4.8125 -3.25 C 4.8125 -4.082031 4.675781 -4.691406 4.40625 -5.078125 C 4.132812 -5.472656 3.707031 -5.671875 3.125 -5.671875 C 2.59375 -5.671875 2.207031 -5.472656 1.96875 -5.078125 C 1.726562 -4.691406 1.609375 -4.054688 1.609375 -3.171875 Z M 1.609375 -3.171875 "/>
37
+ </symbol>
38
+ <symbol overflow="visible" id="glyph0-11">
39
+ <path style="stroke:none;" d=""/>
40
+ </symbol>
41
+ <symbol overflow="visible" id="glyph0-12">
42
+ <path style="stroke:none;" d="M 7.375 -2.328125 C 7.375 -1.585938 7.101562 -1.015625 6.5625 -0.609375 C 6.03125 -0.203125 5.289062 0 4.34375 0 L 0.984375 0 L 0.984375 -8.25 L 3.984375 -8.25 C 5.921875 -8.25 6.890625 -7.582031 6.890625 -6.25 C 6.890625 -5.757812 6.753906 -5.347656 6.484375 -5.015625 C 6.210938 -4.691406 5.828125 -4.472656 5.328125 -4.359375 C 5.984375 -4.273438 6.488281 -4.050781 6.84375 -3.6875 C 7.195312 -3.332031 7.375 -2.878906 7.375 -2.328125 Z M 6.234375 -2.421875 C 6.234375 -3.390625 5.550781 -3.875 4.1875 -3.875 L 2.109375 -3.875 L 2.109375 -0.890625 L 4.28125 -0.890625 C 4.957031 -0.890625 5.453125 -1.015625 5.765625 -1.265625 C 6.078125 -1.523438 6.234375 -1.910156 6.234375 -2.421875 Z M 5.765625 -6.125 C 5.765625 -6.5625 5.613281 -6.875 5.3125 -7.0625 C 5.007812 -7.257812 4.566406 -7.359375 3.984375 -7.359375 L 2.109375 -7.359375 L 2.109375 -4.75 L 3.984375 -4.75 C 4.578125 -4.75 5.019531 -4.859375 5.3125 -5.078125 C 5.613281 -5.304688 5.765625 -5.65625 5.765625 -6.125 Z M 5.765625 -6.125 "/>
43
+ </symbol>
44
+ <symbol overflow="visible" id="glyph0-13">
45
+ <path style="stroke:none;" d="M 1.609375 -3.203125 C 1.609375 -2.359375 1.738281 -1.734375 2 -1.328125 C 2.269531 -0.921875 2.675781 -0.71875 3.21875 -0.71875 C 3.59375 -0.71875 3.90625 -0.816406 4.15625 -1.015625 C 4.40625 -1.222656 4.5625 -1.535156 4.625 -1.953125 L 5.6875 -1.890625 C 5.601562 -1.273438 5.34375 -0.785156 4.90625 -0.421875 C 4.46875 -0.0546875 3.910156 0.125 3.234375 0.125 C 2.347656 0.125 1.671875 -0.15625 1.203125 -0.71875 C 0.742188 -1.28125 0.515625 -2.097656 0.515625 -3.171875 C 0.515625 -4.242188 0.75 -5.054688 1.21875 -5.609375 C 1.6875 -6.171875 2.359375 -6.453125 3.234375 -6.453125 C 3.878906 -6.453125 4.414062 -6.285156 4.84375 -5.953125 C 5.269531 -5.617188 5.539062 -5.15625 5.65625 -4.5625 L 4.5625 -4.484375 C 4.507812 -4.835938 4.367188 -5.113281 4.140625 -5.3125 C 3.921875 -5.519531 3.609375 -5.625 3.203125 -5.625 C 2.640625 -5.625 2.234375 -5.4375 1.984375 -5.0625 C 1.734375 -4.695312 1.609375 -4.078125 1.609375 -3.203125 Z M 1.609375 -3.203125 "/>
46
+ </symbol>
47
+ <symbol overflow="visible" id="glyph0-14">
48
+ <path style="stroke:none;" d="M 0.828125 0 L 0.828125 -4.859375 C 0.828125 -5.304688 0.816406 -5.800781 0.796875 -6.34375 L 1.796875 -6.34375 C 1.828125 -5.625 1.84375 -5.191406 1.84375 -5.046875 L 1.859375 -5.046875 C 2.023438 -5.585938 2.21875 -5.957031 2.4375 -6.15625 C 2.65625 -6.351562 2.96875 -6.453125 3.375 -6.453125 C 3.507812 -6.453125 3.648438 -6.4375 3.796875 -6.40625 L 3.796875 -5.4375 C 3.660156 -5.46875 3.472656 -5.484375 3.234375 -5.484375 C 2.796875 -5.484375 2.460938 -5.296875 2.234375 -4.921875 C 2.003906 -4.546875 1.890625 -4.007812 1.890625 -3.3125 L 1.890625 0 Z M 0.828125 0 "/>
49
+ </symbol>
50
+ <symbol overflow="visible" id="glyph0-15">
51
+ <path style="stroke:none;" d="M 7.453125 -2.28125 C 7.453125 -1.519531 7.15625 -0.925781 6.5625 -0.5 C 5.96875 -0.0820312 5.128906 0.125 4.046875 0.125 C 2.035156 0.125 0.867188 -0.578125 0.546875 -1.984375 L 1.625 -2.203125 C 1.75 -1.703125 2.015625 -1.332031 2.421875 -1.09375 C 2.828125 -0.863281 3.378906 -0.75 4.078125 -0.75 C 4.804688 -0.75 5.363281 -0.875 5.75 -1.125 C 6.144531 -1.375 6.34375 -1.738281 6.34375 -2.21875 C 6.34375 -2.488281 6.28125 -2.707031 6.15625 -2.875 C 6.039062 -3.039062 5.867188 -3.175781 5.640625 -3.28125 C 5.421875 -3.394531 5.15625 -3.488281 4.84375 -3.5625 C 4.539062 -3.644531 4.203125 -3.726562 3.828125 -3.8125 C 3.171875 -3.957031 2.671875 -4.097656 2.328125 -4.234375 C 1.992188 -4.378906 1.726562 -4.539062 1.53125 -4.71875 C 1.34375 -4.90625 1.195312 -5.113281 1.09375 -5.34375 C 0.988281 -5.582031 0.9375 -5.859375 0.9375 -6.171875 C 0.9375 -6.878906 1.207031 -7.421875 1.75 -7.796875 C 2.289062 -8.179688 3.0625 -8.375 4.0625 -8.375 C 5 -8.375 5.71875 -8.226562 6.21875 -7.9375 C 6.71875 -7.65625 7.066406 -7.171875 7.265625 -6.484375 L 6.15625 -6.28125 C 6.039062 -6.71875 5.8125 -7.035156 5.46875 -7.234375 C 5.125 -7.429688 4.65625 -7.53125 4.0625 -7.53125 C 3.394531 -7.53125 2.882812 -7.421875 2.53125 -7.203125 C 2.1875 -6.984375 2.015625 -6.660156 2.015625 -6.234375 C 2.015625 -5.972656 2.082031 -5.757812 2.21875 -5.59375 C 2.351562 -5.425781 2.546875 -5.285156 2.796875 -5.171875 C 3.054688 -5.054688 3.566406 -4.914062 4.328125 -4.75 C 4.578125 -4.695312 4.828125 -4.640625 5.078125 -4.578125 C 5.335938 -4.515625 5.582031 -4.441406 5.8125 -4.359375 C 6.039062 -4.273438 6.253906 -4.175781 6.453125 -4.0625 C 6.648438 -3.945312 6.820312 -3.804688 6.96875 -3.640625 C 7.125 -3.484375 7.242188 -3.289062 7.328125 -3.0625 C 7.410156 -2.84375 7.453125 -2.582031 7.453125 -2.28125 Z M 7.453125 -2.28125 "/>
52
+ </symbol>
53
+ <symbol overflow="visible" id="glyph0-16">
54
+ <path style="stroke:none;" d="M 3.59375 0 L 2.34375 0 L 0.046875 -6.34375 L 1.171875 -6.34375 L 2.5625 -2.21875 C 2.613281 -2.0625 2.75 -1.597656 2.96875 -0.828125 L 3.171875 -1.515625 L 3.40625 -2.203125 L 4.84375 -6.34375 L 5.953125 -6.34375 Z M 3.59375 0 "/>
55
+ </symbol>
56
+ <symbol overflow="visible" id="glyph0-17">
57
+ <path style="stroke:none;" d="M 0.921875 0 L 0.921875 -0.890625 L 3.015625 -0.890625 L 3.015625 -7.25 L 1.15625 -5.921875 L 1.15625 -6.921875 L 3.109375 -8.25 L 4.078125 -8.25 L 4.078125 -0.890625 L 6.09375 -0.890625 L 6.09375 0 Z M 0.921875 0 "/>
58
+ </symbol>
59
+ <symbol overflow="visible" id="glyph0-18">
60
+ <path style="stroke:none;" d="M 0.609375 0 L 0.609375 -0.75 C 0.804688 -1.207031 1.046875 -1.609375 1.328125 -1.953125 C 1.617188 -2.304688 1.921875 -2.625 2.234375 -2.90625 C 2.554688 -3.1875 2.867188 -3.445312 3.171875 -3.6875 C 3.484375 -3.9375 3.765625 -4.179688 4.015625 -4.421875 C 4.265625 -4.660156 4.46875 -4.910156 4.625 -5.171875 C 4.78125 -5.441406 4.859375 -5.742188 4.859375 -6.078125 C 4.859375 -6.535156 4.722656 -6.890625 4.453125 -7.140625 C 4.191406 -7.390625 3.828125 -7.515625 3.359375 -7.515625 C 2.898438 -7.515625 2.523438 -7.390625 2.234375 -7.140625 C 1.953125 -6.898438 1.785156 -6.5625 1.734375 -6.125 L 0.65625 -6.21875 C 0.726562 -6.875 1.003906 -7.394531 1.484375 -7.78125 C 1.972656 -8.175781 2.597656 -8.375 3.359375 -8.375 C 4.179688 -8.375 4.816406 -8.175781 5.265625 -7.78125 C 5.710938 -7.394531 5.9375 -6.84375 5.9375 -6.125 C 5.9375 -5.800781 5.863281 -5.476562 5.71875 -5.15625 C 5.570312 -4.84375 5.351562 -4.523438 5.0625 -4.203125 C 4.78125 -3.890625 4.226562 -3.40625 3.40625 -2.75 C 2.957031 -2.375 2.597656 -2.039062 2.328125 -1.75 C 2.066406 -1.457031 1.878906 -1.171875 1.765625 -0.890625 L 6.078125 -0.890625 L 6.078125 0 Z M 0.609375 0 "/>
61
+ </symbol>
62
+ </g>
63
+ <clipPath id="clip1">
64
+ <path d="M 70 58 L 75.25 58 L 75.25 63 L 70 63 Z M 70 58 "/>
65
+ </clipPath>
66
+ <clipPath id="clip2">
67
+ <path d="M 70 58 L 75.25 58 L 75.25 64 L 70 64 Z M 70 58 "/>
68
+ </clipPath>
69
+ <clipPath id="clip3">
70
+ <path d="M 25 120 L 29.875 120 L 29.875 126 L 25 126 Z M 25 120 "/>
71
+ </clipPath>
72
+ <clipPath id="clip4">
73
+ <path d="M 116 120 L 120.621094 120 L 120.621094 126 L 116 126 Z M 116 120 "/>
74
+ </clipPath>
75
+ <clipPath id="clip5">
76
+ <path d="M 115 120 L 120.621094 120 L 120.621094 126 L 115 126 Z M 115 120 "/>
77
+ </clipPath>
78
+ <clipPath id="clip6">
79
+ <path d="M 58 8 L 88.40625 8 L 88.40625 17 L 58 17 Z M 58 8 "/>
80
+ </clipPath>
81
+ <clipPath id="clip7">
82
+ <path d="M 35 70 L 111.542969 70 L 111.542969 80 L 35 80 Z M 35 70 "/>
83
+ </clipPath>
84
+ <clipPath id="clip8">
85
+ <path d="M 7 132 L 48.609375 132 L 48.609375 142 L 7 142 Z M 7 132 "/>
86
+ </clipPath>
87
+ <clipPath id="clip9">
88
+ <path d="M 97.367188 132 L 139 132 L 139 142 L 97.367188 142 Z M 97.367188 132 "/>
89
+ </clipPath>
90
+ </defs>
91
+ <g id="surface1">
92
+ <path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(19.999695%,19.999695%,19.999695%);stroke-opacity:1;stroke-miterlimit:4;" d="M 96.031261 33.000002 L 96.031261 37.166669 C 96.031261 41.333336 96.031261 49.66667 96.031261 58.000003 C 96.031261 66.333337 96.031261 74.666671 96.031261 78.833337 L 96.031261 83.000004 " transform="matrix(0.749775,0,0,0.75,0.998197,0.749999)"/>
93
+ <g clip-path="url(#clip1)" clip-rule="nonzero">
94
+ <path style=" stroke:none;fill-rule:nonzero;fill:rgb(19.999695%,19.999695%,19.999695%);fill-opacity:1;" d="M 75.25 58.5 L 73 63 L 70.75 58.5 Z M 75.25 58.5 "/>
95
+ </g>
96
+ <g clip-path="url(#clip2)" clip-rule="nonzero">
97
+ <path style=" stroke:none;fill-rule:nonzero;fill:rgb(19.999695%,19.999695%,19.999695%);fill-opacity:1;" d="M 75.25 59.003906 L 75.046875 59.40625 L 74.644531 59.203125 L 74.847656 58.800781 Z M 75.046875 59.40625 L 74.847656 59.808594 L 74.445312 59.605469 L 74.644531 59.203125 Z M 74.847656 59.808594 L 74.644531 60.210938 L 74.242188 60.007812 L 74.445312 59.605469 Z M 74.644531 60.210938 L 74.445312 60.613281 L 74.042969 60.410156 L 74.242188 60.007812 Z M 74.445312 60.613281 L 74.242188 61.015625 L 73.839844 60.8125 L 74.042969 60.410156 Z M 74.242188 61.015625 L 74.042969 61.417969 L 73.640625 61.21875 L 73.839844 60.8125 Z M 74.042969 61.417969 L 73.839844 61.820312 L 73.4375 61.621094 L 73.640625 61.21875 Z M 73.839844 61.820312 L 73.640625 62.222656 L 73.238281 62.023438 L 73.4375 61.621094 Z M 73.640625 62.222656 L 73.4375 62.625 L 73.035156 62.425781 L 73.238281 62.023438 Z M 73.4375 62.625 L 73.238281 63.027344 L 72.835938 62.828125 L 73.035156 62.425781 Z M 73.238281 63.027344 L 73 63.503906 L 72.632812 62.769531 L 73.035156 62.570312 L 73.203125 62.898438 L 73 63 L 72.796875 62.898438 L 72.835938 62.828125 Z M 72.632812 62.769531 L 72.433594 62.367188 L 72.835938 62.167969 L 73.035156 62.570312 Z M 72.433594 62.367188 L 72.230469 61.964844 L 72.632812 61.765625 L 72.835938 62.167969 Z M 72.230469 61.964844 L 72.03125 61.5625 L 72.433594 61.363281 L 72.632812 61.765625 Z M 72.03125 61.5625 L 71.828125 61.160156 L 72.230469 60.960938 L 72.433594 61.363281 Z M 71.828125 61.160156 L 71.628906 60.757812 L 72.03125 60.558594 L 72.230469 60.960938 Z M 71.628906 60.757812 L 71.425781 60.355469 L 71.828125 60.15625 L 72.03125 60.558594 Z M 71.425781 60.355469 L 71.226562 59.953125 L 71.628906 59.753906 L 71.828125 60.15625 Z M 71.226562 59.953125 L 71.023438 59.550781 L 71.425781 59.347656 L 71.628906 59.753906 Z M 71.023438 59.550781 L 70.824219 59.148438 L 71.226562 58.945312 L 71.425781 59.347656 Z M 70.824219 59.148438 L 70.621094 58.746094 L 71.023438 58.542969 L 71.226562 58.945312 Z M 70.621094 58.746094 L 70.386719 58.273438 L 71.039062 58.273438 L 71.039062 58.726562 L 70.75 58.726562 L 70.75 58.5 L 70.953125 58.398438 L 71.023438 58.542969 Z M 71.039062 58.273438 L 71.488281 58.273438 L 71.488281 58.726562 L 71.039062 58.726562 Z M 71.488281 58.273438 L 71.9375 58.273438 L 71.9375 58.726562 L 71.488281 58.726562 Z M 71.9375 58.273438 L 72.386719 58.273438 L 72.386719 58.726562 L 71.9375 58.726562 Z M 72.386719 58.273438 L 72.835938 58.273438 L 72.835938 58.726562 L 72.386719 58.726562 Z M 72.835938 58.273438 L 73.289062 58.273438 L 73.289062 58.726562 L 72.835938 58.726562 Z M 73.289062 58.273438 L 73.738281 58.273438 L 73.738281 58.726562 L 73.289062 58.726562 Z M 73.738281 58.273438 L 74.1875 58.273438 L 74.1875 58.726562 L 73.738281 58.726562 Z M 74.1875 58.273438 L 74.636719 58.273438 L 74.636719 58.726562 L 74.1875 58.726562 Z M 74.636719 58.273438 L 75.085938 58.273438 L 75.085938 58.726562 L 74.636719 58.726562 Z M 75.085938 58.273438 L 75.613281 58.273438 L 75.25 59.003906 L 74.847656 58.800781 L 75.046875 58.398438 L 75.25 58.5 L 75.25 58.726562 L 75.085938 58.726562 Z M 75.085938 58.273438 "/>
98
+ </g>
99
+ <path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(19.999695%,19.999695%,19.999695%);stroke-opacity:1;stroke-miterlimit:4;" d="M 71.971948 116.000006 L 65.897206 120.166673 C 59.817254 124.333339 47.66777 132.666673 41.593027 141.000007 C 35.513075 149.33334 35.513075 157.666674 35.513075 161.833341 L 35.513075 166.000008 " transform="matrix(0.749775,0,0,0.75,0.998197,0.749999)"/>
100
+ <g clip-path="url(#clip3)" clip-rule="nonzero">
101
+ <path style=" stroke:none;fill-rule:nonzero;fill:rgb(19.999695%,19.999695%,19.999695%);fill-opacity:1;" d="M 29.875 120.75 L 27.625 125.25 L 25.378906 120.75 Z M 29.875 120.75 "/>
102
+ <path style=" stroke:none;fill-rule:nonzero;fill:rgb(19.999695%,19.999695%,19.999695%);fill-opacity:1;" d="M 29.875 121.253906 L 29.675781 121.65625 L 29.273438 121.453125 L 29.472656 121.050781 Z M 29.675781 121.65625 L 29.472656 122.058594 L 29.070312 121.855469 L 29.273438 121.453125 Z M 29.472656 122.058594 L 29.273438 122.460938 L 28.871094 122.257812 L 29.070312 121.855469 Z M 29.273438 122.460938 L 29.070312 122.863281 L 28.667969 122.660156 L 28.871094 122.257812 Z M 29.070312 122.863281 L 28.871094 123.265625 L 28.46875 123.0625 L 28.667969 122.660156 Z M 28.871094 123.265625 L 28.667969 123.667969 L 28.265625 123.46875 L 28.46875 123.0625 Z M 28.667969 123.667969 L 28.46875 124.070312 L 28.066406 123.871094 L 28.265625 123.46875 Z M 28.46875 124.070312 L 28.265625 124.472656 L 27.863281 124.273438 L 28.066406 123.871094 Z M 28.265625 124.472656 L 28.066406 124.875 L 27.664062 124.675781 L 27.863281 124.273438 Z M 28.066406 124.875 L 27.863281 125.277344 L 27.460938 125.078125 L 27.664062 124.675781 Z M 27.863281 125.277344 L 27.625 125.753906 L 27.261719 125.019531 L 27.664062 124.820312 L 27.828125 125.148438 L 27.625 125.25 L 27.425781 125.148438 L 27.460938 125.078125 Z M 27.261719 125.019531 L 27.058594 124.617188 L 27.460938 124.417969 L 27.664062 124.820312 Z M 27.058594 124.617188 L 26.859375 124.214844 L 27.261719 124.015625 L 27.460938 124.417969 Z M 26.859375 124.214844 L 26.65625 123.8125 L 27.058594 123.613281 L 27.261719 124.015625 Z M 26.65625 123.8125 L 26.457031 123.410156 L 26.859375 123.210938 L 27.058594 123.613281 Z M 26.457031 123.410156 L 26.253906 123.007812 L 26.65625 122.808594 L 26.859375 123.210938 Z M 26.253906 123.007812 L 26.054688 122.605469 L 26.457031 122.40625 L 26.65625 122.808594 Z M 26.054688 122.605469 L 25.851562 122.203125 L 26.253906 122.003906 L 26.457031 122.40625 Z M 25.851562 122.203125 L 25.652344 121.800781 L 26.054688 121.597656 L 26.253906 122.003906 Z M 25.652344 121.800781 L 25.449219 121.398438 L 25.851562 121.195312 L 26.054688 121.597656 Z M 25.449219 121.398438 L 25.25 120.996094 L 25.652344 120.792969 L 25.851562 121.195312 Z M 25.25 120.996094 L 25.011719 120.523438 L 25.664062 120.523438 L 25.664062 120.976562 L 25.378906 120.976562 L 25.378906 120.75 L 25.578125 120.648438 L 25.652344 120.792969 Z M 25.664062 120.523438 L 26.113281 120.523438 L 26.113281 120.976562 L 25.664062 120.976562 Z M 26.113281 120.523438 L 26.566406 120.523438 L 26.566406 120.976562 L 26.113281 120.976562 Z M 26.566406 120.523438 L 27.015625 120.523438 L 27.015625 120.976562 L 26.566406 120.976562 Z M 27.015625 120.523438 L 27.464844 120.523438 L 27.464844 120.976562 L 27.015625 120.976562 Z M 27.464844 120.523438 L 27.914062 120.523438 L 27.914062 120.976562 L 27.464844 120.976562 Z M 27.914062 120.523438 L 28.363281 120.523438 L 28.363281 120.976562 L 27.914062 120.976562 Z M 28.363281 120.523438 L 28.8125 120.523438 L 28.8125 120.976562 L 28.363281 120.976562 Z M 28.8125 120.523438 L 29.265625 120.523438 L 29.265625 120.976562 L 28.8125 120.976562 Z M 29.265625 120.523438 L 29.714844 120.523438 L 29.714844 120.976562 L 29.265625 120.976562 Z M 29.714844 120.523438 L 30.238281 120.523438 L 29.875 121.253906 L 29.472656 121.050781 L 29.675781 120.648438 L 29.875 120.75 L 29.875 120.976562 L 29.714844 120.976562 Z M 29.714844 120.523438 "/>
103
+ </g>
104
+ <path style="fill:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(19.999695%,19.999695%,19.999695%);stroke-opacity:1;stroke-miterlimit:4;" d="M 120.090573 116.000006 L 126.165316 120.166673 C 132.245268 124.333339 144.394752 132.666673 150.469494 141.000007 C 156.549446 149.33334 156.549446 157.666674 156.549446 161.833341 L 156.549446 166.000008 " transform="matrix(0.749775,0,0,0.75,0.998197,0.749999)"/>
105
+ <g clip-path="url(#clip4)" clip-rule="nonzero">
106
+ <path style=" stroke:none;fill-rule:nonzero;fill:rgb(19.999695%,19.999695%,19.999695%);fill-opacity:1;" d="M 120.621094 120.75 L 118.375 125.25 L 116.125 120.75 Z M 120.621094 120.75 "/>
107
+ </g>
108
+ <g clip-path="url(#clip5)" clip-rule="nonzero">
109
+ <path style=" stroke:none;fill-rule:nonzero;fill:rgb(19.999695%,19.999695%,19.999695%);fill-opacity:1;" d="M 120.621094 121.253906 L 120.421875 121.65625 L 120.019531 121.453125 L 120.21875 121.050781 Z M 120.421875 121.65625 L 120.21875 122.058594 L 119.816406 121.855469 L 120.019531 121.453125 Z M 120.21875 122.058594 L 120.019531 122.460938 L 119.617188 122.257812 L 119.816406 121.855469 Z M 120.019531 122.460938 L 119.816406 122.863281 L 119.414062 122.660156 L 119.617188 122.257812 Z M 119.816406 122.863281 L 119.617188 123.265625 L 119.214844 123.0625 L 119.414062 122.660156 Z M 119.617188 123.265625 L 119.414062 123.667969 L 119.011719 123.46875 L 119.214844 123.0625 Z M 119.414062 123.667969 L 119.214844 124.070312 L 118.8125 123.871094 L 119.011719 123.46875 Z M 119.214844 124.070312 L 119.011719 124.472656 L 118.609375 124.273438 L 118.8125 123.871094 Z M 119.011719 124.472656 L 118.8125 124.875 L 118.410156 124.675781 L 118.609375 124.273438 Z M 118.8125 124.875 L 118.609375 125.277344 L 118.207031 125.078125 L 118.410156 124.675781 Z M 118.609375 125.277344 L 118.375 125.753906 L 118.007812 125.019531 L 118.410156 124.820312 L 118.574219 125.148438 L 118.375 125.25 L 118.171875 125.148438 L 118.207031 125.078125 Z M 118.007812 125.019531 L 117.804688 124.617188 L 118.207031 124.417969 L 118.410156 124.820312 Z M 117.804688 124.617188 L 117.605469 124.214844 L 118.007812 124.015625 L 118.207031 124.417969 Z M 117.605469 124.214844 L 117.402344 123.8125 L 117.804688 123.613281 L 118.007812 124.015625 Z M 117.402344 123.8125 L 117.203125 123.410156 L 117.605469 123.210938 L 117.804688 123.613281 Z M 117.203125 123.410156 L 117 123.007812 L 117.402344 122.808594 L 117.605469 123.210938 Z M 117 123.007812 L 116.800781 122.605469 L 117.203125 122.40625 L 117.402344 122.808594 Z M 116.800781 122.605469 L 116.597656 122.203125 L 117 122.003906 L 117.203125 122.40625 Z M 116.597656 122.203125 L 116.398438 121.800781 L 116.800781 121.597656 L 117 122.003906 Z M 116.398438 121.800781 L 116.195312 121.398438 L 116.597656 121.195312 L 116.800781 121.597656 Z M 116.195312 121.398438 L 115.996094 120.996094 L 116.398438 120.792969 L 116.597656 121.195312 Z M 115.996094 120.996094 L 115.761719 120.523438 L 116.410156 120.523438 L 116.410156 120.976562 L 116.125 120.976562 L 116.125 120.75 L 116.324219 120.648438 L 116.398438 120.792969 Z M 116.410156 120.523438 L 116.859375 120.523438 L 116.859375 120.976562 L 116.410156 120.976562 Z M 116.859375 120.523438 L 117.3125 120.523438 L 117.3125 120.976562 L 116.859375 120.976562 Z M 117.3125 120.523438 L 117.761719 120.523438 L 117.761719 120.976562 L 117.3125 120.976562 Z M 117.761719 120.523438 L 118.210938 120.523438 L 118.210938 120.976562 L 117.761719 120.976562 Z M 118.210938 120.523438 L 118.660156 120.523438 L 118.660156 120.976562 L 118.210938 120.976562 Z M 118.660156 120.523438 L 119.109375 120.523438 L 119.109375 120.976562 L 118.660156 120.976562 Z M 119.109375 120.523438 L 119.558594 120.523438 L 119.558594 120.976562 L 119.109375 120.976562 Z M 119.558594 120.523438 L 120.011719 120.523438 L 120.011719 120.976562 L 119.558594 120.976562 Z M 120.011719 120.523438 L 120.460938 120.523438 L 120.460938 120.976562 L 120.011719 120.976562 Z M 120.460938 120.523438 L 120.988281 120.523438 L 120.621094 121.253906 L 120.21875 121.050781 L 120.421875 120.648438 L 120.621094 120.75 L 120.621094 120.976562 L 120.460938 120.976562 Z M 120.460938 120.523438 "/>
110
+ </g>
111
+ <path style="fill-rule:nonzero;fill:rgb(92.549133%,92.549133%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(57.649231%,43.919373%,85.879517%);stroke-opacity:1;stroke-miterlimit:4;" d="M -27.951103 -16.499999 L 27.951112 -16.499999 L 27.951112 16.500002 L -27.951103 16.500002 Z M -27.951103 -16.499999 " transform="matrix(0.749775,0,0,0.75,72.999997,13.124999)"/>
112
+ <g clip-path="url(#clip6)" clip-rule="nonzero">
113
+ <g style="fill:rgb(19.999695%,19.999695%,19.999695%);fill-opacity:1;">
114
+ <use xlink:href="#glyph0-1" x="57.66476" y="16.874999"/>
115
+ <use xlink:href="#glyph0-2" x="66.328172" y="16.874999"/>
116
+ <use xlink:href="#glyph0-3" x="68.993386" y="16.874999"/>
117
+ <use xlink:href="#glyph0-4" x="71.658601" y="16.874999"/>
118
+ <use xlink:href="#glyph0-5" x="78.330424" y="16.874999"/>
119
+ <use xlink:href="#glyph0-6" x="85.002246" y="16.874999"/>
120
+ </g>
121
+ </g>
122
+ <path style="fill-rule:nonzero;fill:rgb(92.549133%,92.549133%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(57.649231%,43.919373%,85.879517%);stroke-opacity:1;stroke-miterlimit:4;" d="M -59.095878 -16.499996 L 59.095887 -16.499996 L 59.095887 16.500006 L -59.095878 16.500006 Z M -59.095878 -16.499996 " transform="matrix(0.749775,0,0,0.75,72.999997,75.374996)"/>
123
+ <g clip-path="url(#clip7)" clip-rule="nonzero">
124
+ <g style="fill:rgb(19.999695%,19.999695%,19.999695%);fill-opacity:1;">
125
+ <use xlink:href="#glyph0-7" x="34.316309" y="79.124996"/>
126
+ <use xlink:href="#glyph0-8" x="40.988131" y="79.124996"/>
127
+ <use xlink:href="#glyph0-9" x="47.659954" y="79.124996"/>
128
+ <use xlink:href="#glyph0-10" x="54.331777" y="79.124996"/>
129
+ <use xlink:href="#glyph0-11" x="61.003599" y="79.124996"/>
130
+ <use xlink:href="#glyph0-12" x="64.336582" y="79.124996"/>
131
+ <use xlink:href="#glyph0-9" x="72.338083" y="79.124996"/>
132
+ <use xlink:href="#glyph0-2" x="79.009906" y="79.124996"/>
133
+ <use xlink:href="#glyph0-9" x="81.67512" y="79.124996"/>
134
+ <use xlink:href="#glyph0-5" x="88.346943" y="79.124996"/>
135
+ <use xlink:href="#glyph0-13" x="95.018765" y="79.124996"/>
136
+ <use xlink:href="#glyph0-4" x="101.016962" y="79.124996"/>
137
+ <use xlink:href="#glyph0-14" x="107.688785" y="79.124996"/>
138
+ </g>
139
+ </g>
140
+ <path style="fill-rule:nonzero;fill:rgb(92.549133%,92.549133%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(57.649231%,43.919373%,85.879517%);stroke-opacity:1;stroke-miterlimit:4;" d="M -35.513223 -16.499992 L 35.513328 -16.499992 L 35.513328 16.500009 L -35.513223 16.500009 Z M -35.513223 -16.499992 " transform="matrix(0.749775,0,0,0.75,27.626914,137.624994)"/>
141
+ <g clip-path="url(#clip8)" clip-rule="nonzero">
142
+ <g style="fill:rgb(19.999695%,19.999695%,19.999695%);fill-opacity:1;">
143
+ <use xlink:href="#glyph0-15" x="6.621508" y="141.374993"/>
144
+ <use xlink:href="#glyph0-4" x="14.623009" y="141.374993"/>
145
+ <use xlink:href="#glyph0-14" x="21.294831" y="141.374993"/>
146
+ <use xlink:href="#glyph0-16" x="25.289724" y="141.374993"/>
147
+ <use xlink:href="#glyph0-4" x="31.287921" y="141.374993"/>
148
+ <use xlink:href="#glyph0-14" x="37.959744" y="141.374993"/>
149
+ <use xlink:href="#glyph0-17" x="41.954637" y="141.374993"/>
150
+ </g>
151
+ </g>
152
+ <path style="fill-rule:nonzero;fill:rgb(92.549133%,92.549133%,100%);fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(57.649231%,43.919373%,85.879517%);stroke-opacity:1;stroke-miterlimit:4;" d="M -35.513313 -16.499992 L 35.513239 -16.499992 L 35.513239 16.500009 L -35.513313 16.500009 Z M -35.513313 -16.499992 " transform="matrix(0.749775,0,0,0.75,118.373075,137.624994)"/>
153
+ <g clip-path="url(#clip9)" clip-rule="nonzero">
154
+ <g style="fill:rgb(19.999695%,19.999695%,19.999695%);fill-opacity:1;">
155
+ <use xlink:href="#glyph0-15" x="97.367671" y="141.374993"/>
156
+ <use xlink:href="#glyph0-4" x="105.369172" y="141.374993"/>
157
+ <use xlink:href="#glyph0-14" x="112.040995" y="141.374993"/>
158
+ <use xlink:href="#glyph0-16" x="116.035887" y="141.374993"/>
159
+ <use xlink:href="#glyph0-4" x="122.034085" y="141.374993"/>
160
+ <use xlink:href="#glyph0-14" x="128.705907" y="141.374993"/>
161
+ <use xlink:href="#glyph0-18" x="132.7008" y="141.374993"/>
162
+ </g>
163
+ </g>
164
+ </g>
165
+ </svg>
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'lib/playwrightrunner/version'
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = 'playwright-runner'
7
+ spec.version = PlaywrightRunner::VERSION
8
+ spec.authors = ['Kenshi Muto']
9
+ spec.email = ['kmuto@kmuto.jp']
10
+
11
+ spec.summary = 'Playwright Runner'
12
+ spec.description = 'Provide useful methods to run Playwright, intended to be used with Re:VIEW'
13
+ spec.homepage = 'https://github.com/kmuto/playwright-runner'
14
+ spec.license = 'MIT'
15
+ spec.required_ruby_version = Gem::Requirement.new('>= 2.7.0')
16
+
17
+ spec.metadata['rubygems_mfa_required'] = 'true'
18
+ spec.metadata['homepage_uri'] = spec.homepage
19
+ spec.metadata['source_code_uri'] = 'https://github.com/kmuto/playwright-runner'
20
+ spec.metadata['changelog_uri'] = 'https://github.com/kmuto/playwright-runner/commits/main'
21
+
22
+ # Specify which files should be added to the gem when it is released.
23
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
24
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
25
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{\A(?:test|spec|features)/}) }
26
+ end
27
+ spec.bindir = 'exe'
28
+ spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
29
+ spec.require_paths = ['lib']
30
+
31
+ spec.add_dependency 'playwright-ruby-client', '~> 1.0'
32
+ end
metadata ADDED
@@ -0,0 +1,74 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: playwright-runner
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Kenshi Muto
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2023-04-02 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: playwright-ruby-client
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.0'
27
+ description: Provide useful methods to run Playwright, intended to be used with Re:VIEW
28
+ email:
29
+ - kmuto@kmuto.jp
30
+ executables: []
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - ".github/workflows/main.yml"
35
+ - ".gitignore"
36
+ - ".rubocop.yml"
37
+ - Gemfile
38
+ - LICENSE.txt
39
+ - README.md
40
+ - Rakefile
41
+ - bin/console
42
+ - bin/setup
43
+ - lib/playwrightrunner.rb
44
+ - lib/playwrightrunner/version.rb
45
+ - p1.svg
46
+ - playwright-runner.gemspec
47
+ homepage: https://github.com/kmuto/playwright-runner
48
+ licenses:
49
+ - MIT
50
+ metadata:
51
+ rubygems_mfa_required: 'true'
52
+ homepage_uri: https://github.com/kmuto/playwright-runner
53
+ source_code_uri: https://github.com/kmuto/playwright-runner
54
+ changelog_uri: https://github.com/kmuto/playwright-runner/commits/main
55
+ post_install_message:
56
+ rdoc_options: []
57
+ require_paths:
58
+ - lib
59
+ required_ruby_version: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: 2.7.0
64
+ required_rubygems_version: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ requirements: []
70
+ rubygems_version: 3.2.5
71
+ signing_key:
72
+ specification_version: 4
73
+ summary: Playwright Runner
74
+ test_files: []