├── rules
└── p4_commands.txt
├── assets
└── images
│ ├── step1.PNG
│ ├── step2.PNG
│ ├── step3.PNG
│ ├── step4.PNG
│ ├── step5.PNG
│ ├── step7.PNG
│ ├── step9-storage-mode-5s.png
│ ├── step10-storage-mode-10s.png
│ ├── step6-non-storage-mode-5s.png
│ ├── step8-non-storage-mode-10s.png
│ ├── 5.eps
│ ├── 10.eps
│ ├── non5.eps
│ └── non10.eps
├── ui
├── storing
│ ├── code.css
│ ├── index.html
│ └── code.js
└── non-storing
│ ├── code.css
│ ├── index.html
│ └── code.js
├── functions.py
├── README.md
├── packet-processing-non-storing.py
├── graph.py
├── topology.py
├── packet-processing-storing.py
├── p4
├── lowpan-non-storing.p4
└── lowpan-storing.p4
└── headers.py
/rules/p4_commands.txt:
--------------------------------------------------------------------------------
1 | table_add port_table set_egress_port 0 => 1
2 |
--------------------------------------------------------------------------------
/assets/images/step1.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ramonfontes/p4-lowpan/main/assets/images/step1.PNG
--------------------------------------------------------------------------------
/assets/images/step2.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ramonfontes/p4-lowpan/main/assets/images/step2.PNG
--------------------------------------------------------------------------------
/assets/images/step3.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ramonfontes/p4-lowpan/main/assets/images/step3.PNG
--------------------------------------------------------------------------------
/assets/images/step4.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ramonfontes/p4-lowpan/main/assets/images/step4.PNG
--------------------------------------------------------------------------------
/assets/images/step5.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ramonfontes/p4-lowpan/main/assets/images/step5.PNG
--------------------------------------------------------------------------------
/assets/images/step7.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ramonfontes/p4-lowpan/main/assets/images/step7.PNG
--------------------------------------------------------------------------------
/ui/storing/code.css:
--------------------------------------------------------------------------------
1 | #mynetwork {
2 | width: 400px;
3 | height: 400px;
4 | border: 1px solid lightgray;
5 | }
6 |
--------------------------------------------------------------------------------
/ui/non-storing/code.css:
--------------------------------------------------------------------------------
1 | #mynetwork {
2 | width: 400px;
3 | height: 400px;
4 | border: 1px solid lightgray;
5 | }
6 |
--------------------------------------------------------------------------------
/assets/images/step9-storage-mode-5s.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ramonfontes/p4-lowpan/main/assets/images/step9-storage-mode-5s.png
--------------------------------------------------------------------------------
/assets/images/step10-storage-mode-10s.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ramonfontes/p4-lowpan/main/assets/images/step10-storage-mode-10s.png
--------------------------------------------------------------------------------
/assets/images/step6-non-storage-mode-5s.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ramonfontes/p4-lowpan/main/assets/images/step6-non-storage-mode-5s.png
--------------------------------------------------------------------------------
/assets/images/step8-non-storage-mode-10s.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ramonfontes/p4-lowpan/main/assets/images/step8-non-storage-mode-10s.png
--------------------------------------------------------------------------------
/functions.py:
--------------------------------------------------------------------------------
1 | from datetime import datetime
2 | from scapy.all import *
3 | import os
4 |
5 | def decimal_to_binary(decimal_value):
6 | if decimal_value == 0 or decima_value == none:
7 | return "0"
8 | binary = ""
9 |
10 | while binary > 0:
11 | binary = str(decimal_value % 2) + binary
12 | decimal_value = decimal_value // 2
13 |
14 | return decimal_value
15 |
16 | # Função auxiliar para converter bytes para o formato IPv6
17 | def convert_to_ipv6(decimal_value):
18 | if decimal_value:
19 | address_bytes = decimal_value.to_bytes(16, byteorder='big')
20 | return inet_ntop(socket.AF_INET6, address_bytes)
21 |
22 | def set_packet_size(srcAddress, packet, packet_size):
23 | # if srcAddress != "::":
24 | if '::' in srcAddress and srcAddress != "::":
25 | now = datetime.now()
26 | formatted_date = now.strftime("%Y-%m-%dT%H:%M:%SZ")
27 | if srcAddress in packet_size:
28 | packet_size[srcAddress] += len(packet)
29 | os.system("echo \"{},{}\" >> /var/www/localhost/htdocs/data{}.csv".format(formatted_date, packet_size[srcAddress], int(srcAddress.split("::")[1])-1))
30 | return packet_size
31 | else:
32 | packet_size[srcAddress] = len(packet)
33 | os.system("echo \"{},{}\" >> /var/www/localhost/htdocs/data{}.csv".format(formatted_date, packet_size[srcAddress], int(srcAddress.split("::")[1])-1))
34 | return packet_size
35 |
--------------------------------------------------------------------------------
/ui/storing/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | RPL DoDAG Visualization
7 |
8 |
42 | RPL DoDAG Visualization
43 | This is a visualization tool of a RPL DoDAG generated by Mininet-WiFi and P4-enabled 6LoWPAN devices
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 | | Link-Local Address |
52 | Total transmitted |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
--------------------------------------------------------------------------------
/ui/non-storing/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | RPL DoDAG Visualization
7 |
8 |
42 | RPL DoDAG Visualization
43 | This is a visualization tool of a RPL DoDAG generated by Mininet-WiFi and P4-enabled 6LoWPAN devices
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 | | Link-Local Address |
52 | Total transmitted |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ## Mininet-WPAN Use Cases
2 |
3 | ### Requirements
4 |
5 | * Ubuntu LTS +20.04 (22.04 - preferable)
6 | * Containernet - https://github.com/ramonfontes/containernet
7 |
8 | **Note**: This tutorial was performed in VM with 4 vCPUs and 8GB vRAM
9 |
10 |
11 | ### Use Case #1 - Non-Storing Mode Scenario (trickle time 5s)
12 |
13 | Running the network topology:
14 |
15 | `$ sudo python topology.py`
16 |
17 | * After running the script, two xterm windows will open: one for the Flask server and another for Grafana on host h1.
18 | * Wait for the terminal counter to complete its 60-second countdown...
19 | * Once the countdown finishes, open your browser and enter localhost:3000 in the address bar to access the Grafana web interface.
20 |
21 | 
22 |
23 | Type the credentials:
24 |
25 | * Username: admin
26 | * Password: admin
27 |
28 | Then, click Log in to access the Grafana dashboard.
29 |
30 | 
31 |
32 | After logging in, click `Skip` to bypass the setup prompts.
33 |
34 | 
35 |
36 | Click `New Dashboard` to start creating a new dashboard.
37 |
38 | 
39 |
40 | Click on the `three dots` and then on `View`.
41 |
42 | 
43 |
44 | Then, you will see the result for Non-storing Mode Scenario with trickle time = 5s
45 |
46 | 
47 |
48 | Finally, go back to the terminal and type the command `EOF` or `exit` and `Enter`.
49 |
50 | 
51 |
52 | ## **For cases 2, 3, and 4, follow the same steps as in use case #1 after running `topology.py` accordingly:**
53 |
54 | ### Use Case #2 - Non-Storing Mode Scenario (trickle time 10s)
55 |
56 | Running the network topology:
57 | `$ sudo python topology.py -10`
58 |
59 | **> Follow the same steps as in use case 1**
60 |
61 | ### Results
62 |
63 | Then, you will find below the results for Non-storing Mode Scenario with trickle time = 10s.
64 |
65 | 
66 |
67 | ### Use Case #3 - Storing Mode Scenario (trickle time 5s)
68 |
69 | Running the network topology:
70 | `$ sudo python topology.py -s`
71 |
72 | **> Follow the same steps as in use case 1**
73 |
74 | ### Results
75 |
76 | Then, you will find below the results for Storing Mode Scenario with trickle time = 5s.
77 |
78 | 
79 |
80 | ### Use Case #4 - Storing Mode Scenario (trickle time 10s)
81 |
82 | Running the network topology:
83 | `$ sudo python topology.py -s -10`
84 |
85 | **> Follow the same steps as in use case 1**
86 |
87 | ### Results
88 |
89 | Then, you will find below the results for Storing Mode Scenario with trickle time = 10s.
90 |
91 | 
92 |
--------------------------------------------------------------------------------
/packet-processing-non-storing.py:
--------------------------------------------------------------------------------
1 | import os
2 | import logging
3 | from collections import defaultdict, OrderedDict
4 | from headers import *
5 | from functions import *
6 | from scapy.all import *
7 | from scapy.fields import *
8 | from flask import Flask, jsonify, request
9 | from flask_cors import CORS
10 |
11 | app = Flask(__name__)
12 | CORS(app)
13 | rank = defaultdict(list)
14 | packet_size = defaultdict(list)
15 | srcAddress = ""
16 | rootNode = ""
17 |
18 | log = logging.getLogger('werkzeug')
19 | log.setLevel(logging.ERROR)
20 |
21 | @app.route('/api', methods=['GET'])
22 | def api_home():
23 | # Sort by Key
24 | ordered_rank = OrderedDict(sorted(rank.items()))
25 | return jsonify(ordered_rank)
26 |
27 | @app.route('/api/packet_size', methods=['GET'])
28 | def api_packet_size():
29 | # Sort by Key
30 | ordered_packet_size = OrderedDict(sorted(packet_size.items()))
31 | return jsonify(ordered_packet_size)
32 |
33 | @app.route('/api/data', methods=['POST'])
34 | def api_data():
35 | data = request.json
36 | return jsonify({"received_data": data})
37 |
38 | bind_layers(Ether, Lowpan, type=0x1000)
39 | bind_layers(Lowpan, IPv6Custom)
40 | bind_layers(IPv6Custom, Icmpv6_dis)
41 |
42 | bind_layers(Ether, Lowpan1, type=0x1001)
43 | bind_layers(Lowpan1, IPv6Custom1)
44 | bind_layers(IPv6Custom1, Icmpv6_dio)
45 |
46 | bind_layers(Ether, Lowpan2, type=0x1002)
47 | bind_layers(Lowpan2, IPv6Custom2)
48 | bind_layers(IPv6Custom2, Icmpv6_dao)
49 |
50 | bind_layers(Ether, Lowpan3, type=0x1003)
51 | bind_layers(Lowpan3, IPv6Custom3)
52 | bind_layers(IPv6Custom3, Icmpv6_daoack)
53 |
54 |
55 | def packet_handler(packet):
56 | global srcAddress
57 | global rank
58 | global rootNode
59 | global packet_size
60 |
61 | if packet.haslayer(IPv6Custom):
62 | ipv6_layer = packet.getlayer(IPv6Custom)
63 | srcAddress = ipv6_layer.srcAddr
64 | set_packet_size(srcAddress, Icmpv6_dis(), packet_size)
65 |
66 | if packet.haslayer(IPv6Custom1):
67 | ipv6_layer = packet.getlayer(IPv6Custom1)
68 | srcAddress = ipv6_layer.srcAddr
69 | set_packet_size(srcAddress, Icmpv6_dio(), packet_size)
70 |
71 | if packet.haslayer(IPv6Custom2):
72 | ipv6_layer = packet.getlayer(IPv6Custom2)
73 | srcAddress = ipv6_layer.srcAddr
74 | set_packet_size(srcAddress, Icmpv6_dao(), packet_size)
75 |
76 | if packet.haslayer(IPv6Custom3):
77 | ipv6_layer = packet.getlayer(IPv6Custom3)
78 | srcAddress = ipv6_layer.srcAddr
79 | set_packet_size(srcAddress, Icmpv6_daoack(), packet_size)
80 |
81 | if packet.haslayer(Icmpv6_dao):
82 | icmpv6_layer = packet.getlayer(Icmpv6_dao)
83 | item = [srcAddress, convert_to_ipv6(icmpv6_layer.parent)]
84 | if rootNode and item not in rank[rootNode]:
85 | rank[rootNode].append(item)
86 |
87 | if packet.haslayer(Icmpv6_dio):
88 | icmpv6_layer = packet.getlayer(Icmpv6_dio)
89 | if icmpv6_layer.rank == 1:
90 | rootNode = srcAddress
91 |
92 |
93 | def packet_sniffer():
94 | sniff(iface="h1-eth1", filter="ether proto 0x1000 or ether proto 0x1001 or ether proto 0x1002 or ether proto 0x1003", prn=packet_handler)
95 |
96 |
97 | if __name__ == '__main__':
98 | for n in range(1, 11):
99 | os.system("rm /var/www/localhost/htdocs/data{}.csv".format(n))
100 | for n in range(2, 11):
101 | os.system("echo \"{},{}\" > /var/www/localhost/htdocs/data{}.csv".format("date","Sensor {}".format(n-1), n-1))
102 | sniffer_thread = threading.Thread(target=packet_sniffer)
103 | sniffer_thread.daemon = True
104 | sniffer_thread.start()
105 | app.run(host='192.168.210.1', port=5000)
106 |
--------------------------------------------------------------------------------
/graph.py:
--------------------------------------------------------------------------------
1 | import matplotlib.pyplot as plt
2 | import numpy as np
3 |
4 | # Dados do gráfico
5 | labels = [
6 | "Sensor 1", "Sensor 2", "Sensor 3", "Sensor 4", "Sensor 5",
7 | "Sensor 6", "Sensor 7", "Sensor 8", "Sensor 9"
8 | ]
9 |
10 | values = [1508, 1476, 792, 726, 1486, 858, 924, 924, 660] #t5
11 |
12 | fig, ax = plt.subplots(figsize=(10, 6))
13 | bars = ax.bar(labels, values, color='skyblue')
14 |
15 | for bar, value in zip(bars, values):
16 | ax.text(
17 | bar.get_x() + bar.get_width() / 2,
18 | bar.get_height() + 100,
19 | f'{value}',
20 | ha='center',
21 | va='bottom',
22 | fontsize=10,
23 | color='black'
24 | )
25 |
26 | ax.set_title("Total Packet Lengths - Non-Storing (5s)", fontsize=16, color='black', pad=20, fontdict=dict(weight='bold'))
27 | ax.set_ylabel("Bytes", fontsize=14, color='black')
28 | ax.set_xlabel("Sensors", fontsize=14, color='black')
29 | ax.spines['bottom'].set_color('black')
30 | ax.spines['left'].set_color('black')
31 | ax.tick_params(axis='x', colors='black')
32 | ax.tick_params(axis='y', colors='black')
33 | ax.yaxis.label.set_color('black')
34 | ax.xaxis.label.set_color('black')
35 | ax.title.set_color('black')
36 | plt.ylim(0,2500)
37 | plt.savefig("assets/images/non5.eps")
38 |
39 | values = [970, 920, 462, 396, 964, 528, 528, 528, 396] #t10
40 |
41 | fig, ax = plt.subplots(figsize=(10, 6))
42 | bars = ax.bar(labels, values, color='skyblue')
43 |
44 | for bar, value in zip(bars, values):
45 | ax.text(
46 | bar.get_x() + bar.get_width() / 2,
47 | bar.get_height() + 100,
48 | f'{value}',
49 | ha='center',
50 | va='bottom',
51 | fontsize=10,
52 | color='black'
53 | )
54 |
55 | ax.set_title("Total Packet Lengths - Non-Storing (10s)", fontsize=16, color='black', pad=20, fontdict=dict(weight='bold'))
56 | ax.set_ylabel("Bytes", fontsize=14, color='black')
57 | ax.set_xlabel("Sensors", fontsize=14, color='black')
58 | ax.spines['bottom'].set_color('black')
59 | ax.spines['left'].set_color('black')
60 | ax.tick_params(axis='x', colors='black')
61 | ax.tick_params(axis='y', colors='black')
62 | ax.yaxis.label.set_color('black')
63 | ax.xaxis.label.set_color('black')
64 | ax.title.set_color('black')
65 |
66 | plt.ylim(0,2500)
67 | plt.savefig("assets/images/non10.eps")
68 |
69 | labels = ["Sensor 1", "Sensor 2", "Sensor 5"]
70 | values = [1814, 2206, 2052] #t5
71 |
72 | fig, ax = plt.subplots(figsize=(10, 6))
73 | bars = ax.bar(labels, values, color='skyblue')
74 |
75 | for bar, value in zip(bars, values):
76 | ax.text(
77 | bar.get_x() + bar.get_width() / 2,
78 | bar.get_height() + 100,
79 | f'{value}',
80 | ha='center',
81 | va='bottom',
82 | fontsize=10,
83 | color='black'
84 | )
85 |
86 | ax.set_title("Total Packet Lengths - Storing (5s)", fontsize=16, color='black', pad=20, fontdict=dict(weight='bold'))
87 | ax.set_ylabel("Bytes", fontsize=14, color='black')
88 | ax.set_xlabel("Sensors", fontsize=14, color='black')
89 | ax.spines['bottom'].set_color('black')
90 | ax.spines['left'].set_color('black')
91 | ax.tick_params(axis='x', colors='black')
92 | ax.tick_params(axis='y', colors='black')
93 | ax.yaxis.label.set_color('black')
94 | ax.xaxis.label.set_color('black')
95 | ax.title.set_color('black')
96 |
97 | plt.ylim(0,2500)
98 | plt.savefig("assets/images/5.eps")
99 |
100 |
101 | values = [1154, 1300, 1284] #t10
102 |
103 | fig, ax = plt.subplots(figsize=(10, 6))
104 | bars = ax.bar(labels, values, color='skyblue')
105 |
106 | for bar, value in zip(bars, values):
107 | ax.text(
108 | bar.get_x() + bar.get_width() / 2,
109 | bar.get_height() + 100,
110 | f'{value}',
111 | ha='center',
112 | va='bottom',
113 | fontsize=10,
114 | color='black'
115 | )
116 |
117 | ax.set_title("Total Packet Lengths - Storing (10s)", fontsize=16, color='black', pad=20, fontdict=dict(weight='bold'))
118 | ax.set_ylabel("Bytes", fontsize=14, color='black')
119 | ax.set_xlabel("Sensors", fontsize=14, color='black')
120 | ax.spines['bottom'].set_color('black')
121 | ax.spines['left'].set_color('black')
122 | ax.tick_params(axis='x', colors='black')
123 | ax.tick_params(axis='y', colors='black')
124 | ax.yaxis.label.set_color('black')
125 | ax.xaxis.label.set_color('black')
126 | ax.title.set_color('black')
127 |
128 | plt.ylim(0,2500)
129 | plt.savefig("assets/images/10.eps")
130 |
--------------------------------------------------------------------------------
/topology.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python
2 |
3 | """
4 | @author: Ramon dos Reis Fontes
5 | @email: ramon.fontes@ufrn.br
6 | """
7 |
8 | import os
9 | import sys
10 | from time import sleep
11 |
12 | from containernet.net import Containernet
13 | from containernet.node import DockerP4Sensor, DockerSensor
14 | from containernet.cli import CLI
15 | from mininet.log import info, setLogLevel
16 | from mn_wifi.sixLoWPAN.link import LoWPAN
17 | from mininet.term import makeTerm
18 |
19 |
20 | def topology():
21 | net = Containernet(ipBase='192.168.210.0/24')
22 |
23 | t = 5
24 | if '-10' in sys.argv:
25 | t = 10
26 |
27 | path = os.path.dirname(os.path.abspath(__file__))
28 | json_file = '/root/json/lowpan-non-storing.json'
29 | config = path + '/rules/p4_commands.txt'
30 | args = {'json': json_file, 'switch_config': config}
31 | mode = 1
32 | dimage = 'ramonfontes/bmv2:lowpan'
33 | if '-s' in sys.argv:
34 | json_file = '/root/json/lowpan-storing.json'
35 | config = path + '/rules/p4_commands.txt'
36 | args = {'json': json_file, 'switch_config': config}
37 | mode = 2
38 | dimage = 'ramonfontes/bmv2:lowpan'
39 |
40 | info('*** Adding Nodes...\n')
41 | s1 = net.addSwitch("s1", failMode='standalone')
42 | ap1 = net.addAPSensor('ap1', cls=DockerP4Sensor, ip6='fe80::1/64', panid='0xbeef',
43 | dodag_root=True, storing_mode=mode, privileged=True,
44 | volumes=[path + "/:/root", "/tmp/.X11-unix:/tmp/.X11-unix:rw"],
45 | dimage=dimage, cpu_shares=20, netcfg=True, trickle_t=t,
46 | environment={"DISPLAY": ":1"}, loglevel="info",
47 | thriftport=50001, IPBASE="172.17.0.0/24", **args) # IPBASE: docker subnet
48 | sensor1 = net.addSensor('sensor1', ip6='fe80::2/64', panid='0xbeef', trickle_t=t,
49 | cls=DockerSensor, dimage=dimage, cpu_shares=20,
50 | volumes=["/tmp/.X11-unix:/tmp/.X11-unix:rw"],
51 | environment={"DISPLAY": ":0"}, privileged=True)
52 | sensor2 = net.addSensor('sensor2', ip6='fe80::3/64', panid='0xbeef', trickle_t=t,
53 | cls=DockerSensor, dimage=dimage, cpu_shares=20,
54 | volumes=["/tmp/.X11-unix:/tmp/.X11-unix:rw"],
55 | environment={"DISPLAY": ":0"}, privileged=True)
56 | sensor3 = net.addSensor('sensor3', ip6='fe80::4/64', panid='0xbeef', trickle_t=t,
57 | cls=DockerSensor, dimage=dimage, cpu_shares=20,
58 | volumes=["/tmp/.X11-unix:/tmp/.X11-unix:rw"],
59 | environment={"DISPLAY": ":0"}, privileged=True)
60 | sensor4 = net.addSensor('sensor4', ip6='fe80::5/64', panid='0xbeef', trickle_t=t,
61 | cls=DockerSensor, dimage=dimage, cpu_shares=20,
62 | volumes=["/tmp/.X11-unix:/tmp/.X11-unix:rw"],
63 | environment={"DISPLAY": ":0"}, privileged=True)
64 | sensor5 = net.addSensor('sensor5', ip6='fe80::6/64', panid='0xbeef', trickle_t=t,
65 | cls=DockerSensor, dimage=dimage, cpu_shares=20,
66 | volumes=["/tmp/.X11-unix:/tmp/.X11-unix:rw"],
67 | environment={"DISPLAY": ":0"}, privileged=True)
68 | sensor6 = net.addSensor('sensor6', ip6='fe80::7/64', panid='0xbeef', trickle_t=t,
69 | cls=DockerSensor, dimage=dimage, cpu_shares=20,
70 | volumes=["/tmp/.X11-unix:/tmp/.X11-unix:rw"],
71 | environment={"DISPLAY": ":0"}, privileged=True)
72 | sensor7 = net.addSensor('sensor7', ip6='fe80::8/64', panid='0xbeef', trickle_t=t,
73 | cls=DockerSensor, dimage=dimage, cpu_shares=20,
74 | volumes=["/tmp/.X11-unix:/tmp/.X11-unix:rw"],
75 | environment={"DISPLAY": ":0"}, privileged=True)
76 | sensor8 = net.addSensor('sensor8', ip6='fe80::9/64', panid='0xbeef', trickle_t=t,
77 | cls=DockerSensor, dimage=dimage, cpu_shares=20,
78 | volumes=["/tmp/.X11-unix:/tmp/.X11-unix:rw"],
79 | environment={"DISPLAY": ":0"}, privileged=True)
80 | sensor9 = net.addSensor('sensor9', ip6='fe80::10/64', panid='0xbeef', trickle_t=t,
81 | cls=DockerSensor, dimage=dimage, cpu_shares=20,
82 | volumes=["/tmp/.X11-unix:/tmp/.X11-unix:rw"],
83 | environment={"DISPLAY": ":0"}, privileged=True)
84 | h1 = net.addDocker('h1', volumes=[path + "/:/root", "/tmp/.X11-unix:/tmp/.X11-unix:rw"],
85 | dimage="ramonfontes/grafana", port_bindings={3000:3000}, ip='192.168.210.1',
86 | privileged=True, environment={"DISPLAY": ":1"})
87 |
88 | net.configureWifiNodes()
89 |
90 | #ap1.cmd("tcpdump -i ap1-pan0 -w teste.pcap &")
91 | info('*** Creating links...\n')
92 | net.addLink(s1, h1)
93 | net.addLink(ap1, sensor1, cls=LoWPAN)
94 | net.addLink(ap1, sensor2, cls=LoWPAN)
95 | net.addLink(sensor2, sensor3, cls=LoWPAN)
96 | net.addLink(sensor3, sensor4, cls=LoWPAN)
97 | net.addLink(ap1, sensor5, cls=LoWPAN)
98 | net.addLink(sensor1, sensor6, cls=LoWPAN)
99 | net.addLink(sensor5, sensor7, cls=LoWPAN)
100 | net.addLink(sensor5, sensor8, cls=LoWPAN)
101 | net.addLink(sensor4, sensor9, cls=LoWPAN)
102 | net.addLink(ap1, h1)
103 | h1.cmd('ifconfig h1-eth1 192.168.0.1')
104 |
105 | info('*** Starting network...\n')
106 | net.build()
107 | net.addNAT(name='nat0', linkTo='s1', ip='192.168.210.254').configDefault()
108 | ap1.start([])
109 | s1.start([])
110 | net.staticArp()
111 |
112 | h1.cmd('pkill -9 -f xterm')
113 | makeTerm(h1, title='grafana-server', cmd="bash -c 'grafana-server;'")
114 | if '-s' in sys.argv:
115 | makeTerm(h1, title='h1', cmd="bash -c 'httpd && python /root/packet-processing-storing.py;'")
116 | else:
117 | makeTerm(h1, title='h1', cmd="bash -c 'httpd && python /root/packet-processing-non-storing.py;'")
118 | net.configRPLD(net.sensors + net.apsensors)
119 |
120 | # print time
121 | for t in range(0, 60):
122 | print(f"\r{t}", end="", flush=True)
123 | sleep(1)
124 |
125 | h1.cmd("ifconfig h1-eth1 down")
126 |
127 | info('*** Running CLI...\n')
128 | CLI(net)
129 |
130 | info('*** Stopping network...\n')
131 | net.stop()
132 |
133 |
134 | if __name__ == '__main__':
135 | setLogLevel('info')
136 | topology()
137 |
--------------------------------------------------------------------------------
/ui/storing/code.js:
--------------------------------------------------------------------------------
1 | var nodes = null;
2 | var edges = null;
3 | var network = null;
4 | var alertShown = false;
5 | var isConnected = false;
6 | var isInteracting = false;
7 | var EDGE_LENGTH_MAIN = 150;
8 | var prev_state = [];
9 | var curr_state = [];
10 | var packet_size_nodes = [];
11 |
12 | // Função para criar nós e arestas com base nos dados recebidos
13 | function processData(rank) {
14 |
15 | nodes = [];
16 | edges = [];
17 |
18 | let idCounter = 1;
19 | const nodeIds = {};
20 |
21 | // Adicionar nós
22 | for (const [key, values] of Object.entries(rank)) {
23 | // Criar nós para cada value no rank atual
24 | values.forEach((value, index) => {
25 | const from = value[0];
26 | const to = value[1];
27 | if (!(from in nodeIds)) {
28 | nodeIds[from] = idCounter++;
29 | label = from;
30 | if (index == 0){
31 | label = "P4-enabled\n6LoWPAN (root)";
32 | nodes.push({
33 | id: nodeIds[from],
34 | label: label,
35 | borderWidth: 3,
36 | color: "orange",
37 | });
38 | }
39 | else{
40 | nodes.push({
41 | id: nodeIds[from],
42 | label: label.substring(label.length - 14),
43 | borderWidth: 3,
44 | });
45 | }
46 | }
47 |
48 | if (!(to in nodeIds)) {
49 | nodeIds[to] = idCounter++;
50 | label = to
51 | nodes.push({
52 | id: nodeIds[to],
53 | label: label.substring(label.length - 14),
54 | borderWidth: 3,
55 | });
56 | }
57 |
58 | edges.push({ from: nodeIds[from], to: nodeIds[to], color: "black", width: 1, length: EDGE_LENGTH_MAIN });
59 | });
60 | }
61 | }
62 |
63 | function handleError(error) {
64 | console.error("An error occurred:", error);
65 | if (!alertShown) {
66 | alert("An error occurred:", error);
67 | alertShown = true; // Marcar que o alerta já foi mostrado
68 | }
69 | }
70 |
71 | function handleOffline() {
72 | if (!alertShown) {
73 | alert("The system is offline");
74 | alertShown = true; // Marcar que o alerta já foi mostrado
75 | }
76 | }
77 |
78 | function processPacketSize(data) {
79 | const tabelaBody = document.querySelector('#packet_size tbody');
80 |
81 | for (const [key, value] of Object.entries(data)) {
82 | let existingRow = Array.from(tabelaBody.rows).find(row => row.cells[0].textContent === key);
83 |
84 | if (existingRow) {
85 | existingRow.cells[1].textContent = value + " Bytes";
86 | }
87 | else{
88 | // Criando uma nova linha
89 | const row = document.createElement('tr');
90 |
91 | // Criando e adicionando as células na linha
92 | const cellId = document.createElement('td');
93 | cellId.textContent = key;
94 | row.appendChild(cellId);
95 |
96 | const cellNome = document.createElement('td');
97 | cellNome.textContent = value + " Bytes";
98 | row.appendChild(cellNome);
99 |
100 | // Adicionando a linha na tabela
101 | tabelaBody.appendChild(row);
102 |
103 | const rowsArray = Array.from(tabelaBody.rows);
104 |
105 | rowsArray.sort((rowA, rowB) => {
106 | const textA = rowA.cells[0].textContent.trim().replace(/[^0-9.]/g, '');
107 | const textB = rowB.cells[0].textContent.trim().replace(/[^0-9.]/g, '');
108 |
109 | // Converte para números para comparação
110 | const numA = parseFloat(textA);
111 | const numB = parseFloat(textB);
112 |
113 | // Ordena numericamente
114 | return numA - numB;
115 | });
116 |
117 | // Remove todas as linhas do tbody
118 | while (tabelaBody.firstChild) {
119 | tabelaBody.removeChild(tabelaBody.firstChild);
120 | }
121 | console.log(rowsArray);
122 | // Adiciona as linhas ordenadas de volta ao tbody
123 | rowsArray.forEach(row => tabelaBody.appendChild(row));
124 | }
125 | }
126 | }
127 |
128 | // Função principal para desenhar o grafo
129 | async function draw() {
130 | // Defina o IP e a porta do servidor Flask
131 | const serverIp = '192.168.210.1';
132 | const serverPort = '5000';
133 |
134 | // Construa a URL completa da requisição
135 | const url = `http://${serverIp}:${serverPort}/api`;
136 | const url_packet_size = `http://${serverIp}:${serverPort}/api/packet_size`;
137 |
138 | const controller = new AbortController();
139 | const signal = controller.signal;
140 | timeout = 1000;
141 |
142 | // Faça a requisição para a API
143 | fetch(url)
144 | .then(response => response.json())
145 | .then(data => {
146 | processData(data);
147 |
148 | if (!network) {
149 | // Criar a rede de visualização
150 | var container = document.getElementById("mynetwork");
151 | var data = {
152 | nodes: nodes,
153 | edges: edges,
154 | };
155 | var options = { layout: { randomSeed: 8 } };
156 | network = new vis.Network(container, data, options);
157 | }
158 | else{
159 | network.on("dragStart", function () {
160 | isInteracting = true; // Define a flag quando um nó é selecionado
161 | });
162 | network.on("dragEnd", function () {
163 | isInteracting = false; // Define a flag quando um nó é selecionado
164 | });
165 |
166 | if (!isInteracting){
167 | // Atualiza a rede existente com os novos dados
168 | network.setData({
169 | nodes: nodes,
170 | edges: edges
171 | });
172 | }
173 | }
174 | });
175 |
176 | await fetch(url_packet_size, { signal })
177 | .then(response => {
178 | if (!response.ok) {
179 | handleError;
180 | }
181 | return response.json();
182 | })
183 | .then(data => {
184 | processPacketSize(data);
185 | })
186 | .catch(handleError);
187 |
188 | if (!isConnected){
189 | nodes = null;
190 | edges = null;
191 | if (network)
192 | network.setData({
193 | nodes: nodes,
194 | edges: edges
195 | });
196 | const tabelaBody = document.querySelector('#packet_size tbody');
197 | // Limpar o conteúdo do
198 | tabelaBody.innerHTML = '';
199 | isConnected = true;
200 | alertShown = false;
201 | handleOffline();
202 | }
203 | }
204 |
205 | window.addEventListener("load", () => {
206 | draw();
207 | });
208 |
209 | // Atualiza a rede a cada 1 segundo
210 | setInterval(draw, 1000);
211 |
--------------------------------------------------------------------------------
/ui/non-storing/code.js:
--------------------------------------------------------------------------------
1 | var nodes = null;
2 | var edges = null;
3 | var network = null;
4 | var alertShown = false;
5 | var isConnected = false;
6 | var isInteracting = false;
7 | var EDGE_LENGTH_MAIN = 150;
8 | var prev_state = [];
9 | var curr_state = [];
10 | var packet_size_nodes = [];
11 |
12 | // Função para criar nós e arestas com base nos dados recebidos
13 | function processData(rank) {
14 |
15 | nodes = [];
16 | edges = [];
17 |
18 | let idCounter = 1;
19 | const nodeIds = {};
20 |
21 | // Adicionar nós
22 | for (const [key, values] of Object.entries(rank)) {
23 | // Criar nós para cada value no rank atual
24 | values.forEach((value, index) => {
25 | const from = value[0];
26 | const to = value[1];
27 | if (!(from in nodeIds)) {
28 | nodeIds[from] = idCounter++;
29 | label = from;
30 | nodes.push({
31 | id: nodeIds[from],
32 | label: key == label ? "P4-enabled Root\n" + label : label.substring(label.length - 14),
33 | borderWidth: 3,
34 | color: key == label ? "orange" : undefined,
35 | });
36 | }
37 |
38 | if (!(to in nodeIds)) {
39 | nodeIds[to] = idCounter++;
40 | label = to
41 | nodes.push({
42 | id: nodeIds[to],
43 | label: key == label ? "P4-enabled Root\n" + label : label.substring(label.length - 14),
44 | borderWidth: 3,
45 | color: key == label ? "orange" : undefined,
46 | });
47 | }
48 |
49 | edges.push({ from: nodeIds[from], to: nodeIds[to], color: "black", width: 1, dashes: true, length: EDGE_LENGTH_MAIN });
50 | });
51 | }
52 | }
53 |
54 | function processPacketSize(data) {
55 | const tabelaBody = document.querySelector('#packet_size tbody');
56 |
57 | for (const [key, value] of Object.entries(data)) {
58 | let existingRow = Array.from(tabelaBody.rows).find(row => row.cells[0].textContent === key);
59 |
60 | if (existingRow) {
61 | existingRow.cells[1].textContent = value + " Bytes";
62 | }
63 | else{
64 | // Criando uma nova linha
65 | const row = document.createElement('tr');
66 |
67 | // Criando e adicionando as células na linha
68 | const cellId = document.createElement('td');
69 | cellId.textContent = key;
70 | row.appendChild(cellId);
71 |
72 | const cellNome = document.createElement('td');
73 | cellNome.textContent = value + " Bytes";
74 | row.appendChild(cellNome);
75 |
76 | // Adicionando a linha na tabela
77 | tabelaBody.appendChild(row);
78 |
79 | const rowsArray = Array.from(tabelaBody.rows);
80 |
81 | rowsArray.sort((rowA, rowB) => {
82 | const textA = rowA.cells[0].textContent.trim().replace(/[^0-9.]/g, '');
83 | const textB = rowB.cells[0].textContent.trim().replace(/[^0-9.]/g, '');
84 |
85 | // Converte para números para comparação
86 | const numA = parseFloat(textA);
87 | const numB = parseFloat(textB);
88 |
89 | // Ordena numericamente
90 | return numA - numB;
91 | });
92 |
93 | // Remove todas as linhas do tbody
94 | while (tabelaBody.firstChild) {
95 | tabelaBody.removeChild(tabelaBody.firstChild);
96 | }
97 | console.log(rowsArray);
98 | // Adiciona as linhas ordenadas de volta ao tbody
99 | rowsArray.forEach(row => tabelaBody.appendChild(row));
100 | }
101 | }
102 | }
103 |
104 | function handleError(error) {
105 | console.error("An error occurred:", error);
106 | if (!alertShown) {
107 | alert("An error occurred:", error);
108 | alertShown = true; // Marcar que o alerta já foi mostrado
109 | }
110 | }
111 |
112 | function handleOffline() {
113 | if (!alertShown) {
114 | alert("The system is offline");
115 | alertShown = true; // Marcar que o alerta já foi mostrado
116 | }
117 | }
118 |
119 | // Função principal para desenhar o grafo
120 | async function draw() {
121 | // Defina o IP e a porta do servidor Flask
122 | const serverIp = '192.168.210.1';
123 | const serverPort = '5000';
124 | isConnected = false;
125 | // Construa a URL completa da requisição
126 | const url = `http://${serverIp}:${serverPort}/api`;
127 | const url_packet_size = `http://${serverIp}:${serverPort}/api/packet_size`;
128 |
129 | const controller = new AbortController();
130 | const signal = controller.signal;
131 | timeout = 1000;
132 |
133 | // Cria um timeout para abortar a requisição se demorar mais que o limite
134 | const fetchTimeout = setTimeout(() => {
135 | controller.abort();
136 | }, timeout);
137 |
138 | // Faça a requisição para a API
139 | await fetch(url, { signal })
140 | .then(response => {
141 | if (!response.ok) {
142 | handleError;
143 | }
144 | else{
145 | clearTimeout(fetchTimeout);
146 | isConnected = true;
147 | }
148 | return response.json();
149 | })
150 | .then(data => {
151 | processData(data);
152 |
153 | if (!network) {
154 | // Criar a rede de visualização
155 | var container = document.getElementById("mynetwork");
156 | var data = {
157 | nodes: nodes,
158 | edges: edges,
159 | };
160 | var options = { layout: { randomSeed: 8 } };
161 | network = new vis.Network(container, data, options);
162 | }
163 | else{
164 | network.on("dragStart", function () {
165 | isInteracting = true; // Define a flag quando um nó é selecionado
166 | });
167 | network.on("dragEnd", function () {
168 | isInteracting = false; // Define a flag quando um nó é selecionado
169 | });
170 |
171 | if (!isInteracting){
172 | // Atualiza a rede existente com os novos dados
173 | network.setData({
174 | nodes: nodes,
175 | edges: edges
176 | });
177 | }
178 | }
179 | }).
180 | catch (handleError)
181 |
182 | await fetch(url_packet_size, { signal })
183 | .then(response => {
184 | if (!response.ok) {
185 | handleError;
186 | }
187 | return response.json();
188 | })
189 | .then(data => {
190 | processPacketSize(data);
191 | })
192 | .catch(handleError);
193 |
194 | if (!isConnected){
195 | nodes = null;
196 | edges = null;
197 | if (network)
198 | network.setData({
199 | nodes: nodes,
200 | edges: edges
201 | });
202 | const tabelaBody = document.querySelector('#packet_size tbody');
203 | // Limpar o conteúdo do
204 | tabelaBody.innerHTML = '';
205 | isConnected = true;
206 | alertShown = false;
207 | handleOffline();
208 | }
209 | }
210 |
211 | window.addEventListener("load", () => {
212 | draw();
213 | });
214 |
215 | // Atualiza a rede a cada 1 segundo
216 | setInterval(draw, 1000);
--------------------------------------------------------------------------------
/packet-processing-storing.py:
--------------------------------------------------------------------------------
1 | import logging
2 | from collections import defaultdict, OrderedDict
3 | from scapy.all import *
4 | from scapy.fields import *
5 | from functions import *
6 | from flask import Flask, jsonify, request
7 | from flask_cors import CORS
8 | from headers import *
9 |
10 | app = Flask(__name__)
11 | CORS(app)
12 | rank = defaultdict(list)
13 | packet_size = defaultdict(list)
14 | srcAddress = ""
15 | rootNode = ""
16 |
17 | log = logging.getLogger('werkzeug')
18 | log.setLevel(logging.ERROR)
19 |
20 | @app.route('/api', methods=['GET'])
21 | def api_home():
22 | # Sort by Key
23 | ordered_rank = OrderedDict(sorted(rank.items()))
24 | return jsonify(ordered_rank)
25 |
26 | @app.route('/api/packet_size', methods=['GET'])
27 | def api_packet_size():
28 | # Sort by Key
29 | ordered_packet_size = OrderedDict(sorted(packet_size.items()))
30 | return jsonify(ordered_packet_size)
31 |
32 | @app.route('/api/data', methods=['POST'])
33 | def api_data():
34 | data = request.json
35 | return jsonify({"received_data": data})
36 |
37 | bind_layers(Ether, Lowpan, type=0x1000)
38 | bind_layers(Lowpan, IPv6Custom)
39 | bind_layers(IPv6Custom, Icmpv6_dis)
40 |
41 | bind_layers(Ether, Lowpan1, type=0x1001)
42 | bind_layers(Lowpan1, IPv6Custom1)
43 | bind_layers(IPv6Custom1, Icmpv6_dio)
44 |
45 | bind_layers(Ether, Lowpan2, type=0x1002)
46 | bind_layers(Lowpan2, IPv6Custom2)
47 | bind_layers(IPv6Custom2, Icmpv6_dao_repeated, payloadLength=66)
48 | bind_layers(IPv6Custom2, Icmpv6_dao_repeated1, payloadLength=86)
49 | bind_layers(IPv6Custom2, Icmpv6_dao_repeated2, payloadLength=106)
50 | bind_layers(IPv6Custom2, Icmpv6_dao_repeated3, payloadLength=126)
51 | bind_layers(IPv6Custom2, Icmpv6_dao_repeated4, payloadLength=146)
52 |
53 | bind_layers(Ether, Lowpan3, type=0x1003)
54 | bind_layers(Lowpan3, IPv6Custom3)
55 | bind_layers(IPv6Custom3, Icmpv6_daoack)
56 |
57 |
58 | def packet_handler(packet):
59 | global srcAddress
60 | global rank
61 | global packet_size
62 |
63 | if packet.haslayer(IPv6Custom):
64 | ipv6_layer = packet.getlayer(IPv6Custom)
65 | srcAddress = ipv6_layer.srcAddr
66 | set_packet_size(srcAddress, Icmpv6_dis(), packet_size)
67 |
68 | if packet.haslayer(IPv6Custom1):
69 | ipv6_layer = packet.getlayer(IPv6Custom1)
70 | srcAddress = ipv6_layer.srcAddr
71 | set_packet_size(srcAddress, Icmpv6_dio(), packet_size)
72 |
73 | if packet.haslayer(IPv6Custom2):
74 | ipv6_layer = packet.getlayer(IPv6Custom2)
75 | srcAddress = ipv6_layer.srcAddr
76 |
77 | if packet.haslayer(IPv6Custom3):
78 | ipv6_layer = packet.getlayer(IPv6Custom3)
79 | srcAddress = ipv6_layer.srcAddr
80 | set_packet_size(srcAddress, Icmpv6_daoack(), packet_size)
81 |
82 | if packet.haslayer(Icmpv6_dao_repeated):
83 | icmpv6_layer = packet.getlayer(Icmpv6_dao_repeated)
84 |
85 | srcAddress = ipv6_layer.srcAddr
86 | set_packet_size(srcAddress, Icmpv6_dao_repeated(), packet_size)
87 | rootNode = convert_to_ipv6(icmpv6_layer.DODAGID)
88 | item = [rootNode, convert_to_ipv6(icmpv6_layer.prefix)]
89 | if item not in rank[rootNode]:
90 | rank[rootNode].append(item)
91 |
92 | if packet.haslayer(Icmpv6_dao_repeated1):
93 | icmpv6_layer = packet.getlayer(Icmpv6_dao_repeated1)
94 | srcAddress = ipv6_layer.srcAddr
95 | set_packet_size(srcAddress, Icmpv6_dao_repeated1(), packet_size)
96 | rootNode = convert_to_ipv6(icmpv6_layer.DODAGID)
97 | item = [rootNode, convert_to_ipv6(icmpv6_layer.prefix1)]
98 | if item not in rank[rootNode]:
99 | rank[rootNode].append(item)
100 | item = [convert_to_ipv6(icmpv6_layer.prefix1), convert_to_ipv6(icmpv6_layer.prefix2)]
101 | if item not in rank[rootNode]:
102 | rank[rootNode].append(item)
103 |
104 | if packet.haslayer(Icmpv6_dao_repeated2):
105 | """if ipv6_layer.payloadLength == 84:
106 | icmpv6_layer = packet.getlayer(Icmpv6_dao_repeated2)
107 | print(f"DODAGID: {convert_to_ipv6(icmpv6_layer.DODAGID)}")
108 | print(f"Prefix1: {convert_to_ipv6(icmpv6_layer.prefix1)}")
109 | print(f"Prefix2: {convert_to_ipv6(icmpv6_layer.prefix2)}")
110 | print(f"Prefix3: {convert_to_ipv6(icmpv6_layer.prefix3)}")
111 | print(f"Prefix Length1: {icmpv6_layer.prefixLength1}")
112 | print(f"Prefix Length1: {icmpv6_layer.prefixLength2}")
113 | print(f"Prefix Length1: {icmpv6_layer.prefixLength3}")
114 | print(icmpv6_layer.prefix3)"""
115 |
116 | icmpv6_layer = packet.getlayer(Icmpv6_dao_repeated2)
117 | srcAddress = ipv6_layer.srcAddr
118 | set_packet_size(srcAddress, Icmpv6_dao_repeated2(), packet_size)
119 | rootNode = convert_to_ipv6(icmpv6_layer.DODAGID)
120 | item = [rootNode, convert_to_ipv6(icmpv6_layer.prefix1)]
121 | if item not in rank[rootNode]:
122 | rank[rootNode].append(item)
123 | item = [convert_to_ipv6(icmpv6_layer.prefix1), convert_to_ipv6(icmpv6_layer.prefix2)]
124 | if item not in rank[rootNode]:
125 | rank[rootNode].append(item)
126 | item = [convert_to_ipv6(icmpv6_layer.prefix2), convert_to_ipv6(icmpv6_layer.prefix3)]
127 | if item not in rank[rootNode]:
128 | rank[rootNode].append(item)
129 |
130 | if packet.haslayer(Icmpv6_dao_repeated3):
131 | icmpv6_layer = packet.getlayer(Icmpv6_dao_repeated3)
132 | srcAddress = ipv6_layer.srcAddr
133 | set_packet_size(srcAddress, Icmpv6_dao_repeated3(), packet_size)
134 | rootNode = convert_to_ipv6(icmpv6_layer.DODAGID)
135 | item = [rootNode, convert_to_ipv6(icmpv6_layer.prefix1)]
136 | if item not in rank[rootNode]:
137 | rank[rootNode].append(item)
138 | item = [convert_to_ipv6(icmpv6_layer.prefix1), convert_to_ipv6(icmpv6_layer.prefix2)]
139 | if item not in rank[rootNode]:
140 | rank[rootNode].append(item)
141 | item = [convert_to_ipv6(icmpv6_layer.prefix2), convert_to_ipv6(icmpv6_layer.prefix3)]
142 | if item not in rank[rootNode]:
143 | rank[rootNode].append(item)
144 | item = [convert_to_ipv6(icmpv6_layer.prefix3), convert_to_ipv6(icmpv6_layer.prefix4)]
145 | if item not in rank[rootNode]:
146 | rank[rootNode].append(item)
147 |
148 | if packet.haslayer(Icmpv6_dao_repeated4):
149 | icmpv6_layer = packet.getlayer(Icmpv6_dao_repeated4)
150 | srcAddress = ipv6_layer.srcAddr
151 | set_packet_size(srcAddress, Icmpv6_dao_repeated4(), packet_size)
152 | rootNode = convert_to_ipv6(icmpv6_layer.DODAGID)
153 | item = [rootNode, convert_to_ipv6(icmpv6_layer.prefix1)]
154 | if item not in rank[rootNode]:
155 | rank[rootNode].append(item)
156 | item = [convert_to_ipv6(icmpv6_layer.prefix1), convert_to_ipv6(icmpv6_layer.prefix2)]
157 | if item not in rank[rootNode]:
158 | rank[rootNode].append(item)
159 | item = [convert_to_ipv6(icmpv6_layer.prefix2), convert_to_ipv6(icmpv6_layer.prefix3)]
160 | if item not in rank[rootNode]:
161 | rank[rootNode].append(item)
162 | item = [convert_to_ipv6(icmpv6_layer.prefix3), convert_to_ipv6(icmpv6_layer.prefix4)]
163 | if item not in rank[rootNode]:
164 | rank[rootNode].append(item)
165 | item = [convert_to_ipv6(icmpv6_layer.prefix4), convert_to_ipv6(icmpv6_layer.prefix5)]
166 | if item not in rank[rootNode]:
167 | rank[rootNode].append(item)
168 |
169 |
170 | def packet_sniffer():
171 | sniff(iface="h1-eth1", filter="ether proto 0x1000 or ether proto 0x1001 or ether proto 0x1002 or ether proto 0x1003", prn=packet_handler)
172 |
173 | if __name__ == '__main__':
174 | for n in range(1, 11):
175 | os.system("rm /var/www/localhost/htdocs/data{}.csv".format(n))
176 | for n in range(2, 11):
177 | os.system("echo \"{},{}\" > /var/www/localhost/htdocs/data{}.csv".format("date","Sensor {}".format(n-1), n-1))
178 | sniffer_thread = threading.Thread(target=packet_sniffer)
179 | sniffer_thread.daemon = True
180 | sniffer_thread.start()
181 | app.run(host='192.168.210.1', port=5000)
--------------------------------------------------------------------------------
/p4/lowpan-non-storing.p4:
--------------------------------------------------------------------------------
1 | /* -*- P4_16 -*- */
2 | #include
3 | #include
4 |
5 | /*************************************************************************
6 | *********************** H E A D E R S ***********************************
7 | *************************************************************************/
8 |
9 | typedef bit<9> egressSpec_t;
10 | typedef bit<48> macAddr_t;
11 | typedef bit<32> ipv4Addr_t;
12 | typedef bit<16> tcpPort_t;
13 | typedef bit<128> ipv6Addr_t;
14 |
15 |
16 | // Cabeçalho 6LoWPAN
17 | header lowpan_t {
18 | bit<16> dispatch; // Tipo de pacote (IPv6, Fragmentação, etc.)
19 | bit<16> identification; // Identificação para fragmentação
20 | bit<16> ha_len;
21 | bit<64> unsed;
22 | bit<16> ethType;
23 | }
24 |
25 | header ethernet_t {
26 | macAddr_t dstAddr;
27 | macAddr_t srcAddr;
28 | bit<16> etherType;
29 | }
30 |
31 | header tcp_t {
32 | tcpPort_t srcPort;
33 | tcpPort_t dstPort;
34 | bit<32> seqNo;
35 | bit<32> ackNo;
36 | bit<4> dataOffset;
37 | bit<4> res;
38 | bit<8> flags;
39 | bit<16> window;
40 | bit<16> checksum;
41 | bit<16> urgentPtr;
42 | }
43 |
44 | header ipv6_t {
45 | bit<4> version;
46 | bit<8> trafficClass;
47 | bit<20> flowLabel;
48 | bit<16> payloadLength;
49 | bit<8> nextHeader;
50 | bit<8> hopLimit;
51 | bit<128> srcAddr;
52 | bit<128> dstAddr;
53 | }
54 |
55 | header icmpv6_dio_t {
56 | bit<8> type;
57 | bit<8> code;
58 | bit<16> checksum;
59 | // Campos adicionais específicos para RPL Control Message
60 | bit<8> RPLInstanceID;
61 | bit<8> version;
62 | bit<16> rank;
63 | bit<8> flags;
64 | bit<8> DTSN;
65 | bit<8> more_flags;
66 | bit<8> reserved;
67 | bit<128> DODAGID;
68 | // Opção de Roteamento
69 | bit<8> optionType;
70 | bit<8> optionLength;
71 | bit<8> prefixLength;
72 | bit<8> flag;
73 | bit<32> routeLifetime;
74 | bit<64> prefix;
75 | }
76 |
77 | header icmpv6_daoack_t {
78 | bit<8> type;
79 | bit<8> code;
80 | bit<16> checksum;
81 | bit<8> RPLInstanceID;
82 | bit<8> flag;
83 | bit<8> seq;
84 | bit<8> status;
85 | bit<128> DODAGID;
86 | }
87 |
88 | header icmpv6_dis_t {
89 | bit<8> type;
90 | bit<8> code;
91 | bit<16> checksum;
92 | bit<8> flags;
93 | bit<8> reserved;
94 | }
95 |
96 | header icmpv6_dao_t {
97 | bit<8> type;
98 | bit<8> code;
99 | bit<16> checksum;
100 | bit<8> RPLInstanceID;
101 | bit<8> flag;
102 | bit<8> reserved;
103 | bit<8> seq;
104 | bit<128> DODAGID;
105 | bit<8> rplTarget;
106 | bit<8> length;
107 | bit<8> rplReserved;
108 | bit<8> rplLength;
109 | bit<128> prefixTarget;
110 | bit<8> optType;
111 | bit<8> optLength;
112 | bit<8> optFlags;
113 | bit<8> optPathControl;
114 | bit<8> optPathSeq;
115 | bit<8> optPathLifetime;
116 | bit<128> optParent;
117 | }
118 |
119 | header metadata_t {
120 | bit<8> custom_value;
121 | }
122 |
123 | struct metadata {
124 | metadata_t meta;
125 | }
126 |
127 | struct headers {
128 | ethernet_t ethernet;
129 | lowpan_t lowpan;
130 | ipv6_t ipv6;
131 | icmpv6_dio_t icmpv6_dio;
132 | icmpv6_daoack_t icmpv6_daoack;
133 | icmpv6_dao_t icmpv6_dao;
134 | icmpv6_dis_t icmpv6_dis;
135 | }
136 |
137 | /*************************************************************************
138 | *********************** P A R S E R ***********************************
139 | *************************************************************************/
140 |
141 | parser MyParser(packet_in packet,
142 | out headers hdr,
143 | inout metadata meta,
144 | inout standard_metadata_t standard_metadata) {
145 |
146 | state start {
147 | packet.extract(hdr.lowpan);
148 | transition select(hdr.lowpan.ethType) {
149 | 0x86dd: parse_ipv6;
150 | default: accept;
151 | }
152 | }
153 |
154 | state parse_ipv6 {
155 | packet.extract(hdr.ipv6);
156 | transition select(hdr.ipv6.payloadLength) {
157 | 0x2C: parse_icmpv6_dio; //44
158 | 0x06: parse_icmpv6_dis; //6
159 | 0x42: parse_icmpv6_dao; //66
160 | 0x18: parse_icmpv6_daoack; //24
161 | #default: accept;
162 | }
163 | }
164 |
165 | state parse_icmpv6_dio {
166 | packet.extract(hdr.icmpv6_dio);
167 | meta.meta.custom_value = hdr.icmpv6_dio.code;
168 | transition accept;
169 | }
170 |
171 | state parse_icmpv6_dis {
172 | packet.extract(hdr.icmpv6_dis);
173 | meta.meta.custom_value = hdr.icmpv6_dis.code;
174 | transition accept;
175 | }
176 |
177 | state parse_icmpv6_dao {
178 | packet.extract(hdr.icmpv6_dao);
179 | meta.meta.custom_value = hdr.icmpv6_dao.code;
180 | transition accept;
181 | }
182 |
183 | state parse_icmpv6_daoack {
184 | packet.extract(hdr.icmpv6_daoack);
185 | meta.meta.custom_value = hdr.icmpv6_daoack.code;
186 | transition accept;
187 | }
188 | }
189 |
190 | /*************************************************************************
191 | ************ C H E C K S U M V E R I F I C A T I O N *************
192 | *************************************************************************/
193 |
194 | control MyVerifyChecksum(inout headers hdr, inout metadata meta) {
195 | apply { }
196 | }
197 |
198 | /*************************************************************************
199 | ************** I N G R E S S P R O C E S S I N G *******************
200 | *************************************************************************/
201 |
202 | control MyIngress(inout headers hdr,
203 | inout metadata meta,
204 | inout standard_metadata_t standard_metadata) {
205 |
206 | action drop() {
207 | mark_to_drop(standard_metadata);
208 | }
209 |
210 | action set_egress_port(egressSpec_t port) {
211 | if (meta.meta.custom_value == 0x0 || meta.meta.custom_value == 0x1 || meta.meta.custom_value == 0x2 || meta.meta.custom_value == 0x3){
212 | if (meta.meta.custom_value == 0x0) {
213 | hdr.ethernet.etherType = 0x1000; //dis
214 | }
215 | else if (meta.meta.custom_value == 0x1) {
216 | hdr.ethernet.etherType = 0x1001; //dio
217 | }
218 | else if (meta.meta.custom_value == 0x2) {
219 | hdr.ethernet.etherType = 0x1002; //dao
220 | }
221 | else if (meta.meta.custom_value == 0x3) {
222 | hdr.ethernet.etherType = 0x1003; //daoack
223 | }
224 | standard_metadata.egress_spec = port;
225 | }
226 | else{
227 | standard_metadata.egress_spec = 0;
228 | }
229 | meta.meta.custom_value = 0x4;
230 | }
231 |
232 | table port_table {
233 | key = {
234 | standard_metadata.ingress_port: exact;
235 | }
236 | actions = {
237 | set_egress_port;
238 | drop;
239 | }
240 | size = 256;
241 | default_action = drop();
242 | }
243 |
244 | apply {
245 | hdr.ethernet.setValid();
246 | #hdr.lowpan.unsed = 1111111111111111111111111111111;
247 | #hdr.ethernet.dstAddr = 0x112233445566;
248 | #hdr.ethernet.srcAddr = 0x665544332211;
249 | port_table.apply();
250 | }
251 | }
252 |
253 | /*************************************************************************
254 | **************** E G R E S S P R O C E S S I N G *******************
255 | *************************************************************************/
256 |
257 | control MyEgress(inout headers hdr,
258 | inout metadata meta,
259 | inout standard_metadata_t standard_metadata) {
260 | apply {
261 | }
262 | }
263 |
264 | /*************************************************************************
265 | ************* C H E C K S U M C O M P U T A T I O N **************
266 | *************************************************************************/
267 |
268 | control MyComputeChecksum(inout headers hdr, inout metadata meta) {
269 | apply {
270 | }
271 | }
272 |
273 | /*************************************************************************
274 | *********************** D E P A R S E R *******************************
275 | *************************************************************************/
276 |
277 | control MyDeparser(packet_out packet, in headers hdr) {
278 | apply {
279 | packet.emit(hdr.ethernet);
280 | packet.emit(hdr.lowpan);
281 | packet.emit(hdr.ipv6);
282 | packet.emit(hdr.icmpv6_dio);
283 | packet.emit(hdr.icmpv6_dao);
284 | packet.emit(hdr.icmpv6_daoack);
285 | packet.emit(hdr.icmpv6_dis);
286 | }
287 | }
288 |
289 | /*************************************************************************
290 | *********************** S W I T C H *******************************
291 | *************************************************************************/
292 |
293 | //switch architecture
294 | V1Switch(
295 | MyParser(),
296 | MyVerifyChecksum(),
297 | MyIngress(),
298 | MyEgress(),
299 | MyComputeChecksum(),
300 | MyDeparser()
301 | ) main;
302 |
--------------------------------------------------------------------------------
/headers.py:
--------------------------------------------------------------------------------
1 | from scapy.all import *
2 | from scapy.fields import *
3 |
4 | class Lowpan(Packet):
5 | name = "Lowpan"
6 | fields_desc = [
7 | ShortField("dispatch", 0),
8 | ShortField("identification", 0),
9 | ShortField("ha_len", 0),
10 | LongField("unused", 0),
11 | ShortField("ethType", 0)
12 | ]
13 |
14 | class Lowpan1(Packet):
15 | name = "Lowpan"
16 | fields_desc = [
17 | ShortField("dispatch", 0),
18 | ShortField("identification", 0),
19 | ShortField("ha_len", 0),
20 | LongField("unused", 0),
21 | ShortField("ethType", 0)
22 | ]
23 |
24 | class Lowpan2(Packet):
25 | name = "Lowpan"
26 | fields_desc = [
27 | ShortField("dispatch", 0),
28 | ShortField("identification", 0),
29 | ShortField("ha_len", 0),
30 | LongField("unused", 0),
31 | ShortField("ethType", 0)
32 | ]
33 |
34 | class Lowpan3(Packet):
35 | name = "Lowpan"
36 | fields_desc = [
37 | ShortField("dispatch", 0),
38 | ShortField("identification", 0),
39 | ShortField("ha_len", 0),
40 | LongField("unused", 0),
41 | ShortField("ethType", 0)
42 | ]
43 |
44 |
45 | class IPv6Custom(Packet):
46 | name = "IPv6Custom"
47 | fields_desc = [
48 | BitField("version", 6, 4),
49 | BitField("trafficClass", 0, 8),
50 | BitField("flowLabel", 0, 20),
51 | ShortField("payloadLength", 0),
52 | ByteField("nextHeader", 0),
53 | ByteField("hopLimit", 0),
54 | IP6Field("srcAddr", "fe80::1"),
55 | IP6Field("dstAddr", "ff02::1a9b")
56 | ]
57 |
58 | class IPv6Custom1(Packet):
59 | name = "IPv6Custom"
60 | fields_desc = [
61 | BitField("version", 6, 4),
62 | BitField("trafficClass", 0, 8),
63 | BitField("flowLabel", 0, 20),
64 | ShortField("payloadLength", 0),
65 | ByteField("nextHeader", 0),
66 | ByteField("hopLimit", 0),
67 | IP6Field("srcAddr", "fe80::1"),
68 | IP6Field("dstAddr", "ff02::1a9b")
69 | ]
70 |
71 | class IPv6Custom2(Packet):
72 | name = "IPv6Custom"
73 | fields_desc = [
74 | BitField("version", 6, 4),
75 | BitField("trafficClass", 0, 8),
76 | BitField("flowLabel", 0, 20),
77 | ShortField("payloadLength", 0),
78 | ByteField("nextHeader", 0),
79 | ByteField("hopLimit", 0),
80 | IP6Field("srcAddr", "fe80::1"),
81 | IP6Field("dstAddr", "ff02::1a9b")
82 | ]
83 |
84 | # dis header
85 | class Icmpv6_dis(Packet):
86 | name = "Icmpv6_dis"
87 | fields_desc = [
88 | ByteField("type", 0),
89 | ByteField("code", 0),
90 | ShortField("checksum", 0),
91 | ByteField("flags", 0),
92 | ByteField("reserved", 0),
93 | ]
94 |
95 | class IPv6Custom3(Packet):
96 | name = "IPv6Custom"
97 | fields_desc = [
98 | BitField("version", 6, 4),
99 | BitField("trafficClass", 0, 8),
100 | BitField("flowLabel", 0, 20),
101 | ShortField("payloadLength", 0),
102 | ByteField("nextHeader", 0),
103 | ByteField("hopLimit", 0),
104 | IP6Field("srcAddr", "fe80::1"),
105 | IP6Field("dstAddr", "ff02::1a9b")
106 | ]
107 |
108 | # dio header
109 | class Icmpv6_dio(Packet):
110 | name = "Icmpv6_dio"
111 | fields_desc = [
112 | ByteField("type", 0),
113 | ByteField("code", 0),
114 | ShortField("checksum", 0),
115 | ByteField("RPLInstanceID", 0),
116 | ByteField("version", 0),
117 | ShortField("rank", 0),
118 | ByteField("flags", 0),
119 | ByteField("DTSN", 0),
120 | ByteField("more_flags", 0),
121 | ByteField("reserved", 0),
122 | BitField("DODAGID", 0, 128),
123 | ByteField("optionType", 0),
124 | ByteField("optionLength", 0),
125 | ByteField("prefixLength", 0),
126 | ByteField("flag", 0),
127 | IntField("routeLifetime", 0),
128 | LongField("prefix", 0)
129 | ]
130 |
131 | # dao header
132 | class Icmpv6_dao(Packet):
133 | name = "Icmpv6_dao"
134 | fields_desc = [
135 | ByteField("type", 0),
136 | ByteField("code", 0),
137 | ShortField("checksum", 0),
138 | ByteField("RPLInstanceID", 0),
139 | ByteField("flag", 0),
140 | ByteField("reserved", 0),
141 | ByteField("seq", 0),
142 | BitField("DODAGID", 0, 128),
143 | ByteField("rplTarget", 0),
144 | ByteField("length", 0),
145 | ByteField("rplReserved", 0),
146 | ByteField("rplLength", 0),
147 | BitField("prefixTarget", 0, 128),
148 | ByteField("optType", 0),
149 | ByteField("optLength", 0),
150 | ByteField("optFlags", 0),
151 | ByteField("optPathControl", 0),
152 | ByteField("optPathSeq", 0),
153 | ByteField("optPathLifetime", 0),
154 | BitField("parent", 0, 128)
155 | ]
156 |
157 | class Icmpv6_dao_repeated(Packet):
158 | name = "Icmpv6_dao_repeated"
159 | fields_desc = [
160 | ByteField("type", 0),
161 | ByteField("code", 0),
162 | ShortField("checksum", 0),
163 | ByteField("RPLInstanceID", 0),
164 | ByteField("flag", 0),
165 | ByteField("reserved", 0),
166 | ByteField("seq", 0),
167 | BitField("DODAGID", 0, 128),
168 | ByteField("optionType", 0),
169 | ByteField("optionLength", 0),
170 | ByteField("rplReserved", 0),
171 | ByteField("prefixLength", 0),
172 | BitField("prefix", 0, 128),
173 | ByteField("ttime", 0),
174 | ByteField("len", 0),
175 | ByteField("flags", 0),
176 | ByteField("tcontrol", 0),
177 | ByteField("sequence", 0),
178 | ByteField("lifetime", 0),
179 | BitField("parent", 0, 128)
180 | ]
181 |
182 | class Icmpv6_dao_repeated1(Packet):
183 | name = "Icmpv6_dao_repeated1"
184 | fields_desc = [
185 | ByteField("type", 0),
186 | ByteField("code", 0),
187 | ShortField("checksum", 0),
188 | ByteField("RPLInstanceID", 0),
189 | ByteField("flag", 0),
190 | ByteField("reserved", 0),
191 | ByteField("seq", 0),
192 | BitField("DODAGID", 0, 128),
193 | ByteField("optionType1", 0),
194 | ByteField("optionLength1", 0),
195 | ByteField("rplReserved1", 0),
196 | ByteField("prefixLength1", 0),
197 | BitField("prefix1", 0, 128),
198 | ByteField("ttime", 0),
199 | ByteField("len", 0),
200 | ByteField("flags", 0),
201 | ByteField("tcontrol", 0),
202 | ByteField("sequence", 0),
203 | ByteField("lifetime", 0),
204 | BitField("parent", 0, 128),
205 | ByteField("optionType2", 0),
206 | ByteField("optionLength2", 0),
207 | ByteField("rplReserved2", 0),
208 | ByteField("prefixLength2", 0),
209 | BitField("prefix2", 0, 128)
210 | ]
211 |
212 | class Icmpv6_dao_repeated2(Packet):
213 | name = "Icmpv6_dao_repeated2"
214 | fields_desc = [
215 | ByteField("type", 0),
216 | ByteField("code", 0),
217 | ShortField("checksum", 0),
218 | ByteField("RPLInstanceID", 0),
219 | ByteField("flag", 0),
220 | ByteField("reserved", 0),
221 | ByteField("seq", 0),
222 | BitField("DODAGID", 0, 128),
223 | ByteField("optionType1", 0),
224 | ByteField("optionLength1", 0),
225 | ByteField("rplReserved1", 0),
226 | ByteField("prefixLength1", 0),
227 | BitField("prefix1", 0, 128),
228 | ByteField("ttime", 0),
229 | ByteField("len", 0),
230 | ByteField("flags", 0),
231 | ByteField("tcontrol", 0),
232 | ByteField("sequence", 0),
233 | ByteField("lifetime", 0),
234 | BitField("parent", 0, 128),
235 | ByteField("optionType2", 0),
236 | ByteField("optionLength2", 0),
237 | ByteField("rplReserved2", 0),
238 | ByteField("prefixLength2", 0),
239 | BitField("prefix2", 0, 128),
240 | ByteField("optionType3", 0),
241 | ByteField("optionLength3", 0),
242 | ByteField("rplReserved3", 0),
243 | ByteField("prefixLength3", 0),
244 | BitField("prefix3", 0, 128)
245 | ]
246 |
247 | class Icmpv6_dao_repeated3(Packet):
248 | name = "Icmpv6_dao_repeated3"
249 | fields_desc = [
250 | ByteField("type", 0),
251 | ByteField("code", 0),
252 | ShortField("checksum", 0),
253 | ByteField("RPLInstanceID", 0),
254 | ByteField("flag", 0),
255 | ByteField("reserved", 0),
256 | ByteField("seq", 0),
257 | BitField("DODAGID", 0, 128),
258 | ByteField("optionType1", 0),
259 | ByteField("optionLength1", 0),
260 | ByteField("rplReserved1", 0),
261 | ByteField("prefixLength1", 0),
262 | BitField("prefix1", 0, 128),
263 | ByteField("ttime", 0),
264 | ByteField("len", 0),
265 | ByteField("flags", 0),
266 | ByteField("tcontrol", 0),
267 | ByteField("sequence", 0),
268 | ByteField("lifetime", 0),
269 | BitField("parent", 0, 128),
270 | ByteField("optionType2", 0),
271 | ByteField("optionLength2", 0),
272 | ByteField("rplReserved2", 0),
273 | ByteField("prefixLength2", 0),
274 | BitField("prefix2", 0, 128),
275 | ByteField("optionType3", 0),
276 | ByteField("optionLength3", 0),
277 | ByteField("rplReserved3", 0),
278 | ByteField("prefixLength3", 0),
279 | BitField("prefix3", 0, 128),
280 | ByteField("optionType4", 0),
281 | ByteField("optionLength4", 0),
282 | ByteField("rplReserved4", 0),
283 | ByteField("prefixLength4", 0),
284 | BitField("prefix4", 0, 128)
285 | ]
286 |
287 | class Icmpv6_dao_repeated4(Packet):
288 | name = "Icmpv6_dao_repeated4"
289 | fields_desc = [
290 | ByteField("type", 0),
291 | ByteField("code", 0),
292 | ShortField("checksum", 0),
293 | ByteField("RPLInstanceID", 0),
294 | ByteField("flag", 0),
295 | ByteField("reserved", 0),
296 | ByteField("seq", 0),
297 | BitField("DODAGID", 0, 128),
298 | ByteField("optionType1", 0),
299 | ByteField("optionLength1", 0),
300 | ByteField("rplReserved1", 0),
301 | ByteField("prefixLength1", 0),
302 | BitField("prefix1", 0, 128),
303 | ByteField("ttime", 0),
304 | ByteField("len", 0),
305 | ByteField("flags", 0),
306 | ByteField("tcontrol", 0),
307 | ByteField("sequence", 0),
308 | ByteField("lifetime", 0),
309 | BitField("parent", 0, 128),
310 | ByteField("optionType2", 0),
311 | ByteField("optionLength2", 0),
312 | ByteField("rplReserved2", 0),
313 | ByteField("prefixLength2", 0),
314 | BitField("prefix2", 0, 128),
315 | ByteField("optionType3", 0),
316 | ByteField("optionLength3", 0),
317 | ByteField("rplReserved3", 0),
318 | ByteField("prefixLength3", 0),
319 | BitField("prefix3", 0, 128),
320 | ByteField("optionType4", 0),
321 | ByteField("optionLength4", 0),
322 | ByteField("rplReserved4", 0),
323 | ByteField("prefixLength4", 0),
324 | BitField("prefix4", 0, 128),
325 | ByteField("optionType5", 0),
326 | ByteField("optionLength5", 0),
327 | ByteField("rplReserved5", 0),
328 | ByteField("prefixLength5", 0),
329 | BitField("prefix5", 0, 128)
330 | ]
331 |
332 | # dao-ack header
333 | class Icmpv6_daoack(Packet):
334 | name = "Icmpv6_daoack"
335 | fields_desc = [
336 | ByteField("type", 0),
337 | ByteField("code", 0),
338 | ShortField("checksum", 0),
339 | ByteField("RPLInstanceID", 0),
340 | ByteField("flag", 0),
341 | ByteField("seq", 0),
342 | ByteField("status", 0),
343 | BitField("DODAGID", 0, 128),
344 | ]
--------------------------------------------------------------------------------
/p4/lowpan-storing.p4:
--------------------------------------------------------------------------------
1 | /* -*- P4_16 -*- */
2 | #include
3 | #include
4 |
5 | /*************************************************************************
6 | *********************** H E A D E R S ***********************************
7 | *************************************************************************/
8 |
9 | typedef bit<9> egressSpec_t;
10 | typedef bit<48> macAddr_t;
11 | typedef bit<32> ipv4Addr_t;
12 | typedef bit<16> tcpPort_t;
13 | typedef bit<128> ipv6Addr_t;
14 |
15 |
16 | // Cabeçalho 6LoWPAN
17 | header lowpan_t {
18 | bit<16> dispatch; // Tipo de pacote (IPv6, Fragmentação, etc.)
19 | bit<16> identification; // Identificação para fragmentação
20 | bit<16> ha_len;
21 | bit<64> unsed;
22 | bit<16> ethType;
23 | }
24 |
25 | header ethernet_t {
26 | macAddr_t dstAddr;
27 | macAddr_t srcAddr;
28 | bit<16> etherType;
29 | }
30 |
31 | header tcp_t {
32 | tcpPort_t srcPort;
33 | tcpPort_t dstPort;
34 | bit<32> seqNo;
35 | bit<32> ackNo;
36 | bit<4> dataOffset;
37 | bit<4> res;
38 | bit<8> flags;
39 | bit<16> window;
40 | bit<16> checksum;
41 | bit<16> urgentPtr;
42 | }
43 |
44 | header ipv6_t {
45 | bit<4> version;
46 | bit<8> trafficClass;
47 | bit<20> flowLabel;
48 | bit<16> payloadLength;
49 | bit<8> nextHeader;
50 | bit<8> hopLimit;
51 | bit<128> srcAddr;
52 | bit<128> dstAddr;
53 | }
54 |
55 | header icmpv6_dio_t {
56 | bit<8> type;
57 | bit<8> code;
58 | bit<16> checksum;
59 | // Campos adicionais específicos para RPL Control Message
60 | bit<8> RPLInstanceID;
61 | bit<8> version;
62 | bit<16> rank;
63 | bit<8> flags;
64 | bit<8> DTSN;
65 | bit<8> more_flags;
66 | bit<8> reserved;
67 | bit<128> DODAGID;
68 | // Opção de Roteamento
69 | bit<8> optionType;
70 | bit<8> optionLength;
71 | bit<8> prefixLength;
72 | bit<8> flag;
73 | bit<32> routeLifetime;
74 | bit<64> prefix;
75 | }
76 |
77 | header icmpv6_daoack_t {
78 | bit<8> type;
79 | bit<8> code;
80 | bit<16> checksum;
81 | bit<8> RPLInstanceID;
82 | bit<8> flag;
83 | bit<8> seq;
84 | bit<8> status;
85 | bit<128> DODAGID;
86 | }
87 |
88 | header icmpv6_dis_t {
89 | bit<8> type;
90 | bit<8> code;
91 | bit<16> checksum;
92 | bit<8> flags;
93 | bit<8> reserved;
94 | }
95 |
96 | header icmpv6_dao_repeated_t {
97 | bit<8> type;
98 | bit<8> code;
99 | bit<16> checksum;
100 | bit<8> RPLInstanceID;
101 | bit<8> flag;
102 | bit<8> reserved;
103 | bit<8> seq;
104 | bit<128> DODAGID;
105 | bit<8> optionType;
106 | bit<8> optionLength;
107 | bit<8> rplReserved;
108 | bit<8> prefixLength;
109 | bit<128> prefix;
110 | bit<8> ttime;
111 | bit<8> len;
112 | bit<8> flags;
113 | bit<8> tcontrol;
114 | bit<8> sequence;
115 | bit<8> lifetime;
116 | bit<128> parent;
117 | }
118 |
119 | header icmpv6_dao_repeated1_t {
120 | bit<8> type;
121 | bit<8> code;
122 | bit<16> checksum;
123 | bit<8> RPLInstanceID;
124 | bit<8> flag;
125 | bit<8> reserved;
126 | bit<8> seq;
127 | bit<128> DODAGID;
128 | bit<8> optionType1;
129 | bit<8> optionLength1;
130 | bit<8> rplReserved1;
131 | bit<8> prefixLength1;
132 | bit<128> prefix1;
133 | bit<8> optionType2;
134 | bit<8> optionLength2;
135 | bit<8> rplReserved2;
136 | bit<8> prefixLength2;
137 | bit<128> prefix2;
138 | }
139 |
140 | header icmpv6_dao_repeated2_t {
141 | bit<8> type;
142 | bit<8> code;
143 | bit<16> checksum;
144 | bit<8> RPLInstanceID;
145 | bit<8> flag;
146 | bit<8> reserved;
147 | bit<8> seq;
148 | bit<128> DODAGID;
149 | bit<8> optionType1;
150 | bit<8> optionLength1;
151 | bit<8> rplReserved1;
152 | bit<8> prefixLength1;
153 | bit<128> prefix1;
154 | bit<8> optionType2;
155 | bit<8> optionLength2;
156 | bit<8> rplReserved2;
157 | bit<8> prefixLength2;
158 | bit<128> prefix2;
159 | bit<8> optionType3;
160 | bit<8> optionLength3;
161 | bit<8> rplReserved3;
162 | bit<8> prefixLength3;
163 | bit<128> prefix3;
164 | }
165 |
166 | header icmpv6_dao_repeated3_t {
167 | bit<8> type;
168 | bit<8> code;
169 | bit<16> checksum;
170 | bit<8> RPLInstanceID;
171 | bit<8> flag;
172 | bit<8> reserved;
173 | bit<8> seq;
174 | bit<128> DODAGID;
175 | bit<8> optionType1;
176 | bit<8> optionLength1;
177 | bit<8> rplReserved1;
178 | bit<8> prefixLength1;
179 | bit<128> prefix1;
180 | bit<8> optionType2;
181 | bit<8> optionLength2;
182 | bit<8> rplReserved2;
183 | bit<8> prefixLength2;
184 | bit<128> prefix2;
185 | bit<8> optionType3;
186 | bit<8> optionLength3;
187 | bit<8> rplReserved3;
188 | bit<8> prefixLength3;
189 | bit<128> prefix3;
190 | bit<8> optionType4;
191 | bit<8> optionLength4;
192 | bit<8> rplReserved4;
193 | bit<8> prefixLength4;
194 | bit<128> prefix4;
195 | }
196 |
197 | header icmpv6_dao_repeated4_t {
198 | bit<8> type;
199 | bit<8> code;
200 | bit<16> checksum;
201 | bit<8> RPLInstanceID;
202 | bit<8> flag;
203 | bit<8> reserved;
204 | bit<8> seq;
205 | bit<128> DODAGID;
206 | bit<8> optionType1;
207 | bit<8> optionLength1;
208 | bit<8> rplReserved1;
209 | bit<8> prefixLength1;
210 | bit<128> prefix1;
211 | bit<8> optionType2;
212 | bit<8> optionLength2;
213 | bit<8> rplReserved2;
214 | bit<8> prefixLength2;
215 | bit<128> prefix2;
216 | bit<8> optionType3;
217 | bit<8> optionLength3;
218 | bit<8> rplReserved3;
219 | bit<8> prefixLength3;
220 | bit<128> prefix3;
221 | bit<8> optionType4;
222 | bit<8> optionLength4;
223 | bit<8> rplReserved4;
224 | bit<8> prefixLength4;
225 | bit<128> prefix4;
226 | bit<8> optionType5;
227 | bit<8> optionLength5;
228 | bit<8> rplReserved5;
229 | bit<8> prefixLength5;
230 | bit<128> prefix5;
231 | }
232 |
233 | header icmpv6_dao_t {
234 | bit<8> type;
235 | bit<8> code;
236 | bit<16> checksum;
237 | bit<8> RPLInstanceID;
238 | bit<8> flag;
239 | bit<8> reserved;
240 | bit<8> seq;
241 | bit<128> DODAGID;
242 | }
243 |
244 | header metadata_t {
245 | bit<8> custom_value;
246 | }
247 |
248 | struct metadata {
249 | metadata_t meta;
250 | }
251 |
252 | struct headers {
253 | ethernet_t ethernet;
254 | lowpan_t lowpan;
255 | ipv6_t ipv6;
256 | icmpv6_dio_t icmpv6_dio;
257 | icmpv6_daoack_t icmpv6_daoack;
258 | icmpv6_dao_t icmpv6_dao;
259 | icmpv6_dao_repeated_t icmpv6_dao_repeated;
260 | icmpv6_dao_repeated1_t icmpv6_dao_repeated1;
261 | icmpv6_dao_repeated2_t icmpv6_dao_repeated2;
262 | icmpv6_dao_repeated3_t icmpv6_dao_repeated3;
263 | icmpv6_dao_repeated4_t icmpv6_dao_repeated4;
264 | icmpv6_dis_t icmpv6_dis;
265 | }
266 |
267 | /*************************************************************************
268 | *********************** P A R S E R ***********************************
269 | *************************************************************************/
270 |
271 | parser MyParser(packet_in packet,
272 | out headers hdr,
273 | inout metadata meta,
274 | inout standard_metadata_t standard_metadata) {
275 |
276 | state start {
277 | packet.extract(hdr.lowpan);
278 | transition select(hdr.lowpan.ethType) {
279 | 0x86dd: parse_ipv6;
280 | default: accept;
281 | }
282 | }
283 |
284 | state parse_ipv6 {
285 | packet.extract(hdr.ipv6);
286 | transition select(hdr.ipv6.payloadLength, hdr.ipv6.srcAddr) {
287 | (0x2C, 0xff02_0000_0000_0000_0000_0000_0000_001a): parse_icmpv6_dio;
288 | (0x06, _): parse_icmpv6_dis; //6
289 | (0x42, _): parse_icmpv6_dao_repeated; //66
290 | (0x56, _): parse_icmpv6_dao_repeated1; //86
291 | (0x6A, _): parse_icmpv6_dao_repeated2; //106
292 | (0x7E, _): parse_icmpv6_dao_repeated3; //126
293 | (0x92, _): parse_icmpv6_dao_repeated4; //146
294 | (0x18, _): parse_icmpv6_daoack; //24
295 | #default: accept;
296 | }
297 | }
298 |
299 | state parse_icmpv6_dio {
300 | packet.extract(hdr.icmpv6_dio);
301 | meta.meta.custom_value = hdr.icmpv6_dio.code;
302 | transition accept;
303 | }
304 |
305 | state parse_icmpv6_dis {
306 | packet.extract(hdr.icmpv6_dis);
307 | meta.meta.custom_value = hdr.icmpv6_dis.code;
308 | transition accept;
309 | }
310 |
311 | state parse_icmpv6_dao_repeated {
312 | packet.extract(hdr.icmpv6_dao_repeated);
313 | meta.meta.custom_value = hdr.icmpv6_dao_repeated.code;
314 | transition accept;
315 | }
316 |
317 | state parse_icmpv6_dao_repeated1 {
318 | packet.extract(hdr.icmpv6_dao_repeated1);
319 | meta.meta.custom_value = hdr.icmpv6_dao_repeated1.code;
320 | transition accept;
321 | }
322 |
323 | state parse_icmpv6_dao_repeated2 {
324 | packet.extract(hdr.icmpv6_dao_repeated2);
325 | meta.meta.custom_value = hdr.icmpv6_dao_repeated2.code;
326 | transition accept;
327 | }
328 |
329 | state parse_icmpv6_dao_repeated3 {
330 | packet.extract(hdr.icmpv6_dao_repeated3);
331 | meta.meta.custom_value = hdr.icmpv6_dao_repeated3.code;
332 | transition accept;
333 | }
334 |
335 | state parse_icmpv6_dao_repeated4 {
336 | packet.extract(hdr.icmpv6_dao_repeated4);
337 | meta.meta.custom_value = hdr.icmpv6_dao_repeated4.code;
338 | transition accept;
339 | }
340 |
341 | state parse_icmpv6_daoack {
342 | packet.extract(hdr.icmpv6_daoack);
343 | meta.meta.custom_value = hdr.icmpv6_daoack.code;
344 | transition accept;
345 | }
346 | }
347 |
348 | /*************************************************************************
349 | ************ C H E C K S U M V E R I F I C A T I O N *************
350 | *************************************************************************/
351 |
352 | control MyVerifyChecksum(inout headers hdr, inout metadata meta) {
353 | apply { }
354 | }
355 |
356 | /*************************************************************************
357 | ************** I N G R E S S P R O C E S S I N G *******************
358 | *************************************************************************/
359 |
360 | control MyIngress(inout headers hdr,
361 | inout metadata meta,
362 | inout standard_metadata_t standard_metadata) {
363 |
364 | action drop() {
365 | mark_to_drop(standard_metadata);
366 | }
367 |
368 | action set_egress_port(egressSpec_t port) {
369 | if (meta.meta.custom_value == 0x0 || meta.meta.custom_value == 0x1 || meta.meta.custom_value == 0x2 || meta.meta.custom_value == 0x3){
370 | if (meta.meta.custom_value == 0x0) {
371 | hdr.ethernet.etherType = 0x1000; //dis
372 | }
373 | else if (meta.meta.custom_value == 0x1) {
374 | hdr.ethernet.etherType = 0x1001; //dio
375 | }
376 | else if (meta.meta.custom_value == 0x2) {
377 | hdr.ethernet.etherType = 0x1002; //dao
378 | }
379 | else if (meta.meta.custom_value == 0x3) {
380 | hdr.ethernet.etherType = 0x1003; //daoack
381 | }
382 | standard_metadata.egress_spec = port;
383 | }
384 | else{
385 | standard_metadata.egress_spec = 0;
386 | }
387 | }
388 |
389 | table port_table {
390 | key = {
391 | standard_metadata.ingress_port: exact;
392 | }
393 | actions = {
394 | set_egress_port;
395 | drop;
396 | }
397 | size = 256;
398 | default_action = drop();
399 | }
400 |
401 | apply {
402 | hdr.ethernet.setValid();
403 | #hdr.lowpan.unsed = 1111111111111111111111111111111;
404 | #hdr.ethernet.dstAddr = 0x112233445566;
405 | #hdr.ethernet.srcAddr = 0x665544332211;
406 | port_table.apply();
407 | }
408 | }
409 |
410 | /*************************************************************************
411 | **************** E G R E S S P R O C E S S I N G *******************
412 | *************************************************************************/
413 |
414 | control MyEgress(inout headers hdr,
415 | inout metadata meta,
416 | inout standard_metadata_t standard_metadata) {
417 | apply {
418 | }
419 | }
420 |
421 | /*************************************************************************
422 | ************* C H E C K S U M C O M P U T A T I O N **************
423 | *************************************************************************/
424 |
425 | control MyComputeChecksum(inout headers hdr, inout metadata meta) {
426 | apply {
427 | }
428 | }
429 |
430 | /*************************************************************************
431 | *********************** D E P A R S E R *******************************
432 | *************************************************************************/
433 |
434 | control MyDeparser(packet_out packet, in headers hdr) {
435 | apply {
436 | packet.emit(hdr.ethernet);
437 | packet.emit(hdr.lowpan);
438 | packet.emit(hdr.ipv6);
439 | packet.emit(hdr.icmpv6_dio);
440 | packet.emit(hdr.icmpv6_dao);
441 | packet.emit(hdr.icmpv6_dao_repeated);
442 | packet.emit(hdr.icmpv6_dao_repeated1);
443 | packet.emit(hdr.icmpv6_dao_repeated2);
444 | packet.emit(hdr.icmpv6_dao_repeated3);
445 | packet.emit(hdr.icmpv6_dao_repeated4);
446 | packet.emit(hdr.icmpv6_daoack);
447 | packet.emit(hdr.icmpv6_dis);
448 | }
449 | }
450 |
451 | /*************************************************************************
452 | *********************** S W I T C H *******************************
453 | *************************************************************************/
454 |
455 | //switch architecture
456 | V1Switch(
457 | MyParser(),
458 | MyVerifyChecksum(),
459 | MyIngress(),
460 | MyEgress(),
461 | MyComputeChecksum(),
462 | MyDeparser()
463 | ) main;
464 |
--------------------------------------------------------------------------------
/assets/images/5.eps:
--------------------------------------------------------------------------------
1 | %!PS-Adobe-3.0 EPSF-3.0
2 | %%Title: 5.eps
3 | %%Creator: Matplotlib v3.6.3, https://matplotlib.org/
4 | %%CreationDate: Thu Dec 12 08:42:00 2024
5 | %%Orientation: portrait
6 | %%BoundingBox: -54 180 666 612
7 | %%HiResBoundingBox: -54.000000 180.000000 666.000000 612.000000
8 | %%EndComments
9 | %%BeginProlog
10 | /mpldict 12 dict def
11 | mpldict begin
12 | /_d { bind def } bind def
13 | /m { moveto } _d
14 | /l { lineto } _d
15 | /r { rlineto } _d
16 | /c { curveto } _d
17 | /cl { closepath } _d
18 | /ce { closepath eofill } _d
19 | /box {
20 | m
21 | 1 index 0 r
22 | 0 exch r
23 | neg 0 r
24 | cl
25 | } _d
26 | /clipbox {
27 | box
28 | clip
29 | newpath
30 | } _d
31 | /sc { setcachedevice } _d
32 | %!PS-Adobe-3.0 Resource-Font
33 | %%Creator: Converted from TrueType to Type 3 by Matplotlib.
34 | 10 dict begin
35 | /FontName /DejaVuSans def
36 | /PaintType 0 def
37 | /FontMatrix [0.00048828125 0 0 0.00048828125 0 0] def
38 | /FontBBox [-2090 -948 3673 2524] def
39 | /FontType 3 def
40 | /Encoding [/space /B /e /n /o /zero /one /r /S /s /two /five /t /four /y /eight /six] def
41 | /CharStrings 18 dict dup begin
42 | /.notdef 0 def
43 | /space{651 0 0 0 0 0 sc
44 | ce} _d
45 | /B{1405 0 201 0 1260 1493 sc
46 | 403 713 m
47 | 403 166 l
48 | 727 166 l
49 | 836 166 916 188 968 233 c
50 | 1021 278 1047 347 1047 440 c
51 | 1047 533 1021 602 968 646 c
52 | 916 691 836 713 727 713 c
53 | 403 713 l
54 |
55 | 403 1327 m
56 | 403 877 l
57 | 702 877 l
58 | 801 877 874 895 922 932 c
59 | 971 969 995 1026 995 1102 c
60 | 995 1177 971 1234 922 1271 c
61 | 874 1308 801 1327 702 1327 c
62 | 403 1327 l
63 |
64 | 201 1493 m
65 | 717 1493 l
66 | 871 1493 990 1461 1073 1397 c
67 | 1156 1333 1198 1242 1198 1124 c
68 | 1198 1033 1177 960 1134 906 c
69 | 1091 852 1029 818 946 805 c
70 | 1045 784 1122 739 1177 671 c
71 | 1232 604 1260 519 1260 418 c
72 | 1260 285 1215 182 1124 109 c
73 | 1033 36 904 0 737 0 c
74 | 201 0 l
75 | 201 1493 l
76 |
77 | ce} _d
78 | /e{1260 0 113 -29 1151 1147 sc
79 | 1151 606 m
80 | 1151 516 l
81 | 305 516 l
82 | 313 389 351 293 419 226 c
83 | 488 160 583 127 705 127 c
84 | 776 127 844 136 910 153 c
85 | 977 170 1043 196 1108 231 c
86 | 1108 57 l
87 | 1042 29 974 8 905 -7 c
88 | 836 -22 765 -29 694 -29 c
89 | 515 -29 374 23 269 127 c
90 | 165 231 113 372 113 549 c
91 | 113 732 162 878 261 985 c
92 | 360 1093 494 1147 662 1147 c
93 | 813 1147 932 1098 1019 1001 c
94 | 1107 904 1151 773 1151 606 c
95 |
96 | 967 660 m
97 | 966 761 937 841 882 901 c
98 | 827 961 755 991 664 991 c
99 | 561 991 479 962 417 904 c
100 | 356 846 320 764 311 659 c
101 | 967 660 l
102 |
103 | ce} _d
104 | /n{1298 0 186 0 1124 1147 sc
105 | 1124 676 m
106 | 1124 0 l
107 | 940 0 l
108 | 940 670 l
109 | 940 776 919 855 878 908 c
110 | 837 961 775 987 692 987 c
111 | 593 987 514 955 457 892 c
112 | 400 829 371 742 371 633 c
113 | 371 0 l
114 | 186 0 l
115 | 186 1120 l
116 | 371 1120 l
117 | 371 946 l
118 | 415 1013 467 1064 526 1097 c
119 | 586 1130 655 1147 733 1147 c
120 | 862 1147 959 1107 1025 1027 c
121 | 1091 948 1124 831 1124 676 c
122 |
123 | ce} _d
124 | /o{1253 0 113 -29 1141 1147 sc
125 | 627 991 m
126 | 528 991 450 952 393 875 c
127 | 336 798 307 693 307 559 c
128 | 307 425 335 319 392 242 c
129 | 449 165 528 127 627 127 c
130 | 725 127 803 166 860 243 c
131 | 917 320 946 426 946 559 c
132 | 946 692 917 797 860 874 c
133 | 803 952 725 991 627 991 c
134 |
135 | 627 1147 m
136 | 787 1147 913 1095 1004 991 c
137 | 1095 887 1141 743 1141 559 c
138 | 1141 376 1095 232 1004 127 c
139 | 913 23 787 -29 627 -29 c
140 | 466 -29 340 23 249 127 c
141 | 158 232 113 376 113 559 c
142 | 113 743 158 887 249 991 c
143 | 340 1095 466 1147 627 1147 c
144 |
145 | ce} _d
146 | /zero{1303 0 135 -29 1167 1520 sc
147 | 651 1360 m
148 | 547 1360 469 1309 416 1206 c
149 | 364 1104 338 950 338 745 c
150 | 338 540 364 387 416 284 c
151 | 469 182 547 131 651 131 c
152 | 756 131 834 182 886 284 c
153 | 939 387 965 540 965 745 c
154 | 965 950 939 1104 886 1206 c
155 | 834 1309 756 1360 651 1360 c
156 |
157 | 651 1520 m
158 | 818 1520 946 1454 1034 1321 c
159 | 1123 1189 1167 997 1167 745 c
160 | 1167 494 1123 302 1034 169 c
161 | 946 37 818 -29 651 -29 c
162 | 484 -29 356 37 267 169 c
163 | 179 302 135 494 135 745 c
164 | 135 997 179 1189 267 1321 c
165 | 356 1454 484 1520 651 1520 c
166 |
167 | ce} _d
168 | /one{1303 0 225 0 1114 1493 sc
169 | 254 170 m
170 | 584 170 l
171 | 584 1309 l
172 | 225 1237 l
173 | 225 1421 l
174 | 582 1493 l
175 | 784 1493 l
176 | 784 170 l
177 | 1114 170 l
178 | 1114 0 l
179 | 254 0 l
180 | 254 170 l
181 |
182 | ce} _d
183 | /r{842 0 186 0 842 1147 sc
184 | 842 948 m
185 | 821 960 799 969 774 974 c
186 | 750 980 723 983 694 983 c
187 | 590 983 510 949 454 881 c
188 | 399 814 371 717 371 590 c
189 | 371 0 l
190 | 186 0 l
191 | 186 1120 l
192 | 371 1120 l
193 | 371 946 l
194 | 410 1014 460 1064 522 1097 c
195 | 584 1130 659 1147 748 1147 c
196 | 761 1147 775 1146 790 1144 c
197 | 805 1143 822 1140 841 1137 c
198 | 842 948 l
199 |
200 | ce} _d
201 | /S{1300 0 135 -29 1186 1520 sc
202 | 1096 1444 m
203 | 1096 1247 l
204 | 1019 1284 947 1311 879 1329 c
205 | 811 1347 745 1356 682 1356 c
206 | 572 1356 487 1335 427 1292 c
207 | 368 1249 338 1189 338 1110 c
208 | 338 1044 358 994 397 960 c
209 | 437 927 512 900 623 879 c
210 | 745 854 l
211 | 896 825 1007 775 1078 702 c
212 | 1150 630 1186 533 1186 412 c
213 | 1186 267 1137 158 1040 83 c
214 | 943 8 801 -29 614 -29 c
215 | 543 -29 468 -21 388 -5 c
216 | 309 11 226 35 141 66 c
217 | 141 274 l
218 | 223 228 303 193 382 170 c
219 | 461 147 538 135 614 135 c
220 | 729 135 818 158 881 203 c
221 | 944 248 975 313 975 397 c
222 | 975 470 952 528 907 569 c
223 | 862 610 789 641 686 662 c
224 | 563 686 l
225 | 412 716 303 763 236 827 c
226 | 169 891 135 980 135 1094 c
227 | 135 1226 181 1330 274 1406 c
228 | 367 1482 496 1520 659 1520 c
229 | 729 1520 800 1514 873 1501 c
230 | 946 1488 1020 1469 1096 1444 c
231 |
232 | ce} _d
233 | /s{1067 0 111 -29 967 1147 sc
234 | 907 1087 m
235 | 907 913 l
236 | 855 940 801 960 745 973 c
237 | 689 986 631 993 571 993 c
238 | 480 993 411 979 365 951 c
239 | 320 923 297 881 297 825 c
240 | 297 782 313 749 346 724 c
241 | 379 700 444 677 543 655 c
242 | 606 641 l
243 | 737 613 829 573 884 522 c
244 | 939 471 967 400 967 309 c
245 | 967 205 926 123 843 62 c
246 | 761 1 648 -29 504 -29 c
247 | 444 -29 381 -23 316 -11 c
248 | 251 0 183 18 111 41 c
249 | 111 231 l
250 | 179 196 246 169 312 151 c
251 | 378 134 443 125 508 125 c
252 | 595 125 661 140 708 169 c
253 | 755 199 778 241 778 295 c
254 | 778 345 761 383 727 410 c
255 | 694 437 620 462 506 487 c
256 | 442 502 l
257 | 328 526 246 563 195 612 c
258 | 144 662 119 730 119 817 c
259 | 119 922 156 1004 231 1061 c
260 | 306 1118 412 1147 549 1147 c
261 | 617 1147 681 1142 741 1132 c
262 | 801 1122 856 1107 907 1087 c
263 |
264 | ce} _d
265 | /two{1303 0 150 0 1098 1520 sc
266 | 393 170 m
267 | 1098 170 l
268 | 1098 0 l
269 | 150 0 l
270 | 150 170 l
271 | 227 249 331 356 463 489 c
272 | 596 623 679 709 713 748 c
273 | 778 821 823 882 848 932 c
274 | 874 983 887 1032 887 1081 c
275 | 887 1160 859 1225 803 1275 c
276 | 748 1325 675 1350 586 1350 c
277 | 523 1350 456 1339 385 1317 c
278 | 315 1295 240 1262 160 1217 c
279 | 160 1421 l
280 | 241 1454 317 1478 388 1495 c
281 | 459 1512 523 1520 582 1520 c
282 | 737 1520 860 1481 952 1404 c
283 | 1044 1327 1090 1223 1090 1094 c
284 | 1090 1033 1078 974 1055 919 c
285 | 1032 864 991 800 930 725 c
286 | 913 706 860 650 771 557 c
287 | 682 465 556 336 393 170 c
288 |
289 | ce} _d
290 | /five{1303 0 158 -29 1124 1493 sc
291 | 221 1493 m
292 | 1014 1493 l
293 | 1014 1323 l
294 | 406 1323 l
295 | 406 957 l
296 | 435 967 465 974 494 979 c
297 | 523 984 553 987 582 987 c
298 | 749 987 881 941 978 850 c
299 | 1075 759 1124 635 1124 479 c
300 | 1124 318 1074 193 974 104 c
301 | 874 15 733 -29 551 -29 c
302 | 488 -29 424 -24 359 -13 c
303 | 294 -2 227 14 158 35 c
304 | 158 238 l
305 | 218 205 280 181 344 165 c
306 | 408 149 476 141 547 141 c
307 | 662 141 754 171 821 232 c
308 | 888 293 922 375 922 479 c
309 | 922 583 888 665 821 726 c
310 | 754 787 662 817 547 817 c
311 | 493 817 439 811 385 799 c
312 | 332 787 277 768 221 743 c
313 | 221 1493 l
314 |
315 | ce} _d
316 | /t{803 0 55 0 754 1438 sc
317 | 375 1438 m
318 | 375 1120 l
319 | 754 1120 l
320 | 754 977 l
321 | 375 977 l
322 | 375 369 l
323 | 375 278 387 219 412 193 c
324 | 437 167 488 154 565 154 c
325 | 754 154 l
326 | 754 0 l
327 | 565 0 l
328 | 423 0 325 26 271 79 c
329 | 217 132 190 229 190 369 c
330 | 190 977 l
331 | 55 977 l
332 | 55 1120 l
333 | 190 1120 l
334 | 190 1438 l
335 | 375 1438 l
336 |
337 | ce} _d
338 | /four{1303 0 100 0 1188 1493 sc
339 | 774 1317 m
340 | 264 520 l
341 | 774 520 l
342 | 774 1317 l
343 |
344 | 721 1493 m
345 | 975 1493 l
346 | 975 520 l
347 | 1188 520 l
348 | 1188 352 l
349 | 975 352 l
350 | 975 0 l
351 | 774 0 l
352 | 774 352 l
353 | 100 352 l
354 | 100 547 l
355 | 721 1493 l
356 |
357 | ce} _d
358 | /y{1212 0 61 -426 1151 1120 sc
359 | 659 -104 m
360 | 607 -237 556 -324 507 -365 c
361 | 458 -406 392 -426 309 -426 c
362 | 162 -426 l
363 | 162 -272 l
364 | 270 -272 l
365 | 321 -272 360 -260 388 -236 c
366 | 416 -212 447 -155 481 -66 c
367 | 514 18 l
368 | 61 1120 l
369 | 256 1120 l
370 | 606 244 l
371 | 956 1120 l
372 | 1151 1120 l
373 | 659 -104 l
374 |
375 | ce} _d
376 | /eight{1303 0 139 -29 1163 1520 sc
377 | 651 709 m
378 | 555 709 479 683 424 632 c
379 | 369 581 342 510 342 420 c
380 | 342 330 369 259 424 208 c
381 | 479 157 555 131 651 131 c
382 | 747 131 823 157 878 208 c
383 | 933 260 961 331 961 420 c
384 | 961 510 933 581 878 632 c
385 | 823 683 748 709 651 709 c
386 |
387 | 449 795 m
388 | 362 816 295 857 246 916 c
389 | 198 975 174 1048 174 1133 c
390 | 174 1252 216 1347 301 1416 c
391 | 386 1485 503 1520 651 1520 c
392 | 800 1520 916 1485 1001 1416 c
393 | 1086 1347 1128 1252 1128 1133 c
394 | 1128 1048 1104 975 1055 916 c
395 | 1007 857 940 816 854 795 c
396 | 951 772 1027 728 1081 662 c
397 | 1136 596 1163 515 1163 420 c
398 | 1163 275 1119 164 1030 87 c
399 | 942 10 816 -29 651 -29 c
400 | 486 -29 360 10 271 87 c
401 | 183 164 139 275 139 420 c
402 | 139 515 166 596 221 662 c
403 | 276 728 352 772 449 795 c
404 |
405 | 375 1114 m
406 | 375 1037 399 976 447 933 c
407 | 496 890 564 868 651 868 c
408 | 738 868 805 890 854 933 c
409 | 903 976 928 1037 928 1114 c
410 | 928 1191 903 1252 854 1295 c
411 | 805 1338 738 1360 651 1360 c
412 | 564 1360 496 1338 447 1295 c
413 | 399 1252 375 1191 375 1114 c
414 |
415 | ce} _d
416 | /six{1303 0 143 -29 1174 1520 sc
417 | 676 827 m
418 | 585 827 513 796 460 734 c
419 | 407 672 381 587 381 479 c
420 | 381 372 407 287 460 224 c
421 | 513 162 585 131 676 131 c
422 | 767 131 838 162 891 224 c
423 | 944 287 971 372 971 479 c
424 | 971 587 944 672 891 734 c
425 | 838 796 767 827 676 827 c
426 |
427 | 1077 1460 m
428 | 1077 1276 l
429 | 1026 1300 975 1318 923 1331 c
430 | 872 1344 821 1350 770 1350 c
431 | 637 1350 535 1305 464 1215 c
432 | 394 1125 354 989 344 807 c
433 | 383 865 433 909 492 940 c
434 | 551 971 617 987 688 987 c
435 | 838 987 956 941 1043 850 c
436 | 1130 759 1174 636 1174 479 c
437 | 1174 326 1129 203 1038 110 c
438 | 947 17 827 -29 676 -29 c
439 | 503 -29 371 37 280 169 c
440 | 189 302 143 494 143 745 c
441 | 143 981 199 1169 311 1309 c
442 | 423 1450 573 1520 762 1520 c
443 | 813 1520 864 1515 915 1505 c
444 | 967 1495 1021 1480 1077 1460 c
445 |
446 | ce} _d
447 | end readonly def
448 |
449 | /BuildGlyph {
450 | exch begin
451 | CharStrings exch
452 | 2 copy known not {pop /.notdef} if
453 | true 3 1 roll get exec
454 | end
455 | } _d
456 |
457 | /BuildChar {
458 | 1 index /Encoding get exch get
459 | 1 index /BuildGlyph get exec
460 | } _d
461 |
462 | FontName currentdict end definefont pop
463 | %!PS-Adobe-3.0 Resource-Font
464 | %%Creator: Converted from TrueType to Type 3 by Matplotlib.
465 | 10 dict begin
466 | /FontName /DejaVuSans-Bold def
467 | /PaintType 0 def
468 | /FontMatrix [0.00048828125 0 0 0.00048828125 0 0] def
469 | /FontBBox [-2190 -850 4045 2405] def
470 | /FontType 3 def
471 | /Encoding [/space /parenleft /parenright /hyphen /five /L /P /S /T /a /c /e /g /h /i /k /l /n /o /r /s /t] def
472 | /CharStrings 23 dict dup begin
473 | /.notdef 0 def
474 | /space{713 0 0 0 0 0 sc
475 | ce} _d
476 | /parenleft{936 0 176 -270 772 1554 sc
477 | 772 -270 m
478 | 475 -270 l
479 | 373 -105 298 51 249 199 c
480 | 200 348 176 495 176 641 c
481 | 176 787 200 935 249 1084 c
482 | 298 1234 374 1391 475 1554 c
483 | 772 1554 l
484 | 687 1396 623 1241 580 1090 c
485 | 537 939 516 790 516 643 c
486 | 516 496 537 346 579 195 c
487 | 622 44 686 -111 772 -270 c
488 |
489 | ce} _d
490 | /parenright{936 0 164 -270 760 1554 sc
491 | 164 -270 m
492 | 249 -111 313 44 356 195 c
493 | 399 346 420 496 420 643 c
494 | 420 790 399 939 356 1090 c
495 | 313 1241 249 1396 164 1554 c
496 | 461 1554 l
497 | 562 1391 637 1234 686 1084 c
498 | 735 935 760 787 760 641 c
499 | 760 495 736 348 687 199 c
500 | 638 51 563 -105 461 -270 c
501 | 164 -270 l
502 |
503 | ce} _d
504 | /hyphen{850 0 111 444 739 735 sc
505 | 111 735 m
506 | 739 735 l
507 | 739 444 l
508 | 111 444 l
509 | 111 735 l
510 |
511 | ce} _d
512 | /five{1425 0 158 -29 1282 1493 sc
513 | 217 1493 m
514 | 1174 1493 l
515 | 1174 1210 l
516 | 524 1210 l
517 | 524 979 l
518 | 553 987 583 993 612 997 c
519 | 642 1002 673 1004 705 1004 c
520 | 887 1004 1029 958 1130 867 c
521 | 1231 776 1282 650 1282 487 c
522 | 1282 326 1227 199 1116 108 c
523 | 1006 17 853 -29 657 -29 c
524 | 572 -29 488 -21 405 -4 c
525 | 322 12 240 37 158 70 c
526 | 158 373 l
527 | 239 326 316 291 389 268 c
528 | 462 245 531 233 596 233 c
529 | 689 233 763 256 816 301 c
530 | 870 347 897 409 897 487 c
531 | 897 566 870 628 816 673 c
532 | 763 718 689 741 596 741 c
533 | 541 741 482 734 419 719 c
534 | 356 705 289 683 217 653 c
535 | 217 1493 l
536 |
537 | ce} _d
538 | /L{1305 0 188 0 1249 1493 sc
539 | 188 1493 m
540 | 573 1493 l
541 | 573 291 l
542 | 1249 291 l
543 | 1249 0 l
544 | 188 0 l
545 | 188 1493 l
546 |
547 | ce} _d
548 | /P{1501 0 188 0 1417 1493 sc
549 | 188 1493 m
550 | 827 1493 l
551 | 1017 1493 1163 1451 1264 1366 c
552 | 1366 1282 1417 1162 1417 1006 c
553 | 1417 849 1366 729 1264 644 c
554 | 1163 560 1017 518 827 518 c
555 | 573 518 l
556 | 573 0 l
557 | 188 0 l
558 | 188 1493 l
559 |
560 | 573 1214 m
561 | 573 797 l
562 | 786 797 l
563 | 861 797 918 815 959 851 c
564 | 1000 888 1020 939 1020 1006 c
565 | 1020 1073 1000 1124 959 1160 c
566 | 918 1196 861 1214 786 1214 c
567 | 573 1214 l
568 |
569 | ce} _d
570 | /S{1475 0 147 -29 1325 1520 sc
571 | 1227 1446 m
572 | 1227 1130 l
573 | 1145 1167 1065 1194 987 1213 c
574 | 909 1232 835 1241 766 1241 c
575 | 674 1241 606 1228 562 1203 c
576 | 518 1178 496 1138 496 1085 c
577 | 496 1045 511 1014 540 991 c
578 | 570 969 624 950 702 934 c
579 | 866 901 l
580 | 1032 868 1150 817 1220 749 c
581 | 1290 681 1325 584 1325 459 c
582 | 1325 294 1276 172 1178 91 c
583 | 1081 11 932 -29 731 -29 c
584 | 636 -29 541 -20 446 -2 c
585 | 351 16 255 43 160 78 c
586 | 160 403 l
587 | 255 352 347 314 436 288 c
588 | 525 263 611 250 694 250 c
589 | 778 250 842 264 887 292 c
590 | 932 320 954 360 954 412 c
591 | 954 459 939 495 908 520 c
592 | 878 545 818 568 727 588 c
593 | 578 621 l
594 | 429 653 319 704 250 774 c
595 | 181 844 147 938 147 1057 c
596 | 147 1206 195 1320 291 1400 c
597 | 387 1480 525 1520 705 1520 c
598 | 787 1520 871 1514 958 1501 c
599 | 1045 1489 1134 1471 1227 1446 c
600 |
601 | ce} _d
602 | /T{1397 0 10 0 1386 1493 sc
603 | 10 1493 m
604 | 1386 1493 l
605 | 1386 1202 l
606 | 891 1202 l
607 | 891 0 l
608 | 506 0 l
609 | 506 1202 l
610 | 10 1202 l
611 | 10 1493 l
612 |
613 | ce} _d
614 | /a{1382 0 88 -29 1221 1147 sc
615 | 674 504 m
616 | 599 504 543 491 505 466 c
617 | 468 441 449 403 449 354 c
618 | 449 309 464 273 494 247 c
619 | 525 222 567 209 621 209 c
620 | 688 209 745 233 791 281 c
621 | 837 330 860 390 860 463 c
622 | 860 504 l
623 | 674 504 l
624 |
625 | 1221 639 m
626 | 1221 0 l
627 | 860 0 l
628 | 860 166 l
629 | 812 98 758 48 698 17 c
630 | 638 -14 565 -29 479 -29 c
631 | 363 -29 269 5 196 72 c
632 | 124 140 88 228 88 336 c
633 | 88 467 133 564 223 625 c
634 | 314 686 456 717 649 717 c
635 | 860 717 l
636 | 860 745 l
637 | 860 802 838 843 793 869 c
638 | 748 896 679 909 584 909 c
639 | 507 909 436 901 370 886 c
640 | 304 871 243 848 186 817 c
641 | 186 1090 l
642 | 263 1109 340 1123 417 1132 c
643 | 494 1142 572 1147 649 1147 c
644 | 851 1147 997 1107 1086 1027 c
645 | 1176 948 1221 818 1221 639 c
646 |
647 | ce} _d
648 | /c{1214 0 88 -29 1077 1147 sc
649 | 1077 1085 m
650 | 1077 793 l
651 | 1028 826 979 851 930 867 c
652 | 881 883 831 891 778 891 c
653 | 678 891 600 862 544 803 c
654 | 489 745 461 664 461 559 c
655 | 461 454 489 373 544 314 c
656 | 600 256 678 227 778 227 c
657 | 834 227 887 235 937 252 c
658 | 988 269 1034 293 1077 326 c
659 | 1077 33 l
660 | 1021 12 964 -3 906 -13 c
661 | 849 -24 791 -29 733 -29 c
662 | 531 -29 373 23 259 126 c
663 | 145 230 88 374 88 559 c
664 | 88 744 145 888 259 991 c
665 | 373 1095 531 1147 733 1147 c
666 | 792 1147 849 1142 906 1131 c
667 | 963 1121 1020 1106 1077 1085 c
668 |
669 | ce} _d
670 | /e{1389 0 88 -29 1290 1147 sc
671 | 1290 563 m
672 | 1290 461 l
673 | 453 461 l
674 | 462 377 492 314 544 272 c
675 | 596 230 669 209 762 209 c
676 | 837 209 914 220 993 242 c
677 | 1072 265 1154 299 1237 344 c
678 | 1237 68 l
679 | 1152 36 1068 12 983 -4 c
680 | 898 -21 814 -29 729 -29 c
681 | 526 -29 369 22 256 125 c
682 | 144 228 88 373 88 559 c
683 | 88 742 143 885 253 990 c
684 | 364 1095 516 1147 709 1147 c
685 | 885 1147 1026 1094 1131 988 c
686 | 1237 882 1290 740 1290 563 c
687 |
688 | 922 682 m
689 | 922 750 902 805 862 846 c
690 | 823 888 771 909 707 909 c
691 | 638 909 581 889 538 850 c
692 | 495 811 468 755 457 682 c
693 | 922 682 l
694 |
695 | ce} _d
696 | /g{1466 0 92 -442 1294 1145 sc
697 | 934 190 m
698 | 885 125 830 77 771 46 c
699 | 712 15 643 0 565 0 c
700 | 428 0 315 54 226 161 c
701 | 137 269 92 406 92 573 c
702 | 92 740 137 877 226 984 c
703 | 315 1091 428 1145 565 1145 c
704 | 643 1145 712 1130 771 1099 c
705 | 830 1068 885 1020 934 954 c
706 | 934 1120 l
707 | 1294 1120 l
708 | 1294 113 l
709 | 1294 -67 1237 -204 1123 -299 c
710 | 1010 -394 845 -442 629 -442 c
711 | 559 -442 491 -437 426 -426 c
712 | 361 -415 295 -399 229 -377 c
713 | 229 -98 l
714 | 292 -134 353 -161 413 -178 c
715 | 473 -196 533 -205 594 -205 c
716 | 711 -205 797 -179 852 -128 c
717 | 907 -77 934 4 934 113 c
718 | 934 190 l
719 |
720 | 698 887 m
721 | 624 887 566 860 525 805 c
722 | 484 750 463 673 463 573 c
723 | 463 470 483 392 523 339 c
724 | 563 286 621 260 698 260 c
725 | 773 260 831 287 872 342 c
726 | 913 397 934 474 934 573 c
727 | 934 673 913 750 872 805 c
728 | 831 860 773 887 698 887 c
729 |
730 | ce} _d
731 | /h{1458 0 172 0 1298 1556 sc
732 | 1298 682 m
733 | 1298 0 l
734 | 938 0 l
735 | 938 111 l
736 | 938 520 l
737 | 938 618 936 685 931 722 c
738 | 927 759 920 786 909 803 c
739 | 895 826 876 844 852 857 c
740 | 828 870 801 877 770 877 c
741 | 695 877 637 848 594 790 c
742 | 551 733 530 653 530 551 c
743 | 530 0 l
744 | 172 0 l
745 | 172 1556 l
746 | 530 1556 l
747 | 530 956 l
748 | 584 1021 641 1069 702 1100 c
749 | 763 1131 830 1147 903 1147 c
750 | 1032 1147 1130 1107 1197 1028 c
751 | 1264 949 1298 833 1298 682 c
752 |
753 | ce} _d
754 | /i{702 0 172 0 530 1556 sc
755 | 172 1120 m
756 | 530 1120 l
757 | 530 0 l
758 | 172 0 l
759 | 172 1120 l
760 |
761 | 172 1556 m
762 | 530 1556 l
763 | 530 1264 l
764 | 172 1264 l
765 | 172 1556 l
766 |
767 | ce} _d
768 | /k{1362 0 172 0 1401 1556 sc
769 | 172 1556 m
770 | 530 1556 l
771 | 530 709 l
772 | 942 1120 l
773 | 1358 1120 l
774 | 811 606 l
775 | 1401 0 l
776 | 967 0 l
777 | 530 467 l
778 | 530 0 l
779 | 172 0 l
780 | 172 1556 l
781 |
782 | ce} _d
783 | /l{702 0 172 0 530 1556 sc
784 | 172 1556 m
785 | 530 1556 l
786 | 530 0 l
787 | 172 0 l
788 | 172 1556 l
789 |
790 | ce} _d
791 | /n{1458 0 172 0 1298 1147 sc
792 | 1298 682 m
793 | 1298 0 l
794 | 938 0 l
795 | 938 111 l
796 | 938 522 l
797 | 938 619 936 685 931 722 c
798 | 927 759 920 786 909 803 c
799 | 895 826 876 844 852 857 c
800 | 828 870 801 877 770 877 c
801 | 695 877 637 848 594 790 c
802 | 551 733 530 653 530 551 c
803 | 530 0 l
804 | 172 0 l
805 | 172 1120 l
806 | 530 1120 l
807 | 530 956 l
808 | 584 1021 641 1069 702 1100 c
809 | 763 1131 830 1147 903 1147 c
810 | 1032 1147 1130 1107 1197 1028 c
811 | 1264 949 1298 833 1298 682 c
812 |
813 | ce} _d
814 | /o{1407 0 88 -29 1319 1147 sc
815 | 705 891 m
816 | 626 891 565 862 523 805 c
817 | 482 748 461 666 461 559 c
818 | 461 452 482 369 523 312 c
819 | 565 255 626 227 705 227 c
820 | 783 227 843 255 884 312 c
821 | 925 369 946 452 946 559 c
822 | 946 666 925 748 884 805 c
823 | 843 862 783 891 705 891 c
824 |
825 | 705 1147 m
826 | 898 1147 1048 1095 1156 991 c
827 | 1265 887 1319 743 1319 559 c
828 | 1319 375 1265 231 1156 127 c
829 | 1048 23 898 -29 705 -29 c
830 | 512 -29 360 23 251 127 c
831 | 142 231 88 375 88 559 c
832 | 88 743 142 887 251 991 c
833 | 360 1095 512 1147 705 1147 c
834 |
835 | ce} _d
836 | /r{1010 0 172 0 1004 1147 sc
837 | 1004 815 m
838 | 973 830 941 840 910 847 c
839 | 879 854 848 858 817 858 c
840 | 725 858 654 828 604 769 c
841 | 555 710 530 626 530 516 c
842 | 530 0 l
843 | 172 0 l
844 | 172 1120 l
845 | 530 1120 l
846 | 530 936 l
847 | 576 1009 629 1063 688 1096 c
848 | 748 1130 820 1147 903 1147 c
849 | 915 1147 928 1146 942 1145 c
850 | 956 1144 976 1142 1003 1139 c
851 | 1004 815 l
852 |
853 | ce} _d
854 | /s{1219 0 106 -29 1122 1147 sc
855 | 1047 1085 m
856 | 1047 813 l
857 | 970 845 896 869 825 885 c
858 | 754 901 686 909 623 909 c
859 | 555 909 504 900 471 883 c
860 | 438 866 422 840 422 805 c
861 | 422 776 434 754 459 739 c
862 | 484 724 529 712 594 705 c
863 | 657 696 l
864 | 840 673 964 634 1027 581 c
865 | 1090 528 1122 444 1122 330 c
866 | 1122 211 1078 121 990 61 c
867 | 902 1 771 -29 596 -29 c
868 | 522 -29 445 -23 366 -11 c
869 | 287 0 206 18 123 41 c
870 | 123 313 l
871 | 194 278 267 252 342 235 c
872 | 417 218 494 209 571 209 c
873 | 641 209 694 219 729 238 c
874 | 764 257 782 286 782 324 c
875 | 782 356 770 380 745 395 c
876 | 721 411 673 423 600 432 c
877 | 537 440 l
878 | 378 460 266 497 202 551 c
879 | 138 605 106 687 106 797 c
880 | 106 916 147 1004 228 1061 c
881 | 309 1118 434 1147 602 1147 c
882 | 668 1147 737 1142 810 1132 c
883 | 883 1122 962 1106 1047 1085 c
884 |
885 | ce} _d
886 | /t{979 0 27 0 932 1438 sc
887 | 563 1438 m
888 | 563 1120 l
889 | 932 1120 l
890 | 932 864 l
891 | 563 864 l
892 | 563 389 l
893 | 563 337 573 302 594 283 c
894 | 615 265 656 256 717 256 c
895 | 901 256 l
896 | 901 0 l
897 | 594 0 l
898 | 453 0 352 29 293 88 c
899 | 234 147 205 248 205 389 c
900 | 205 864 l
901 | 27 864 l
902 | 27 1120 l
903 | 205 1120 l
904 | 205 1438 l
905 | 563 1438 l
906 |
907 | ce} _d
908 | end readonly def
909 |
910 | /BuildGlyph {
911 | exch begin
912 | CharStrings exch
913 | 2 copy known not {pop /.notdef} if
914 | true 3 1 roll get exec
915 | end
916 | } _d
917 |
918 | /BuildChar {
919 | 1 index /Encoding get exch get
920 | 1 index /BuildGlyph get exec
921 | } _d
922 |
923 | FontName currentdict end definefont pop
924 | end
925 | %%EndProlog
926 | mpldict begin
927 | -54 180 translate
928 | 720 432 0 0 clipbox
929 | gsave
930 | 0 0 m
931 | 720 0 l
932 | 720 432 l
933 | 0 432 l
934 | cl
935 | 1.000 setgray
936 | fill
937 | grestore
938 | gsave
939 | 90 47.52 m
940 | 648 47.52 l
941 | 648 380.16 l
942 | 90 380.16 l
943 | cl
944 | 1.000 setgray
945 | fill
946 | grestore
947 | gsave
948 | 558 332.64 90 47.52 clipbox
949 | 115.363636 47.52 m
950 | 260.298701 47.52 l
951 | 260.298701 288.883584 l
952 | 115.363636 288.883584 l
953 | cl
954 | 0.529 0.808 0.922 setrgbcolor
955 | fill
956 | grestore
957 | gsave
958 | 558 332.64 90 47.52 clipbox
959 | 296.532468 47.52 m
960 | 441.467532 47.52 l
961 | 441.467532 341.041536 l
962 | 296.532468 341.041536 l
963 | cl
964 | 0.529 0.808 0.922 setrgbcolor
965 | fill
966 | grestore
967 | gsave
968 | 558 332.64 90 47.52 clipbox
969 | 477.701299 47.52 m
970 | 622.636364 47.52 l
971 | 622.636364 320.550912 l
972 | 477.701299 320.550912 l
973 | cl
974 | 0.529 0.808 0.922 setrgbcolor
975 | fill
976 | grestore
977 | 0.800 setlinewidth
978 | 1 setlinejoin
979 | 0 setlinecap
980 | [] 0 setdash
981 | 0.000 setgray
982 | gsave
983 | /o {
984 | gsave
985 | newpath
986 | translate
987 | 0.8 setlinewidth
988 | 1 setlinejoin
989 |
990 | 0 setlinecap
991 |
992 | 0 0 m
993 | 0 -3.5 l
994 |
995 | gsave
996 | 0.000 setgray
997 | fill
998 | grestore
999 | stroke
1000 | grestore
1001 | } bind def
1002 | 187.831 47.52 o
1003 | grestore
1004 | /DejaVuSans 10.000 selectfont
1005 | gsave
1006 |
1007 | 165.909 32.9262 translate
1008 | 0 rotate
1009 | 0 0 m /S glyphshow
1010 | 6.34766 0 m /e glyphshow
1011 | 12.5 0 m /n glyphshow
1012 | 18.8379 0 m /s glyphshow
1013 | 24.0479 0 m /o glyphshow
1014 | 30.166 0 m /r glyphshow
1015 | 34.2773 0 m /space glyphshow
1016 | 37.4561 0 m /one glyphshow
1017 | grestore
1018 | gsave
1019 | /o {
1020 | gsave
1021 | newpath
1022 | translate
1023 | 0.8 setlinewidth
1024 | 1 setlinejoin
1025 |
1026 | 0 setlinecap
1027 |
1028 | 0 0 m
1029 | 0 -3.5 l
1030 |
1031 | gsave
1032 | 0.000 setgray
1033 | fill
1034 | grestore
1035 | stroke
1036 | grestore
1037 | } bind def
1038 | 369 47.52 o
1039 | grestore
1040 | /DejaVuSans 10.000 selectfont
1041 | gsave
1042 |
1043 | 347.078 32.9262 translate
1044 | 0 rotate
1045 | 0 0 m /S glyphshow
1046 | 6.34766 0 m /e glyphshow
1047 | 12.5 0 m /n glyphshow
1048 | 18.8379 0 m /s glyphshow
1049 | 24.0479 0 m /o glyphshow
1050 | 30.166 0 m /r glyphshow
1051 | 34.2773 0 m /space glyphshow
1052 | 37.4561 0 m /two glyphshow
1053 | grestore
1054 | gsave
1055 | /o {
1056 | gsave
1057 | newpath
1058 | translate
1059 | 0.8 setlinewidth
1060 | 1 setlinejoin
1061 |
1062 | 0 setlinecap
1063 |
1064 | 0 0 m
1065 | 0 -3.5 l
1066 |
1067 | gsave
1068 | 0.000 setgray
1069 | fill
1070 | grestore
1071 | stroke
1072 | grestore
1073 | } bind def
1074 | 550.169 47.52 o
1075 | grestore
1076 | /DejaVuSans 10.000 selectfont
1077 | gsave
1078 |
1079 | 528.247 32.9262 translate
1080 | 0 rotate
1081 | 0 0 m /S glyphshow
1082 | 6.34766 0 m /e glyphshow
1083 | 12.5 0 m /n glyphshow
1084 | 18.8379 0 m /s glyphshow
1085 | 24.0479 0 m /o glyphshow
1086 | 30.166 0 m /r glyphshow
1087 | 34.2773 0 m /space glyphshow
1088 | 37.4561 0 m /five glyphshow
1089 | grestore
1090 | /DejaVuSans 14.000 selectfont
1091 | gsave
1092 |
1093 | 341.359 16.2075 translate
1094 | 0 rotate
1095 | 0 0 m /S glyphshow
1096 | 8.88672 0 m /e glyphshow
1097 | 17.5 0 m /n glyphshow
1098 | 26.373 0 m /s glyphshow
1099 | 33.667 0 m /o glyphshow
1100 | 42.2324 0 m /r glyphshow
1101 | 47.9883 0 m /s glyphshow
1102 | grestore
1103 | gsave
1104 | /o {
1105 | gsave
1106 | newpath
1107 | translate
1108 | 0.8 setlinewidth
1109 | 1 setlinejoin
1110 |
1111 | 0 setlinecap
1112 |
1113 | -0 0 m
1114 | -3.5 0 l
1115 |
1116 | gsave
1117 | 0.000 setgray
1118 | fill
1119 | grestore
1120 | stroke
1121 | grestore
1122 | } bind def
1123 | 90 47.52 o
1124 | grestore
1125 | /DejaVuSans 10.000 selectfont
1126 | gsave
1127 |
1128 | 76.6406 43.7231 translate
1129 | 0 rotate
1130 | 0 0 m /zero glyphshow
1131 | grestore
1132 | gsave
1133 | /o {
1134 | gsave
1135 | newpath
1136 | translate
1137 | 0.8 setlinewidth
1138 | 1 setlinejoin
1139 |
1140 | 0 setlinecap
1141 |
1142 | -0 0 m
1143 | -3.5 0 l
1144 |
1145 | gsave
1146 | 0.000 setgray
1147 | fill
1148 | grestore
1149 | stroke
1150 | grestore
1151 | } bind def
1152 | 90 114.048 o
1153 | grestore
1154 | /DejaVuSans 10.000 selectfont
1155 | gsave
1156 |
1157 | 63.9219 110.251 translate
1158 | 0 rotate
1159 | 0 0 m /five glyphshow
1160 | 6.3623 0 m /zero glyphshow
1161 | 12.7246 0 m /zero glyphshow
1162 | grestore
1163 | gsave
1164 | /o {
1165 | gsave
1166 | newpath
1167 | translate
1168 | 0.8 setlinewidth
1169 | 1 setlinejoin
1170 |
1171 | 0 setlinecap
1172 |
1173 | -0 0 m
1174 | -3.5 0 l
1175 |
1176 | gsave
1177 | 0.000 setgray
1178 | fill
1179 | grestore
1180 | stroke
1181 | grestore
1182 | } bind def
1183 | 90 180.576 o
1184 | grestore
1185 | /DejaVuSans 10.000 selectfont
1186 | gsave
1187 |
1188 | 57.5625 176.779 translate
1189 | 0 rotate
1190 | 0 0 m /one glyphshow
1191 | 6.3623 0 m /zero glyphshow
1192 | 12.7246 0 m /zero glyphshow
1193 | 19.0869 0 m /zero glyphshow
1194 | grestore
1195 | gsave
1196 | /o {
1197 | gsave
1198 | newpath
1199 | translate
1200 | 0.8 setlinewidth
1201 | 1 setlinejoin
1202 |
1203 | 0 setlinecap
1204 |
1205 | -0 0 m
1206 | -3.5 0 l
1207 |
1208 | gsave
1209 | 0.000 setgray
1210 | fill
1211 | grestore
1212 | stroke
1213 | grestore
1214 | } bind def
1215 | 90 247.104 o
1216 | grestore
1217 | /DejaVuSans 10.000 selectfont
1218 | gsave
1219 |
1220 | 57.5625 243.307 translate
1221 | 0 rotate
1222 | 0 0 m /one glyphshow
1223 | 6.3623 0 m /five glyphshow
1224 | 12.7246 0 m /zero glyphshow
1225 | 19.0869 0 m /zero glyphshow
1226 | grestore
1227 | gsave
1228 | /o {
1229 | gsave
1230 | newpath
1231 | translate
1232 | 0.8 setlinewidth
1233 | 1 setlinejoin
1234 |
1235 | 0 setlinecap
1236 |
1237 | -0 0 m
1238 | -3.5 0 l
1239 |
1240 | gsave
1241 | 0.000 setgray
1242 | fill
1243 | grestore
1244 | stroke
1245 | grestore
1246 | } bind def
1247 | 90 313.632 o
1248 | grestore
1249 | /DejaVuSans 10.000 selectfont
1250 | gsave
1251 |
1252 | 57.5625 309.835 translate
1253 | 0 rotate
1254 | 0 0 m /two glyphshow
1255 | 6.3623 0 m /zero glyphshow
1256 | 12.7246 0 m /zero glyphshow
1257 | 19.0869 0 m /zero glyphshow
1258 | grestore
1259 | gsave
1260 | /o {
1261 | gsave
1262 | newpath
1263 | translate
1264 | 0.8 setlinewidth
1265 | 1 setlinejoin
1266 |
1267 | 0 setlinecap
1268 |
1269 | -0 0 m
1270 | -3.5 0 l
1271 |
1272 | gsave
1273 | 0.000 setgray
1274 | fill
1275 | grestore
1276 | stroke
1277 | grestore
1278 | } bind def
1279 | 90 380.16 o
1280 | grestore
1281 | /DejaVuSans 10.000 selectfont
1282 | gsave
1283 |
1284 | 57.5625 376.363 translate
1285 | 0 rotate
1286 | 0 0 m /two glyphshow
1287 | 6.3623 0 m /five glyphshow
1288 | 12.7246 0 m /zero glyphshow
1289 | 19.0869 0 m /zero glyphshow
1290 | grestore
1291 | /DejaVuSans 14.000 selectfont
1292 | gsave
1293 |
1294 | 50.6562 194.199 translate
1295 | 90 rotate
1296 | 0 0 m /B glyphshow
1297 | 9.60449 0 m /y glyphshow
1298 | 17.8896 0 m /t glyphshow
1299 | 23.3789 0 m /e glyphshow
1300 | 31.9922 0 m /s glyphshow
1301 | grestore
1302 | 0 setlinejoin
1303 | 2 setlinecap
1304 | gsave
1305 | 90 47.52 m
1306 | 90 380.16 l
1307 | stroke
1308 | grestore
1309 | gsave
1310 | 648 47.52 m
1311 | 648 380.16 l
1312 | stroke
1313 | grestore
1314 | gsave
1315 | 90 47.52 m
1316 | 648 47.52 l
1317 | stroke
1318 | grestore
1319 | gsave
1320 | 90 380.16 m
1321 | 648 380.16 l
1322 | stroke
1323 | grestore
1324 | /DejaVuSans 10.000 selectfont
1325 | gsave
1326 |
1327 | 175.112 304.267 translate
1328 | 0 rotate
1329 | 0 0 m /one glyphshow
1330 | 6.3623 0 m /eight glyphshow
1331 | 12.7246 0 m /one glyphshow
1332 | 19.0869 0 m /four glyphshow
1333 | grestore
1334 | /DejaVuSans 10.000 selectfont
1335 | gsave
1336 |
1337 | 356.281 356.425 translate
1338 | 0 rotate
1339 | 0 0 m /two glyphshow
1340 | 6.3623 0 m /two glyphshow
1341 | 12.7246 0 m /zero glyphshow
1342 | 19.0869 0 m /six glyphshow
1343 | grestore
1344 | /DejaVuSans 10.000 selectfont
1345 | gsave
1346 |
1347 | 537.45 335.935 translate
1348 | 0 rotate
1349 | 0 0 m /two glyphshow
1350 | 6.3623 0 m /zero glyphshow
1351 | 12.7246 0 m /five glyphshow
1352 | 19.0869 0 m /two glyphshow
1353 | grestore
1354 | /DejaVuSans-Bold 16.000 selectfont
1355 | gsave
1356 |
1357 | 212.562 400.16 translate
1358 | 0 rotate
1359 | 0 0 m /T glyphshow
1360 | 8.78906 0 m /o glyphshow
1361 | 19.7812 0 m /t glyphshow
1362 | 27.4297 0 m /a glyphshow
1363 | 38.2266 0 m /l glyphshow
1364 | 43.7109 0 m /space glyphshow
1365 | 49.2812 0 m /P glyphshow
1366 | 60.6328 0 m /a glyphshow
1367 | 71.4297 0 m /c glyphshow
1368 | 80.9141 0 m /k glyphshow
1369 | 91.1797 0 m /e glyphshow
1370 | 102.031 0 m /t glyphshow
1371 | 109.68 0 m /space glyphshow
1372 | 115.25 0 m /L glyphshow
1373 | 125.445 0 m /e glyphshow
1374 | 136.297 0 m /n glyphshow
1375 | 147.688 0 m /g glyphshow
1376 | 159.141 0 m /t glyphshow
1377 | 166.789 0 m /h glyphshow
1378 | 178.18 0 m /s glyphshow
1379 | 187.703 0 m /space glyphshow
1380 | 193.273 0 m /hyphen glyphshow
1381 | 199.914 0 m /space glyphshow
1382 | 205.484 0 m /S glyphshow
1383 | 217.008 0 m /t glyphshow
1384 | 224.656 0 m /o glyphshow
1385 | 235.648 0 m /r glyphshow
1386 | 243.539 0 m /i glyphshow
1387 | 249.023 0 m /n glyphshow
1388 | 260.414 0 m /g glyphshow
1389 | 271.867 0 m /space glyphshow
1390 | 277.438 0 m /parenleft glyphshow
1391 | 284.75 0 m /five glyphshow
1392 | 295.883 0 m /s glyphshow
1393 | 305.406 0 m /parenright glyphshow
1394 | grestore
1395 |
1396 | end
1397 | showpage
1398 |
--------------------------------------------------------------------------------
/assets/images/10.eps:
--------------------------------------------------------------------------------
1 | %!PS-Adobe-3.0 EPSF-3.0
2 | %%Title: 10.eps
3 | %%Creator: Matplotlib v3.6.3, https://matplotlib.org/
4 | %%CreationDate: Thu Dec 12 08:42:01 2024
5 | %%Orientation: portrait
6 | %%BoundingBox: -54 180 666 612
7 | %%HiResBoundingBox: -54.000000 180.000000 666.000000 612.000000
8 | %%EndComments
9 | %%BeginProlog
10 | /mpldict 12 dict def
11 | mpldict begin
12 | /_d { bind def } bind def
13 | /m { moveto } _d
14 | /l { lineto } _d
15 | /r { rlineto } _d
16 | /c { curveto } _d
17 | /cl { closepath } _d
18 | /ce { closepath eofill } _d
19 | /box {
20 | m
21 | 1 index 0 r
22 | 0 exch r
23 | neg 0 r
24 | cl
25 | } _d
26 | /clipbox {
27 | box
28 | clip
29 | newpath
30 | } _d
31 | /sc { setcachedevice } _d
32 | %!PS-Adobe-3.0 Resource-Font
33 | %%Creator: Converted from TrueType to Type 3 by Matplotlib.
34 | 10 dict begin
35 | /FontName /DejaVuSans def
36 | /PaintType 0 def
37 | /FontMatrix [0.00048828125 0 0 0.00048828125 0 0] def
38 | /FontBBox [-2090 -948 3673 2524] def
39 | /FontType 3 def
40 | /Encoding [/space /B /eight /e /n /o /zero /one /r /S /s /two /five /t /four /y /three] def
41 | /CharStrings 18 dict dup begin
42 | /.notdef 0 def
43 | /space{651 0 0 0 0 0 sc
44 | ce} _d
45 | /B{1405 0 201 0 1260 1493 sc
46 | 403 713 m
47 | 403 166 l
48 | 727 166 l
49 | 836 166 916 188 968 233 c
50 | 1021 278 1047 347 1047 440 c
51 | 1047 533 1021 602 968 646 c
52 | 916 691 836 713 727 713 c
53 | 403 713 l
54 |
55 | 403 1327 m
56 | 403 877 l
57 | 702 877 l
58 | 801 877 874 895 922 932 c
59 | 971 969 995 1026 995 1102 c
60 | 995 1177 971 1234 922 1271 c
61 | 874 1308 801 1327 702 1327 c
62 | 403 1327 l
63 |
64 | 201 1493 m
65 | 717 1493 l
66 | 871 1493 990 1461 1073 1397 c
67 | 1156 1333 1198 1242 1198 1124 c
68 | 1198 1033 1177 960 1134 906 c
69 | 1091 852 1029 818 946 805 c
70 | 1045 784 1122 739 1177 671 c
71 | 1232 604 1260 519 1260 418 c
72 | 1260 285 1215 182 1124 109 c
73 | 1033 36 904 0 737 0 c
74 | 201 0 l
75 | 201 1493 l
76 |
77 | ce} _d
78 | /eight{1303 0 139 -29 1163 1520 sc
79 | 651 709 m
80 | 555 709 479 683 424 632 c
81 | 369 581 342 510 342 420 c
82 | 342 330 369 259 424 208 c
83 | 479 157 555 131 651 131 c
84 | 747 131 823 157 878 208 c
85 | 933 260 961 331 961 420 c
86 | 961 510 933 581 878 632 c
87 | 823 683 748 709 651 709 c
88 |
89 | 449 795 m
90 | 362 816 295 857 246 916 c
91 | 198 975 174 1048 174 1133 c
92 | 174 1252 216 1347 301 1416 c
93 | 386 1485 503 1520 651 1520 c
94 | 800 1520 916 1485 1001 1416 c
95 | 1086 1347 1128 1252 1128 1133 c
96 | 1128 1048 1104 975 1055 916 c
97 | 1007 857 940 816 854 795 c
98 | 951 772 1027 728 1081 662 c
99 | 1136 596 1163 515 1163 420 c
100 | 1163 275 1119 164 1030 87 c
101 | 942 10 816 -29 651 -29 c
102 | 486 -29 360 10 271 87 c
103 | 183 164 139 275 139 420 c
104 | 139 515 166 596 221 662 c
105 | 276 728 352 772 449 795 c
106 |
107 | 375 1114 m
108 | 375 1037 399 976 447 933 c
109 | 496 890 564 868 651 868 c
110 | 738 868 805 890 854 933 c
111 | 903 976 928 1037 928 1114 c
112 | 928 1191 903 1252 854 1295 c
113 | 805 1338 738 1360 651 1360 c
114 | 564 1360 496 1338 447 1295 c
115 | 399 1252 375 1191 375 1114 c
116 |
117 | ce} _d
118 | /e{1260 0 113 -29 1151 1147 sc
119 | 1151 606 m
120 | 1151 516 l
121 | 305 516 l
122 | 313 389 351 293 419 226 c
123 | 488 160 583 127 705 127 c
124 | 776 127 844 136 910 153 c
125 | 977 170 1043 196 1108 231 c
126 | 1108 57 l
127 | 1042 29 974 8 905 -7 c
128 | 836 -22 765 -29 694 -29 c
129 | 515 -29 374 23 269 127 c
130 | 165 231 113 372 113 549 c
131 | 113 732 162 878 261 985 c
132 | 360 1093 494 1147 662 1147 c
133 | 813 1147 932 1098 1019 1001 c
134 | 1107 904 1151 773 1151 606 c
135 |
136 | 967 660 m
137 | 966 761 937 841 882 901 c
138 | 827 961 755 991 664 991 c
139 | 561 991 479 962 417 904 c
140 | 356 846 320 764 311 659 c
141 | 967 660 l
142 |
143 | ce} _d
144 | /n{1298 0 186 0 1124 1147 sc
145 | 1124 676 m
146 | 1124 0 l
147 | 940 0 l
148 | 940 670 l
149 | 940 776 919 855 878 908 c
150 | 837 961 775 987 692 987 c
151 | 593 987 514 955 457 892 c
152 | 400 829 371 742 371 633 c
153 | 371 0 l
154 | 186 0 l
155 | 186 1120 l
156 | 371 1120 l
157 | 371 946 l
158 | 415 1013 467 1064 526 1097 c
159 | 586 1130 655 1147 733 1147 c
160 | 862 1147 959 1107 1025 1027 c
161 | 1091 948 1124 831 1124 676 c
162 |
163 | ce} _d
164 | /o{1253 0 113 -29 1141 1147 sc
165 | 627 991 m
166 | 528 991 450 952 393 875 c
167 | 336 798 307 693 307 559 c
168 | 307 425 335 319 392 242 c
169 | 449 165 528 127 627 127 c
170 | 725 127 803 166 860 243 c
171 | 917 320 946 426 946 559 c
172 | 946 692 917 797 860 874 c
173 | 803 952 725 991 627 991 c
174 |
175 | 627 1147 m
176 | 787 1147 913 1095 1004 991 c
177 | 1095 887 1141 743 1141 559 c
178 | 1141 376 1095 232 1004 127 c
179 | 913 23 787 -29 627 -29 c
180 | 466 -29 340 23 249 127 c
181 | 158 232 113 376 113 559 c
182 | 113 743 158 887 249 991 c
183 | 340 1095 466 1147 627 1147 c
184 |
185 | ce} _d
186 | /zero{1303 0 135 -29 1167 1520 sc
187 | 651 1360 m
188 | 547 1360 469 1309 416 1206 c
189 | 364 1104 338 950 338 745 c
190 | 338 540 364 387 416 284 c
191 | 469 182 547 131 651 131 c
192 | 756 131 834 182 886 284 c
193 | 939 387 965 540 965 745 c
194 | 965 950 939 1104 886 1206 c
195 | 834 1309 756 1360 651 1360 c
196 |
197 | 651 1520 m
198 | 818 1520 946 1454 1034 1321 c
199 | 1123 1189 1167 997 1167 745 c
200 | 1167 494 1123 302 1034 169 c
201 | 946 37 818 -29 651 -29 c
202 | 484 -29 356 37 267 169 c
203 | 179 302 135 494 135 745 c
204 | 135 997 179 1189 267 1321 c
205 | 356 1454 484 1520 651 1520 c
206 |
207 | ce} _d
208 | /one{1303 0 225 0 1114 1493 sc
209 | 254 170 m
210 | 584 170 l
211 | 584 1309 l
212 | 225 1237 l
213 | 225 1421 l
214 | 582 1493 l
215 | 784 1493 l
216 | 784 170 l
217 | 1114 170 l
218 | 1114 0 l
219 | 254 0 l
220 | 254 170 l
221 |
222 | ce} _d
223 | /r{842 0 186 0 842 1147 sc
224 | 842 948 m
225 | 821 960 799 969 774 974 c
226 | 750 980 723 983 694 983 c
227 | 590 983 510 949 454 881 c
228 | 399 814 371 717 371 590 c
229 | 371 0 l
230 | 186 0 l
231 | 186 1120 l
232 | 371 1120 l
233 | 371 946 l
234 | 410 1014 460 1064 522 1097 c
235 | 584 1130 659 1147 748 1147 c
236 | 761 1147 775 1146 790 1144 c
237 | 805 1143 822 1140 841 1137 c
238 | 842 948 l
239 |
240 | ce} _d
241 | /S{1300 0 135 -29 1186 1520 sc
242 | 1096 1444 m
243 | 1096 1247 l
244 | 1019 1284 947 1311 879 1329 c
245 | 811 1347 745 1356 682 1356 c
246 | 572 1356 487 1335 427 1292 c
247 | 368 1249 338 1189 338 1110 c
248 | 338 1044 358 994 397 960 c
249 | 437 927 512 900 623 879 c
250 | 745 854 l
251 | 896 825 1007 775 1078 702 c
252 | 1150 630 1186 533 1186 412 c
253 | 1186 267 1137 158 1040 83 c
254 | 943 8 801 -29 614 -29 c
255 | 543 -29 468 -21 388 -5 c
256 | 309 11 226 35 141 66 c
257 | 141 274 l
258 | 223 228 303 193 382 170 c
259 | 461 147 538 135 614 135 c
260 | 729 135 818 158 881 203 c
261 | 944 248 975 313 975 397 c
262 | 975 470 952 528 907 569 c
263 | 862 610 789 641 686 662 c
264 | 563 686 l
265 | 412 716 303 763 236 827 c
266 | 169 891 135 980 135 1094 c
267 | 135 1226 181 1330 274 1406 c
268 | 367 1482 496 1520 659 1520 c
269 | 729 1520 800 1514 873 1501 c
270 | 946 1488 1020 1469 1096 1444 c
271 |
272 | ce} _d
273 | /s{1067 0 111 -29 967 1147 sc
274 | 907 1087 m
275 | 907 913 l
276 | 855 940 801 960 745 973 c
277 | 689 986 631 993 571 993 c
278 | 480 993 411 979 365 951 c
279 | 320 923 297 881 297 825 c
280 | 297 782 313 749 346 724 c
281 | 379 700 444 677 543 655 c
282 | 606 641 l
283 | 737 613 829 573 884 522 c
284 | 939 471 967 400 967 309 c
285 | 967 205 926 123 843 62 c
286 | 761 1 648 -29 504 -29 c
287 | 444 -29 381 -23 316 -11 c
288 | 251 0 183 18 111 41 c
289 | 111 231 l
290 | 179 196 246 169 312 151 c
291 | 378 134 443 125 508 125 c
292 | 595 125 661 140 708 169 c
293 | 755 199 778 241 778 295 c
294 | 778 345 761 383 727 410 c
295 | 694 437 620 462 506 487 c
296 | 442 502 l
297 | 328 526 246 563 195 612 c
298 | 144 662 119 730 119 817 c
299 | 119 922 156 1004 231 1061 c
300 | 306 1118 412 1147 549 1147 c
301 | 617 1147 681 1142 741 1132 c
302 | 801 1122 856 1107 907 1087 c
303 |
304 | ce} _d
305 | /two{1303 0 150 0 1098 1520 sc
306 | 393 170 m
307 | 1098 170 l
308 | 1098 0 l
309 | 150 0 l
310 | 150 170 l
311 | 227 249 331 356 463 489 c
312 | 596 623 679 709 713 748 c
313 | 778 821 823 882 848 932 c
314 | 874 983 887 1032 887 1081 c
315 | 887 1160 859 1225 803 1275 c
316 | 748 1325 675 1350 586 1350 c
317 | 523 1350 456 1339 385 1317 c
318 | 315 1295 240 1262 160 1217 c
319 | 160 1421 l
320 | 241 1454 317 1478 388 1495 c
321 | 459 1512 523 1520 582 1520 c
322 | 737 1520 860 1481 952 1404 c
323 | 1044 1327 1090 1223 1090 1094 c
324 | 1090 1033 1078 974 1055 919 c
325 | 1032 864 991 800 930 725 c
326 | 913 706 860 650 771 557 c
327 | 682 465 556 336 393 170 c
328 |
329 | ce} _d
330 | /five{1303 0 158 -29 1124 1493 sc
331 | 221 1493 m
332 | 1014 1493 l
333 | 1014 1323 l
334 | 406 1323 l
335 | 406 957 l
336 | 435 967 465 974 494 979 c
337 | 523 984 553 987 582 987 c
338 | 749 987 881 941 978 850 c
339 | 1075 759 1124 635 1124 479 c
340 | 1124 318 1074 193 974 104 c
341 | 874 15 733 -29 551 -29 c
342 | 488 -29 424 -24 359 -13 c
343 | 294 -2 227 14 158 35 c
344 | 158 238 l
345 | 218 205 280 181 344 165 c
346 | 408 149 476 141 547 141 c
347 | 662 141 754 171 821 232 c
348 | 888 293 922 375 922 479 c
349 | 922 583 888 665 821 726 c
350 | 754 787 662 817 547 817 c
351 | 493 817 439 811 385 799 c
352 | 332 787 277 768 221 743 c
353 | 221 1493 l
354 |
355 | ce} _d
356 | /t{803 0 55 0 754 1438 sc
357 | 375 1438 m
358 | 375 1120 l
359 | 754 1120 l
360 | 754 977 l
361 | 375 977 l
362 | 375 369 l
363 | 375 278 387 219 412 193 c
364 | 437 167 488 154 565 154 c
365 | 754 154 l
366 | 754 0 l
367 | 565 0 l
368 | 423 0 325 26 271 79 c
369 | 217 132 190 229 190 369 c
370 | 190 977 l
371 | 55 977 l
372 | 55 1120 l
373 | 190 1120 l
374 | 190 1438 l
375 | 375 1438 l
376 |
377 | ce} _d
378 | /four{1303 0 100 0 1188 1493 sc
379 | 774 1317 m
380 | 264 520 l
381 | 774 520 l
382 | 774 1317 l
383 |
384 | 721 1493 m
385 | 975 1493 l
386 | 975 520 l
387 | 1188 520 l
388 | 1188 352 l
389 | 975 352 l
390 | 975 0 l
391 | 774 0 l
392 | 774 352 l
393 | 100 352 l
394 | 100 547 l
395 | 721 1493 l
396 |
397 | ce} _d
398 | /y{1212 0 61 -426 1151 1120 sc
399 | 659 -104 m
400 | 607 -237 556 -324 507 -365 c
401 | 458 -406 392 -426 309 -426 c
402 | 162 -426 l
403 | 162 -272 l
404 | 270 -272 l
405 | 321 -272 360 -260 388 -236 c
406 | 416 -212 447 -155 481 -66 c
407 | 514 18 l
408 | 61 1120 l
409 | 256 1120 l
410 | 606 244 l
411 | 956 1120 l
412 | 1151 1120 l
413 | 659 -104 l
414 |
415 | ce} _d
416 | /three{1303 0 156 -29 1139 1520 sc
417 | 831 805 m
418 | 928 784 1003 741 1057 676 c
419 | 1112 611 1139 530 1139 434 c
420 | 1139 287 1088 173 987 92 c
421 | 886 11 742 -29 555 -29 c
422 | 492 -29 428 -23 361 -10 c
423 | 295 2 227 20 156 45 c
424 | 156 240 l
425 | 212 207 273 183 340 166 c
426 | 407 149 476 141 549 141 c
427 | 676 141 772 166 838 216 c
428 | 905 266 938 339 938 434 c
429 | 938 522 907 591 845 640 c
430 | 784 690 698 715 588 715 c
431 | 414 715 l
432 | 414 881 l
433 | 596 881 l
434 | 695 881 771 901 824 940 c
435 | 877 980 903 1037 903 1112 c
436 | 903 1189 876 1247 821 1288 c
437 | 767 1329 689 1350 588 1350 c
438 | 533 1350 473 1344 410 1332 c
439 | 347 1320 277 1301 201 1276 c
440 | 201 1456 l
441 | 278 1477 349 1493 416 1504 c
442 | 483 1515 547 1520 606 1520 c
443 | 759 1520 881 1485 970 1415 c
444 | 1059 1346 1104 1252 1104 1133 c
445 | 1104 1050 1080 980 1033 923 c
446 | 986 866 918 827 831 805 c
447 |
448 | ce} _d
449 | end readonly def
450 |
451 | /BuildGlyph {
452 | exch begin
453 | CharStrings exch
454 | 2 copy known not {pop /.notdef} if
455 | true 3 1 roll get exec
456 | end
457 | } _d
458 |
459 | /BuildChar {
460 | 1 index /Encoding get exch get
461 | 1 index /BuildGlyph get exec
462 | } _d
463 |
464 | FontName currentdict end definefont pop
465 | %!PS-Adobe-3.0 Resource-Font
466 | %%Creator: Converted from TrueType to Type 3 by Matplotlib.
467 | 10 dict begin
468 | /FontName /DejaVuSans-Bold def
469 | /PaintType 0 def
470 | /FontMatrix [0.00048828125 0 0 0.00048828125 0 0] def
471 | /FontBBox [-2190 -850 4045 2405] def
472 | /FontType 3 def
473 | /Encoding [/space /parenleft /parenright /hyphen /zero /one /L /P /S /T /a /c /e /g /h /i /k /l /n /o /r /s /t] def
474 | /CharStrings 24 dict dup begin
475 | /.notdef 0 def
476 | /space{713 0 0 0 0 0 sc
477 | ce} _d
478 | /parenleft{936 0 176 -270 772 1554 sc
479 | 772 -270 m
480 | 475 -270 l
481 | 373 -105 298 51 249 199 c
482 | 200 348 176 495 176 641 c
483 | 176 787 200 935 249 1084 c
484 | 298 1234 374 1391 475 1554 c
485 | 772 1554 l
486 | 687 1396 623 1241 580 1090 c
487 | 537 939 516 790 516 643 c
488 | 516 496 537 346 579 195 c
489 | 622 44 686 -111 772 -270 c
490 |
491 | ce} _d
492 | /parenright{936 0 164 -270 760 1554 sc
493 | 164 -270 m
494 | 249 -111 313 44 356 195 c
495 | 399 346 420 496 420 643 c
496 | 420 790 399 939 356 1090 c
497 | 313 1241 249 1396 164 1554 c
498 | 461 1554 l
499 | 562 1391 637 1234 686 1084 c
500 | 735 935 760 787 760 641 c
501 | 760 495 736 348 687 199 c
502 | 638 51 563 -105 461 -270 c
503 | 164 -270 l
504 |
505 | ce} _d
506 | /hyphen{850 0 111 444 739 735 sc
507 | 111 735 m
508 | 739 735 l
509 | 739 444 l
510 | 111 444 l
511 | 111 735 l
512 |
513 | ce} _d
514 | /zero{1425 0 98 -29 1327 1520 sc
515 | 942 748 m
516 | 942 935 924 1066 889 1142 c
517 | 854 1219 796 1257 713 1257 c
518 | 630 1257 571 1219 536 1142 c
519 | 501 1066 483 935 483 748 c
520 | 483 559 501 426 536 349 c
521 | 571 272 630 233 713 233 c
522 | 795 233 854 272 889 349 c
523 | 924 426 942 559 942 748 c
524 |
525 | 1327 745 m
526 | 1327 498 1274 307 1167 172 c
527 | 1060 38 909 -29 713 -29 c
528 | 516 -29 365 38 258 172 c
529 | 151 307 98 498 98 745 c
530 | 98 993 151 1184 258 1318 c
531 | 365 1453 516 1520 713 1520 c
532 | 909 1520 1060 1453 1167 1318 c
533 | 1274 1184 1327 993 1327 745 c
534 |
535 | ce} _d
536 | /one{1425 0 231 0 1284 1493 sc
537 | 240 266 m
538 | 580 266 l
539 | 580 1231 l
540 | 231 1159 l
541 | 231 1421 l
542 | 578 1493 l
543 | 944 1493 l
544 | 944 266 l
545 | 1284 266 l
546 | 1284 0 l
547 | 240 0 l
548 | 240 266 l
549 |
550 | ce} _d
551 | /L{1305 0 188 0 1249 1493 sc
552 | 188 1493 m
553 | 573 1493 l
554 | 573 291 l
555 | 1249 291 l
556 | 1249 0 l
557 | 188 0 l
558 | 188 1493 l
559 |
560 | ce} _d
561 | /P{1501 0 188 0 1417 1493 sc
562 | 188 1493 m
563 | 827 1493 l
564 | 1017 1493 1163 1451 1264 1366 c
565 | 1366 1282 1417 1162 1417 1006 c
566 | 1417 849 1366 729 1264 644 c
567 | 1163 560 1017 518 827 518 c
568 | 573 518 l
569 | 573 0 l
570 | 188 0 l
571 | 188 1493 l
572 |
573 | 573 1214 m
574 | 573 797 l
575 | 786 797 l
576 | 861 797 918 815 959 851 c
577 | 1000 888 1020 939 1020 1006 c
578 | 1020 1073 1000 1124 959 1160 c
579 | 918 1196 861 1214 786 1214 c
580 | 573 1214 l
581 |
582 | ce} _d
583 | /S{1475 0 147 -29 1325 1520 sc
584 | 1227 1446 m
585 | 1227 1130 l
586 | 1145 1167 1065 1194 987 1213 c
587 | 909 1232 835 1241 766 1241 c
588 | 674 1241 606 1228 562 1203 c
589 | 518 1178 496 1138 496 1085 c
590 | 496 1045 511 1014 540 991 c
591 | 570 969 624 950 702 934 c
592 | 866 901 l
593 | 1032 868 1150 817 1220 749 c
594 | 1290 681 1325 584 1325 459 c
595 | 1325 294 1276 172 1178 91 c
596 | 1081 11 932 -29 731 -29 c
597 | 636 -29 541 -20 446 -2 c
598 | 351 16 255 43 160 78 c
599 | 160 403 l
600 | 255 352 347 314 436 288 c
601 | 525 263 611 250 694 250 c
602 | 778 250 842 264 887 292 c
603 | 932 320 954 360 954 412 c
604 | 954 459 939 495 908 520 c
605 | 878 545 818 568 727 588 c
606 | 578 621 l
607 | 429 653 319 704 250 774 c
608 | 181 844 147 938 147 1057 c
609 | 147 1206 195 1320 291 1400 c
610 | 387 1480 525 1520 705 1520 c
611 | 787 1520 871 1514 958 1501 c
612 | 1045 1489 1134 1471 1227 1446 c
613 |
614 | ce} _d
615 | /T{1397 0 10 0 1386 1493 sc
616 | 10 1493 m
617 | 1386 1493 l
618 | 1386 1202 l
619 | 891 1202 l
620 | 891 0 l
621 | 506 0 l
622 | 506 1202 l
623 | 10 1202 l
624 | 10 1493 l
625 |
626 | ce} _d
627 | /a{1382 0 88 -29 1221 1147 sc
628 | 674 504 m
629 | 599 504 543 491 505 466 c
630 | 468 441 449 403 449 354 c
631 | 449 309 464 273 494 247 c
632 | 525 222 567 209 621 209 c
633 | 688 209 745 233 791 281 c
634 | 837 330 860 390 860 463 c
635 | 860 504 l
636 | 674 504 l
637 |
638 | 1221 639 m
639 | 1221 0 l
640 | 860 0 l
641 | 860 166 l
642 | 812 98 758 48 698 17 c
643 | 638 -14 565 -29 479 -29 c
644 | 363 -29 269 5 196 72 c
645 | 124 140 88 228 88 336 c
646 | 88 467 133 564 223 625 c
647 | 314 686 456 717 649 717 c
648 | 860 717 l
649 | 860 745 l
650 | 860 802 838 843 793 869 c
651 | 748 896 679 909 584 909 c
652 | 507 909 436 901 370 886 c
653 | 304 871 243 848 186 817 c
654 | 186 1090 l
655 | 263 1109 340 1123 417 1132 c
656 | 494 1142 572 1147 649 1147 c
657 | 851 1147 997 1107 1086 1027 c
658 | 1176 948 1221 818 1221 639 c
659 |
660 | ce} _d
661 | /c{1214 0 88 -29 1077 1147 sc
662 | 1077 1085 m
663 | 1077 793 l
664 | 1028 826 979 851 930 867 c
665 | 881 883 831 891 778 891 c
666 | 678 891 600 862 544 803 c
667 | 489 745 461 664 461 559 c
668 | 461 454 489 373 544 314 c
669 | 600 256 678 227 778 227 c
670 | 834 227 887 235 937 252 c
671 | 988 269 1034 293 1077 326 c
672 | 1077 33 l
673 | 1021 12 964 -3 906 -13 c
674 | 849 -24 791 -29 733 -29 c
675 | 531 -29 373 23 259 126 c
676 | 145 230 88 374 88 559 c
677 | 88 744 145 888 259 991 c
678 | 373 1095 531 1147 733 1147 c
679 | 792 1147 849 1142 906 1131 c
680 | 963 1121 1020 1106 1077 1085 c
681 |
682 | ce} _d
683 | /e{1389 0 88 -29 1290 1147 sc
684 | 1290 563 m
685 | 1290 461 l
686 | 453 461 l
687 | 462 377 492 314 544 272 c
688 | 596 230 669 209 762 209 c
689 | 837 209 914 220 993 242 c
690 | 1072 265 1154 299 1237 344 c
691 | 1237 68 l
692 | 1152 36 1068 12 983 -4 c
693 | 898 -21 814 -29 729 -29 c
694 | 526 -29 369 22 256 125 c
695 | 144 228 88 373 88 559 c
696 | 88 742 143 885 253 990 c
697 | 364 1095 516 1147 709 1147 c
698 | 885 1147 1026 1094 1131 988 c
699 | 1237 882 1290 740 1290 563 c
700 |
701 | 922 682 m
702 | 922 750 902 805 862 846 c
703 | 823 888 771 909 707 909 c
704 | 638 909 581 889 538 850 c
705 | 495 811 468 755 457 682 c
706 | 922 682 l
707 |
708 | ce} _d
709 | /g{1466 0 92 -442 1294 1145 sc
710 | 934 190 m
711 | 885 125 830 77 771 46 c
712 | 712 15 643 0 565 0 c
713 | 428 0 315 54 226 161 c
714 | 137 269 92 406 92 573 c
715 | 92 740 137 877 226 984 c
716 | 315 1091 428 1145 565 1145 c
717 | 643 1145 712 1130 771 1099 c
718 | 830 1068 885 1020 934 954 c
719 | 934 1120 l
720 | 1294 1120 l
721 | 1294 113 l
722 | 1294 -67 1237 -204 1123 -299 c
723 | 1010 -394 845 -442 629 -442 c
724 | 559 -442 491 -437 426 -426 c
725 | 361 -415 295 -399 229 -377 c
726 | 229 -98 l
727 | 292 -134 353 -161 413 -178 c
728 | 473 -196 533 -205 594 -205 c
729 | 711 -205 797 -179 852 -128 c
730 | 907 -77 934 4 934 113 c
731 | 934 190 l
732 |
733 | 698 887 m
734 | 624 887 566 860 525 805 c
735 | 484 750 463 673 463 573 c
736 | 463 470 483 392 523 339 c
737 | 563 286 621 260 698 260 c
738 | 773 260 831 287 872 342 c
739 | 913 397 934 474 934 573 c
740 | 934 673 913 750 872 805 c
741 | 831 860 773 887 698 887 c
742 |
743 | ce} _d
744 | /h{1458 0 172 0 1298 1556 sc
745 | 1298 682 m
746 | 1298 0 l
747 | 938 0 l
748 | 938 111 l
749 | 938 520 l
750 | 938 618 936 685 931 722 c
751 | 927 759 920 786 909 803 c
752 | 895 826 876 844 852 857 c
753 | 828 870 801 877 770 877 c
754 | 695 877 637 848 594 790 c
755 | 551 733 530 653 530 551 c
756 | 530 0 l
757 | 172 0 l
758 | 172 1556 l
759 | 530 1556 l
760 | 530 956 l
761 | 584 1021 641 1069 702 1100 c
762 | 763 1131 830 1147 903 1147 c
763 | 1032 1147 1130 1107 1197 1028 c
764 | 1264 949 1298 833 1298 682 c
765 |
766 | ce} _d
767 | /i{702 0 172 0 530 1556 sc
768 | 172 1120 m
769 | 530 1120 l
770 | 530 0 l
771 | 172 0 l
772 | 172 1120 l
773 |
774 | 172 1556 m
775 | 530 1556 l
776 | 530 1264 l
777 | 172 1264 l
778 | 172 1556 l
779 |
780 | ce} _d
781 | /k{1362 0 172 0 1401 1556 sc
782 | 172 1556 m
783 | 530 1556 l
784 | 530 709 l
785 | 942 1120 l
786 | 1358 1120 l
787 | 811 606 l
788 | 1401 0 l
789 | 967 0 l
790 | 530 467 l
791 | 530 0 l
792 | 172 0 l
793 | 172 1556 l
794 |
795 | ce} _d
796 | /l{702 0 172 0 530 1556 sc
797 | 172 1556 m
798 | 530 1556 l
799 | 530 0 l
800 | 172 0 l
801 | 172 1556 l
802 |
803 | ce} _d
804 | /n{1458 0 172 0 1298 1147 sc
805 | 1298 682 m
806 | 1298 0 l
807 | 938 0 l
808 | 938 111 l
809 | 938 522 l
810 | 938 619 936 685 931 722 c
811 | 927 759 920 786 909 803 c
812 | 895 826 876 844 852 857 c
813 | 828 870 801 877 770 877 c
814 | 695 877 637 848 594 790 c
815 | 551 733 530 653 530 551 c
816 | 530 0 l
817 | 172 0 l
818 | 172 1120 l
819 | 530 1120 l
820 | 530 956 l
821 | 584 1021 641 1069 702 1100 c
822 | 763 1131 830 1147 903 1147 c
823 | 1032 1147 1130 1107 1197 1028 c
824 | 1264 949 1298 833 1298 682 c
825 |
826 | ce} _d
827 | /o{1407 0 88 -29 1319 1147 sc
828 | 705 891 m
829 | 626 891 565 862 523 805 c
830 | 482 748 461 666 461 559 c
831 | 461 452 482 369 523 312 c
832 | 565 255 626 227 705 227 c
833 | 783 227 843 255 884 312 c
834 | 925 369 946 452 946 559 c
835 | 946 666 925 748 884 805 c
836 | 843 862 783 891 705 891 c
837 |
838 | 705 1147 m
839 | 898 1147 1048 1095 1156 991 c
840 | 1265 887 1319 743 1319 559 c
841 | 1319 375 1265 231 1156 127 c
842 | 1048 23 898 -29 705 -29 c
843 | 512 -29 360 23 251 127 c
844 | 142 231 88 375 88 559 c
845 | 88 743 142 887 251 991 c
846 | 360 1095 512 1147 705 1147 c
847 |
848 | ce} _d
849 | /r{1010 0 172 0 1004 1147 sc
850 | 1004 815 m
851 | 973 830 941 840 910 847 c
852 | 879 854 848 858 817 858 c
853 | 725 858 654 828 604 769 c
854 | 555 710 530 626 530 516 c
855 | 530 0 l
856 | 172 0 l
857 | 172 1120 l
858 | 530 1120 l
859 | 530 936 l
860 | 576 1009 629 1063 688 1096 c
861 | 748 1130 820 1147 903 1147 c
862 | 915 1147 928 1146 942 1145 c
863 | 956 1144 976 1142 1003 1139 c
864 | 1004 815 l
865 |
866 | ce} _d
867 | /s{1219 0 106 -29 1122 1147 sc
868 | 1047 1085 m
869 | 1047 813 l
870 | 970 845 896 869 825 885 c
871 | 754 901 686 909 623 909 c
872 | 555 909 504 900 471 883 c
873 | 438 866 422 840 422 805 c
874 | 422 776 434 754 459 739 c
875 | 484 724 529 712 594 705 c
876 | 657 696 l
877 | 840 673 964 634 1027 581 c
878 | 1090 528 1122 444 1122 330 c
879 | 1122 211 1078 121 990 61 c
880 | 902 1 771 -29 596 -29 c
881 | 522 -29 445 -23 366 -11 c
882 | 287 0 206 18 123 41 c
883 | 123 313 l
884 | 194 278 267 252 342 235 c
885 | 417 218 494 209 571 209 c
886 | 641 209 694 219 729 238 c
887 | 764 257 782 286 782 324 c
888 | 782 356 770 380 745 395 c
889 | 721 411 673 423 600 432 c
890 | 537 440 l
891 | 378 460 266 497 202 551 c
892 | 138 605 106 687 106 797 c
893 | 106 916 147 1004 228 1061 c
894 | 309 1118 434 1147 602 1147 c
895 | 668 1147 737 1142 810 1132 c
896 | 883 1122 962 1106 1047 1085 c
897 |
898 | ce} _d
899 | /t{979 0 27 0 932 1438 sc
900 | 563 1438 m
901 | 563 1120 l
902 | 932 1120 l
903 | 932 864 l
904 | 563 864 l
905 | 563 389 l
906 | 563 337 573 302 594 283 c
907 | 615 265 656 256 717 256 c
908 | 901 256 l
909 | 901 0 l
910 | 594 0 l
911 | 453 0 352 29 293 88 c
912 | 234 147 205 248 205 389 c
913 | 205 864 l
914 | 27 864 l
915 | 27 1120 l
916 | 205 1120 l
917 | 205 1438 l
918 | 563 1438 l
919 |
920 | ce} _d
921 | end readonly def
922 |
923 | /BuildGlyph {
924 | exch begin
925 | CharStrings exch
926 | 2 copy known not {pop /.notdef} if
927 | true 3 1 roll get exec
928 | end
929 | } _d
930 |
931 | /BuildChar {
932 | 1 index /Encoding get exch get
933 | 1 index /BuildGlyph get exec
934 | } _d
935 |
936 | FontName currentdict end definefont pop
937 | end
938 | %%EndProlog
939 | mpldict begin
940 | -54 180 translate
941 | 720 432 0 0 clipbox
942 | gsave
943 | 0 0 m
944 | 720 0 l
945 | 720 432 l
946 | 0 432 l
947 | cl
948 | 1.000 setgray
949 | fill
950 | grestore
951 | gsave
952 | 90 47.52 m
953 | 648 47.52 l
954 | 648 380.16 l
955 | 90 380.16 l
956 | cl
957 | 1.000 setgray
958 | fill
959 | grestore
960 | gsave
961 | 558 332.64 90 47.52 clipbox
962 | 115.363636 47.52 m
963 | 260.298701 47.52 l
964 | 260.298701 201.066624 l
965 | 115.363636 201.066624 l
966 | cl
967 | 0.529 0.808 0.922 setrgbcolor
968 | fill
969 | grestore
970 | gsave
971 | 558 332.64 90 47.52 clipbox
972 | 296.532468 47.52 m
973 | 441.467532 47.52 l
974 | 441.467532 220.4928 l
975 | 296.532468 220.4928 l
976 | cl
977 | 0.529 0.808 0.922 setrgbcolor
978 | fill
979 | grestore
980 | gsave
981 | 558 332.64 90 47.52 clipbox
982 | 477.701299 47.52 m
983 | 622.636364 47.52 l
984 | 622.636364 218.363904 l
985 | 477.701299 218.363904 l
986 | cl
987 | 0.529 0.808 0.922 setrgbcolor
988 | fill
989 | grestore
990 | 0.800 setlinewidth
991 | 1 setlinejoin
992 | 0 setlinecap
993 | [] 0 setdash
994 | 0.000 setgray
995 | gsave
996 | /o {
997 | gsave
998 | newpath
999 | translate
1000 | 0.8 setlinewidth
1001 | 1 setlinejoin
1002 |
1003 | 0 setlinecap
1004 |
1005 | 0 0 m
1006 | 0 -3.5 l
1007 |
1008 | gsave
1009 | 0.000 setgray
1010 | fill
1011 | grestore
1012 | stroke
1013 | grestore
1014 | } bind def
1015 | 187.831 47.52 o
1016 | grestore
1017 | /DejaVuSans 10.000 selectfont
1018 | gsave
1019 |
1020 | 165.909 32.9262 translate
1021 | 0 rotate
1022 | 0 0 m /S glyphshow
1023 | 6.34766 0 m /e glyphshow
1024 | 12.5 0 m /n glyphshow
1025 | 18.8379 0 m /s glyphshow
1026 | 24.0479 0 m /o glyphshow
1027 | 30.166 0 m /r glyphshow
1028 | 34.2773 0 m /space glyphshow
1029 | 37.4561 0 m /one glyphshow
1030 | grestore
1031 | gsave
1032 | /o {
1033 | gsave
1034 | newpath
1035 | translate
1036 | 0.8 setlinewidth
1037 | 1 setlinejoin
1038 |
1039 | 0 setlinecap
1040 |
1041 | 0 0 m
1042 | 0 -3.5 l
1043 |
1044 | gsave
1045 | 0.000 setgray
1046 | fill
1047 | grestore
1048 | stroke
1049 | grestore
1050 | } bind def
1051 | 369 47.52 o
1052 | grestore
1053 | /DejaVuSans 10.000 selectfont
1054 | gsave
1055 |
1056 | 347.078 32.9262 translate
1057 | 0 rotate
1058 | 0 0 m /S glyphshow
1059 | 6.34766 0 m /e glyphshow
1060 | 12.5 0 m /n glyphshow
1061 | 18.8379 0 m /s glyphshow
1062 | 24.0479 0 m /o glyphshow
1063 | 30.166 0 m /r glyphshow
1064 | 34.2773 0 m /space glyphshow
1065 | 37.4561 0 m /two glyphshow
1066 | grestore
1067 | gsave
1068 | /o {
1069 | gsave
1070 | newpath
1071 | translate
1072 | 0.8 setlinewidth
1073 | 1 setlinejoin
1074 |
1075 | 0 setlinecap
1076 |
1077 | 0 0 m
1078 | 0 -3.5 l
1079 |
1080 | gsave
1081 | 0.000 setgray
1082 | fill
1083 | grestore
1084 | stroke
1085 | grestore
1086 | } bind def
1087 | 550.169 47.52 o
1088 | grestore
1089 | /DejaVuSans 10.000 selectfont
1090 | gsave
1091 |
1092 | 528.247 32.9262 translate
1093 | 0 rotate
1094 | 0 0 m /S glyphshow
1095 | 6.34766 0 m /e glyphshow
1096 | 12.5 0 m /n glyphshow
1097 | 18.8379 0 m /s glyphshow
1098 | 24.0479 0 m /o glyphshow
1099 | 30.166 0 m /r glyphshow
1100 | 34.2773 0 m /space glyphshow
1101 | 37.4561 0 m /five glyphshow
1102 | grestore
1103 | /DejaVuSans 14.000 selectfont
1104 | gsave
1105 |
1106 | 341.359 16.2075 translate
1107 | 0 rotate
1108 | 0 0 m /S glyphshow
1109 | 8.88672 0 m /e glyphshow
1110 | 17.5 0 m /n glyphshow
1111 | 26.373 0 m /s glyphshow
1112 | 33.667 0 m /o glyphshow
1113 | 42.2324 0 m /r glyphshow
1114 | 47.9883 0 m /s glyphshow
1115 | grestore
1116 | gsave
1117 | /o {
1118 | gsave
1119 | newpath
1120 | translate
1121 | 0.8 setlinewidth
1122 | 1 setlinejoin
1123 |
1124 | 0 setlinecap
1125 |
1126 | -0 0 m
1127 | -3.5 0 l
1128 |
1129 | gsave
1130 | 0.000 setgray
1131 | fill
1132 | grestore
1133 | stroke
1134 | grestore
1135 | } bind def
1136 | 90 47.52 o
1137 | grestore
1138 | /DejaVuSans 10.000 selectfont
1139 | gsave
1140 |
1141 | 76.6406 43.7231 translate
1142 | 0 rotate
1143 | 0 0 m /zero glyphshow
1144 | grestore
1145 | gsave
1146 | /o {
1147 | gsave
1148 | newpath
1149 | translate
1150 | 0.8 setlinewidth
1151 | 1 setlinejoin
1152 |
1153 | 0 setlinecap
1154 |
1155 | -0 0 m
1156 | -3.5 0 l
1157 |
1158 | gsave
1159 | 0.000 setgray
1160 | fill
1161 | grestore
1162 | stroke
1163 | grestore
1164 | } bind def
1165 | 90 114.048 o
1166 | grestore
1167 | /DejaVuSans 10.000 selectfont
1168 | gsave
1169 |
1170 | 63.9219 110.251 translate
1171 | 0 rotate
1172 | 0 0 m /five glyphshow
1173 | 6.3623 0 m /zero glyphshow
1174 | 12.7246 0 m /zero glyphshow
1175 | grestore
1176 | gsave
1177 | /o {
1178 | gsave
1179 | newpath
1180 | translate
1181 | 0.8 setlinewidth
1182 | 1 setlinejoin
1183 |
1184 | 0 setlinecap
1185 |
1186 | -0 0 m
1187 | -3.5 0 l
1188 |
1189 | gsave
1190 | 0.000 setgray
1191 | fill
1192 | grestore
1193 | stroke
1194 | grestore
1195 | } bind def
1196 | 90 180.576 o
1197 | grestore
1198 | /DejaVuSans 10.000 selectfont
1199 | gsave
1200 |
1201 | 57.5625 176.779 translate
1202 | 0 rotate
1203 | 0 0 m /one glyphshow
1204 | 6.3623 0 m /zero glyphshow
1205 | 12.7246 0 m /zero glyphshow
1206 | 19.0869 0 m /zero glyphshow
1207 | grestore
1208 | gsave
1209 | /o {
1210 | gsave
1211 | newpath
1212 | translate
1213 | 0.8 setlinewidth
1214 | 1 setlinejoin
1215 |
1216 | 0 setlinecap
1217 |
1218 | -0 0 m
1219 | -3.5 0 l
1220 |
1221 | gsave
1222 | 0.000 setgray
1223 | fill
1224 | grestore
1225 | stroke
1226 | grestore
1227 | } bind def
1228 | 90 247.104 o
1229 | grestore
1230 | /DejaVuSans 10.000 selectfont
1231 | gsave
1232 |
1233 | 57.5625 243.307 translate
1234 | 0 rotate
1235 | 0 0 m /one glyphshow
1236 | 6.3623 0 m /five glyphshow
1237 | 12.7246 0 m /zero glyphshow
1238 | 19.0869 0 m /zero glyphshow
1239 | grestore
1240 | gsave
1241 | /o {
1242 | gsave
1243 | newpath
1244 | translate
1245 | 0.8 setlinewidth
1246 | 1 setlinejoin
1247 |
1248 | 0 setlinecap
1249 |
1250 | -0 0 m
1251 | -3.5 0 l
1252 |
1253 | gsave
1254 | 0.000 setgray
1255 | fill
1256 | grestore
1257 | stroke
1258 | grestore
1259 | } bind def
1260 | 90 313.632 o
1261 | grestore
1262 | /DejaVuSans 10.000 selectfont
1263 | gsave
1264 |
1265 | 57.5625 309.835 translate
1266 | 0 rotate
1267 | 0 0 m /two glyphshow
1268 | 6.3623 0 m /zero glyphshow
1269 | 12.7246 0 m /zero glyphshow
1270 | 19.0869 0 m /zero glyphshow
1271 | grestore
1272 | gsave
1273 | /o {
1274 | gsave
1275 | newpath
1276 | translate
1277 | 0.8 setlinewidth
1278 | 1 setlinejoin
1279 |
1280 | 0 setlinecap
1281 |
1282 | -0 0 m
1283 | -3.5 0 l
1284 |
1285 | gsave
1286 | 0.000 setgray
1287 | fill
1288 | grestore
1289 | stroke
1290 | grestore
1291 | } bind def
1292 | 90 380.16 o
1293 | grestore
1294 | /DejaVuSans 10.000 selectfont
1295 | gsave
1296 |
1297 | 57.5625 376.363 translate
1298 | 0 rotate
1299 | 0 0 m /two glyphshow
1300 | 6.3623 0 m /five glyphshow
1301 | 12.7246 0 m /zero glyphshow
1302 | 19.0869 0 m /zero glyphshow
1303 | grestore
1304 | /DejaVuSans 14.000 selectfont
1305 | gsave
1306 |
1307 | 50.6562 194.199 translate
1308 | 90 rotate
1309 | 0 0 m /B glyphshow
1310 | 9.60449 0 m /y glyphshow
1311 | 17.8896 0 m /t glyphshow
1312 | 23.3789 0 m /e glyphshow
1313 | 31.9922 0 m /s glyphshow
1314 | grestore
1315 | 0 setlinejoin
1316 | 2 setlinecap
1317 | gsave
1318 | 90 47.52 m
1319 | 90 380.16 l
1320 | stroke
1321 | grestore
1322 | gsave
1323 | 648 47.52 m
1324 | 648 380.16 l
1325 | stroke
1326 | grestore
1327 | gsave
1328 | 90 47.52 m
1329 | 648 47.52 l
1330 | stroke
1331 | grestore
1332 | gsave
1333 | 90 380.16 m
1334 | 648 380.16 l
1335 | stroke
1336 | grestore
1337 | /DejaVuSans 10.000 selectfont
1338 | gsave
1339 |
1340 | 175.112 216.45 translate
1341 | 0 rotate
1342 | 0 0 m /one glyphshow
1343 | 6.3623 0 m /one glyphshow
1344 | 12.7246 0 m /five glyphshow
1345 | 19.0869 0 m /four glyphshow
1346 | grestore
1347 | /DejaVuSans 10.000 selectfont
1348 | gsave
1349 |
1350 | 356.281 235.877 translate
1351 | 0 rotate
1352 | 0 0 m /one glyphshow
1353 | 6.3623 0 m /three glyphshow
1354 | 12.7246 0 m /zero glyphshow
1355 | 19.0869 0 m /zero glyphshow
1356 | grestore
1357 | /DejaVuSans 10.000 selectfont
1358 | gsave
1359 |
1360 | 537.45 233.748 translate
1361 | 0 rotate
1362 | 0 0 m /one glyphshow
1363 | 6.3623 0 m /two glyphshow
1364 | 12.7246 0 m /eight glyphshow
1365 | 19.0869 0 m /four glyphshow
1366 | grestore
1367 | /DejaVuSans-Bold 16.000 selectfont
1368 | gsave
1369 |
1370 | 206.992 400.16 translate
1371 | 0 rotate
1372 | 0 0 m /T glyphshow
1373 | 8.78906 0 m /o glyphshow
1374 | 19.7812 0 m /t glyphshow
1375 | 27.4297 0 m /a glyphshow
1376 | 38.2266 0 m /l glyphshow
1377 | 43.7109 0 m /space glyphshow
1378 | 49.2812 0 m /P glyphshow
1379 | 60.6328 0 m /a glyphshow
1380 | 71.4297 0 m /c glyphshow
1381 | 80.9141 0 m /k glyphshow
1382 | 91.1797 0 m /e glyphshow
1383 | 102.031 0 m /t glyphshow
1384 | 109.68 0 m /space glyphshow
1385 | 115.25 0 m /L glyphshow
1386 | 125.445 0 m /e glyphshow
1387 | 136.297 0 m /n glyphshow
1388 | 147.688 0 m /g glyphshow
1389 | 159.141 0 m /t glyphshow
1390 | 166.789 0 m /h glyphshow
1391 | 178.18 0 m /s glyphshow
1392 | 187.703 0 m /space glyphshow
1393 | 193.273 0 m /hyphen glyphshow
1394 | 199.914 0 m /space glyphshow
1395 | 205.484 0 m /S glyphshow
1396 | 217.008 0 m /t glyphshow
1397 | 224.656 0 m /o glyphshow
1398 | 235.648 0 m /r glyphshow
1399 | 243.539 0 m /i glyphshow
1400 | 249.023 0 m /n glyphshow
1401 | 260.414 0 m /g glyphshow
1402 | 271.867 0 m /space glyphshow
1403 | 277.438 0 m /parenleft glyphshow
1404 | 284.75 0 m /one glyphshow
1405 | 295.883 0 m /zero glyphshow
1406 | 307.016 0 m /s glyphshow
1407 | 316.539 0 m /parenright glyphshow
1408 | grestore
1409 |
1410 | end
1411 | showpage
1412 |
--------------------------------------------------------------------------------
/assets/images/non5.eps:
--------------------------------------------------------------------------------
1 | %!PS-Adobe-3.0 EPSF-3.0
2 | %%Title: non5.eps
3 | %%Creator: Matplotlib v3.6.3, https://matplotlib.org/
4 | %%CreationDate: Thu Dec 12 08:42:00 2024
5 | %%Orientation: portrait
6 | %%BoundingBox: -54 180 666 612
7 | %%HiResBoundingBox: -54.000000 180.000000 666.000000 612.000000
8 | %%EndComments
9 | %%BeginProlog
10 | /mpldict 12 dict def
11 | mpldict begin
12 | /_d { bind def } bind def
13 | /m { moveto } _d
14 | /l { lineto } _d
15 | /r { rlineto } _d
16 | /c { curveto } _d
17 | /cl { closepath } _d
18 | /ce { closepath eofill } _d
19 | /box {
20 | m
21 | 1 index 0 r
22 | 0 exch r
23 | neg 0 r
24 | cl
25 | } _d
26 | /clipbox {
27 | box
28 | clip
29 | newpath
30 | } _d
31 | /sc { setcachedevice } _d
32 | %!PS-Adobe-3.0 Resource-Font
33 | %%Creator: Converted from TrueType to Type 3 by Matplotlib.
34 | 10 dict begin
35 | /FontName /DejaVuSans def
36 | /PaintType 0 def
37 | /FontMatrix [0.00048828125 0 0 0.00048828125 0 0] def
38 | /FontBBox [-2090 -948 3673 2524] def
39 | /FontType 3 def
40 | /Encoding [/space /zero /one /two /three /four /five /six /seven /eight /nine /B /S /e /n /o /r /s /t /y] def
41 | /CharStrings 21 dict dup begin
42 | /.notdef 0 def
43 | /space{651 0 0 0 0 0 sc
44 | ce} _d
45 | /zero{1303 0 135 -29 1167 1520 sc
46 | 651 1360 m
47 | 547 1360 469 1309 416 1206 c
48 | 364 1104 338 950 338 745 c
49 | 338 540 364 387 416 284 c
50 | 469 182 547 131 651 131 c
51 | 756 131 834 182 886 284 c
52 | 939 387 965 540 965 745 c
53 | 965 950 939 1104 886 1206 c
54 | 834 1309 756 1360 651 1360 c
55 |
56 | 651 1520 m
57 | 818 1520 946 1454 1034 1321 c
58 | 1123 1189 1167 997 1167 745 c
59 | 1167 494 1123 302 1034 169 c
60 | 946 37 818 -29 651 -29 c
61 | 484 -29 356 37 267 169 c
62 | 179 302 135 494 135 745 c
63 | 135 997 179 1189 267 1321 c
64 | 356 1454 484 1520 651 1520 c
65 |
66 | ce} _d
67 | /one{1303 0 225 0 1114 1493 sc
68 | 254 170 m
69 | 584 170 l
70 | 584 1309 l
71 | 225 1237 l
72 | 225 1421 l
73 | 582 1493 l
74 | 784 1493 l
75 | 784 170 l
76 | 1114 170 l
77 | 1114 0 l
78 | 254 0 l
79 | 254 170 l
80 |
81 | ce} _d
82 | /two{1303 0 150 0 1098 1520 sc
83 | 393 170 m
84 | 1098 170 l
85 | 1098 0 l
86 | 150 0 l
87 | 150 170 l
88 | 227 249 331 356 463 489 c
89 | 596 623 679 709 713 748 c
90 | 778 821 823 882 848 932 c
91 | 874 983 887 1032 887 1081 c
92 | 887 1160 859 1225 803 1275 c
93 | 748 1325 675 1350 586 1350 c
94 | 523 1350 456 1339 385 1317 c
95 | 315 1295 240 1262 160 1217 c
96 | 160 1421 l
97 | 241 1454 317 1478 388 1495 c
98 | 459 1512 523 1520 582 1520 c
99 | 737 1520 860 1481 952 1404 c
100 | 1044 1327 1090 1223 1090 1094 c
101 | 1090 1033 1078 974 1055 919 c
102 | 1032 864 991 800 930 725 c
103 | 913 706 860 650 771 557 c
104 | 682 465 556 336 393 170 c
105 |
106 | ce} _d
107 | /three{1303 0 156 -29 1139 1520 sc
108 | 831 805 m
109 | 928 784 1003 741 1057 676 c
110 | 1112 611 1139 530 1139 434 c
111 | 1139 287 1088 173 987 92 c
112 | 886 11 742 -29 555 -29 c
113 | 492 -29 428 -23 361 -10 c
114 | 295 2 227 20 156 45 c
115 | 156 240 l
116 | 212 207 273 183 340 166 c
117 | 407 149 476 141 549 141 c
118 | 676 141 772 166 838 216 c
119 | 905 266 938 339 938 434 c
120 | 938 522 907 591 845 640 c
121 | 784 690 698 715 588 715 c
122 | 414 715 l
123 | 414 881 l
124 | 596 881 l
125 | 695 881 771 901 824 940 c
126 | 877 980 903 1037 903 1112 c
127 | 903 1189 876 1247 821 1288 c
128 | 767 1329 689 1350 588 1350 c
129 | 533 1350 473 1344 410 1332 c
130 | 347 1320 277 1301 201 1276 c
131 | 201 1456 l
132 | 278 1477 349 1493 416 1504 c
133 | 483 1515 547 1520 606 1520 c
134 | 759 1520 881 1485 970 1415 c
135 | 1059 1346 1104 1252 1104 1133 c
136 | 1104 1050 1080 980 1033 923 c
137 | 986 866 918 827 831 805 c
138 |
139 | ce} _d
140 | /four{1303 0 100 0 1188 1493 sc
141 | 774 1317 m
142 | 264 520 l
143 | 774 520 l
144 | 774 1317 l
145 |
146 | 721 1493 m
147 | 975 1493 l
148 | 975 520 l
149 | 1188 520 l
150 | 1188 352 l
151 | 975 352 l
152 | 975 0 l
153 | 774 0 l
154 | 774 352 l
155 | 100 352 l
156 | 100 547 l
157 | 721 1493 l
158 |
159 | ce} _d
160 | /five{1303 0 158 -29 1124 1493 sc
161 | 221 1493 m
162 | 1014 1493 l
163 | 1014 1323 l
164 | 406 1323 l
165 | 406 957 l
166 | 435 967 465 974 494 979 c
167 | 523 984 553 987 582 987 c
168 | 749 987 881 941 978 850 c
169 | 1075 759 1124 635 1124 479 c
170 | 1124 318 1074 193 974 104 c
171 | 874 15 733 -29 551 -29 c
172 | 488 -29 424 -24 359 -13 c
173 | 294 -2 227 14 158 35 c
174 | 158 238 l
175 | 218 205 280 181 344 165 c
176 | 408 149 476 141 547 141 c
177 | 662 141 754 171 821 232 c
178 | 888 293 922 375 922 479 c
179 | 922 583 888 665 821 726 c
180 | 754 787 662 817 547 817 c
181 | 493 817 439 811 385 799 c
182 | 332 787 277 768 221 743 c
183 | 221 1493 l
184 |
185 | ce} _d
186 | /six{1303 0 143 -29 1174 1520 sc
187 | 676 827 m
188 | 585 827 513 796 460 734 c
189 | 407 672 381 587 381 479 c
190 | 381 372 407 287 460 224 c
191 | 513 162 585 131 676 131 c
192 | 767 131 838 162 891 224 c
193 | 944 287 971 372 971 479 c
194 | 971 587 944 672 891 734 c
195 | 838 796 767 827 676 827 c
196 |
197 | 1077 1460 m
198 | 1077 1276 l
199 | 1026 1300 975 1318 923 1331 c
200 | 872 1344 821 1350 770 1350 c
201 | 637 1350 535 1305 464 1215 c
202 | 394 1125 354 989 344 807 c
203 | 383 865 433 909 492 940 c
204 | 551 971 617 987 688 987 c
205 | 838 987 956 941 1043 850 c
206 | 1130 759 1174 636 1174 479 c
207 | 1174 326 1129 203 1038 110 c
208 | 947 17 827 -29 676 -29 c
209 | 503 -29 371 37 280 169 c
210 | 189 302 143 494 143 745 c
211 | 143 981 199 1169 311 1309 c
212 | 423 1450 573 1520 762 1520 c
213 | 813 1520 864 1515 915 1505 c
214 | 967 1495 1021 1480 1077 1460 c
215 |
216 | ce} _d
217 | /seven{1303 0 168 0 1128 1493 sc
218 | 168 1493 m
219 | 1128 1493 l
220 | 1128 1407 l
221 | 586 0 l
222 | 375 0 l
223 | 885 1323 l
224 | 168 1323 l
225 | 168 1493 l
226 |
227 | ce} _d
228 | /eight{1303 0 139 -29 1163 1520 sc
229 | 651 709 m
230 | 555 709 479 683 424 632 c
231 | 369 581 342 510 342 420 c
232 | 342 330 369 259 424 208 c
233 | 479 157 555 131 651 131 c
234 | 747 131 823 157 878 208 c
235 | 933 260 961 331 961 420 c
236 | 961 510 933 581 878 632 c
237 | 823 683 748 709 651 709 c
238 |
239 | 449 795 m
240 | 362 816 295 857 246 916 c
241 | 198 975 174 1048 174 1133 c
242 | 174 1252 216 1347 301 1416 c
243 | 386 1485 503 1520 651 1520 c
244 | 800 1520 916 1485 1001 1416 c
245 | 1086 1347 1128 1252 1128 1133 c
246 | 1128 1048 1104 975 1055 916 c
247 | 1007 857 940 816 854 795 c
248 | 951 772 1027 728 1081 662 c
249 | 1136 596 1163 515 1163 420 c
250 | 1163 275 1119 164 1030 87 c
251 | 942 10 816 -29 651 -29 c
252 | 486 -29 360 10 271 87 c
253 | 183 164 139 275 139 420 c
254 | 139 515 166 596 221 662 c
255 | 276 728 352 772 449 795 c
256 |
257 | 375 1114 m
258 | 375 1037 399 976 447 933 c
259 | 496 890 564 868 651 868 c
260 | 738 868 805 890 854 933 c
261 | 903 976 928 1037 928 1114 c
262 | 928 1191 903 1252 854 1295 c
263 | 805 1338 738 1360 651 1360 c
264 | 564 1360 496 1338 447 1295 c
265 | 399 1252 375 1191 375 1114 c
266 |
267 | ce} _d
268 | /nine{1303 0 129 -29 1159 1520 sc
269 | 225 31 m
270 | 225 215 l
271 | 276 191 327 173 379 160 c
272 | 431 147 482 141 532 141 c
273 | 665 141 767 186 837 275 c
274 | 908 365 948 501 958 684 c
275 | 919 627 870 583 811 552 c
276 | 752 521 686 506 614 506 c
277 | 465 506 346 551 259 641 c
278 | 172 732 129 855 129 1012 c
279 | 129 1165 174 1288 265 1381 c
280 | 356 1474 476 1520 627 1520 c
281 | 800 1520 931 1454 1022 1321 c
282 | 1113 1189 1159 997 1159 745 c
283 | 1159 510 1103 322 991 181 c
284 | 880 41 730 -29 541 -29 c
285 | 490 -29 439 -24 387 -14 c
286 | 335 -4 281 11 225 31 c
287 |
288 | 627 664 m
289 | 718 664 789 695 842 757 c
290 | 895 819 922 904 922 1012 c
291 | 922 1119 895 1204 842 1266 c
292 | 789 1329 718 1360 627 1360 c
293 | 536 1360 464 1329 411 1266 c
294 | 358 1204 332 1119 332 1012 c
295 | 332 904 358 819 411 757 c
296 | 464 695 536 664 627 664 c
297 |
298 | ce} _d
299 | /B{1405 0 201 0 1260 1493 sc
300 | 403 713 m
301 | 403 166 l
302 | 727 166 l
303 | 836 166 916 188 968 233 c
304 | 1021 278 1047 347 1047 440 c
305 | 1047 533 1021 602 968 646 c
306 | 916 691 836 713 727 713 c
307 | 403 713 l
308 |
309 | 403 1327 m
310 | 403 877 l
311 | 702 877 l
312 | 801 877 874 895 922 932 c
313 | 971 969 995 1026 995 1102 c
314 | 995 1177 971 1234 922 1271 c
315 | 874 1308 801 1327 702 1327 c
316 | 403 1327 l
317 |
318 | 201 1493 m
319 | 717 1493 l
320 | 871 1493 990 1461 1073 1397 c
321 | 1156 1333 1198 1242 1198 1124 c
322 | 1198 1033 1177 960 1134 906 c
323 | 1091 852 1029 818 946 805 c
324 | 1045 784 1122 739 1177 671 c
325 | 1232 604 1260 519 1260 418 c
326 | 1260 285 1215 182 1124 109 c
327 | 1033 36 904 0 737 0 c
328 | 201 0 l
329 | 201 1493 l
330 |
331 | ce} _d
332 | /S{1300 0 135 -29 1186 1520 sc
333 | 1096 1444 m
334 | 1096 1247 l
335 | 1019 1284 947 1311 879 1329 c
336 | 811 1347 745 1356 682 1356 c
337 | 572 1356 487 1335 427 1292 c
338 | 368 1249 338 1189 338 1110 c
339 | 338 1044 358 994 397 960 c
340 | 437 927 512 900 623 879 c
341 | 745 854 l
342 | 896 825 1007 775 1078 702 c
343 | 1150 630 1186 533 1186 412 c
344 | 1186 267 1137 158 1040 83 c
345 | 943 8 801 -29 614 -29 c
346 | 543 -29 468 -21 388 -5 c
347 | 309 11 226 35 141 66 c
348 | 141 274 l
349 | 223 228 303 193 382 170 c
350 | 461 147 538 135 614 135 c
351 | 729 135 818 158 881 203 c
352 | 944 248 975 313 975 397 c
353 | 975 470 952 528 907 569 c
354 | 862 610 789 641 686 662 c
355 | 563 686 l
356 | 412 716 303 763 236 827 c
357 | 169 891 135 980 135 1094 c
358 | 135 1226 181 1330 274 1406 c
359 | 367 1482 496 1520 659 1520 c
360 | 729 1520 800 1514 873 1501 c
361 | 946 1488 1020 1469 1096 1444 c
362 |
363 | ce} _d
364 | /e{1260 0 113 -29 1151 1147 sc
365 | 1151 606 m
366 | 1151 516 l
367 | 305 516 l
368 | 313 389 351 293 419 226 c
369 | 488 160 583 127 705 127 c
370 | 776 127 844 136 910 153 c
371 | 977 170 1043 196 1108 231 c
372 | 1108 57 l
373 | 1042 29 974 8 905 -7 c
374 | 836 -22 765 -29 694 -29 c
375 | 515 -29 374 23 269 127 c
376 | 165 231 113 372 113 549 c
377 | 113 732 162 878 261 985 c
378 | 360 1093 494 1147 662 1147 c
379 | 813 1147 932 1098 1019 1001 c
380 | 1107 904 1151 773 1151 606 c
381 |
382 | 967 660 m
383 | 966 761 937 841 882 901 c
384 | 827 961 755 991 664 991 c
385 | 561 991 479 962 417 904 c
386 | 356 846 320 764 311 659 c
387 | 967 660 l
388 |
389 | ce} _d
390 | /n{1298 0 186 0 1124 1147 sc
391 | 1124 676 m
392 | 1124 0 l
393 | 940 0 l
394 | 940 670 l
395 | 940 776 919 855 878 908 c
396 | 837 961 775 987 692 987 c
397 | 593 987 514 955 457 892 c
398 | 400 829 371 742 371 633 c
399 | 371 0 l
400 | 186 0 l
401 | 186 1120 l
402 | 371 1120 l
403 | 371 946 l
404 | 415 1013 467 1064 526 1097 c
405 | 586 1130 655 1147 733 1147 c
406 | 862 1147 959 1107 1025 1027 c
407 | 1091 948 1124 831 1124 676 c
408 |
409 | ce} _d
410 | /o{1253 0 113 -29 1141 1147 sc
411 | 627 991 m
412 | 528 991 450 952 393 875 c
413 | 336 798 307 693 307 559 c
414 | 307 425 335 319 392 242 c
415 | 449 165 528 127 627 127 c
416 | 725 127 803 166 860 243 c
417 | 917 320 946 426 946 559 c
418 | 946 692 917 797 860 874 c
419 | 803 952 725 991 627 991 c
420 |
421 | 627 1147 m
422 | 787 1147 913 1095 1004 991 c
423 | 1095 887 1141 743 1141 559 c
424 | 1141 376 1095 232 1004 127 c
425 | 913 23 787 -29 627 -29 c
426 | 466 -29 340 23 249 127 c
427 | 158 232 113 376 113 559 c
428 | 113 743 158 887 249 991 c
429 | 340 1095 466 1147 627 1147 c
430 |
431 | ce} _d
432 | /r{842 0 186 0 842 1147 sc
433 | 842 948 m
434 | 821 960 799 969 774 974 c
435 | 750 980 723 983 694 983 c
436 | 590 983 510 949 454 881 c
437 | 399 814 371 717 371 590 c
438 | 371 0 l
439 | 186 0 l
440 | 186 1120 l
441 | 371 1120 l
442 | 371 946 l
443 | 410 1014 460 1064 522 1097 c
444 | 584 1130 659 1147 748 1147 c
445 | 761 1147 775 1146 790 1144 c
446 | 805 1143 822 1140 841 1137 c
447 | 842 948 l
448 |
449 | ce} _d
450 | /s{1067 0 111 -29 967 1147 sc
451 | 907 1087 m
452 | 907 913 l
453 | 855 940 801 960 745 973 c
454 | 689 986 631 993 571 993 c
455 | 480 993 411 979 365 951 c
456 | 320 923 297 881 297 825 c
457 | 297 782 313 749 346 724 c
458 | 379 700 444 677 543 655 c
459 | 606 641 l
460 | 737 613 829 573 884 522 c
461 | 939 471 967 400 967 309 c
462 | 967 205 926 123 843 62 c
463 | 761 1 648 -29 504 -29 c
464 | 444 -29 381 -23 316 -11 c
465 | 251 0 183 18 111 41 c
466 | 111 231 l
467 | 179 196 246 169 312 151 c
468 | 378 134 443 125 508 125 c
469 | 595 125 661 140 708 169 c
470 | 755 199 778 241 778 295 c
471 | 778 345 761 383 727 410 c
472 | 694 437 620 462 506 487 c
473 | 442 502 l
474 | 328 526 246 563 195 612 c
475 | 144 662 119 730 119 817 c
476 | 119 922 156 1004 231 1061 c
477 | 306 1118 412 1147 549 1147 c
478 | 617 1147 681 1142 741 1132 c
479 | 801 1122 856 1107 907 1087 c
480 |
481 | ce} _d
482 | /t{803 0 55 0 754 1438 sc
483 | 375 1438 m
484 | 375 1120 l
485 | 754 1120 l
486 | 754 977 l
487 | 375 977 l
488 | 375 369 l
489 | 375 278 387 219 412 193 c
490 | 437 167 488 154 565 154 c
491 | 754 154 l
492 | 754 0 l
493 | 565 0 l
494 | 423 0 325 26 271 79 c
495 | 217 132 190 229 190 369 c
496 | 190 977 l
497 | 55 977 l
498 | 55 1120 l
499 | 190 1120 l
500 | 190 1438 l
501 | 375 1438 l
502 |
503 | ce} _d
504 | /y{1212 0 61 -426 1151 1120 sc
505 | 659 -104 m
506 | 607 -237 556 -324 507 -365 c
507 | 458 -406 392 -426 309 -426 c
508 | 162 -426 l
509 | 162 -272 l
510 | 270 -272 l
511 | 321 -272 360 -260 388 -236 c
512 | 416 -212 447 -155 481 -66 c
513 | 514 18 l
514 | 61 1120 l
515 | 256 1120 l
516 | 606 244 l
517 | 956 1120 l
518 | 1151 1120 l
519 | 659 -104 l
520 |
521 | ce} _d
522 | end readonly def
523 |
524 | /BuildGlyph {
525 | exch begin
526 | CharStrings exch
527 | 2 copy known not {pop /.notdef} if
528 | true 3 1 roll get exec
529 | end
530 | } _d
531 |
532 | /BuildChar {
533 | 1 index /Encoding get exch get
534 | 1 index /BuildGlyph get exec
535 | } _d
536 |
537 | FontName currentdict end definefont pop
538 | %!PS-Adobe-3.0 Resource-Font
539 | %%Creator: Converted from TrueType to Type 3 by Matplotlib.
540 | 10 dict begin
541 | /FontName /DejaVuSans-Bold def
542 | /PaintType 0 def
543 | /FontMatrix [0.00048828125 0 0 0.00048828125 0 0] def
544 | /FontBBox [-2190 -850 4045 2405] def
545 | /FontType 3 def
546 | /Encoding [/space /parenleft /parenright /hyphen /five /L /N /P /S /T /a /c /e /g /h /i /k /l /n /o /r /s /t] def
547 | /CharStrings 24 dict dup begin
548 | /.notdef 0 def
549 | /space{713 0 0 0 0 0 sc
550 | ce} _d
551 | /parenleft{936 0 176 -270 772 1554 sc
552 | 772 -270 m
553 | 475 -270 l
554 | 373 -105 298 51 249 199 c
555 | 200 348 176 495 176 641 c
556 | 176 787 200 935 249 1084 c
557 | 298 1234 374 1391 475 1554 c
558 | 772 1554 l
559 | 687 1396 623 1241 580 1090 c
560 | 537 939 516 790 516 643 c
561 | 516 496 537 346 579 195 c
562 | 622 44 686 -111 772 -270 c
563 |
564 | ce} _d
565 | /parenright{936 0 164 -270 760 1554 sc
566 | 164 -270 m
567 | 249 -111 313 44 356 195 c
568 | 399 346 420 496 420 643 c
569 | 420 790 399 939 356 1090 c
570 | 313 1241 249 1396 164 1554 c
571 | 461 1554 l
572 | 562 1391 637 1234 686 1084 c
573 | 735 935 760 787 760 641 c
574 | 760 495 736 348 687 199 c
575 | 638 51 563 -105 461 -270 c
576 | 164 -270 l
577 |
578 | ce} _d
579 | /hyphen{850 0 111 444 739 735 sc
580 | 111 735 m
581 | 739 735 l
582 | 739 444 l
583 | 111 444 l
584 | 111 735 l
585 |
586 | ce} _d
587 | /five{1425 0 158 -29 1282 1493 sc
588 | 217 1493 m
589 | 1174 1493 l
590 | 1174 1210 l
591 | 524 1210 l
592 | 524 979 l
593 | 553 987 583 993 612 997 c
594 | 642 1002 673 1004 705 1004 c
595 | 887 1004 1029 958 1130 867 c
596 | 1231 776 1282 650 1282 487 c
597 | 1282 326 1227 199 1116 108 c
598 | 1006 17 853 -29 657 -29 c
599 | 572 -29 488 -21 405 -4 c
600 | 322 12 240 37 158 70 c
601 | 158 373 l
602 | 239 326 316 291 389 268 c
603 | 462 245 531 233 596 233 c
604 | 689 233 763 256 816 301 c
605 | 870 347 897 409 897 487 c
606 | 897 566 870 628 816 673 c
607 | 763 718 689 741 596 741 c
608 | 541 741 482 734 419 719 c
609 | 356 705 289 683 217 653 c
610 | 217 1493 l
611 |
612 | ce} _d
613 | /L{1305 0 188 0 1249 1493 sc
614 | 188 1493 m
615 | 573 1493 l
616 | 573 291 l
617 | 1249 291 l
618 | 1249 0 l
619 | 188 0 l
620 | 188 1493 l
621 |
622 | ce} _d
623 | /N{1714 0 188 0 1526 1493 sc
624 | 188 1493 m
625 | 618 1493 l
626 | 1161 469 l
627 | 1161 1493 l
628 | 1526 1493 l
629 | 1526 0 l
630 | 1096 0 l
631 | 553 1024 l
632 | 553 0 l
633 | 188 0 l
634 | 188 1493 l
635 |
636 | ce} _d
637 | /P{1501 0 188 0 1417 1493 sc
638 | 188 1493 m
639 | 827 1493 l
640 | 1017 1493 1163 1451 1264 1366 c
641 | 1366 1282 1417 1162 1417 1006 c
642 | 1417 849 1366 729 1264 644 c
643 | 1163 560 1017 518 827 518 c
644 | 573 518 l
645 | 573 0 l
646 | 188 0 l
647 | 188 1493 l
648 |
649 | 573 1214 m
650 | 573 797 l
651 | 786 797 l
652 | 861 797 918 815 959 851 c
653 | 1000 888 1020 939 1020 1006 c
654 | 1020 1073 1000 1124 959 1160 c
655 | 918 1196 861 1214 786 1214 c
656 | 573 1214 l
657 |
658 | ce} _d
659 | /S{1475 0 147 -29 1325 1520 sc
660 | 1227 1446 m
661 | 1227 1130 l
662 | 1145 1167 1065 1194 987 1213 c
663 | 909 1232 835 1241 766 1241 c
664 | 674 1241 606 1228 562 1203 c
665 | 518 1178 496 1138 496 1085 c
666 | 496 1045 511 1014 540 991 c
667 | 570 969 624 950 702 934 c
668 | 866 901 l
669 | 1032 868 1150 817 1220 749 c
670 | 1290 681 1325 584 1325 459 c
671 | 1325 294 1276 172 1178 91 c
672 | 1081 11 932 -29 731 -29 c
673 | 636 -29 541 -20 446 -2 c
674 | 351 16 255 43 160 78 c
675 | 160 403 l
676 | 255 352 347 314 436 288 c
677 | 525 263 611 250 694 250 c
678 | 778 250 842 264 887 292 c
679 | 932 320 954 360 954 412 c
680 | 954 459 939 495 908 520 c
681 | 878 545 818 568 727 588 c
682 | 578 621 l
683 | 429 653 319 704 250 774 c
684 | 181 844 147 938 147 1057 c
685 | 147 1206 195 1320 291 1400 c
686 | 387 1480 525 1520 705 1520 c
687 | 787 1520 871 1514 958 1501 c
688 | 1045 1489 1134 1471 1227 1446 c
689 |
690 | ce} _d
691 | /T{1397 0 10 0 1386 1493 sc
692 | 10 1493 m
693 | 1386 1493 l
694 | 1386 1202 l
695 | 891 1202 l
696 | 891 0 l
697 | 506 0 l
698 | 506 1202 l
699 | 10 1202 l
700 | 10 1493 l
701 |
702 | ce} _d
703 | /a{1382 0 88 -29 1221 1147 sc
704 | 674 504 m
705 | 599 504 543 491 505 466 c
706 | 468 441 449 403 449 354 c
707 | 449 309 464 273 494 247 c
708 | 525 222 567 209 621 209 c
709 | 688 209 745 233 791 281 c
710 | 837 330 860 390 860 463 c
711 | 860 504 l
712 | 674 504 l
713 |
714 | 1221 639 m
715 | 1221 0 l
716 | 860 0 l
717 | 860 166 l
718 | 812 98 758 48 698 17 c
719 | 638 -14 565 -29 479 -29 c
720 | 363 -29 269 5 196 72 c
721 | 124 140 88 228 88 336 c
722 | 88 467 133 564 223 625 c
723 | 314 686 456 717 649 717 c
724 | 860 717 l
725 | 860 745 l
726 | 860 802 838 843 793 869 c
727 | 748 896 679 909 584 909 c
728 | 507 909 436 901 370 886 c
729 | 304 871 243 848 186 817 c
730 | 186 1090 l
731 | 263 1109 340 1123 417 1132 c
732 | 494 1142 572 1147 649 1147 c
733 | 851 1147 997 1107 1086 1027 c
734 | 1176 948 1221 818 1221 639 c
735 |
736 | ce} _d
737 | /c{1214 0 88 -29 1077 1147 sc
738 | 1077 1085 m
739 | 1077 793 l
740 | 1028 826 979 851 930 867 c
741 | 881 883 831 891 778 891 c
742 | 678 891 600 862 544 803 c
743 | 489 745 461 664 461 559 c
744 | 461 454 489 373 544 314 c
745 | 600 256 678 227 778 227 c
746 | 834 227 887 235 937 252 c
747 | 988 269 1034 293 1077 326 c
748 | 1077 33 l
749 | 1021 12 964 -3 906 -13 c
750 | 849 -24 791 -29 733 -29 c
751 | 531 -29 373 23 259 126 c
752 | 145 230 88 374 88 559 c
753 | 88 744 145 888 259 991 c
754 | 373 1095 531 1147 733 1147 c
755 | 792 1147 849 1142 906 1131 c
756 | 963 1121 1020 1106 1077 1085 c
757 |
758 | ce} _d
759 | /e{1389 0 88 -29 1290 1147 sc
760 | 1290 563 m
761 | 1290 461 l
762 | 453 461 l
763 | 462 377 492 314 544 272 c
764 | 596 230 669 209 762 209 c
765 | 837 209 914 220 993 242 c
766 | 1072 265 1154 299 1237 344 c
767 | 1237 68 l
768 | 1152 36 1068 12 983 -4 c
769 | 898 -21 814 -29 729 -29 c
770 | 526 -29 369 22 256 125 c
771 | 144 228 88 373 88 559 c
772 | 88 742 143 885 253 990 c
773 | 364 1095 516 1147 709 1147 c
774 | 885 1147 1026 1094 1131 988 c
775 | 1237 882 1290 740 1290 563 c
776 |
777 | 922 682 m
778 | 922 750 902 805 862 846 c
779 | 823 888 771 909 707 909 c
780 | 638 909 581 889 538 850 c
781 | 495 811 468 755 457 682 c
782 | 922 682 l
783 |
784 | ce} _d
785 | /g{1466 0 92 -442 1294 1145 sc
786 | 934 190 m
787 | 885 125 830 77 771 46 c
788 | 712 15 643 0 565 0 c
789 | 428 0 315 54 226 161 c
790 | 137 269 92 406 92 573 c
791 | 92 740 137 877 226 984 c
792 | 315 1091 428 1145 565 1145 c
793 | 643 1145 712 1130 771 1099 c
794 | 830 1068 885 1020 934 954 c
795 | 934 1120 l
796 | 1294 1120 l
797 | 1294 113 l
798 | 1294 -67 1237 -204 1123 -299 c
799 | 1010 -394 845 -442 629 -442 c
800 | 559 -442 491 -437 426 -426 c
801 | 361 -415 295 -399 229 -377 c
802 | 229 -98 l
803 | 292 -134 353 -161 413 -178 c
804 | 473 -196 533 -205 594 -205 c
805 | 711 -205 797 -179 852 -128 c
806 | 907 -77 934 4 934 113 c
807 | 934 190 l
808 |
809 | 698 887 m
810 | 624 887 566 860 525 805 c
811 | 484 750 463 673 463 573 c
812 | 463 470 483 392 523 339 c
813 | 563 286 621 260 698 260 c
814 | 773 260 831 287 872 342 c
815 | 913 397 934 474 934 573 c
816 | 934 673 913 750 872 805 c
817 | 831 860 773 887 698 887 c
818 |
819 | ce} _d
820 | /h{1458 0 172 0 1298 1556 sc
821 | 1298 682 m
822 | 1298 0 l
823 | 938 0 l
824 | 938 111 l
825 | 938 520 l
826 | 938 618 936 685 931 722 c
827 | 927 759 920 786 909 803 c
828 | 895 826 876 844 852 857 c
829 | 828 870 801 877 770 877 c
830 | 695 877 637 848 594 790 c
831 | 551 733 530 653 530 551 c
832 | 530 0 l
833 | 172 0 l
834 | 172 1556 l
835 | 530 1556 l
836 | 530 956 l
837 | 584 1021 641 1069 702 1100 c
838 | 763 1131 830 1147 903 1147 c
839 | 1032 1147 1130 1107 1197 1028 c
840 | 1264 949 1298 833 1298 682 c
841 |
842 | ce} _d
843 | /i{702 0 172 0 530 1556 sc
844 | 172 1120 m
845 | 530 1120 l
846 | 530 0 l
847 | 172 0 l
848 | 172 1120 l
849 |
850 | 172 1556 m
851 | 530 1556 l
852 | 530 1264 l
853 | 172 1264 l
854 | 172 1556 l
855 |
856 | ce} _d
857 | /k{1362 0 172 0 1401 1556 sc
858 | 172 1556 m
859 | 530 1556 l
860 | 530 709 l
861 | 942 1120 l
862 | 1358 1120 l
863 | 811 606 l
864 | 1401 0 l
865 | 967 0 l
866 | 530 467 l
867 | 530 0 l
868 | 172 0 l
869 | 172 1556 l
870 |
871 | ce} _d
872 | /l{702 0 172 0 530 1556 sc
873 | 172 1556 m
874 | 530 1556 l
875 | 530 0 l
876 | 172 0 l
877 | 172 1556 l
878 |
879 | ce} _d
880 | /n{1458 0 172 0 1298 1147 sc
881 | 1298 682 m
882 | 1298 0 l
883 | 938 0 l
884 | 938 111 l
885 | 938 522 l
886 | 938 619 936 685 931 722 c
887 | 927 759 920 786 909 803 c
888 | 895 826 876 844 852 857 c
889 | 828 870 801 877 770 877 c
890 | 695 877 637 848 594 790 c
891 | 551 733 530 653 530 551 c
892 | 530 0 l
893 | 172 0 l
894 | 172 1120 l
895 | 530 1120 l
896 | 530 956 l
897 | 584 1021 641 1069 702 1100 c
898 | 763 1131 830 1147 903 1147 c
899 | 1032 1147 1130 1107 1197 1028 c
900 | 1264 949 1298 833 1298 682 c
901 |
902 | ce} _d
903 | /o{1407 0 88 -29 1319 1147 sc
904 | 705 891 m
905 | 626 891 565 862 523 805 c
906 | 482 748 461 666 461 559 c
907 | 461 452 482 369 523 312 c
908 | 565 255 626 227 705 227 c
909 | 783 227 843 255 884 312 c
910 | 925 369 946 452 946 559 c
911 | 946 666 925 748 884 805 c
912 | 843 862 783 891 705 891 c
913 |
914 | 705 1147 m
915 | 898 1147 1048 1095 1156 991 c
916 | 1265 887 1319 743 1319 559 c
917 | 1319 375 1265 231 1156 127 c
918 | 1048 23 898 -29 705 -29 c
919 | 512 -29 360 23 251 127 c
920 | 142 231 88 375 88 559 c
921 | 88 743 142 887 251 991 c
922 | 360 1095 512 1147 705 1147 c
923 |
924 | ce} _d
925 | /r{1010 0 172 0 1004 1147 sc
926 | 1004 815 m
927 | 973 830 941 840 910 847 c
928 | 879 854 848 858 817 858 c
929 | 725 858 654 828 604 769 c
930 | 555 710 530 626 530 516 c
931 | 530 0 l
932 | 172 0 l
933 | 172 1120 l
934 | 530 1120 l
935 | 530 936 l
936 | 576 1009 629 1063 688 1096 c
937 | 748 1130 820 1147 903 1147 c
938 | 915 1147 928 1146 942 1145 c
939 | 956 1144 976 1142 1003 1139 c
940 | 1004 815 l
941 |
942 | ce} _d
943 | /s{1219 0 106 -29 1122 1147 sc
944 | 1047 1085 m
945 | 1047 813 l
946 | 970 845 896 869 825 885 c
947 | 754 901 686 909 623 909 c
948 | 555 909 504 900 471 883 c
949 | 438 866 422 840 422 805 c
950 | 422 776 434 754 459 739 c
951 | 484 724 529 712 594 705 c
952 | 657 696 l
953 | 840 673 964 634 1027 581 c
954 | 1090 528 1122 444 1122 330 c
955 | 1122 211 1078 121 990 61 c
956 | 902 1 771 -29 596 -29 c
957 | 522 -29 445 -23 366 -11 c
958 | 287 0 206 18 123 41 c
959 | 123 313 l
960 | 194 278 267 252 342 235 c
961 | 417 218 494 209 571 209 c
962 | 641 209 694 219 729 238 c
963 | 764 257 782 286 782 324 c
964 | 782 356 770 380 745 395 c
965 | 721 411 673 423 600 432 c
966 | 537 440 l
967 | 378 460 266 497 202 551 c
968 | 138 605 106 687 106 797 c
969 | 106 916 147 1004 228 1061 c
970 | 309 1118 434 1147 602 1147 c
971 | 668 1147 737 1142 810 1132 c
972 | 883 1122 962 1106 1047 1085 c
973 |
974 | ce} _d
975 | /t{979 0 27 0 932 1438 sc
976 | 563 1438 m
977 | 563 1120 l
978 | 932 1120 l
979 | 932 864 l
980 | 563 864 l
981 | 563 389 l
982 | 563 337 573 302 594 283 c
983 | 615 265 656 256 717 256 c
984 | 901 256 l
985 | 901 0 l
986 | 594 0 l
987 | 453 0 352 29 293 88 c
988 | 234 147 205 248 205 389 c
989 | 205 864 l
990 | 27 864 l
991 | 27 1120 l
992 | 205 1120 l
993 | 205 1438 l
994 | 563 1438 l
995 |
996 | ce} _d
997 | end readonly def
998 |
999 | /BuildGlyph {
1000 | exch begin
1001 | CharStrings exch
1002 | 2 copy known not {pop /.notdef} if
1003 | true 3 1 roll get exec
1004 | end
1005 | } _d
1006 |
1007 | /BuildChar {
1008 | 1 index /Encoding get exch get
1009 | 1 index /BuildGlyph get exec
1010 | } _d
1011 |
1012 | FontName currentdict end definefont pop
1013 | end
1014 | %%EndProlog
1015 | mpldict begin
1016 | -54 180 translate
1017 | 720 432 0 0 clipbox
1018 | gsave
1019 | 0 0 m
1020 | 720 0 l
1021 | 720 432 l
1022 | 0 432 l
1023 | cl
1024 | 1.000 setgray
1025 | fill
1026 | grestore
1027 | gsave
1028 | 90 47.52 m
1029 | 648 47.52 l
1030 | 648 380.16 l
1031 | 90 380.16 l
1032 | cl
1033 | 1.000 setgray
1034 | fill
1035 | grestore
1036 | gsave
1037 | 558 332.64 90 47.52 clipbox
1038 | 115.363636 47.52 m
1039 | 161.479339 47.52 l
1040 | 161.479339 248.168448 l
1041 | 115.363636 248.168448 l
1042 | cl
1043 | 0.529 0.808 0.922 setrgbcolor
1044 | fill
1045 | grestore
1046 | gsave
1047 | 558 332.64 90 47.52 clipbox
1048 | 173.008264 47.52 m
1049 | 219.123967 47.52 l
1050 | 219.123967 243.910656 l
1051 | 173.008264 243.910656 l
1052 | cl
1053 | 0.529 0.808 0.922 setrgbcolor
1054 | fill
1055 | grestore
1056 | gsave
1057 | 558 332.64 90 47.52 clipbox
1058 | 230.652893 47.52 m
1059 | 276.768595 47.52 l
1060 | 276.768595 152.900352 l
1061 | 230.652893 152.900352 l
1062 | cl
1063 | 0.529 0.808 0.922 setrgbcolor
1064 | fill
1065 | grestore
1066 | gsave
1067 | 558 332.64 90 47.52 clipbox
1068 | 288.297521 47.52 m
1069 | 334.413223 47.52 l
1070 | 334.413223 144.118656 l
1071 | 288.297521 144.118656 l
1072 | cl
1073 | 0.529 0.808 0.922 setrgbcolor
1074 | fill
1075 | grestore
1076 | gsave
1077 | 558 332.64 90 47.52 clipbox
1078 | 345.942149 47.52 m
1079 | 392.057851 47.52 l
1080 | 392.057851 245.241216 l
1081 | 345.942149 245.241216 l
1082 | cl
1083 | 0.529 0.808 0.922 setrgbcolor
1084 | fill
1085 | grestore
1086 | gsave
1087 | 558 332.64 90 47.52 clipbox
1088 | 403.586777 47.52 m
1089 | 449.702479 47.52 l
1090 | 449.702479 161.682048 l
1091 | 403.586777 161.682048 l
1092 | cl
1093 | 0.529 0.808 0.922 setrgbcolor
1094 | fill
1095 | grestore
1096 | gsave
1097 | 558 332.64 90 47.52 clipbox
1098 | 461.231405 47.52 m
1099 | 507.347107 47.52 l
1100 | 507.347107 170.463744 l
1101 | 461.231405 170.463744 l
1102 | cl
1103 | 0.529 0.808 0.922 setrgbcolor
1104 | fill
1105 | grestore
1106 | gsave
1107 | 558 332.64 90 47.52 clipbox
1108 | 518.876033 47.52 m
1109 | 564.991736 47.52 l
1110 | 564.991736 170.463744 l
1111 | 518.876033 170.463744 l
1112 | cl
1113 | 0.529 0.808 0.922 setrgbcolor
1114 | fill
1115 | grestore
1116 | gsave
1117 | 558 332.64 90 47.52 clipbox
1118 | 576.520661 47.52 m
1119 | 622.636364 47.52 l
1120 | 622.636364 135.33696 l
1121 | 576.520661 135.33696 l
1122 | cl
1123 | 0.529 0.808 0.922 setrgbcolor
1124 | fill
1125 | grestore
1126 | 0.800 setlinewidth
1127 | 1 setlinejoin
1128 | 0 setlinecap
1129 | [] 0 setdash
1130 | 0.000 setgray
1131 | gsave
1132 | /o {
1133 | gsave
1134 | newpath
1135 | translate
1136 | 0.8 setlinewidth
1137 | 1 setlinejoin
1138 |
1139 | 0 setlinecap
1140 |
1141 | 0 0 m
1142 | 0 -3.5 l
1143 |
1144 | gsave
1145 | 0.000 setgray
1146 | fill
1147 | grestore
1148 | stroke
1149 | grestore
1150 | } bind def
1151 | 138.421 47.52 o
1152 | grestore
1153 | /DejaVuSans 10.000 selectfont
1154 | gsave
1155 |
1156 | 116.5 32.9262 translate
1157 | 0 rotate
1158 | 0 0 m /S glyphshow
1159 | 6.34766 0 m /e glyphshow
1160 | 12.5 0 m /n glyphshow
1161 | 18.8379 0 m /s glyphshow
1162 | 24.0479 0 m /o glyphshow
1163 | 30.166 0 m /r glyphshow
1164 | 34.2773 0 m /space glyphshow
1165 | 37.4561 0 m /one glyphshow
1166 | grestore
1167 | gsave
1168 | /o {
1169 | gsave
1170 | newpath
1171 | translate
1172 | 0.8 setlinewidth
1173 | 1 setlinejoin
1174 |
1175 | 0 setlinecap
1176 |
1177 | 0 0 m
1178 | 0 -3.5 l
1179 |
1180 | gsave
1181 | 0.000 setgray
1182 | fill
1183 | grestore
1184 | stroke
1185 | grestore
1186 | } bind def
1187 | 196.066 47.52 o
1188 | grestore
1189 | /DejaVuSans 10.000 selectfont
1190 | gsave
1191 |
1192 | 174.144 32.9262 translate
1193 | 0 rotate
1194 | 0 0 m /S glyphshow
1195 | 6.34766 0 m /e glyphshow
1196 | 12.5 0 m /n glyphshow
1197 | 18.8379 0 m /s glyphshow
1198 | 24.0479 0 m /o glyphshow
1199 | 30.166 0 m /r glyphshow
1200 | 34.2773 0 m /space glyphshow
1201 | 37.4561 0 m /two glyphshow
1202 | grestore
1203 | gsave
1204 | /o {
1205 | gsave
1206 | newpath
1207 | translate
1208 | 0.8 setlinewidth
1209 | 1 setlinejoin
1210 |
1211 | 0 setlinecap
1212 |
1213 | 0 0 m
1214 | 0 -3.5 l
1215 |
1216 | gsave
1217 | 0.000 setgray
1218 | fill
1219 | grestore
1220 | stroke
1221 | grestore
1222 | } bind def
1223 | 253.711 47.52 o
1224 | grestore
1225 | /DejaVuSans 10.000 selectfont
1226 | gsave
1227 |
1228 | 231.789 32.9262 translate
1229 | 0 rotate
1230 | 0 0 m /S glyphshow
1231 | 6.34766 0 m /e glyphshow
1232 | 12.5 0 m /n glyphshow
1233 | 18.8379 0 m /s glyphshow
1234 | 24.0479 0 m /o glyphshow
1235 | 30.166 0 m /r glyphshow
1236 | 34.2773 0 m /space glyphshow
1237 | 37.4561 0 m /three glyphshow
1238 | grestore
1239 | gsave
1240 | /o {
1241 | gsave
1242 | newpath
1243 | translate
1244 | 0.8 setlinewidth
1245 | 1 setlinejoin
1246 |
1247 | 0 setlinecap
1248 |
1249 | 0 0 m
1250 | 0 -3.5 l
1251 |
1252 | gsave
1253 | 0.000 setgray
1254 | fill
1255 | grestore
1256 | stroke
1257 | grestore
1258 | } bind def
1259 | 311.355 47.52 o
1260 | grestore
1261 | /DejaVuSans 10.000 selectfont
1262 | gsave
1263 |
1264 | 289.433 32.9262 translate
1265 | 0 rotate
1266 | 0 0 m /S glyphshow
1267 | 6.34766 0 m /e glyphshow
1268 | 12.5 0 m /n glyphshow
1269 | 18.8379 0 m /s glyphshow
1270 | 24.0479 0 m /o glyphshow
1271 | 30.166 0 m /r glyphshow
1272 | 34.2773 0 m /space glyphshow
1273 | 37.4561 0 m /four glyphshow
1274 | grestore
1275 | gsave
1276 | /o {
1277 | gsave
1278 | newpath
1279 | translate
1280 | 0.8 setlinewidth
1281 | 1 setlinejoin
1282 |
1283 | 0 setlinecap
1284 |
1285 | 0 0 m
1286 | 0 -3.5 l
1287 |
1288 | gsave
1289 | 0.000 setgray
1290 | fill
1291 | grestore
1292 | stroke
1293 | grestore
1294 | } bind def
1295 | 369 47.52 o
1296 | grestore
1297 | /DejaVuSans 10.000 selectfont
1298 | gsave
1299 |
1300 | 347.078 32.9262 translate
1301 | 0 rotate
1302 | 0 0 m /S glyphshow
1303 | 6.34766 0 m /e glyphshow
1304 | 12.5 0 m /n glyphshow
1305 | 18.8379 0 m /s glyphshow
1306 | 24.0479 0 m /o glyphshow
1307 | 30.166 0 m /r glyphshow
1308 | 34.2773 0 m /space glyphshow
1309 | 37.4561 0 m /five glyphshow
1310 | grestore
1311 | gsave
1312 | /o {
1313 | gsave
1314 | newpath
1315 | translate
1316 | 0.8 setlinewidth
1317 | 1 setlinejoin
1318 |
1319 | 0 setlinecap
1320 |
1321 | 0 0 m
1322 | 0 -3.5 l
1323 |
1324 | gsave
1325 | 0.000 setgray
1326 | fill
1327 | grestore
1328 | stroke
1329 | grestore
1330 | } bind def
1331 | 426.645 47.52 o
1332 | grestore
1333 | /DejaVuSans 10.000 selectfont
1334 | gsave
1335 |
1336 | 404.723 32.9262 translate
1337 | 0 rotate
1338 | 0 0 m /S glyphshow
1339 | 6.34766 0 m /e glyphshow
1340 | 12.5 0 m /n glyphshow
1341 | 18.8379 0 m /s glyphshow
1342 | 24.0479 0 m /o glyphshow
1343 | 30.166 0 m /r glyphshow
1344 | 34.2773 0 m /space glyphshow
1345 | 37.4561 0 m /six glyphshow
1346 | grestore
1347 | gsave
1348 | /o {
1349 | gsave
1350 | newpath
1351 | translate
1352 | 0.8 setlinewidth
1353 | 1 setlinejoin
1354 |
1355 | 0 setlinecap
1356 |
1357 | 0 0 m
1358 | 0 -3.5 l
1359 |
1360 | gsave
1361 | 0.000 setgray
1362 | fill
1363 | grestore
1364 | stroke
1365 | grestore
1366 | } bind def
1367 | 484.289 47.52 o
1368 | grestore
1369 | /DejaVuSans 10.000 selectfont
1370 | gsave
1371 |
1372 | 462.367 32.9262 translate
1373 | 0 rotate
1374 | 0 0 m /S glyphshow
1375 | 6.34766 0 m /e glyphshow
1376 | 12.5 0 m /n glyphshow
1377 | 18.8379 0 m /s glyphshow
1378 | 24.0479 0 m /o glyphshow
1379 | 30.166 0 m /r glyphshow
1380 | 34.2773 0 m /space glyphshow
1381 | 37.4561 0 m /seven glyphshow
1382 | grestore
1383 | gsave
1384 | /o {
1385 | gsave
1386 | newpath
1387 | translate
1388 | 0.8 setlinewidth
1389 | 1 setlinejoin
1390 |
1391 | 0 setlinecap
1392 |
1393 | 0 0 m
1394 | 0 -3.5 l
1395 |
1396 | gsave
1397 | 0.000 setgray
1398 | fill
1399 | grestore
1400 | stroke
1401 | grestore
1402 | } bind def
1403 | 541.934 47.52 o
1404 | grestore
1405 | /DejaVuSans 10.000 selectfont
1406 | gsave
1407 |
1408 | 520.012 32.9262 translate
1409 | 0 rotate
1410 | 0 0 m /S glyphshow
1411 | 6.34766 0 m /e glyphshow
1412 | 12.5 0 m /n glyphshow
1413 | 18.8379 0 m /s glyphshow
1414 | 24.0479 0 m /o glyphshow
1415 | 30.166 0 m /r glyphshow
1416 | 34.2773 0 m /space glyphshow
1417 | 37.4561 0 m /eight glyphshow
1418 | grestore
1419 | gsave
1420 | /o {
1421 | gsave
1422 | newpath
1423 | translate
1424 | 0.8 setlinewidth
1425 | 1 setlinejoin
1426 |
1427 | 0 setlinecap
1428 |
1429 | 0 0 m
1430 | 0 -3.5 l
1431 |
1432 | gsave
1433 | 0.000 setgray
1434 | fill
1435 | grestore
1436 | stroke
1437 | grestore
1438 | } bind def
1439 | 599.579 47.52 o
1440 | grestore
1441 | /DejaVuSans 10.000 selectfont
1442 | gsave
1443 |
1444 | 577.657 32.9262 translate
1445 | 0 rotate
1446 | 0 0 m /S glyphshow
1447 | 6.34766 0 m /e glyphshow
1448 | 12.5 0 m /n glyphshow
1449 | 18.8379 0 m /s glyphshow
1450 | 24.0479 0 m /o glyphshow
1451 | 30.166 0 m /r glyphshow
1452 | 34.2773 0 m /space glyphshow
1453 | 37.4561 0 m /nine glyphshow
1454 | grestore
1455 | /DejaVuSans 14.000 selectfont
1456 | gsave
1457 |
1458 | 341.359 16.2075 translate
1459 | 0 rotate
1460 | 0 0 m /S glyphshow
1461 | 8.88672 0 m /e glyphshow
1462 | 17.5 0 m /n glyphshow
1463 | 26.373 0 m /s glyphshow
1464 | 33.667 0 m /o glyphshow
1465 | 42.2324 0 m /r glyphshow
1466 | 47.9883 0 m /s glyphshow
1467 | grestore
1468 | gsave
1469 | /o {
1470 | gsave
1471 | newpath
1472 | translate
1473 | 0.8 setlinewidth
1474 | 1 setlinejoin
1475 |
1476 | 0 setlinecap
1477 |
1478 | -0 0 m
1479 | -3.5 0 l
1480 |
1481 | gsave
1482 | 0.000 setgray
1483 | fill
1484 | grestore
1485 | stroke
1486 | grestore
1487 | } bind def
1488 | 90 47.52 o
1489 | grestore
1490 | /DejaVuSans 10.000 selectfont
1491 | gsave
1492 |
1493 | 76.6406 43.7231 translate
1494 | 0 rotate
1495 | 0 0 m /zero glyphshow
1496 | grestore
1497 | gsave
1498 | /o {
1499 | gsave
1500 | newpath
1501 | translate
1502 | 0.8 setlinewidth
1503 | 1 setlinejoin
1504 |
1505 | 0 setlinecap
1506 |
1507 | -0 0 m
1508 | -3.5 0 l
1509 |
1510 | gsave
1511 | 0.000 setgray
1512 | fill
1513 | grestore
1514 | stroke
1515 | grestore
1516 | } bind def
1517 | 90 114.048 o
1518 | grestore
1519 | /DejaVuSans 10.000 selectfont
1520 | gsave
1521 |
1522 | 63.9219 110.251 translate
1523 | 0 rotate
1524 | 0 0 m /five glyphshow
1525 | 6.3623 0 m /zero glyphshow
1526 | 12.7246 0 m /zero glyphshow
1527 | grestore
1528 | gsave
1529 | /o {
1530 | gsave
1531 | newpath
1532 | translate
1533 | 0.8 setlinewidth
1534 | 1 setlinejoin
1535 |
1536 | 0 setlinecap
1537 |
1538 | -0 0 m
1539 | -3.5 0 l
1540 |
1541 | gsave
1542 | 0.000 setgray
1543 | fill
1544 | grestore
1545 | stroke
1546 | grestore
1547 | } bind def
1548 | 90 180.576 o
1549 | grestore
1550 | /DejaVuSans 10.000 selectfont
1551 | gsave
1552 |
1553 | 57.5625 176.779 translate
1554 | 0 rotate
1555 | 0 0 m /one glyphshow
1556 | 6.3623 0 m /zero glyphshow
1557 | 12.7246 0 m /zero glyphshow
1558 | 19.0869 0 m /zero glyphshow
1559 | grestore
1560 | gsave
1561 | /o {
1562 | gsave
1563 | newpath
1564 | translate
1565 | 0.8 setlinewidth
1566 | 1 setlinejoin
1567 |
1568 | 0 setlinecap
1569 |
1570 | -0 0 m
1571 | -3.5 0 l
1572 |
1573 | gsave
1574 | 0.000 setgray
1575 | fill
1576 | grestore
1577 | stroke
1578 | grestore
1579 | } bind def
1580 | 90 247.104 o
1581 | grestore
1582 | /DejaVuSans 10.000 selectfont
1583 | gsave
1584 |
1585 | 57.5625 243.307 translate
1586 | 0 rotate
1587 | 0 0 m /one glyphshow
1588 | 6.3623 0 m /five glyphshow
1589 | 12.7246 0 m /zero glyphshow
1590 | 19.0869 0 m /zero glyphshow
1591 | grestore
1592 | gsave
1593 | /o {
1594 | gsave
1595 | newpath
1596 | translate
1597 | 0.8 setlinewidth
1598 | 1 setlinejoin
1599 |
1600 | 0 setlinecap
1601 |
1602 | -0 0 m
1603 | -3.5 0 l
1604 |
1605 | gsave
1606 | 0.000 setgray
1607 | fill
1608 | grestore
1609 | stroke
1610 | grestore
1611 | } bind def
1612 | 90 313.632 o
1613 | grestore
1614 | /DejaVuSans 10.000 selectfont
1615 | gsave
1616 |
1617 | 57.5625 309.835 translate
1618 | 0 rotate
1619 | 0 0 m /two glyphshow
1620 | 6.3623 0 m /zero glyphshow
1621 | 12.7246 0 m /zero glyphshow
1622 | 19.0869 0 m /zero glyphshow
1623 | grestore
1624 | gsave
1625 | /o {
1626 | gsave
1627 | newpath
1628 | translate
1629 | 0.8 setlinewidth
1630 | 1 setlinejoin
1631 |
1632 | 0 setlinecap
1633 |
1634 | -0 0 m
1635 | -3.5 0 l
1636 |
1637 | gsave
1638 | 0.000 setgray
1639 | fill
1640 | grestore
1641 | stroke
1642 | grestore
1643 | } bind def
1644 | 90 380.16 o
1645 | grestore
1646 | /DejaVuSans 10.000 selectfont
1647 | gsave
1648 |
1649 | 57.5625 376.363 translate
1650 | 0 rotate
1651 | 0 0 m /two glyphshow
1652 | 6.3623 0 m /five glyphshow
1653 | 12.7246 0 m /zero glyphshow
1654 | 19.0869 0 m /zero glyphshow
1655 | grestore
1656 | /DejaVuSans 14.000 selectfont
1657 | gsave
1658 |
1659 | 50.6562 194.199 translate
1660 | 90 rotate
1661 | 0 0 m /B glyphshow
1662 | 9.60449 0 m /y glyphshow
1663 | 17.8896 0 m /t glyphshow
1664 | 23.3789 0 m /e glyphshow
1665 | 31.9922 0 m /s glyphshow
1666 | grestore
1667 | 0 setlinejoin
1668 | 2 setlinecap
1669 | gsave
1670 | 90 47.52 m
1671 | 90 380.16 l
1672 | stroke
1673 | grestore
1674 | gsave
1675 | 648 47.52 m
1676 | 648 380.16 l
1677 | stroke
1678 | grestore
1679 | gsave
1680 | 90 47.52 m
1681 | 648 47.52 l
1682 | stroke
1683 | grestore
1684 | gsave
1685 | 90 380.16 m
1686 | 648 380.16 l
1687 | stroke
1688 | grestore
1689 | /DejaVuSans 10.000 selectfont
1690 | gsave
1691 |
1692 | 125.703 263.552 translate
1693 | 0 rotate
1694 | 0 0 m /one glyphshow
1695 | 6.3623 0 m /five glyphshow
1696 | 12.7246 0 m /zero glyphshow
1697 | 19.0869 0 m /eight glyphshow
1698 | grestore
1699 | /DejaVuSans 10.000 selectfont
1700 | gsave
1701 |
1702 | 183.347 259.294 translate
1703 | 0 rotate
1704 | 0 0 m /one glyphshow
1705 | 6.3623 0 m /four glyphshow
1706 | 12.7246 0 m /seven glyphshow
1707 | 19.0869 0 m /six glyphshow
1708 | grestore
1709 | /DejaVuSans 10.000 selectfont
1710 | gsave
1711 |
1712 | 244.172 168.284 translate
1713 | 0 rotate
1714 | 0 0 m /seven glyphshow
1715 | 6.3623 0 m /nine glyphshow
1716 | 12.7246 0 m /two glyphshow
1717 | grestore
1718 | /DejaVuSans 10.000 selectfont
1719 | gsave
1720 |
1721 | 301.816 159.502 translate
1722 | 0 rotate
1723 | 0 0 m /seven glyphshow
1724 | 6.3623 0 m /two glyphshow
1725 | 12.7246 0 m /six glyphshow
1726 | grestore
1727 | /DejaVuSans 10.000 selectfont
1728 | gsave
1729 |
1730 | 356.281 260.625 translate
1731 | 0 rotate
1732 | 0 0 m /one glyphshow
1733 | 6.3623 0 m /four glyphshow
1734 | 12.7246 0 m /eight glyphshow
1735 | 19.0869 0 m /six glyphshow
1736 | grestore
1737 | /DejaVuSans 10.000 selectfont
1738 | gsave
1739 |
1740 | 417.106 177.066 translate
1741 | 0 rotate
1742 | 0 0 m /eight glyphshow
1743 | 6.3623 0 m /five glyphshow
1744 | 12.7246 0 m /eight glyphshow
1745 | grestore
1746 | /DejaVuSans 10.000 selectfont
1747 | gsave
1748 |
1749 | 474.75 185.847 translate
1750 | 0 rotate
1751 | 0 0 m /nine glyphshow
1752 | 6.3623 0 m /two glyphshow
1753 | 12.7246 0 m /four glyphshow
1754 | grestore
1755 | /DejaVuSans 10.000 selectfont
1756 | gsave
1757 |
1758 | 532.395 185.847 translate
1759 | 0 rotate
1760 | 0 0 m /nine glyphshow
1761 | 6.3623 0 m /two glyphshow
1762 | 12.7246 0 m /four glyphshow
1763 | grestore
1764 | /DejaVuSans 10.000 selectfont
1765 | gsave
1766 |
1767 | 590.039 150.721 translate
1768 | 0 rotate
1769 | 0 0 m /six glyphshow
1770 | 6.3623 0 m /six glyphshow
1771 | 12.7246 0 m /zero glyphshow
1772 | grestore
1773 | /DejaVuSans-Bold 16.000 selectfont
1774 | gsave
1775 |
1776 | 191.352 400.16 translate
1777 | 0 rotate
1778 | 0 0 m /T glyphshow
1779 | 8.78906 0 m /o glyphshow
1780 | 19.7812 0 m /t glyphshow
1781 | 27.4297 0 m /a glyphshow
1782 | 38.2266 0 m /l glyphshow
1783 | 43.7109 0 m /space glyphshow
1784 | 49.2812 0 m /P glyphshow
1785 | 60.6328 0 m /a glyphshow
1786 | 71.4297 0 m /c glyphshow
1787 | 80.9141 0 m /k glyphshow
1788 | 91.1797 0 m /e glyphshow
1789 | 102.031 0 m /t glyphshow
1790 | 109.68 0 m /space glyphshow
1791 | 115.25 0 m /L glyphshow
1792 | 125.445 0 m /e glyphshow
1793 | 136.297 0 m /n glyphshow
1794 | 147.688 0 m /g glyphshow
1795 | 159.141 0 m /t glyphshow
1796 | 166.789 0 m /h glyphshow
1797 | 178.18 0 m /s glyphshow
1798 | 187.703 0 m /space glyphshow
1799 | 193.273 0 m /hyphen glyphshow
1800 | 199.914 0 m /space glyphshow
1801 | 205.484 0 m /N glyphshow
1802 | 218.875 0 m /o glyphshow
1803 | 229.867 0 m /n glyphshow
1804 | 241.258 0 m /hyphen glyphshow
1805 | 247.898 0 m /S glyphshow
1806 | 259.422 0 m /t glyphshow
1807 | 267.07 0 m /o glyphshow
1808 | 278.062 0 m /r glyphshow
1809 | 285.953 0 m /i glyphshow
1810 | 291.438 0 m /n glyphshow
1811 | 302.828 0 m /g glyphshow
1812 | 314.281 0 m /space glyphshow
1813 | 319.852 0 m /parenleft glyphshow
1814 | 327.164 0 m /five glyphshow
1815 | 338.297 0 m /s glyphshow
1816 | 347.82 0 m /parenright glyphshow
1817 | grestore
1818 |
1819 | end
1820 | showpage
1821 |
--------------------------------------------------------------------------------
/assets/images/non10.eps:
--------------------------------------------------------------------------------
1 | %!PS-Adobe-3.0 EPSF-3.0
2 | %%Title: non10.eps
3 | %%Creator: Matplotlib v3.6.3, https://matplotlib.org/
4 | %%CreationDate: Thu Dec 12 08:42:00 2024
5 | %%Orientation: portrait
6 | %%BoundingBox: -54 180 666 612
7 | %%HiResBoundingBox: -54.000000 180.000000 666.000000 612.000000
8 | %%EndComments
9 | %%BeginProlog
10 | /mpldict 12 dict def
11 | mpldict begin
12 | /_d { bind def } bind def
13 | /m { moveto } _d
14 | /l { lineto } _d
15 | /r { rlineto } _d
16 | /c { curveto } _d
17 | /cl { closepath } _d
18 | /ce { closepath eofill } _d
19 | /box {
20 | m
21 | 1 index 0 r
22 | 0 exch r
23 | neg 0 r
24 | cl
25 | } _d
26 | /clipbox {
27 | box
28 | clip
29 | newpath
30 | } _d
31 | /sc { setcachedevice } _d
32 | %!PS-Adobe-3.0 Resource-Font
33 | %%Creator: Converted from TrueType to Type 3 by Matplotlib.
34 | 10 dict begin
35 | /FontName /DejaVuSans def
36 | /PaintType 0 def
37 | /FontMatrix [0.00048828125 0 0 0.00048828125 0 0] def
38 | /FontBBox [-2090 -948 3673 2524] def
39 | /FontType 3 def
40 | /Encoding [/space /zero /one /two /three /four /five /six /seven /eight /nine /B /S /e /n /o /r /s /t /y] def
41 | /CharStrings 21 dict dup begin
42 | /.notdef 0 def
43 | /space{651 0 0 0 0 0 sc
44 | ce} _d
45 | /zero{1303 0 135 -29 1167 1520 sc
46 | 651 1360 m
47 | 547 1360 469 1309 416 1206 c
48 | 364 1104 338 950 338 745 c
49 | 338 540 364 387 416 284 c
50 | 469 182 547 131 651 131 c
51 | 756 131 834 182 886 284 c
52 | 939 387 965 540 965 745 c
53 | 965 950 939 1104 886 1206 c
54 | 834 1309 756 1360 651 1360 c
55 |
56 | 651 1520 m
57 | 818 1520 946 1454 1034 1321 c
58 | 1123 1189 1167 997 1167 745 c
59 | 1167 494 1123 302 1034 169 c
60 | 946 37 818 -29 651 -29 c
61 | 484 -29 356 37 267 169 c
62 | 179 302 135 494 135 745 c
63 | 135 997 179 1189 267 1321 c
64 | 356 1454 484 1520 651 1520 c
65 |
66 | ce} _d
67 | /one{1303 0 225 0 1114 1493 sc
68 | 254 170 m
69 | 584 170 l
70 | 584 1309 l
71 | 225 1237 l
72 | 225 1421 l
73 | 582 1493 l
74 | 784 1493 l
75 | 784 170 l
76 | 1114 170 l
77 | 1114 0 l
78 | 254 0 l
79 | 254 170 l
80 |
81 | ce} _d
82 | /two{1303 0 150 0 1098 1520 sc
83 | 393 170 m
84 | 1098 170 l
85 | 1098 0 l
86 | 150 0 l
87 | 150 170 l
88 | 227 249 331 356 463 489 c
89 | 596 623 679 709 713 748 c
90 | 778 821 823 882 848 932 c
91 | 874 983 887 1032 887 1081 c
92 | 887 1160 859 1225 803 1275 c
93 | 748 1325 675 1350 586 1350 c
94 | 523 1350 456 1339 385 1317 c
95 | 315 1295 240 1262 160 1217 c
96 | 160 1421 l
97 | 241 1454 317 1478 388 1495 c
98 | 459 1512 523 1520 582 1520 c
99 | 737 1520 860 1481 952 1404 c
100 | 1044 1327 1090 1223 1090 1094 c
101 | 1090 1033 1078 974 1055 919 c
102 | 1032 864 991 800 930 725 c
103 | 913 706 860 650 771 557 c
104 | 682 465 556 336 393 170 c
105 |
106 | ce} _d
107 | /three{1303 0 156 -29 1139 1520 sc
108 | 831 805 m
109 | 928 784 1003 741 1057 676 c
110 | 1112 611 1139 530 1139 434 c
111 | 1139 287 1088 173 987 92 c
112 | 886 11 742 -29 555 -29 c
113 | 492 -29 428 -23 361 -10 c
114 | 295 2 227 20 156 45 c
115 | 156 240 l
116 | 212 207 273 183 340 166 c
117 | 407 149 476 141 549 141 c
118 | 676 141 772 166 838 216 c
119 | 905 266 938 339 938 434 c
120 | 938 522 907 591 845 640 c
121 | 784 690 698 715 588 715 c
122 | 414 715 l
123 | 414 881 l
124 | 596 881 l
125 | 695 881 771 901 824 940 c
126 | 877 980 903 1037 903 1112 c
127 | 903 1189 876 1247 821 1288 c
128 | 767 1329 689 1350 588 1350 c
129 | 533 1350 473 1344 410 1332 c
130 | 347 1320 277 1301 201 1276 c
131 | 201 1456 l
132 | 278 1477 349 1493 416 1504 c
133 | 483 1515 547 1520 606 1520 c
134 | 759 1520 881 1485 970 1415 c
135 | 1059 1346 1104 1252 1104 1133 c
136 | 1104 1050 1080 980 1033 923 c
137 | 986 866 918 827 831 805 c
138 |
139 | ce} _d
140 | /four{1303 0 100 0 1188 1493 sc
141 | 774 1317 m
142 | 264 520 l
143 | 774 520 l
144 | 774 1317 l
145 |
146 | 721 1493 m
147 | 975 1493 l
148 | 975 520 l
149 | 1188 520 l
150 | 1188 352 l
151 | 975 352 l
152 | 975 0 l
153 | 774 0 l
154 | 774 352 l
155 | 100 352 l
156 | 100 547 l
157 | 721 1493 l
158 |
159 | ce} _d
160 | /five{1303 0 158 -29 1124 1493 sc
161 | 221 1493 m
162 | 1014 1493 l
163 | 1014 1323 l
164 | 406 1323 l
165 | 406 957 l
166 | 435 967 465 974 494 979 c
167 | 523 984 553 987 582 987 c
168 | 749 987 881 941 978 850 c
169 | 1075 759 1124 635 1124 479 c
170 | 1124 318 1074 193 974 104 c
171 | 874 15 733 -29 551 -29 c
172 | 488 -29 424 -24 359 -13 c
173 | 294 -2 227 14 158 35 c
174 | 158 238 l
175 | 218 205 280 181 344 165 c
176 | 408 149 476 141 547 141 c
177 | 662 141 754 171 821 232 c
178 | 888 293 922 375 922 479 c
179 | 922 583 888 665 821 726 c
180 | 754 787 662 817 547 817 c
181 | 493 817 439 811 385 799 c
182 | 332 787 277 768 221 743 c
183 | 221 1493 l
184 |
185 | ce} _d
186 | /six{1303 0 143 -29 1174 1520 sc
187 | 676 827 m
188 | 585 827 513 796 460 734 c
189 | 407 672 381 587 381 479 c
190 | 381 372 407 287 460 224 c
191 | 513 162 585 131 676 131 c
192 | 767 131 838 162 891 224 c
193 | 944 287 971 372 971 479 c
194 | 971 587 944 672 891 734 c
195 | 838 796 767 827 676 827 c
196 |
197 | 1077 1460 m
198 | 1077 1276 l
199 | 1026 1300 975 1318 923 1331 c
200 | 872 1344 821 1350 770 1350 c
201 | 637 1350 535 1305 464 1215 c
202 | 394 1125 354 989 344 807 c
203 | 383 865 433 909 492 940 c
204 | 551 971 617 987 688 987 c
205 | 838 987 956 941 1043 850 c
206 | 1130 759 1174 636 1174 479 c
207 | 1174 326 1129 203 1038 110 c
208 | 947 17 827 -29 676 -29 c
209 | 503 -29 371 37 280 169 c
210 | 189 302 143 494 143 745 c
211 | 143 981 199 1169 311 1309 c
212 | 423 1450 573 1520 762 1520 c
213 | 813 1520 864 1515 915 1505 c
214 | 967 1495 1021 1480 1077 1460 c
215 |
216 | ce} _d
217 | /seven{1303 0 168 0 1128 1493 sc
218 | 168 1493 m
219 | 1128 1493 l
220 | 1128 1407 l
221 | 586 0 l
222 | 375 0 l
223 | 885 1323 l
224 | 168 1323 l
225 | 168 1493 l
226 |
227 | ce} _d
228 | /eight{1303 0 139 -29 1163 1520 sc
229 | 651 709 m
230 | 555 709 479 683 424 632 c
231 | 369 581 342 510 342 420 c
232 | 342 330 369 259 424 208 c
233 | 479 157 555 131 651 131 c
234 | 747 131 823 157 878 208 c
235 | 933 260 961 331 961 420 c
236 | 961 510 933 581 878 632 c
237 | 823 683 748 709 651 709 c
238 |
239 | 449 795 m
240 | 362 816 295 857 246 916 c
241 | 198 975 174 1048 174 1133 c
242 | 174 1252 216 1347 301 1416 c
243 | 386 1485 503 1520 651 1520 c
244 | 800 1520 916 1485 1001 1416 c
245 | 1086 1347 1128 1252 1128 1133 c
246 | 1128 1048 1104 975 1055 916 c
247 | 1007 857 940 816 854 795 c
248 | 951 772 1027 728 1081 662 c
249 | 1136 596 1163 515 1163 420 c
250 | 1163 275 1119 164 1030 87 c
251 | 942 10 816 -29 651 -29 c
252 | 486 -29 360 10 271 87 c
253 | 183 164 139 275 139 420 c
254 | 139 515 166 596 221 662 c
255 | 276 728 352 772 449 795 c
256 |
257 | 375 1114 m
258 | 375 1037 399 976 447 933 c
259 | 496 890 564 868 651 868 c
260 | 738 868 805 890 854 933 c
261 | 903 976 928 1037 928 1114 c
262 | 928 1191 903 1252 854 1295 c
263 | 805 1338 738 1360 651 1360 c
264 | 564 1360 496 1338 447 1295 c
265 | 399 1252 375 1191 375 1114 c
266 |
267 | ce} _d
268 | /nine{1303 0 129 -29 1159 1520 sc
269 | 225 31 m
270 | 225 215 l
271 | 276 191 327 173 379 160 c
272 | 431 147 482 141 532 141 c
273 | 665 141 767 186 837 275 c
274 | 908 365 948 501 958 684 c
275 | 919 627 870 583 811 552 c
276 | 752 521 686 506 614 506 c
277 | 465 506 346 551 259 641 c
278 | 172 732 129 855 129 1012 c
279 | 129 1165 174 1288 265 1381 c
280 | 356 1474 476 1520 627 1520 c
281 | 800 1520 931 1454 1022 1321 c
282 | 1113 1189 1159 997 1159 745 c
283 | 1159 510 1103 322 991 181 c
284 | 880 41 730 -29 541 -29 c
285 | 490 -29 439 -24 387 -14 c
286 | 335 -4 281 11 225 31 c
287 |
288 | 627 664 m
289 | 718 664 789 695 842 757 c
290 | 895 819 922 904 922 1012 c
291 | 922 1119 895 1204 842 1266 c
292 | 789 1329 718 1360 627 1360 c
293 | 536 1360 464 1329 411 1266 c
294 | 358 1204 332 1119 332 1012 c
295 | 332 904 358 819 411 757 c
296 | 464 695 536 664 627 664 c
297 |
298 | ce} _d
299 | /B{1405 0 201 0 1260 1493 sc
300 | 403 713 m
301 | 403 166 l
302 | 727 166 l
303 | 836 166 916 188 968 233 c
304 | 1021 278 1047 347 1047 440 c
305 | 1047 533 1021 602 968 646 c
306 | 916 691 836 713 727 713 c
307 | 403 713 l
308 |
309 | 403 1327 m
310 | 403 877 l
311 | 702 877 l
312 | 801 877 874 895 922 932 c
313 | 971 969 995 1026 995 1102 c
314 | 995 1177 971 1234 922 1271 c
315 | 874 1308 801 1327 702 1327 c
316 | 403 1327 l
317 |
318 | 201 1493 m
319 | 717 1493 l
320 | 871 1493 990 1461 1073 1397 c
321 | 1156 1333 1198 1242 1198 1124 c
322 | 1198 1033 1177 960 1134 906 c
323 | 1091 852 1029 818 946 805 c
324 | 1045 784 1122 739 1177 671 c
325 | 1232 604 1260 519 1260 418 c
326 | 1260 285 1215 182 1124 109 c
327 | 1033 36 904 0 737 0 c
328 | 201 0 l
329 | 201 1493 l
330 |
331 | ce} _d
332 | /S{1300 0 135 -29 1186 1520 sc
333 | 1096 1444 m
334 | 1096 1247 l
335 | 1019 1284 947 1311 879 1329 c
336 | 811 1347 745 1356 682 1356 c
337 | 572 1356 487 1335 427 1292 c
338 | 368 1249 338 1189 338 1110 c
339 | 338 1044 358 994 397 960 c
340 | 437 927 512 900 623 879 c
341 | 745 854 l
342 | 896 825 1007 775 1078 702 c
343 | 1150 630 1186 533 1186 412 c
344 | 1186 267 1137 158 1040 83 c
345 | 943 8 801 -29 614 -29 c
346 | 543 -29 468 -21 388 -5 c
347 | 309 11 226 35 141 66 c
348 | 141 274 l
349 | 223 228 303 193 382 170 c
350 | 461 147 538 135 614 135 c
351 | 729 135 818 158 881 203 c
352 | 944 248 975 313 975 397 c
353 | 975 470 952 528 907 569 c
354 | 862 610 789 641 686 662 c
355 | 563 686 l
356 | 412 716 303 763 236 827 c
357 | 169 891 135 980 135 1094 c
358 | 135 1226 181 1330 274 1406 c
359 | 367 1482 496 1520 659 1520 c
360 | 729 1520 800 1514 873 1501 c
361 | 946 1488 1020 1469 1096 1444 c
362 |
363 | ce} _d
364 | /e{1260 0 113 -29 1151 1147 sc
365 | 1151 606 m
366 | 1151 516 l
367 | 305 516 l
368 | 313 389 351 293 419 226 c
369 | 488 160 583 127 705 127 c
370 | 776 127 844 136 910 153 c
371 | 977 170 1043 196 1108 231 c
372 | 1108 57 l
373 | 1042 29 974 8 905 -7 c
374 | 836 -22 765 -29 694 -29 c
375 | 515 -29 374 23 269 127 c
376 | 165 231 113 372 113 549 c
377 | 113 732 162 878 261 985 c
378 | 360 1093 494 1147 662 1147 c
379 | 813 1147 932 1098 1019 1001 c
380 | 1107 904 1151 773 1151 606 c
381 |
382 | 967 660 m
383 | 966 761 937 841 882 901 c
384 | 827 961 755 991 664 991 c
385 | 561 991 479 962 417 904 c
386 | 356 846 320 764 311 659 c
387 | 967 660 l
388 |
389 | ce} _d
390 | /n{1298 0 186 0 1124 1147 sc
391 | 1124 676 m
392 | 1124 0 l
393 | 940 0 l
394 | 940 670 l
395 | 940 776 919 855 878 908 c
396 | 837 961 775 987 692 987 c
397 | 593 987 514 955 457 892 c
398 | 400 829 371 742 371 633 c
399 | 371 0 l
400 | 186 0 l
401 | 186 1120 l
402 | 371 1120 l
403 | 371 946 l
404 | 415 1013 467 1064 526 1097 c
405 | 586 1130 655 1147 733 1147 c
406 | 862 1147 959 1107 1025 1027 c
407 | 1091 948 1124 831 1124 676 c
408 |
409 | ce} _d
410 | /o{1253 0 113 -29 1141 1147 sc
411 | 627 991 m
412 | 528 991 450 952 393 875 c
413 | 336 798 307 693 307 559 c
414 | 307 425 335 319 392 242 c
415 | 449 165 528 127 627 127 c
416 | 725 127 803 166 860 243 c
417 | 917 320 946 426 946 559 c
418 | 946 692 917 797 860 874 c
419 | 803 952 725 991 627 991 c
420 |
421 | 627 1147 m
422 | 787 1147 913 1095 1004 991 c
423 | 1095 887 1141 743 1141 559 c
424 | 1141 376 1095 232 1004 127 c
425 | 913 23 787 -29 627 -29 c
426 | 466 -29 340 23 249 127 c
427 | 158 232 113 376 113 559 c
428 | 113 743 158 887 249 991 c
429 | 340 1095 466 1147 627 1147 c
430 |
431 | ce} _d
432 | /r{842 0 186 0 842 1147 sc
433 | 842 948 m
434 | 821 960 799 969 774 974 c
435 | 750 980 723 983 694 983 c
436 | 590 983 510 949 454 881 c
437 | 399 814 371 717 371 590 c
438 | 371 0 l
439 | 186 0 l
440 | 186 1120 l
441 | 371 1120 l
442 | 371 946 l
443 | 410 1014 460 1064 522 1097 c
444 | 584 1130 659 1147 748 1147 c
445 | 761 1147 775 1146 790 1144 c
446 | 805 1143 822 1140 841 1137 c
447 | 842 948 l
448 |
449 | ce} _d
450 | /s{1067 0 111 -29 967 1147 sc
451 | 907 1087 m
452 | 907 913 l
453 | 855 940 801 960 745 973 c
454 | 689 986 631 993 571 993 c
455 | 480 993 411 979 365 951 c
456 | 320 923 297 881 297 825 c
457 | 297 782 313 749 346 724 c
458 | 379 700 444 677 543 655 c
459 | 606 641 l
460 | 737 613 829 573 884 522 c
461 | 939 471 967 400 967 309 c
462 | 967 205 926 123 843 62 c
463 | 761 1 648 -29 504 -29 c
464 | 444 -29 381 -23 316 -11 c
465 | 251 0 183 18 111 41 c
466 | 111 231 l
467 | 179 196 246 169 312 151 c
468 | 378 134 443 125 508 125 c
469 | 595 125 661 140 708 169 c
470 | 755 199 778 241 778 295 c
471 | 778 345 761 383 727 410 c
472 | 694 437 620 462 506 487 c
473 | 442 502 l
474 | 328 526 246 563 195 612 c
475 | 144 662 119 730 119 817 c
476 | 119 922 156 1004 231 1061 c
477 | 306 1118 412 1147 549 1147 c
478 | 617 1147 681 1142 741 1132 c
479 | 801 1122 856 1107 907 1087 c
480 |
481 | ce} _d
482 | /t{803 0 55 0 754 1438 sc
483 | 375 1438 m
484 | 375 1120 l
485 | 754 1120 l
486 | 754 977 l
487 | 375 977 l
488 | 375 369 l
489 | 375 278 387 219 412 193 c
490 | 437 167 488 154 565 154 c
491 | 754 154 l
492 | 754 0 l
493 | 565 0 l
494 | 423 0 325 26 271 79 c
495 | 217 132 190 229 190 369 c
496 | 190 977 l
497 | 55 977 l
498 | 55 1120 l
499 | 190 1120 l
500 | 190 1438 l
501 | 375 1438 l
502 |
503 | ce} _d
504 | /y{1212 0 61 -426 1151 1120 sc
505 | 659 -104 m
506 | 607 -237 556 -324 507 -365 c
507 | 458 -406 392 -426 309 -426 c
508 | 162 -426 l
509 | 162 -272 l
510 | 270 -272 l
511 | 321 -272 360 -260 388 -236 c
512 | 416 -212 447 -155 481 -66 c
513 | 514 18 l
514 | 61 1120 l
515 | 256 1120 l
516 | 606 244 l
517 | 956 1120 l
518 | 1151 1120 l
519 | 659 -104 l
520 |
521 | ce} _d
522 | end readonly def
523 |
524 | /BuildGlyph {
525 | exch begin
526 | CharStrings exch
527 | 2 copy known not {pop /.notdef} if
528 | true 3 1 roll get exec
529 | end
530 | } _d
531 |
532 | /BuildChar {
533 | 1 index /Encoding get exch get
534 | 1 index /BuildGlyph get exec
535 | } _d
536 |
537 | FontName currentdict end definefont pop
538 | %!PS-Adobe-3.0 Resource-Font
539 | %%Creator: Converted from TrueType to Type 3 by Matplotlib.
540 | 10 dict begin
541 | /FontName /DejaVuSans-Bold def
542 | /PaintType 0 def
543 | /FontMatrix [0.00048828125 0 0 0.00048828125 0 0] def
544 | /FontBBox [-2190 -850 4045 2405] def
545 | /FontType 3 def
546 | /Encoding [/space /parenleft /parenright /hyphen /zero /one /L /N /P /S /T /a /c /e /g /h /i /k /l /n /o /r /s /t] def
547 | /CharStrings 25 dict dup begin
548 | /.notdef 0 def
549 | /space{713 0 0 0 0 0 sc
550 | ce} _d
551 | /parenleft{936 0 176 -270 772 1554 sc
552 | 772 -270 m
553 | 475 -270 l
554 | 373 -105 298 51 249 199 c
555 | 200 348 176 495 176 641 c
556 | 176 787 200 935 249 1084 c
557 | 298 1234 374 1391 475 1554 c
558 | 772 1554 l
559 | 687 1396 623 1241 580 1090 c
560 | 537 939 516 790 516 643 c
561 | 516 496 537 346 579 195 c
562 | 622 44 686 -111 772 -270 c
563 |
564 | ce} _d
565 | /parenright{936 0 164 -270 760 1554 sc
566 | 164 -270 m
567 | 249 -111 313 44 356 195 c
568 | 399 346 420 496 420 643 c
569 | 420 790 399 939 356 1090 c
570 | 313 1241 249 1396 164 1554 c
571 | 461 1554 l
572 | 562 1391 637 1234 686 1084 c
573 | 735 935 760 787 760 641 c
574 | 760 495 736 348 687 199 c
575 | 638 51 563 -105 461 -270 c
576 | 164 -270 l
577 |
578 | ce} _d
579 | /hyphen{850 0 111 444 739 735 sc
580 | 111 735 m
581 | 739 735 l
582 | 739 444 l
583 | 111 444 l
584 | 111 735 l
585 |
586 | ce} _d
587 | /zero{1425 0 98 -29 1327 1520 sc
588 | 942 748 m
589 | 942 935 924 1066 889 1142 c
590 | 854 1219 796 1257 713 1257 c
591 | 630 1257 571 1219 536 1142 c
592 | 501 1066 483 935 483 748 c
593 | 483 559 501 426 536 349 c
594 | 571 272 630 233 713 233 c
595 | 795 233 854 272 889 349 c
596 | 924 426 942 559 942 748 c
597 |
598 | 1327 745 m
599 | 1327 498 1274 307 1167 172 c
600 | 1060 38 909 -29 713 -29 c
601 | 516 -29 365 38 258 172 c
602 | 151 307 98 498 98 745 c
603 | 98 993 151 1184 258 1318 c
604 | 365 1453 516 1520 713 1520 c
605 | 909 1520 1060 1453 1167 1318 c
606 | 1274 1184 1327 993 1327 745 c
607 |
608 | ce} _d
609 | /one{1425 0 231 0 1284 1493 sc
610 | 240 266 m
611 | 580 266 l
612 | 580 1231 l
613 | 231 1159 l
614 | 231 1421 l
615 | 578 1493 l
616 | 944 1493 l
617 | 944 266 l
618 | 1284 266 l
619 | 1284 0 l
620 | 240 0 l
621 | 240 266 l
622 |
623 | ce} _d
624 | /L{1305 0 188 0 1249 1493 sc
625 | 188 1493 m
626 | 573 1493 l
627 | 573 291 l
628 | 1249 291 l
629 | 1249 0 l
630 | 188 0 l
631 | 188 1493 l
632 |
633 | ce} _d
634 | /N{1714 0 188 0 1526 1493 sc
635 | 188 1493 m
636 | 618 1493 l
637 | 1161 469 l
638 | 1161 1493 l
639 | 1526 1493 l
640 | 1526 0 l
641 | 1096 0 l
642 | 553 1024 l
643 | 553 0 l
644 | 188 0 l
645 | 188 1493 l
646 |
647 | ce} _d
648 | /P{1501 0 188 0 1417 1493 sc
649 | 188 1493 m
650 | 827 1493 l
651 | 1017 1493 1163 1451 1264 1366 c
652 | 1366 1282 1417 1162 1417 1006 c
653 | 1417 849 1366 729 1264 644 c
654 | 1163 560 1017 518 827 518 c
655 | 573 518 l
656 | 573 0 l
657 | 188 0 l
658 | 188 1493 l
659 |
660 | 573 1214 m
661 | 573 797 l
662 | 786 797 l
663 | 861 797 918 815 959 851 c
664 | 1000 888 1020 939 1020 1006 c
665 | 1020 1073 1000 1124 959 1160 c
666 | 918 1196 861 1214 786 1214 c
667 | 573 1214 l
668 |
669 | ce} _d
670 | /S{1475 0 147 -29 1325 1520 sc
671 | 1227 1446 m
672 | 1227 1130 l
673 | 1145 1167 1065 1194 987 1213 c
674 | 909 1232 835 1241 766 1241 c
675 | 674 1241 606 1228 562 1203 c
676 | 518 1178 496 1138 496 1085 c
677 | 496 1045 511 1014 540 991 c
678 | 570 969 624 950 702 934 c
679 | 866 901 l
680 | 1032 868 1150 817 1220 749 c
681 | 1290 681 1325 584 1325 459 c
682 | 1325 294 1276 172 1178 91 c
683 | 1081 11 932 -29 731 -29 c
684 | 636 -29 541 -20 446 -2 c
685 | 351 16 255 43 160 78 c
686 | 160 403 l
687 | 255 352 347 314 436 288 c
688 | 525 263 611 250 694 250 c
689 | 778 250 842 264 887 292 c
690 | 932 320 954 360 954 412 c
691 | 954 459 939 495 908 520 c
692 | 878 545 818 568 727 588 c
693 | 578 621 l
694 | 429 653 319 704 250 774 c
695 | 181 844 147 938 147 1057 c
696 | 147 1206 195 1320 291 1400 c
697 | 387 1480 525 1520 705 1520 c
698 | 787 1520 871 1514 958 1501 c
699 | 1045 1489 1134 1471 1227 1446 c
700 |
701 | ce} _d
702 | /T{1397 0 10 0 1386 1493 sc
703 | 10 1493 m
704 | 1386 1493 l
705 | 1386 1202 l
706 | 891 1202 l
707 | 891 0 l
708 | 506 0 l
709 | 506 1202 l
710 | 10 1202 l
711 | 10 1493 l
712 |
713 | ce} _d
714 | /a{1382 0 88 -29 1221 1147 sc
715 | 674 504 m
716 | 599 504 543 491 505 466 c
717 | 468 441 449 403 449 354 c
718 | 449 309 464 273 494 247 c
719 | 525 222 567 209 621 209 c
720 | 688 209 745 233 791 281 c
721 | 837 330 860 390 860 463 c
722 | 860 504 l
723 | 674 504 l
724 |
725 | 1221 639 m
726 | 1221 0 l
727 | 860 0 l
728 | 860 166 l
729 | 812 98 758 48 698 17 c
730 | 638 -14 565 -29 479 -29 c
731 | 363 -29 269 5 196 72 c
732 | 124 140 88 228 88 336 c
733 | 88 467 133 564 223 625 c
734 | 314 686 456 717 649 717 c
735 | 860 717 l
736 | 860 745 l
737 | 860 802 838 843 793 869 c
738 | 748 896 679 909 584 909 c
739 | 507 909 436 901 370 886 c
740 | 304 871 243 848 186 817 c
741 | 186 1090 l
742 | 263 1109 340 1123 417 1132 c
743 | 494 1142 572 1147 649 1147 c
744 | 851 1147 997 1107 1086 1027 c
745 | 1176 948 1221 818 1221 639 c
746 |
747 | ce} _d
748 | /c{1214 0 88 -29 1077 1147 sc
749 | 1077 1085 m
750 | 1077 793 l
751 | 1028 826 979 851 930 867 c
752 | 881 883 831 891 778 891 c
753 | 678 891 600 862 544 803 c
754 | 489 745 461 664 461 559 c
755 | 461 454 489 373 544 314 c
756 | 600 256 678 227 778 227 c
757 | 834 227 887 235 937 252 c
758 | 988 269 1034 293 1077 326 c
759 | 1077 33 l
760 | 1021 12 964 -3 906 -13 c
761 | 849 -24 791 -29 733 -29 c
762 | 531 -29 373 23 259 126 c
763 | 145 230 88 374 88 559 c
764 | 88 744 145 888 259 991 c
765 | 373 1095 531 1147 733 1147 c
766 | 792 1147 849 1142 906 1131 c
767 | 963 1121 1020 1106 1077 1085 c
768 |
769 | ce} _d
770 | /e{1389 0 88 -29 1290 1147 sc
771 | 1290 563 m
772 | 1290 461 l
773 | 453 461 l
774 | 462 377 492 314 544 272 c
775 | 596 230 669 209 762 209 c
776 | 837 209 914 220 993 242 c
777 | 1072 265 1154 299 1237 344 c
778 | 1237 68 l
779 | 1152 36 1068 12 983 -4 c
780 | 898 -21 814 -29 729 -29 c
781 | 526 -29 369 22 256 125 c
782 | 144 228 88 373 88 559 c
783 | 88 742 143 885 253 990 c
784 | 364 1095 516 1147 709 1147 c
785 | 885 1147 1026 1094 1131 988 c
786 | 1237 882 1290 740 1290 563 c
787 |
788 | 922 682 m
789 | 922 750 902 805 862 846 c
790 | 823 888 771 909 707 909 c
791 | 638 909 581 889 538 850 c
792 | 495 811 468 755 457 682 c
793 | 922 682 l
794 |
795 | ce} _d
796 | /g{1466 0 92 -442 1294 1145 sc
797 | 934 190 m
798 | 885 125 830 77 771 46 c
799 | 712 15 643 0 565 0 c
800 | 428 0 315 54 226 161 c
801 | 137 269 92 406 92 573 c
802 | 92 740 137 877 226 984 c
803 | 315 1091 428 1145 565 1145 c
804 | 643 1145 712 1130 771 1099 c
805 | 830 1068 885 1020 934 954 c
806 | 934 1120 l
807 | 1294 1120 l
808 | 1294 113 l
809 | 1294 -67 1237 -204 1123 -299 c
810 | 1010 -394 845 -442 629 -442 c
811 | 559 -442 491 -437 426 -426 c
812 | 361 -415 295 -399 229 -377 c
813 | 229 -98 l
814 | 292 -134 353 -161 413 -178 c
815 | 473 -196 533 -205 594 -205 c
816 | 711 -205 797 -179 852 -128 c
817 | 907 -77 934 4 934 113 c
818 | 934 190 l
819 |
820 | 698 887 m
821 | 624 887 566 860 525 805 c
822 | 484 750 463 673 463 573 c
823 | 463 470 483 392 523 339 c
824 | 563 286 621 260 698 260 c
825 | 773 260 831 287 872 342 c
826 | 913 397 934 474 934 573 c
827 | 934 673 913 750 872 805 c
828 | 831 860 773 887 698 887 c
829 |
830 | ce} _d
831 | /h{1458 0 172 0 1298 1556 sc
832 | 1298 682 m
833 | 1298 0 l
834 | 938 0 l
835 | 938 111 l
836 | 938 520 l
837 | 938 618 936 685 931 722 c
838 | 927 759 920 786 909 803 c
839 | 895 826 876 844 852 857 c
840 | 828 870 801 877 770 877 c
841 | 695 877 637 848 594 790 c
842 | 551 733 530 653 530 551 c
843 | 530 0 l
844 | 172 0 l
845 | 172 1556 l
846 | 530 1556 l
847 | 530 956 l
848 | 584 1021 641 1069 702 1100 c
849 | 763 1131 830 1147 903 1147 c
850 | 1032 1147 1130 1107 1197 1028 c
851 | 1264 949 1298 833 1298 682 c
852 |
853 | ce} _d
854 | /i{702 0 172 0 530 1556 sc
855 | 172 1120 m
856 | 530 1120 l
857 | 530 0 l
858 | 172 0 l
859 | 172 1120 l
860 |
861 | 172 1556 m
862 | 530 1556 l
863 | 530 1264 l
864 | 172 1264 l
865 | 172 1556 l
866 |
867 | ce} _d
868 | /k{1362 0 172 0 1401 1556 sc
869 | 172 1556 m
870 | 530 1556 l
871 | 530 709 l
872 | 942 1120 l
873 | 1358 1120 l
874 | 811 606 l
875 | 1401 0 l
876 | 967 0 l
877 | 530 467 l
878 | 530 0 l
879 | 172 0 l
880 | 172 1556 l
881 |
882 | ce} _d
883 | /l{702 0 172 0 530 1556 sc
884 | 172 1556 m
885 | 530 1556 l
886 | 530 0 l
887 | 172 0 l
888 | 172 1556 l
889 |
890 | ce} _d
891 | /n{1458 0 172 0 1298 1147 sc
892 | 1298 682 m
893 | 1298 0 l
894 | 938 0 l
895 | 938 111 l
896 | 938 522 l
897 | 938 619 936 685 931 722 c
898 | 927 759 920 786 909 803 c
899 | 895 826 876 844 852 857 c
900 | 828 870 801 877 770 877 c
901 | 695 877 637 848 594 790 c
902 | 551 733 530 653 530 551 c
903 | 530 0 l
904 | 172 0 l
905 | 172 1120 l
906 | 530 1120 l
907 | 530 956 l
908 | 584 1021 641 1069 702 1100 c
909 | 763 1131 830 1147 903 1147 c
910 | 1032 1147 1130 1107 1197 1028 c
911 | 1264 949 1298 833 1298 682 c
912 |
913 | ce} _d
914 | /o{1407 0 88 -29 1319 1147 sc
915 | 705 891 m
916 | 626 891 565 862 523 805 c
917 | 482 748 461 666 461 559 c
918 | 461 452 482 369 523 312 c
919 | 565 255 626 227 705 227 c
920 | 783 227 843 255 884 312 c
921 | 925 369 946 452 946 559 c
922 | 946 666 925 748 884 805 c
923 | 843 862 783 891 705 891 c
924 |
925 | 705 1147 m
926 | 898 1147 1048 1095 1156 991 c
927 | 1265 887 1319 743 1319 559 c
928 | 1319 375 1265 231 1156 127 c
929 | 1048 23 898 -29 705 -29 c
930 | 512 -29 360 23 251 127 c
931 | 142 231 88 375 88 559 c
932 | 88 743 142 887 251 991 c
933 | 360 1095 512 1147 705 1147 c
934 |
935 | ce} _d
936 | /r{1010 0 172 0 1004 1147 sc
937 | 1004 815 m
938 | 973 830 941 840 910 847 c
939 | 879 854 848 858 817 858 c
940 | 725 858 654 828 604 769 c
941 | 555 710 530 626 530 516 c
942 | 530 0 l
943 | 172 0 l
944 | 172 1120 l
945 | 530 1120 l
946 | 530 936 l
947 | 576 1009 629 1063 688 1096 c
948 | 748 1130 820 1147 903 1147 c
949 | 915 1147 928 1146 942 1145 c
950 | 956 1144 976 1142 1003 1139 c
951 | 1004 815 l
952 |
953 | ce} _d
954 | /s{1219 0 106 -29 1122 1147 sc
955 | 1047 1085 m
956 | 1047 813 l
957 | 970 845 896 869 825 885 c
958 | 754 901 686 909 623 909 c
959 | 555 909 504 900 471 883 c
960 | 438 866 422 840 422 805 c
961 | 422 776 434 754 459 739 c
962 | 484 724 529 712 594 705 c
963 | 657 696 l
964 | 840 673 964 634 1027 581 c
965 | 1090 528 1122 444 1122 330 c
966 | 1122 211 1078 121 990 61 c
967 | 902 1 771 -29 596 -29 c
968 | 522 -29 445 -23 366 -11 c
969 | 287 0 206 18 123 41 c
970 | 123 313 l
971 | 194 278 267 252 342 235 c
972 | 417 218 494 209 571 209 c
973 | 641 209 694 219 729 238 c
974 | 764 257 782 286 782 324 c
975 | 782 356 770 380 745 395 c
976 | 721 411 673 423 600 432 c
977 | 537 440 l
978 | 378 460 266 497 202 551 c
979 | 138 605 106 687 106 797 c
980 | 106 916 147 1004 228 1061 c
981 | 309 1118 434 1147 602 1147 c
982 | 668 1147 737 1142 810 1132 c
983 | 883 1122 962 1106 1047 1085 c
984 |
985 | ce} _d
986 | /t{979 0 27 0 932 1438 sc
987 | 563 1438 m
988 | 563 1120 l
989 | 932 1120 l
990 | 932 864 l
991 | 563 864 l
992 | 563 389 l
993 | 563 337 573 302 594 283 c
994 | 615 265 656 256 717 256 c
995 | 901 256 l
996 | 901 0 l
997 | 594 0 l
998 | 453 0 352 29 293 88 c
999 | 234 147 205 248 205 389 c
1000 | 205 864 l
1001 | 27 864 l
1002 | 27 1120 l
1003 | 205 1120 l
1004 | 205 1438 l
1005 | 563 1438 l
1006 |
1007 | ce} _d
1008 | end readonly def
1009 |
1010 | /BuildGlyph {
1011 | exch begin
1012 | CharStrings exch
1013 | 2 copy known not {pop /.notdef} if
1014 | true 3 1 roll get exec
1015 | end
1016 | } _d
1017 |
1018 | /BuildChar {
1019 | 1 index /Encoding get exch get
1020 | 1 index /BuildGlyph get exec
1021 | } _d
1022 |
1023 | FontName currentdict end definefont pop
1024 | end
1025 | %%EndProlog
1026 | mpldict begin
1027 | -54 180 translate
1028 | 720 432 0 0 clipbox
1029 | gsave
1030 | 0 0 m
1031 | 720 0 l
1032 | 720 432 l
1033 | 0 432 l
1034 | cl
1035 | 1.000 setgray
1036 | fill
1037 | grestore
1038 | gsave
1039 | 90 47.52 m
1040 | 648 47.52 l
1041 | 648 380.16 l
1042 | 90 380.16 l
1043 | cl
1044 | 1.000 setgray
1045 | fill
1046 | grestore
1047 | gsave
1048 | 558 332.64 90 47.52 clipbox
1049 | 115.363636 47.52 m
1050 | 161.479339 47.52 l
1051 | 161.479339 176.58432 l
1052 | 115.363636 176.58432 l
1053 | cl
1054 | 0.529 0.808 0.922 setrgbcolor
1055 | fill
1056 | grestore
1057 | gsave
1058 | 558 332.64 90 47.52 clipbox
1059 | 173.008264 47.52 m
1060 | 219.123967 47.52 l
1061 | 219.123967 169.93152 l
1062 | 173.008264 169.93152 l
1063 | cl
1064 | 0.529 0.808 0.922 setrgbcolor
1065 | fill
1066 | grestore
1067 | gsave
1068 | 558 332.64 90 47.52 clipbox
1069 | 230.652893 47.52 m
1070 | 276.768595 47.52 l
1071 | 276.768595 108.991872 l
1072 | 230.652893 108.991872 l
1073 | cl
1074 | 0.529 0.808 0.922 setrgbcolor
1075 | fill
1076 | grestore
1077 | gsave
1078 | 558 332.64 90 47.52 clipbox
1079 | 288.297521 47.52 m
1080 | 334.413223 47.52 l
1081 | 334.413223 100.210176 l
1082 | 288.297521 100.210176 l
1083 | cl
1084 | 0.529 0.808 0.922 setrgbcolor
1085 | fill
1086 | grestore
1087 | gsave
1088 | 558 332.64 90 47.52 clipbox
1089 | 345.942149 47.52 m
1090 | 392.057851 47.52 l
1091 | 392.057851 175.785984 l
1092 | 345.942149 175.785984 l
1093 | cl
1094 | 0.529 0.808 0.922 setrgbcolor
1095 | fill
1096 | grestore
1097 | gsave
1098 | 558 332.64 90 47.52 clipbox
1099 | 403.586777 47.52 m
1100 | 449.702479 47.52 l
1101 | 449.702479 117.773568 l
1102 | 403.586777 117.773568 l
1103 | cl
1104 | 0.529 0.808 0.922 setrgbcolor
1105 | fill
1106 | grestore
1107 | gsave
1108 | 558 332.64 90 47.52 clipbox
1109 | 461.231405 47.52 m
1110 | 507.347107 47.52 l
1111 | 507.347107 117.773568 l
1112 | 461.231405 117.773568 l
1113 | cl
1114 | 0.529 0.808 0.922 setrgbcolor
1115 | fill
1116 | grestore
1117 | gsave
1118 | 558 332.64 90 47.52 clipbox
1119 | 518.876033 47.52 m
1120 | 564.991736 47.52 l
1121 | 564.991736 117.773568 l
1122 | 518.876033 117.773568 l
1123 | cl
1124 | 0.529 0.808 0.922 setrgbcolor
1125 | fill
1126 | grestore
1127 | gsave
1128 | 558 332.64 90 47.52 clipbox
1129 | 576.520661 47.52 m
1130 | 622.636364 47.52 l
1131 | 622.636364 100.210176 l
1132 | 576.520661 100.210176 l
1133 | cl
1134 | 0.529 0.808 0.922 setrgbcolor
1135 | fill
1136 | grestore
1137 | 0.800 setlinewidth
1138 | 1 setlinejoin
1139 | 0 setlinecap
1140 | [] 0 setdash
1141 | 0.000 setgray
1142 | gsave
1143 | /o {
1144 | gsave
1145 | newpath
1146 | translate
1147 | 0.8 setlinewidth
1148 | 1 setlinejoin
1149 |
1150 | 0 setlinecap
1151 |
1152 | 0 0 m
1153 | 0 -3.5 l
1154 |
1155 | gsave
1156 | 0.000 setgray
1157 | fill
1158 | grestore
1159 | stroke
1160 | grestore
1161 | } bind def
1162 | 138.421 47.52 o
1163 | grestore
1164 | /DejaVuSans 10.000 selectfont
1165 | gsave
1166 |
1167 | 116.5 32.9262 translate
1168 | 0 rotate
1169 | 0 0 m /S glyphshow
1170 | 6.34766 0 m /e glyphshow
1171 | 12.5 0 m /n glyphshow
1172 | 18.8379 0 m /s glyphshow
1173 | 24.0479 0 m /o glyphshow
1174 | 30.166 0 m /r glyphshow
1175 | 34.2773 0 m /space glyphshow
1176 | 37.4561 0 m /one glyphshow
1177 | grestore
1178 | gsave
1179 | /o {
1180 | gsave
1181 | newpath
1182 | translate
1183 | 0.8 setlinewidth
1184 | 1 setlinejoin
1185 |
1186 | 0 setlinecap
1187 |
1188 | 0 0 m
1189 | 0 -3.5 l
1190 |
1191 | gsave
1192 | 0.000 setgray
1193 | fill
1194 | grestore
1195 | stroke
1196 | grestore
1197 | } bind def
1198 | 196.066 47.52 o
1199 | grestore
1200 | /DejaVuSans 10.000 selectfont
1201 | gsave
1202 |
1203 | 174.144 32.9262 translate
1204 | 0 rotate
1205 | 0 0 m /S glyphshow
1206 | 6.34766 0 m /e glyphshow
1207 | 12.5 0 m /n glyphshow
1208 | 18.8379 0 m /s glyphshow
1209 | 24.0479 0 m /o glyphshow
1210 | 30.166 0 m /r glyphshow
1211 | 34.2773 0 m /space glyphshow
1212 | 37.4561 0 m /two glyphshow
1213 | grestore
1214 | gsave
1215 | /o {
1216 | gsave
1217 | newpath
1218 | translate
1219 | 0.8 setlinewidth
1220 | 1 setlinejoin
1221 |
1222 | 0 setlinecap
1223 |
1224 | 0 0 m
1225 | 0 -3.5 l
1226 |
1227 | gsave
1228 | 0.000 setgray
1229 | fill
1230 | grestore
1231 | stroke
1232 | grestore
1233 | } bind def
1234 | 253.711 47.52 o
1235 | grestore
1236 | /DejaVuSans 10.000 selectfont
1237 | gsave
1238 |
1239 | 231.789 32.9262 translate
1240 | 0 rotate
1241 | 0 0 m /S glyphshow
1242 | 6.34766 0 m /e glyphshow
1243 | 12.5 0 m /n glyphshow
1244 | 18.8379 0 m /s glyphshow
1245 | 24.0479 0 m /o glyphshow
1246 | 30.166 0 m /r glyphshow
1247 | 34.2773 0 m /space glyphshow
1248 | 37.4561 0 m /three glyphshow
1249 | grestore
1250 | gsave
1251 | /o {
1252 | gsave
1253 | newpath
1254 | translate
1255 | 0.8 setlinewidth
1256 | 1 setlinejoin
1257 |
1258 | 0 setlinecap
1259 |
1260 | 0 0 m
1261 | 0 -3.5 l
1262 |
1263 | gsave
1264 | 0.000 setgray
1265 | fill
1266 | grestore
1267 | stroke
1268 | grestore
1269 | } bind def
1270 | 311.355 47.52 o
1271 | grestore
1272 | /DejaVuSans 10.000 selectfont
1273 | gsave
1274 |
1275 | 289.433 32.9262 translate
1276 | 0 rotate
1277 | 0 0 m /S glyphshow
1278 | 6.34766 0 m /e glyphshow
1279 | 12.5 0 m /n glyphshow
1280 | 18.8379 0 m /s glyphshow
1281 | 24.0479 0 m /o glyphshow
1282 | 30.166 0 m /r glyphshow
1283 | 34.2773 0 m /space glyphshow
1284 | 37.4561 0 m /four glyphshow
1285 | grestore
1286 | gsave
1287 | /o {
1288 | gsave
1289 | newpath
1290 | translate
1291 | 0.8 setlinewidth
1292 | 1 setlinejoin
1293 |
1294 | 0 setlinecap
1295 |
1296 | 0 0 m
1297 | 0 -3.5 l
1298 |
1299 | gsave
1300 | 0.000 setgray
1301 | fill
1302 | grestore
1303 | stroke
1304 | grestore
1305 | } bind def
1306 | 369 47.52 o
1307 | grestore
1308 | /DejaVuSans 10.000 selectfont
1309 | gsave
1310 |
1311 | 347.078 32.9262 translate
1312 | 0 rotate
1313 | 0 0 m /S glyphshow
1314 | 6.34766 0 m /e glyphshow
1315 | 12.5 0 m /n glyphshow
1316 | 18.8379 0 m /s glyphshow
1317 | 24.0479 0 m /o glyphshow
1318 | 30.166 0 m /r glyphshow
1319 | 34.2773 0 m /space glyphshow
1320 | 37.4561 0 m /five glyphshow
1321 | grestore
1322 | gsave
1323 | /o {
1324 | gsave
1325 | newpath
1326 | translate
1327 | 0.8 setlinewidth
1328 | 1 setlinejoin
1329 |
1330 | 0 setlinecap
1331 |
1332 | 0 0 m
1333 | 0 -3.5 l
1334 |
1335 | gsave
1336 | 0.000 setgray
1337 | fill
1338 | grestore
1339 | stroke
1340 | grestore
1341 | } bind def
1342 | 426.645 47.52 o
1343 | grestore
1344 | /DejaVuSans 10.000 selectfont
1345 | gsave
1346 |
1347 | 404.723 32.9262 translate
1348 | 0 rotate
1349 | 0 0 m /S glyphshow
1350 | 6.34766 0 m /e glyphshow
1351 | 12.5 0 m /n glyphshow
1352 | 18.8379 0 m /s glyphshow
1353 | 24.0479 0 m /o glyphshow
1354 | 30.166 0 m /r glyphshow
1355 | 34.2773 0 m /space glyphshow
1356 | 37.4561 0 m /six glyphshow
1357 | grestore
1358 | gsave
1359 | /o {
1360 | gsave
1361 | newpath
1362 | translate
1363 | 0.8 setlinewidth
1364 | 1 setlinejoin
1365 |
1366 | 0 setlinecap
1367 |
1368 | 0 0 m
1369 | 0 -3.5 l
1370 |
1371 | gsave
1372 | 0.000 setgray
1373 | fill
1374 | grestore
1375 | stroke
1376 | grestore
1377 | } bind def
1378 | 484.289 47.52 o
1379 | grestore
1380 | /DejaVuSans 10.000 selectfont
1381 | gsave
1382 |
1383 | 462.367 32.9262 translate
1384 | 0 rotate
1385 | 0 0 m /S glyphshow
1386 | 6.34766 0 m /e glyphshow
1387 | 12.5 0 m /n glyphshow
1388 | 18.8379 0 m /s glyphshow
1389 | 24.0479 0 m /o glyphshow
1390 | 30.166 0 m /r glyphshow
1391 | 34.2773 0 m /space glyphshow
1392 | 37.4561 0 m /seven glyphshow
1393 | grestore
1394 | gsave
1395 | /o {
1396 | gsave
1397 | newpath
1398 | translate
1399 | 0.8 setlinewidth
1400 | 1 setlinejoin
1401 |
1402 | 0 setlinecap
1403 |
1404 | 0 0 m
1405 | 0 -3.5 l
1406 |
1407 | gsave
1408 | 0.000 setgray
1409 | fill
1410 | grestore
1411 | stroke
1412 | grestore
1413 | } bind def
1414 | 541.934 47.52 o
1415 | grestore
1416 | /DejaVuSans 10.000 selectfont
1417 | gsave
1418 |
1419 | 520.012 32.9262 translate
1420 | 0 rotate
1421 | 0 0 m /S glyphshow
1422 | 6.34766 0 m /e glyphshow
1423 | 12.5 0 m /n glyphshow
1424 | 18.8379 0 m /s glyphshow
1425 | 24.0479 0 m /o glyphshow
1426 | 30.166 0 m /r glyphshow
1427 | 34.2773 0 m /space glyphshow
1428 | 37.4561 0 m /eight glyphshow
1429 | grestore
1430 | gsave
1431 | /o {
1432 | gsave
1433 | newpath
1434 | translate
1435 | 0.8 setlinewidth
1436 | 1 setlinejoin
1437 |
1438 | 0 setlinecap
1439 |
1440 | 0 0 m
1441 | 0 -3.5 l
1442 |
1443 | gsave
1444 | 0.000 setgray
1445 | fill
1446 | grestore
1447 | stroke
1448 | grestore
1449 | } bind def
1450 | 599.579 47.52 o
1451 | grestore
1452 | /DejaVuSans 10.000 selectfont
1453 | gsave
1454 |
1455 | 577.657 32.9262 translate
1456 | 0 rotate
1457 | 0 0 m /S glyphshow
1458 | 6.34766 0 m /e glyphshow
1459 | 12.5 0 m /n glyphshow
1460 | 18.8379 0 m /s glyphshow
1461 | 24.0479 0 m /o glyphshow
1462 | 30.166 0 m /r glyphshow
1463 | 34.2773 0 m /space glyphshow
1464 | 37.4561 0 m /nine glyphshow
1465 | grestore
1466 | /DejaVuSans 14.000 selectfont
1467 | gsave
1468 |
1469 | 341.359 16.2075 translate
1470 | 0 rotate
1471 | 0 0 m /S glyphshow
1472 | 8.88672 0 m /e glyphshow
1473 | 17.5 0 m /n glyphshow
1474 | 26.373 0 m /s glyphshow
1475 | 33.667 0 m /o glyphshow
1476 | 42.2324 0 m /r glyphshow
1477 | 47.9883 0 m /s glyphshow
1478 | grestore
1479 | gsave
1480 | /o {
1481 | gsave
1482 | newpath
1483 | translate
1484 | 0.8 setlinewidth
1485 | 1 setlinejoin
1486 |
1487 | 0 setlinecap
1488 |
1489 | -0 0 m
1490 | -3.5 0 l
1491 |
1492 | gsave
1493 | 0.000 setgray
1494 | fill
1495 | grestore
1496 | stroke
1497 | grestore
1498 | } bind def
1499 | 90 47.52 o
1500 | grestore
1501 | /DejaVuSans 10.000 selectfont
1502 | gsave
1503 |
1504 | 76.6406 43.7231 translate
1505 | 0 rotate
1506 | 0 0 m /zero glyphshow
1507 | grestore
1508 | gsave
1509 | /o {
1510 | gsave
1511 | newpath
1512 | translate
1513 | 0.8 setlinewidth
1514 | 1 setlinejoin
1515 |
1516 | 0 setlinecap
1517 |
1518 | -0 0 m
1519 | -3.5 0 l
1520 |
1521 | gsave
1522 | 0.000 setgray
1523 | fill
1524 | grestore
1525 | stroke
1526 | grestore
1527 | } bind def
1528 | 90 114.048 o
1529 | grestore
1530 | /DejaVuSans 10.000 selectfont
1531 | gsave
1532 |
1533 | 63.9219 110.251 translate
1534 | 0 rotate
1535 | 0 0 m /five glyphshow
1536 | 6.3623 0 m /zero glyphshow
1537 | 12.7246 0 m /zero glyphshow
1538 | grestore
1539 | gsave
1540 | /o {
1541 | gsave
1542 | newpath
1543 | translate
1544 | 0.8 setlinewidth
1545 | 1 setlinejoin
1546 |
1547 | 0 setlinecap
1548 |
1549 | -0 0 m
1550 | -3.5 0 l
1551 |
1552 | gsave
1553 | 0.000 setgray
1554 | fill
1555 | grestore
1556 | stroke
1557 | grestore
1558 | } bind def
1559 | 90 180.576 o
1560 | grestore
1561 | /DejaVuSans 10.000 selectfont
1562 | gsave
1563 |
1564 | 57.5625 176.779 translate
1565 | 0 rotate
1566 | 0 0 m /one glyphshow
1567 | 6.3623 0 m /zero glyphshow
1568 | 12.7246 0 m /zero glyphshow
1569 | 19.0869 0 m /zero glyphshow
1570 | grestore
1571 | gsave
1572 | /o {
1573 | gsave
1574 | newpath
1575 | translate
1576 | 0.8 setlinewidth
1577 | 1 setlinejoin
1578 |
1579 | 0 setlinecap
1580 |
1581 | -0 0 m
1582 | -3.5 0 l
1583 |
1584 | gsave
1585 | 0.000 setgray
1586 | fill
1587 | grestore
1588 | stroke
1589 | grestore
1590 | } bind def
1591 | 90 247.104 o
1592 | grestore
1593 | /DejaVuSans 10.000 selectfont
1594 | gsave
1595 |
1596 | 57.5625 243.307 translate
1597 | 0 rotate
1598 | 0 0 m /one glyphshow
1599 | 6.3623 0 m /five glyphshow
1600 | 12.7246 0 m /zero glyphshow
1601 | 19.0869 0 m /zero glyphshow
1602 | grestore
1603 | gsave
1604 | /o {
1605 | gsave
1606 | newpath
1607 | translate
1608 | 0.8 setlinewidth
1609 | 1 setlinejoin
1610 |
1611 | 0 setlinecap
1612 |
1613 | -0 0 m
1614 | -3.5 0 l
1615 |
1616 | gsave
1617 | 0.000 setgray
1618 | fill
1619 | grestore
1620 | stroke
1621 | grestore
1622 | } bind def
1623 | 90 313.632 o
1624 | grestore
1625 | /DejaVuSans 10.000 selectfont
1626 | gsave
1627 |
1628 | 57.5625 309.835 translate
1629 | 0 rotate
1630 | 0 0 m /two glyphshow
1631 | 6.3623 0 m /zero glyphshow
1632 | 12.7246 0 m /zero glyphshow
1633 | 19.0869 0 m /zero glyphshow
1634 | grestore
1635 | gsave
1636 | /o {
1637 | gsave
1638 | newpath
1639 | translate
1640 | 0.8 setlinewidth
1641 | 1 setlinejoin
1642 |
1643 | 0 setlinecap
1644 |
1645 | -0 0 m
1646 | -3.5 0 l
1647 |
1648 | gsave
1649 | 0.000 setgray
1650 | fill
1651 | grestore
1652 | stroke
1653 | grestore
1654 | } bind def
1655 | 90 380.16 o
1656 | grestore
1657 | /DejaVuSans 10.000 selectfont
1658 | gsave
1659 |
1660 | 57.5625 376.363 translate
1661 | 0 rotate
1662 | 0 0 m /two glyphshow
1663 | 6.3623 0 m /five glyphshow
1664 | 12.7246 0 m /zero glyphshow
1665 | 19.0869 0 m /zero glyphshow
1666 | grestore
1667 | /DejaVuSans 14.000 selectfont
1668 | gsave
1669 |
1670 | 50.6562 194.199 translate
1671 | 90 rotate
1672 | 0 0 m /B glyphshow
1673 | 9.60449 0 m /y glyphshow
1674 | 17.8896 0 m /t glyphshow
1675 | 23.3789 0 m /e glyphshow
1676 | 31.9922 0 m /s glyphshow
1677 | grestore
1678 | 0 setlinejoin
1679 | 2 setlinecap
1680 | gsave
1681 | 90 47.52 m
1682 | 90 380.16 l
1683 | stroke
1684 | grestore
1685 | gsave
1686 | 648 47.52 m
1687 | 648 380.16 l
1688 | stroke
1689 | grestore
1690 | gsave
1691 | 90 47.52 m
1692 | 648 47.52 l
1693 | stroke
1694 | grestore
1695 | gsave
1696 | 90 380.16 m
1697 | 648 380.16 l
1698 | stroke
1699 | grestore
1700 | /DejaVuSans 10.000 selectfont
1701 | gsave
1702 |
1703 | 128.882 191.968 translate
1704 | 0 rotate
1705 | 0 0 m /nine glyphshow
1706 | 6.3623 0 m /seven glyphshow
1707 | 12.7246 0 m /zero glyphshow
1708 | grestore
1709 | /DejaVuSans 10.000 selectfont
1710 | gsave
1711 |
1712 | 186.527 185.315 translate
1713 | 0 rotate
1714 | 0 0 m /nine glyphshow
1715 | 6.3623 0 m /two glyphshow
1716 | 12.7246 0 m /zero glyphshow
1717 | grestore
1718 | /DejaVuSans 10.000 selectfont
1719 | gsave
1720 |
1721 | 244.172 124.376 translate
1722 | 0 rotate
1723 | 0 0 m /four glyphshow
1724 | 6.3623 0 m /six glyphshow
1725 | 12.7246 0 m /two glyphshow
1726 | grestore
1727 | /DejaVuSans 10.000 selectfont
1728 | gsave
1729 |
1730 | 301.816 115.594 translate
1731 | 0 rotate
1732 | 0 0 m /three glyphshow
1733 | 6.3623 0 m /nine glyphshow
1734 | 12.7246 0 m /six glyphshow
1735 | grestore
1736 | /DejaVuSans 10.000 selectfont
1737 | gsave
1738 |
1739 | 359.461 191.17 translate
1740 | 0 rotate
1741 | 0 0 m /nine glyphshow
1742 | 6.3623 0 m /six glyphshow
1743 | 12.7246 0 m /four glyphshow
1744 | grestore
1745 | /DejaVuSans 10.000 selectfont
1746 | gsave
1747 |
1748 | 417.106 133.157 translate
1749 | 0 rotate
1750 | 0 0 m /five glyphshow
1751 | 6.3623 0 m /two glyphshow
1752 | 12.7246 0 m /eight glyphshow
1753 | grestore
1754 | /DejaVuSans 10.000 selectfont
1755 | gsave
1756 |
1757 | 474.75 133.157 translate
1758 | 0 rotate
1759 | 0 0 m /five glyphshow
1760 | 6.3623 0 m /two glyphshow
1761 | 12.7246 0 m /eight glyphshow
1762 | grestore
1763 | /DejaVuSans 10.000 selectfont
1764 | gsave
1765 |
1766 | 532.395 133.157 translate
1767 | 0 rotate
1768 | 0 0 m /five glyphshow
1769 | 6.3623 0 m /two glyphshow
1770 | 12.7246 0 m /eight glyphshow
1771 | grestore
1772 | /DejaVuSans 10.000 selectfont
1773 | gsave
1774 |
1775 | 590.039 115.594 translate
1776 | 0 rotate
1777 | 0 0 m /three glyphshow
1778 | 6.3623 0 m /nine glyphshow
1779 | 12.7246 0 m /six glyphshow
1780 | grestore
1781 | /DejaVuSans-Bold 16.000 selectfont
1782 | gsave
1783 |
1784 | 185.781 400.16 translate
1785 | 0 rotate
1786 | 0 0 m /T glyphshow
1787 | 8.78906 0 m /o glyphshow
1788 | 19.7812 0 m /t glyphshow
1789 | 27.4297 0 m /a glyphshow
1790 | 38.2266 0 m /l glyphshow
1791 | 43.7109 0 m /space glyphshow
1792 | 49.2812 0 m /P glyphshow
1793 | 60.6328 0 m /a glyphshow
1794 | 71.4297 0 m /c glyphshow
1795 | 80.9141 0 m /k glyphshow
1796 | 91.1797 0 m /e glyphshow
1797 | 102.031 0 m /t glyphshow
1798 | 109.68 0 m /space glyphshow
1799 | 115.25 0 m /L glyphshow
1800 | 125.445 0 m /e glyphshow
1801 | 136.297 0 m /n glyphshow
1802 | 147.688 0 m /g glyphshow
1803 | 159.141 0 m /t glyphshow
1804 | 166.789 0 m /h glyphshow
1805 | 178.18 0 m /s glyphshow
1806 | 187.703 0 m /space glyphshow
1807 | 193.273 0 m /hyphen glyphshow
1808 | 199.914 0 m /space glyphshow
1809 | 205.484 0 m /N glyphshow
1810 | 218.875 0 m /o glyphshow
1811 | 229.867 0 m /n glyphshow
1812 | 241.258 0 m /hyphen glyphshow
1813 | 247.898 0 m /S glyphshow
1814 | 259.422 0 m /t glyphshow
1815 | 267.07 0 m /o glyphshow
1816 | 278.062 0 m /r glyphshow
1817 | 285.953 0 m /i glyphshow
1818 | 291.438 0 m /n glyphshow
1819 | 302.828 0 m /g glyphshow
1820 | 314.281 0 m /space glyphshow
1821 | 319.852 0 m /parenleft glyphshow
1822 | 327.164 0 m /one glyphshow
1823 | 338.297 0 m /zero glyphshow
1824 | 349.43 0 m /s glyphshow
1825 | 358.953 0 m /parenright glyphshow
1826 | grestore
1827 |
1828 | end
1829 | showpage
1830 |
--------------------------------------------------------------------------------