1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
2982
2983
2984
2985
2986
2987
2988
2989
2990
2991
2992
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
3038
3039
3040
3041
3042
3043
3044
3045
3046
3047
3048
3049
3050
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
3080
3081
3082
3083
3084
3085
3086
3087
3088
3089
3090
3091
3092
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
3103
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
3123
3124
3125
3126
3127
3128
3129
3130
3131
3132
3133
3134
3135
3136
3137
3138
3139
3140
3141
3142
3143
3144
3145
3146
3147
3148
3149
3150
3151
3152
3153
3154
3155
3156
3157
3158
3159
3160
3161
3162
3163
3164
3165
3166
3167
3168
3169
3170
3171
3172
3173
3174
3175
3176
3177
3178
3179
3180
3181
3182
3183
3184
3185
3186
3187
3188
3189
3190
3191
3192
3193
3194
3195
3196
3197
3198
3199
3200
3201
3202
3203
3204
3205
3206
3207
3208
3209
3210
3211
3212
3213
3214
3215
3216
3217
3218
3219
3220
3221
3222
3223
3224
3225
3226
3227
3228
3229
3230
3231
3232
3233
3234
3235
3236
3237
3238
3239
3240
3241
3242
3243
3244
3245
3246
3247
3248
3249
3250
3251
3252
3253
3254
3255
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265
3266
3267
3268
3269
3270
3271
3272
3273
3274
3275
3276
3277
3278
3279
3280
3281
3282
3283
3284
3285
3286
3287
3288
3289
3290
3291
3292
3293
3294
3295
3296
3297
3298
3299
3300
3301
3302
3303
3304
3305
3306
3307
3308
3309
3310
3311
3312
3313
3314
3315
3316
3317
3318
3319
3320
3321
3322
3323
3324
3325
3326
3327
3328
3329
3330
3331
3332
3333
3334
3335
3336
3337
3338
3339
3340
3341
3342
3343
3344
3345
3346
3347
3348
3349
3350
3351
3352
3353
3354
3355
3356
3357
3358
3359
3360
3361
3362
3363
3364
3365
3366
3367
3368
3369
3370
3371
3372
3373
3374
3375
3376
3377
3378
3379
3380
3381
3382
3383
3384
3385
3386
3387
3388
3389
3390
3391
3392
3393
3394
3395
3396
3397
3398
3399
3400
3401
3402
3403
3404
3405
3406
3407
3408
3409
3410
3411
3412
3413
3414
3415
3416
3417
3418
3419
3420
3421
3422
3423
3424
3425
3426
3427
3428
3429
3430
3431
3432
3433
3434
3435
3436
3437
3438
3439
3440
3441
3442
3443
3444
3445
3446
3447
3448
3449
3450
3451
3452
3453
3454
3455
3456
3457
3458
3459
3460
3461
3462
3463
3464
3465
3466
3467
3468
3469
3470
3471
3472
3473
3474
3475
3476
3477
3478
3479
3480
3481
3482
3483
3484
3485
3486
3487
3488
3489
3490
3491
3492
3493
3494
3495
3496
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
3507
3508
3509
3510
3511
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
3522
3523
3524
3525
3526
3527
3528
3529
3530
3531
3532
3533
3534
3535
3536
3537
3538
3539
3540
3541
3542
3543
3544
3545
3546
3547
3548
3549
3550
3551
3552
3553
3554
3555
3556
3557
3558
3559
3560
3561
3562
3563
3564
3565
3566
3567
3568
3569
3570
3571
3572
3573
3574
3575
3576
3577
3578
3579
3580
3581
3582
3583
3584
3585
3586
3587
3588
3589
3590
3591
3592
3593
3594
3595
3596
3597
3598
3599
3600
3601
3602
3603
3604
3605
3606
3607
3608
3609
3610
3611
3612
3613
3614
3615
3616
3617
3618
3619
3620
3621
3622
3623
3624
3625
3626
3627
3628
3629
3630
3631
3632
3633
3634
3635
3636
3637
3638
3639
3640
3641
3642
3643
3644
3645
3646
3647
3648
3649
3650
3651
3652
3653
3654
3655
3656
3657
3658
3659
3660
3661
3662
3663
3664
3665
3666
3667
3668
3669
3670
3671
3672
3673
3674
3675
3676
3677
3678
3679
3680
3681
3682
3683
3684
3685
3686
3687
3688
3689
3690
3691
3692
3693
3694
3695
3696
3697
3698
3699
3700
3701
3702
3703
3704
3705
3706
3707
3708
3709
3710
3711
3712
3713
3714
3715
3716
3717
3718
3719
3720
3721
3722
3723
3724
3725
3726
3727
3728
3729
3730
3731
3732
3733
3734
3735
3736
3737
3738
3739
3740
3741
3742
3743
3744
3745
3746
3747
3748
3749
3750
3751
3752
3753
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
3764
3765
3766
3767
3768
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
3779
3780
3781
3782
3783
3784
3785
3786
3787
3788
3789
3790
3791
3792
3793
3794
3795
3796
3797
3798
3799
3800
3801
3802
3803
3804
3805
3806
3807
3808
3809
3810
3811
3812
3813
3814
3815
3816
3817
3818
3819
3820
3821
3822
3823
3824
3825
3826
3827
3828
3829
3830
3831
3832
3833
3834
3835
3836
3837
|
%!PS-Adobe-2.0 EPSF-2.0
%%Creator: dvips(k) 5.97 Copyright 2008 Radical Eye Software
%%Title: wieesgeht.dvi
%%CreationDate: Sun May 31 12:40:54 2009
%%BoundingBox: 135 381 525 664
%%DocumentFonts: LucidaBright-Demi LucidaBrightCE LucidaSans-Typewriter
%%EndComments
%DVIPSWebPage: (www.radicaleye.com)
%DVIPSCommandLine: dvips -E wieesgeht.dvi -o wieesgeht.eps
%DVIPSParameters: dpi=600
%DVIPSSource: TeX output 2009.05.31:1240
%%BeginProcSet: tex.pro 0 0
%!
/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S
/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy
setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask
restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
(LaserWriter 16/600)]{A length product length le{A length product exch 0
exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
%%EndProcSet
%%BeginProcSet: pstricks.pro 0 0
% $Id: pstricks.pro 40 2008-09-04 17:56:41Z herbert $
%
%% PostScript prologue for pstricks.tex.
%% Version 1.06, 2009/01/30
%%
%% This program can be redistributed and/or modified under the terms
%% of the LaTeX Project Public License Distributed from CTAN archives
%% in directory macros/latex/base/lppl.txt.
%
%
% Define the follwing gs-functions if not known, eg when using distiller
%
systemdict /.setopacityalpha known not {/.setopacityalpha { pop } def } if
systemdict /.setblendmode known not {/.setblendmode { pop } def } if
systemdict /.setshapealpha known not {/.setshapealpha { pop } def } if
%
/tx@Dict 200 dict def % the main PSTricks dictionary
tx@Dict begin
/ADict 25 dict def % The arrow dictionaray
/CM { matrix currentmatrix } bind def
/SLW /setlinewidth load def
/CLW /currentlinewidth load def
/CP /currentpoint load def
/ED { exch def } bind def
/L /lineto load def
/T /translate load def
/TMatrix { } def
/RAngle { 0 } def
/Sqrt { dup 0 lt { pop 0 } { sqrt } ifelse } def % return 0 for negative arguments
/Atan { /atan load stopped { pop pop 0 } if } def % return 0 if atan not known
/ATAN1 {neg -1 atan 180 sub } def % atan(x) (only one parameter)
/Div { dup 0 eq { pop } { div } ifelse } def % control the division
/tan { dup cos abs 1.e-10 lt
{ pop 1.e10 } % return 1.e10 as infinit
{ dup sin exch cos div } ifelse % default sin/cos
} def
/Tan { dup sin exch cos Div } def % sin(x)/cos(x) x in degrees
/Acos {dup dup mul neg 1 add dup 0 lt { % arc cos, returns 0 when negative root
pop pop 0 }{ sqrt exch atan} ifelse } def
/NET { neg exch neg exch T } def % change coordinate system to the negative one
/Pyth { dup mul exch dup mul add sqrt } def % Pythagoras, expects 2 parameter
/Pyth2 { % Pythagoras, xA yA xB yB
3 -1 roll % xA xB yB yA
sub % xA xB yB-yA
3 1 roll % yB-yA xA xB
sub % yB-yA xA-xB
Pyth } def
/PtoC { 2 copy cos mul 3 1 roll sin mul } def % Polar to Cartesian
/Rand { rand 4294967295 div } def % a real random number
%----------------- hv added 20050516 ---------------
/PiDiv2 1.57079632680 def
/Pi 3.14159265359 def
/TwoPi 6.28318530718 def
/Euler 2.71828182846 def
%/e Euler bind def
%
/RadtoDeg { 180 mul Pi div } bind def % convert from radian to degrees
/DegtoRad { Pi mul 180 div } bind def % viceversa
%----------------- hv end---------------------------
/PathLength@ { /z z y y1 sub x x1 sub Pyth add def /y1 y def /x1 x def } def
%
/PathLength {
flattenpath /z 0 def
{ /y1 ED /x1 ED /y2 y1 def /x2 x1 def }
{ /y ED /x ED PathLength@ }
{}
{ /y y2 def /x x2 def PathLength@ }
/pathforall load stopped { pop pop pop pop } if
z
} def
%
/STP { .996264 dup scale } def % BP/PT scaling
/STV { SDict begin normalscale end STP } def %
%
%%-------------- DG begin patch 15 ---------------%%
%/DashLine { dup 0 gt { /a .5 def PathLength exch div } { pop /a 1 def
%PathLength } ifelse /b ED /x ED /y ED /z y x add def b a .5 sub 2 mul y
%mul sub z Div round z mul a .5 sub 2 mul y mul add b exch Div dup y mul
%/y ED x mul /x ED x 0 gt y 0 gt and { [ y x ] 1 a sub y mul } { [ 1 0 ]
%0 } ifelse setdash stroke } def
/DashLine {
dup 0 gt { /a .5 def PathLength exch div } { pop /a 1 def PathLength } ifelse
/b ED /x1 ED /y1 ED /x ED /y ED
/z y x add y1 add x1 add def
/Coef b a .5 sub 2 mul y mul sub z Div round
z mul a .5 sub 2 mul y mul add b exch Div def
/y y Coef mul def
/x x Coef mul def
/y1 y1 Coef mul def
/x1 x1 Coef mul def
x1 0 gt y1 0 gt or x 0 gt or y 0 gt and
{ [ y x y1 x1 ] 1 a sub y mul }
{ [ 1 0 ] 0 } ifelse
setdash stroke
} def
%%-------------- DG end patch 15 ---------------%%
/DotLine {
/b PathLength def
/a ED /z ED /y CLW def
/z y z add def
a 0 gt {
/b b a div def
}{
a 0 eq {
/b b y sub def
}{ a -3 eq {
/b b y add def } if
} ifelse
} ifelse
[ 0 b b z Div round Div dup 0 le { pop 1 } if ]
a 0 gt { 0 }{ y 2 div a -2 gt { neg }if } ifelse
setdash 1 setlinecap stroke
} def
%
/LineFill { % hv ------------ patch 7 -------------
gsave
abs /hatchWidthInc ED
abs /hatchSepInc ED
abs CLW add /a ED
a 0 dtransform round exch round exch
2 copy idtransform
exch Atan rotate
idtransform pop /a ED
.25 .25 itransform pathbbox
/y2 ED
a Div ceiling cvi /x2 ED /y1 ED
a Div cvi /x1 ED /y2 y2 y1 sub def
clip
newpath
2 setlinecap
systemdict
/setstrokeadjust known { true setstrokeadjust } if
x2 x1 sub 1 add {
x1 a mul y1 moveto 0 y2 rlineto stroke
/x1 x1 1 add
hatchWidthInc 0 gt { CLW add } if
def
hatchSepInc 0 gt hatchWidthInc 0 gt or {
/a a hatchSepInc add def
CLW hatchWidthInc add SLW
} if
} repeat
grestore
pop pop } def
%
/PenroseFill {% on stack: scaling factor
dup dup scale
1 exch div round /penroseFactor ED
a 0 dtransform round exch round exch
2 copy idtransform
exch Atan rotate
idtransform pop /a ED
.25 .25 itransform pathbbox
/y2 ED
a Div ceiling cvi /x2 ED /y1 ED
a Div cvi /x1 ED /y2 y2 y1 sub def
clip
newpath
systemdict
/setstrokeadjust known { true setstrokeadjust } if
/I/S/L/W/G/+/Z/F/E/D[/def/exch/for{E D}/add{s E get mul}
{ Z -36.2001 1 33 }{25 E S rlineto}{/q Z dup q G E q 1 + G}{Z 2 2}]{cvx def}forall
[0 72 1008 {dup sin E cos }F ]1 setlinejoin/s W{/a W{/b I 10{/i I 4{/m I moveto
i m +/j I 10{/l Z b m l + G a l G sub s m get div .2 + floor .3 + 25
mul j l + S rmoveto}F i L j L stroke }F}F}F}F
grestore
pop pop
} def
%
%gsave abs CLW add /a ED a 0 dtransform round exch round exch
%2 copy idtransform exch Atan rotate idtransform pop /a ED .25 .25
%% DG/SR modification begin - Dec. 12, 1997 - Patch 2
%%itransform translate pathbbox /y2 ED a Div ceiling cvi /x2 ED /y1 ED a
%itransform pathbbox /y2 ED a Div ceiling cvi /x2 ED /y1 ED a
%% DG/SR modification end
%Div cvi /x1 ED /y2 y2 y1 sub def clip newpath 2 setlinecap systemdict
%/setstrokeadjust known { true setstrokeadjust } if x2 x1 sub 1 add { x1
%% DG/SR modification begin - Jun. 1, 1998 - Patch 3 (from Michael Vulis)
%% a mul y1 moveto 0 y2 rlineto stroke /x1 x1 1 add def } repeat grestore }
%% def
%a mul y1 moveto 0 y2 rlineto stroke /x1 x1 1 add def } repeat grestore
%pop pop } def
%% DG/SR modification end
%
/BeginArrow {
ADict begin % hold it local, for end see EndArrow
/@mtrx CM def
gsave
2 copy T
2 index sub neg exch
3 index sub exch Atan
rotate newpath
} def
%
/EndArrow { @mtrx setmatrix CP grestore end } def % end the ADict
%
/Arrow {
CLW mul add dup
2 div /w ED
mul dup /h ED
mul /a ED
{ 0 h T 1 -1 scale } if
w neg h moveto
0 0 L w h L w neg a neg rlineto
gsave fill grestore
} def
%
/ArrowD { % the sides are drawn as curves (hv 20071211)
CLW mul add dup
2 div /w ED
mul dup /h ED
mul /Inset ED
{ 0 h T 1 -1 scale } if % changes the direction
% we use y=w/h^2 * x^2 as equation for the control points
% for the coordinates the arrow is seen from top to bottom
% the bottom (tip) is (0;0)
w neg h moveto % lower left of >
w 9 div 4 mul neg h 3 div 2 mul
w 9 div neg h 3 div
0 0 curveto % tip of >
w 9 div h 3 div
w 9 div 4 mul h 3 div 2 mul
w h curveto % upper left of >
w neg Inset neg rlineto % move to x=0 and inset
gsave fill grestore
} def
%
/Tbar {
CLW mul add /z ED
z -2 div CLW 2 div moveto
z 0 rlineto stroke
0 CLW moveto
} def
%
/Bracket {
CLW mul add dup CLW sub 2 div
/x ED mul CLW add /y ED /z CLW 2 div def
x neg y moveto
x neg CLW 2 div L x CLW 2 div L x y L stroke
0 CLW moveto
} def
%
/RoundBracket {
CLW mul add dup 2 div
/x ED mul /y ED /mtrx CM def
0 CLW 2 div T x y mul 0 ne { x y scale } if
1 1 moveto
.85 .5 .35 0 0 0 curveto
-.35 0 -.85 .5 -1 1 curveto
mtrx setmatrix stroke 0 CLW moveto
} def
%
/SD { 0 360 arc fill } def
%
/EndDot { % DS is the dot size
{ /z DS def } { /z 0 def } ifelse
/b ED 0 z DS SD b { 0 z DS CLW sub SD } if
0 DS z add CLW 4 div sub moveto } def
%
/Shadow { [ { /moveto load } { /lineto load } { /curveto load } {
/closepath load } /pathforall load stopped { pop pop pop pop CP /moveto
load } if ] cvx newpath 3 1 roll T exec } def
%
%/NArray {
% aload length 2 div dup dup cvi eq not { exch pop } if /n exch
% cvi def
%} def
%
/NArray { % holds the coordinates and on top of stack the showpoints boolean
/showpoints ED
counttomark 2 div dup cvi /n ED
n eq not { exch pop } if
showpoints { ] aload /Points ED } { n 2 mul 1 add -1 roll pop } ifelse
} def
%
/Line {
NArray n 0 eq not
{ n 1 eq { 0 0 /n 2 def } if ArrowA /n n 2 sub def
n { Lineto } repeat
CP 4 2 roll ArrowB L pop pop
} if
} def
%
/Arcto {
/a [ 6 -2 roll ] cvx def
a r
/arcto load stopped { 5 } { 4 } ifelse { pop } repeat
a
} def
%
/CheckClosed { dup n 2 mul 1 sub index eq 2 index n 2 mul 1 add index eq
and { pop pop /n n 1 sub def } if } def
/Polygon { NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { pop pop }
repeat } { n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED /x0 ED /y1
ED /x1 ED x1 y1 /x1 x0 x1 add 2 div def /y1 y0 y1 add 2 div def x1 y1
moveto /n n 2 sub def n { Lineto } repeat x1 y1 x0 y0 6 4 roll Lineto
Lineto pop pop closepath } ifelse } def
/Diamond {
/mtrx CM def
T rotate
/h ED
/w ED
dup 0 eq { pop } { CLW mul neg
/d ED
/a w h Atan def
/h d a sin Div h add def
/w d a cos Div w add def } ifelse
mark w 2 div h 2 div w 0 0 h neg w neg 0 0 h w 2 div h 2 div
/ArrowA { moveto } def
/ArrowB { } def
false Line
closepath mtrx setmatrix } def
% DG modification begin - Jan. 15, 1997
%/Triangle { /mtrx CM def translate rotate /h ED 2 div /w ED dup 0 eq {
%pop } { CLW mul /d ED /h h d w h Atan sin Div sub def /w w d h w Atan 2
%div dup cos exch sin Div mul sub def } ifelse mark 0 d w neg d 0 h w d 0
%d /ArrowA { moveto } def /ArrowB { } def false Line closepath mtrx
%setmatrix } def
%
/Triangle {
/mtrx CM def
translate
rotate /h ED 2 div /w ED
dup CLW mul /d ED
/h h d w h Atan sin Div sub def
/w w d h w Atan 2 div dup cos exch sin Div mul sub def
mark
0 d w neg d 0 h w d 0 d
/ArrowA { moveto } def
/ArrowB { } def
false
Line
closepath
mtrx
% DG/SR modification begin - Jun. 1, 1998 - Patch 3 (from Michael Vulis)
% setmatrix } def
setmatrix pop
} def
% DG/SR modification end
%
/CCA {
/y ED /x ED
2 copy y sub /dy1 ED
x sub /dx1 ED
/l1 dx1 dy1 Pyth def
} def
%
/CC {
/l0 l1 def
/x1 x dx sub def
/y1 y dy sub def
/dx0 dx1 def
/dy0 dy1 def
CCA
/dx dx0 l1 c exp mul dx1 l0 c exp mul add def
/dy dy0 l1 c exp mul dy1 l0 c exp mul add def
/m dx0 dy0 Atan dx1 dy1 Atan sub 2 div cos abs b exp a mul dx dy Pyth Div 2 div def
/x2 x l0 dx mul m mul sub def
/y2 y l0 dy mul m mul sub def
/dx l1 dx mul m mul neg def
/dy l1 dy mul m mul neg def
} def
%
/IC {
/c c 1 add def
c 0 lt { /c 0 def } { c 3 gt { /c 3 def } if } ifelse
/a a 2 mul 3 div 45 cos b exp div def
CCA
/dx 0 def
/dy 0 def
} def
%
/BOC { IC CC x2 y2 x1 y1 ArrowA CP 4 2 roll x y curveto } def
/NC { CC x1 y1 x2 y2 x y curveto } def
/EOC { x dx sub y dy sub 4 2 roll ArrowB 2 copy curveto } def
/BAC { IC CC x y moveto CC x1 y1 CP ArrowA } def
/NAC { x2 y2 x y curveto CC x1 y1 } def
/EAC { x2 y2 x y ArrowB curveto pop pop } def
%
/OpenCurve {
NArray n 3 lt
{ n { pop pop } repeat }
{ BOC /n n 3 sub def n { NC } repeat EOC } ifelse
} def
%
/AltCurve {
{ false NArray n 2 mul 2 roll
[ n 2 mul 3 sub 1 roll ] aload
/Points ED
n 2 mul -2 roll }
{ false NArray } ifelse
n 4 lt { n { pop pop } repeat } { BAC /n n 4 sub def n { NAC } repeat EAC } ifelse
} def
%
/ClosedCurve {
NArray n 3 lt
{ n { pop pop } repeat }
{ n 3 gt { CheckClosed } if
6 copy n 2 mul 6 add 6 roll
IC CC x y moveto n { NC } repeat
closepath pop pop
} ifelse
} def
%
/SQ { /r ED r r moveto r r neg L r neg r neg L r neg r L fill } def
/ST { /y ED /x ED x y moveto x neg y L 0 x L fill } def
/SP { /r ED gsave 0 r moveto 4 { 72 rotate 0 r L } repeat fill grestore } def
%
/FontDot {
DS 2 mul dup
matrix scale matrix concatmatrix exch matrix
rotate matrix concatmatrix exch
findfont exch makefont setfont
} def
%
/Rect {
x1 y1 y2 add 2 div moveto
x1 y2 lineto
x2 y2 lineto
x2 y1 lineto
x1 y1 lineto
closepath
} def
%
/OvalFrame {
x1 x2 eq y1 y2 eq or
{ pop pop x1 y1 moveto x2 y2 L }
{ y1 y2 sub abs x1 x2 sub abs 2 copy gt
{ exch pop } { pop } ifelse
2 div exch { dup 3 1 roll mul exch } if
2 copy lt { pop } { exch pop } ifelse
/b ED
x1 y1 y2 add 2 div moveto
x1 y2 x2 y2 b arcto
x2 y2 x2 y1 b arcto
x2 y1 x1 y1 b arcto
x1 y1 x1 y2 b arcto
16 { pop } repeat
closepath
} ifelse
} def
%
/Frame {
CLW mul /a ED
3 -1 roll
2 copy gt { exch } if
a sub /y2 ED
a add /y1 ED
2 copy gt { exch } if
a sub /x2 ED
a add /x1 ED
1 index 0 eq { pop pop Rect } { OvalFrame } ifelse
} def
%
/BezierNArray {
/f ED
counttomark 2 div dup cvi /n ED
n eq not { exch pop } if
n 1 sub neg 3 mod 3 add 3 mod { 0 0 /n n 1 add def } repeat
f { ] aload /Points ED } { n 2 mul 1 add -1 roll pop } ifelse
} def
%
/OpenBezier {
BezierNArray
n 1 eq
{ pop pop }
{ ArrowA n 4 sub 3 idiv
{ 6 2 roll 4 2 roll curveto } repeat
6 2 roll 4 2 roll ArrowB curveto } ifelse
} def
%
/ClosedBezier {
BezierNArray
n 1 eq
{ pop pop }
{ moveto n 1 sub 3 idiv
{ 6 2 roll 4 2 roll curveto } repeat
closepath } ifelse
} def
%
/BezierShowPoints {
gsave
Points aload length 2 div cvi /n ED
moveto
n 1 sub { lineto } repeat
CLW 2 div SLW [ 4 4 ] 0 setdash stroke
grestore
} def
%
/Parab {
/y0 ED /x0 ED /y1 ED /x1 ED
/dx x0 x1 sub 3 div def
/dy y0 y1 sub 3 div def
x0 dx sub y0 dy add x1 y1 ArrowA
x0 dx add y0 dy add x0 2 mul x1 sub y1 ArrowB
curveto
/Points [ x1 y1 x0 y0 x0 2 mul x1 sub y1 ] def
} def
%
/Parab1 { % 1 end | 0 SP
/ySP ED /xSP ED /y1 ED /x1 ED
/dx xSP x1 sub 3 div def
/dy ySP y1 sub 3 div def
newpath x1 y1 moveto xSP y1 lineto xSP ySP lineto
x1 ySP lineto closepath clip
currentpoint
newpath moveto
xSP dx sub ySP dy add x1 y1 ArrowA
xSP dx add ySP dy add xSP 2 mul x1 sub y1 ArrowB
curveto
/Points [ x1 y1 xSP ySP xSP 2 mul x1 sub y1 ] def
} def
%
/Grid {
newpath
/a 4 string def
/b ED /c ED /n ED
cvi dup 1 lt { pop 1 } if
/s ED
s div dup 0 eq { pop 1 } if
/dy ED s div dup 0 eq { pop 1 } if
/dx ED dy div round dy mul
/y0 ED dx div round dx mul
/x0 ED dy div round cvi
/y2 ED dx div round cvi
/x2 ED dy div round cvi
/y1 ED dx div round cvi
/x1 ED
/h y2 y1 sub 0 gt { 1 } { -1 } ifelse def
/w x2 x1 sub 0 gt { 1 } { -1 } ifelse def
b 0 gt {
/z1 b 4 div CLW 2 div add def
% /Helvetica findfont b scalefont setfont
/b b .95 mul CLW 2 div add def } if
systemdict /setstrokeadjust known
{ true setstrokeadjust /t { } def }
{ /t { transform 0.25 sub round 0.25 add exch 0.25 sub round 0.25 add
exch itransform } bind def } ifelse
gsave n 0 gt { 1 setlinecap [ 0 dy n div ] dy n div 2 div setdash } { 2 setlinecap } ifelse
/i x1 def
/f y1 dy mul n 0 gt { dy n div 2 div h mul sub } if def
/g y2 dy mul n 0 gt { dy n div 2 div h mul add } if def
x2 x1 sub w mul 1 add dup 1000 gt { pop 1000 } if
{ i dx mul dup y0 moveto
b 0 gt
{ gsave c i a cvs dup stringwidth pop
/z2 ED w 0 gt {z1} {z1 z2 add neg} ifelse
h 0 gt {b neg}{z1} ifelse
rmoveto show grestore } if
dup t f moveto
g t L stroke
/i i w add def
} repeat
grestore
gsave
n 0 gt
% DG/SR modification begin - Nov. 7, 1997 - Patch 1
%{ 1 setlinecap [ 0 dx n div ] dy n div 2 div setdash }
{ 1 setlinecap [ 0 dx n div ] dx n div 2 div setdash }
% DG/SR modification end
{ 2 setlinecap } ifelse
/i y1 def
/f x1 dx mul n 0 gt { dx n div 2 div w mul sub } if def
/g x2 dx mul n 0 gt { dx n div 2 div w mul add } if def
y2 y1 sub h mul 1 add dup 1000 gt { pop 1000 } if
{ newpath i dy mul dup x0 exch moveto
b 0 gt { gsave c i a cvs dup stringwidth pop
/z2 ED
w 0 gt {z1 z2 add neg} {z1} ifelse
h 0 gt {z1} {b neg} ifelse
rmoveto show grestore } if
dup f exch t moveto
g exch t L stroke
/i i h add def
} repeat
grestore
} def
%
/ArcArrow {
/d ED /b ED /a ED
gsave
newpath 0 -1000 moveto clip
newpath
0 1 0 0 b
grestore
c mul
/e ED
pop pop pop r a e d PtoC y add exch x add
exch r a PtoC y add exch x add exch b pop pop pop pop a e d CLW 8 div c
mul neg d
} def
%
/Ellipse { /mtrx CM def T scale 0 0 1 5 3 roll arc mtrx setmatrix } def
%
/ArcAdjust { %%%% Vincent Guirardel
% given a target length (targetLength) and an initial angle (angle0) [in the stack],
% let M(angle0)=(rx*cos(angle0),ry*sin(angle0))=(x0,y0).
% This computes an angle t such that (x0,y0) is at distance
% targetLength from the point M(t)=(rx*cos(t),ry*sin(t)).
% NOTE: this an absolute angle, it does not have to be added or substracted to angle0
% contrary to TvZ's code.
% To achieve, this, one iterates the following process: start with some angle t,
% compute the point M' at distance targetLength of (x0,y0) on the semi-line [(x0,y0) M(t)].
% Now take t' (= new angle) so that (0,0) M(t') and M' are aligned.
%
% Another difference with TvZ's code is that we need d (=add/sub) to be defined.
% the value of d = add/sub is used to know on which side we have to move.
% It is only used in the initialisation of the angle before the iteration.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Input stack: 1: target length 2: initial angle
% variables used : rx, ry, d (=add/sub)
%
/targetLength ED /angle0 ED
/x0 rx angle0 cos mul def
/y0 ry angle0 sin mul def
% we are looking for an angle t such that (x0,y0) is at distance targetLength
% from the point M(t)=(rx*cos(t),ry*sin(t)))
%initialisation of angle (using 1st order approx = TvZ's code)
targetLength 57.2958 mul
angle0 sin rx mul dup mul
angle0 cos ry mul dup mul
add sqrt div
% if initialisation angle is two large (more than 90 degrees) set it to 90 degrees
% (if the ellipse is very curved at the point where we draw the arrow, %
% the value can be much more than 360 degrees !)
% this should avoid going on the wrong side (more than 180 degrees) or go near
% a bad attractive point (at 180 degrees)
dup 90 ge { pop 90 } if
angle0 exch d % add or sub
% maximum number of times to iterate the iterative procedure:
% iterative procedure: takes an angle t on top of stack, computes a
% better angle (and put it on top of stack)
30 { dup
% compute distance D between (x0,y0) and M(t)
dup cos rx mul x0 sub dup mul exch sin ry mul y0 sub dup mul add sqrt
% if D almost equals targetLength, we stop
dup targetLength sub abs 1e-5 le { pop exit } if
% stack now contains D t
% compute the point M(t') at distance targetLength of (x0,y0) on the semi-line [(x0,y0) M(t)]:
% M(t')= ( (x(t)-x0)*targetLength/d+x0 , (y(t)-y0)*targetLength/d+y0 )
exch dup cos rx mul x0 sub exch sin ry mul y0 sub
% stack contains: y(t)-y0, x(t)-x0, d
2 index Div targetLength mul y0 add ry Div exch
2 index Div targetLength mul x0 add rx Div
% stack contains x(t')/rx , y(t')/ry , d
% now compute t', and remove D from stack
atan exch pop
} repeat
% we don't look at what happened... in particular, if targetLength is greater
% than the diameter of the ellipse...
% the final angle will be around /angle0 + 180. maybe we should treat this pathological case...
% after iteration, stack contains an angle t such that M(t) is the tail of the arrow
% to give back the result as a an angle relative to angle0 we could add the following line:
% angle0 sub 0 exch d
%
% begin bug fix 2006-01-11
% we want to adjust the new angle t' by a multiple of 360 so that | t'-angle0 | <= 180
%(we don't want to make the ellipse turn more or less than it should)...
dup angle0 sub dup abs 180 gt { 180 add 360 div floor 360 mul sub } { pop } ifelse
% end bug fix
} def
%
/EllipticArcArrow {
/d ED % is add or sub
/b ED % arrow procedure
/a1 ED % angle
gsave
newpath
0 -1000 moveto
clip % Set clippath far from arrow.
newpath
0 1 0 0 b % Draw arrow to determine length.
grestore
% Length of arrow is on top of stack. Next 3 numbers are junk.
%
a1 exch ArcAdjust % Angular position of base of arrow.
/a2 ED
pop pop pop
a2 cos rx mul xOrig add % hv 2007-08-29 x->xOrig
a2 sin ry mul yOrig add % hv 2007-08-29 y->yOrig
a1 cos rx mul xOrig add %
a1 sin ry mul yOrig add %
% Now arrow tip coor and base coor are on stack.
b pop pop pop pop % Draw arrow, and discard coordinates.
a2 CLW 8 div
% change value of d (test it by looking if `` 1 1 d '' gives 2 or not )
1 1 d 2 eq { /d { sub } def } { /d { add } def } ifelse
ArcAdjust
% resets original value of d
1 1 d 2 eq { /d { sub } def } { /d { add } def } ifelse % Adjust angle to give overlap.
} def
%%------------------ tvz/DG/hv (2004-05-10) end -------------------%%
%
/Rot { CP CP translate 3 -1 roll neg rotate NET } def
%
/RotBegin {
tx@Dict /TMatrix known not { /TMatrix { } def /RAngle { 0 } def } if
/TMatrix [ TMatrix CM ] cvx def
/a ED
a Rot /RAngle [ RAngle dup a add ] cvx def
} def
%
/RotEnd {
/TMatrix [ TMatrix setmatrix ] cvx def
/RAngle [ RAngle pop ] cvx def
} def
%
/PutCoor { gsave CP T CM STV exch exec moveto setmatrix CP grestore } def
/PutBegin { /TMatrix [ TMatrix CM ] cvx def CP 4 2 roll T moveto } def
/PutEnd { CP /TMatrix [ TMatrix setmatrix ] cvx def moveto } def
%
/Uput {
/a ED
add 2 div /h ED 2
div /w ED
/s a sin def
/c a cos def
/b s abs c abs 2 copy gt dup
/q ED
{ pop } { exch pop } ifelse def
/w1 c b div w mul def
/h1 s b div h mul def
q { w1 abs w sub dup c mul abs }{ h1 abs h sub dup s mul abs } ifelse
} def
%
/UUput {
/z ED
abs /y ED
/x ED
q { x s div c mul abs y gt }{ x c div s mul abs y gt } ifelse
{ x x mul y y mul sub z z mul add sqrt z add }
{ q { x s div } { x c div } ifelse abs
} ifelse
a PtoC
h1 add exch
w1 add exch
} def
%
/BeginOL {
dup (all) eq exch TheOL eq or
{ IfVisible not { Visible /IfVisible true def } if }
{ IfVisible { Invisible /IfVisible false def } if } ifelse
} def
%
/InitOL {
/OLUnit [ 3000 3000 matrix defaultmatrix dtransform ] cvx def
/Visible { CP OLUnit idtransform T moveto } def
/Invisible { CP OLUnit neg exch neg exch idtransform T moveto } def
/BOL { BeginOL } def
/IfVisible true def
} def
%
end
%-----------------------------------------------------------------------------%
%
% END pstricks.pro
%%EndProcSet
%%BeginProcSet: pst-algparser.pro 0 0
% $Id: pst-algparser.pro 26 2008-06-14 11:50:02Z herbert $
%%
%% PostScript prologue for PSTricks algorithm parser
%% Version 0.01, 2008/01/01
%%
%% This program can be redistributed and/or modified under the terms
%% of the LaTeX Project Public License Distributed from CTAN archives
%% in directory macros/latex/base/lppl.txt.
%%
%%-----------------------------------------------------------------------------%
%
/AlgParser { tx@AlgToPs begin AlgToPs end } def % Dominique Rodriguez
%
/tx@CoreAnalyzerDict 100 dict def tx@CoreAnalyzerDict begin
%
% PS ANALYZER FOR ALGEBRAIC EXPRESSION V1.12
% E->T|E+T
% T->FS|T*FS
% FS -> F | +FS | -FS
% F->P|F^SF
% P->(E)|literal
% literal->number|var|var[E]|func(params)
% params->E|E,param
% number->TOBEFINISHED
%
%% E expression, T term, SF signed factor, F factor, P power
%
%% parser
%
%% str
%
%% C->E<condition_operators>E
%% STR index -> STR index+lenExpr
/AnalyzeCond { AnalyzeExpr ReadCondOp AnalyzeExpr EvalCondOp } def
%
%% analyze Expression List (separator , or | )
%% STR index -> STR index+lenExpr
%% /AnalyzeListOfE {
%% { NextNonBlankChar pop AnalyzeExpr%%dup Strlen eq { exit } if NextNonBlankChar
%% NextNonBlankChar dup 0 eq { pop exit } if
%% dup 44 ne 1 index 124 ne and { dup 41 ne { PROBLEMCONTACTBILLOU } { pop exit } ifelse } if
%% pop NextNonBlankChar dup 0 eq { exit } if 124 ne { PROBLEMCONTACTBILLOU } if 1 add NextNonBlankChar 0 eq {toto} if } loop
%% AnalyzeListOfEPostHook
%% } def
/AnalyzeListOfE {
/NotFirst false def
{ NextNonBlankChar pop AnalyzeExpr
NotFirst { EvalListOfExpr } { /NotFirst true def } ifelse
dup Strlen eq { exit } if NextNonBlankChar
dup 44 ne 1 index 124 ne and
{ dup 41 ne { PROBLEMCONTACTBILLOU } { pop exit } ifelse }
if pop 1 add } loop
AnalyzeListOfEPostHook
} def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% E->T|E+T
%% STR index -> STR index+lenExpr
/AnalyzeExpr {
AnalyzePreHook AnalyzeTerm IsEndingExpr
{ dup 0 ne { 32 eq { NextNonBlankChar } if } { pop } ifelse }
{ { RollOp 1 add NextNonBlankChar pop AnalyzeTerm PreEvalHook EvalAddSub IsEndingExpr { pop exit } if } loop }
ifelse
AnalyzePostHook
} def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% T->FS|T*FS
%% STR index
/AnalyzeTerm {
AnalyzePreHook AnalyzeSignedFactor IsEndingTerm
{ dup 0 ne { 32 eq { NextNonBlankChar } if } { pop } ifelse }
{ { RollOp 1 add NextNonBlankChar pop AnalyzeSignedFactor PreEvalHook EvalMulDiv IsEndingTerm { pop exit } if} loop }
ifelse
AnalyzePostHook
} def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% FS -> F | +FS | -FS
%% STR index
/AnalyzeSignedFactor {
AnalyzePreHook 2 copy get dup IsUnaryOp
{ RollOp 1 add NextNonBlankChar pop AnalyzeSignedFactor EvalUnaryOp }
{ pop AnalyzeFactor }
ifelse AnalyzePostHook
} def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% F->P|F^P
%% STR index
/AnalyzeFactor {
AnalyzePreHook AnalyzePower IsEndingFactor
{ dup 0 ne { 32 eq { NextNonBlankChar } if } { pop } ifelse }
{ { RollOp 1 add NextNonBlankChar pop AnalyzePower PreEvalHook EvalPower IsEndingFactor { pop exit } if} loop }
ifelse AnalyzePostHook
} def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% P->(E)|literal
%% STR index
/AnalyzePower {
%% depending of first char either a number, or a literal
2 copy get dup 40 eq%%an open par
{ pop 1 add NextNonBlankChar pop AnalyzeExpr 1 add NextNonBlankChar pop }
{ AnalyzeLiteral }
ifelse
} def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% STR index STR[index] -> STR index
%/AnalyzeLiteral { IsNumber { EvalNumber } { EvalLiteral } ifelse } def
/AnalyzeLiteral { dup IsUnaryOp exch IsNumber or { EvalNumber } { EvalLiteral } ifelse } def%%dr 09102006
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% recognize + or -
%% chr -> T/F
/IsUnaryOp { dup 43 eq exch 45 eq or } bind def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% a number can contain only : 0123456789.
%% chr -> T/F
/IsNumber { dup 48 ge exch dup 57 le 3 -1 roll and exch 46 eq or } bind def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% STR index -> STR index number
%% a number can be of the form [0-9]*.[0-9]*\([eE][+-]?[0-9]+\)?
%% STR index -> STR index' number
/ReadNumber {
exch dup 3 -1 roll dup 3 1 roll
%%read mantissa
{ 1 add 2 copy dup Strlen eq { pop pop 0 exit } if get dup IsNumber not { exit } if pop } loop
dup 101 eq exch 69 eq or
%%% there is a "e" or "E" -> read exponant
{ 1 add 2 copy get dup IsUnaryOp
{ pop 1 add 2 copy get } if
{ IsNumber not { exit } if 1 add 2 copy get } loop }
if
dup 4 1 roll
3 -1 roll exch 1 index sub getinterval
} def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% a number can contain only : 0123456789.
%% chr -> T/F
/IsCondOp { dup 30 eq exch dup 60 ge exch 62 le and or } bind def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% STR index -> STR index number
%% a number can be of the form [0-9]*.[0-9]*\([eE][+-]?[0-9]+\)?
%% STR index -> STR index' number
/ReadCondOp {
NextNonBlankChar 1 index 4 1 roll
{ IsCondOp not { exit } if 1 add 2 copy get } loop
2 copy 5 -1 roll
exch 1 index sub getinterval 3 1 roll
} def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% a literal can contain only : 0123456789.
%% chr -> T/F
/IsLiteral {%
dup 48 ge exch dup 57 le 3 -1 roll and exch
dup 65 ge exch dup 90 le 3 -1 roll and 3 -1 roll or exch
dup 97 ge exch 122 le and or } bind def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% a literal can be of the form [a-zA-Z][a-zA-Z0-9]*\(\((Expression)\)|\(\[Expression\]\)\)?
%% STR index -> literal STR index' nextchr
/ReadLiteral {
exch dup 3 -1 roll dup 3 1 roll
%%read literal core
{ 2 copy dup Strlen eq { pop pop 0 exit } if get dup IsLiteral not { exit } if pop 1 add } loop
4 1 roll dup 5 1 roll 3 -1 roll exch 1 index sub getinterval 4 1 roll
} def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% expr is ended by end of str or a clpar
%% STR index -> STR index STR[index] T/F
/IsEndingExpr {%
2 copy dup Strlen eq
%% if end of str is reached -> end !
{ pop pop 0 true }
%% ending chr -> clpar, comma, |, <, >, =, !,
{get dup dup 41 eq
exch dup 124 eq
exch dup 93 eq
exch dup 44 eq
exch dup 30 eq
exch dup 60 ge exch 62 le and or or or or or}
ifelse } def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% expr is ended by end of str or a +-
%% STR index -> STR index STR[index] T/F
/IsEndingTerm { IsEndingExpr { true } { dup dup 43 eq exch 45 eq or } ifelse } def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% expr is ended by end of str or */
%% STR index -> STR index STR[index] T/F
/IsEndingFactor { IsEndingTerm { true } { dup dup 42 eq exch 47 eq or } ifelse } def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% expr is ended by end of str or ^
%% STR index -> STR index STR[index] T/F
/IsEndingPower { IsEndingFactor { true } { dup 94 eq } ifelse } def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% STR index -> STR index STR[index]
/NextNonBlankChar { { dup Strlen eq { 0 exit } if 2 copy get dup neBlkChar { exit } if pop 1 add } loop } bind def
/neBlkChar { dup 32 ne exch dup 10 ne exch 9 ne and and } bind def
%%%%%%%%%%%%%%%%%%%%%%%%
%% DEBUG
/BRK {false} def
/BRKtrue {/BRK true def} def
/BRKStop {BRK {BRKtoto} if } def
/BRKEvalStop {BRK exch if } def
/BRKBRK2true {BRK {BRK2true} if } def
/BRK2 {false} def
/BRK2true {/BRK2 true def} def
/BRK2Stop {BRK2 {BRK2toto} if } def/BRK {false} def
end
%
%-------------------------------------------------------------------------------%
%
/tx@AlgToPs 12 dict def tx@AlgToPs begin
%
%% algExpr -> PSVector
/AlgToPs { tx@CoreAnalyzerDict begin InitParser AnalyzeListOfE pop pop EndingSequence end } def
/EndingSequence { ExpressionVector aload length /end cvx exch 1 add array astore } def
/InitParser { /ExpressionVector [ /tx@AddMathFunc cvx /begin cvx ] def dup length /Strlen exch def 0 } def
/Strlen 0 def
/EvalListOfExpr {} def%
/EvalNumber {%
ReadNumber cvr /ExpressionVector ExpressionVector aload length dup 3 add -1 roll cvx
exch 1 add array astore def NextNonBlankChar pop } def
/EvalAddSub {%
/ExpressionVector ExpressionVector aload length dup 5 add -1 roll
43 eq { /add } { /sub } ifelse cvx exch 1 add array astore def
} def
/EvalMulDiv {%
/ExpressionVector ExpressionVector aload length dup 5 add -1 roll
42 eq { /mul } { /div } ifelse cvx exch 1 add array astore def
} def
/EvalPower {%
/ExpressionVector ExpressionVector aload length dup 5 add -1 roll
pop /exp cvx exch 1 add array astore def
} def
/EvalLiteral {%
ReadLiteral
dup 40 eq%%% there is an open par -> function call
{ pop 2 index
dup (Sum) eq { EvalSum }
{ dup (IfTE) eq { EvalCond }
{ dup (Derive) eq { pop EvalDerive }
{ pop 1 add NextNonBlankChar pop AnalyzeListOfE 2 index TrigoFunc
/ExpressionVector ExpressionVector aload length dup 5 add -1 roll cvn cvx
exch 1 add array astore def 1 add NextNonBlankChar pop } ifelse } ifelse} ifelse }
{ /ExpressionVector ExpressionVector aload length dup 6 add -1 roll cvn cvx exch 1 add array astore def
dup 91 eq%%% there is an open bracket -> vector element
{ pop 1 add NextNonBlankChar pop AnalyzeExpr
/ExpressionVector ExpressionVector aload length /cvi cvx exch /get cvx exch 2 add array astore def 1 add }
{ pop NextNonBlankChar pop }
ifelse}
ifelse
} def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% the derive function : Derive(n,f(x))
%% firstparindex lastparindex ->
/EvalDerive {
%% manage the function descripiton
1 add ReadNumber 3 1 roll NextNonBlankChar
44 ne { ANALYZER_ERROR_missing_second_comma_in_Sum } if
1 add NextNonBlankChar pop
3 -1 roll cvi
dup 0 eq
{ pop AnalyzeExpr 3 -1 roll pop 1 add }
{ 1 sub 3 1 roll (x) exch tx@Derive begin DeriveIndexed end 4 -1 roll
{ (x) tx@Derive begin Derive end } repeat
ExpressionVector exch /ExpressionVector [] def
AlgToPs aload length
/ExpressionVector 1 index 3 add -1 roll aload length dup 3 add -1 roll /l2 exch def /l1 exch def
l1 l2 add 1 add l2 neg roll l1 l2 add array astore def 3 -1 roll pop 1 add
1 index length /Strlen exch def } ifelse
} def
/EvalSum {%
pop 1 add NextNonBlankChar pop
%% read the variable name
ReadLiteral pop NextNonBlankChar
44 ne { ANALYZER_ERROR_missing_first_comma_in_Sum } if
%% read the initial value
1 add NextNonBlankChar pop ReadNumber cvi 3 1 roll
2 copy get 44 ne { ANALYZER_ERROR_missing_second_comma_in_Sum } if
%% read the increment value
1 add NextNonBlankChar pop ReadNumber cvi 3 1 roll
2 copy get 44 ne { ANALYZER_ERROR_missing_second_comma_in_Sum } if
%% read the limit value
1 add NextNonBlankChar pop ReadNumber cvi 3 1 roll
2 copy get 44 ne { ANALYZER_ERROR_missing_second_comma_in_Sum } if
/ExpressionVector ExpressionVector aload length dup 7 add -3 roll 0 4 1 roll
5 -1 roll 4 add array astore def
%% keep ExpressionVector for later and create a new one for internal Sum computation
ExpressionVector 3 1 roll /ExpressionVector [ 6 -1 roll cvn /exch cvx /def cvx ] def
1 add NextNonBlankChar pop AnalyzeExpr
%% add each term
/ExpressionVector ExpressionVector aload length 1 add /add cvx exch array astore def
/ExpressionVector 4 -1 roll aload length ExpressionVector cvx /for cvx 3 -1 roll 2 add
array astore def 3 -1 roll pop 1 add
} def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Convert to radians if trigo function call
%% (name) ->
/TrigoFunc {
dup (cos) eq 1 index (sin) eq or exch (tan) eq or
{ /ExpressionVector ExpressionVector aload length Pi /div cvx 180 /mul cvx 5 -1 roll 4 add
array astore def
} if
} def
/EvalCond {%
pop 1 add AnalyzeCond NextNonBlankChar
44 ne { ANALYZER_ERROR_missing_first_comma_in_IfTE } if
ExpressionVector 3 1 roll /ExpressionVector [] def
1 add AnalyzeExpr ExpressionVector 3 1 roll /ExpressionVector [] def
NextNonBlankChar 44 ne { ANALYZER_ERROR_missing_second_comma_in_IfTE } if
1 add AnalyzeExpr
NextNonBlankChar 41 ne { ANALYZER_ERROR_missing_ending parenthesis_in_IfTE } if
ExpressionVector
/ExpressionVector 6 -1 roll aload length dup
6 add -1 roll cvx exch dup 4 add -1 roll cvx /ifelse cvx 3 -1 roll 3 add array astore def
1 add 3 -1 roll pop
} def
%% CondOp STR index
/EvalCondOp {%
3 -1 roll
dup (=) eq { /eq } {%
dup (<) eq { /lt } {%
dup (>) eq { /gt } {%
dup (>=) eq { /ge } {%
dup (<=) eq { /ge } {%
dup (!=) eq { /ne } { ERROR_non_valid_conditional_operator }
ifelse } ifelse } ifelse } ifelse } ifelse } ifelse
cvx exch pop
/ExpressionVector ExpressionVector aload length dup 3 add -1 roll exch 1 add array astore def } def
/EvalUnaryOp {
3 -1 roll 45 eq { /ExpressionVector ExpressionVector aload length /neg cvx exch 1 add array astore def } if
} def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% H O O K S
/AnalyzePreHook {} bind def
/PreEvalHook {} bind def
/AnalyzeListOfEPostHook {} bind def
/AnalyzePostHook {} def
/RollOp { 3 1 roll } bind def
end %tx@CoreAnalyzerDict
%
%--------------------------------------------------------------------%
%
/tx@Derive 41 dict def tx@Derive begin
%%increase ^^ for each function added
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% algExpr variable -> PSVector
/Derive {%
10240 string 3 1 roll 0 3 1 roll
/Variable exch def
tx@CoreAnalyzerDict begin InitParser AnalyzeListOfE end
} def
/Strlen 0 def
/InitParser { dup length /Strlen exch def 0 } def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% algExpr variable index -> PSVector
/DeriveIndexed {%
3 1 roll 10240 string 3 1 roll 0 3 1 roll
/Variable exch def
tx@CoreAnalyzerDict begin InitParser pop 4 -1 roll AnalyzeExpr 4 -2 roll pop pop 4 -2 roll exch pop end
} def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% (u,v)'=-(u',v')
/EvalListOfExpr {%
4 2 roll 2 copy 9 -1 roll dup length 4 1 roll putinterval add AddPipe
2 copy 7 -1 roll dup length 4 1 roll putinterval add
6 -2 roll pop pop
2 copy pop 0 6 2 roll GetIntervalNewStr 5 1 roll 2 copy 0 exch getinterval 6 1 roll } def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% (-u)'=-(u')
/EvalUnaryOp {
4 -2 roll 4 index (0) eq
{ (0) StrConcat 7 -1 roll pop }
{ 7 -1 roll 45 eq
{ AddSub AddOpPar true } { false } ifelse
3 1 roll 5 index StrConcat 3 -1 roll { AddClPar } if } ifelse
2 copy pop 0 6 2 roll GetIntervalNewStr
7 -2 roll pop pop 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll
} def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% (number)'=0
/EvalNumber { ReadNumber (0) 6 2 roll } def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% (u+v)'=u'+v'
/EvalAddSub {%
7 index dup (0) eq
{ pop true }%% du=0 nothing added
{ dup length exch 5 index 5 index 3 -1 roll putinterval 4 -1 roll add 3 1 roll false }
ifelse
5 index dup (0) eq
{ pop { (0) } { 4 -2 roll 2 copy pop 0 6 2 roll GetIntervalNewStr } ifelse }%%dv=0
{ exch
{ 5 -2 roll 7 index 45 eq { AddSub } if false } %%nothing yet added
{ 5 -2 roll 7 index 43 eq%%something yet added
{ AddAdd false } { AddSub AddOpPar true } ifelse }
ifelse 11 1 roll
3 -1 roll StrConcat 10 -1 roll { AddClPar } if
2 copy pop 0 6 2 roll GetIntervalNewStr }
ifelse
mark 11 -5 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll
} def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% (u*v)' or (u/v)'
/EvalMulDiv { 6 index 42 eq {EvalMul} {EvalDiv} ifelse } def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% (u*v)'=u'*v+u*v'
/EvalMul {%
4 -2 roll 7 index dup (0) eq
{ pop false }%%du=0
{ (1) eq%%du=1
{ false }
{ AddOpPar 7 index StrConcat AddClPar AddMul AddOpPar true } ifelse
3 1 roll 6 index StrConcat 3 -1 roll { AddClPar } if
true }%%du!=0
ifelse
5 1 roll 5 index (0) eq
{ 5 -1 roll not { (0) StrConcat } if }%%dv=0
{ 5 -1 roll { AddAdd } if
4 index (1) eq
{ 8 index StrConcat }
{ AddOpPar 8 index StrConcat AddClPar AddMul AddOpPar 4 index StrConcat AddClPar }
ifelse
}%%dv!=0
ifelse
2 copy pop 0 6 2 roll GetIntervalNewStr
mark 11 -5 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll
} def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% (u/v)'=(u'*v-u*v')/v^2
/EvalDiv {%
4 -2 roll
4 index (0) eq%%dv=0 -> u'/v
{ 7 index (0) eq { (0) StrConcat } { AddOpPar 7 index StrConcat AddClPar AddDiv 5 index StrConcat } ifelse }
{ 7 index dup (0) eq
{ pop }%%du=0
{ (1) eq%%du=1
{ false }
{ AddOpPar 7 index StrConcat AddClPar AddMul AddOpPar true } ifelse
3 1 roll 6 index StrConcat 3 -1 roll { AddClPar } if}%%du!=0
ifelse
AddSub
4 index (1) eq
{ 8 index StrConcat }
{ AddOpPar 8 index StrConcat AddClPar AddMul AddOpPar 4 index StrConcat AddClPar }
ifelse
%}%%dv!=0
2 copy GetIntervalNewStr 3 1 roll pop 0 AddOpPar 3 -1 roll StrConcat AddClPar
AddDiv AddOpPar 5 index StrConcat AddClPar 2 copy (^2) putinterval 2 add }
ifelse
2 copy pop 0 6 2 roll GetIntervalNewStr
mark 11 -5 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll
} def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% str1 index str2 -> str1 index
/StrConcat { dup length 4 2 roll 2 copy 6 -1 roll putinterval 3 -1 roll add } bind def
/GetIntervalNewStr { 0 exch getinterval dup length string copy } bind def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% (u^v)'=(u^v)'=u'vu^(v-1)+v'u^(v)ln(u)
/EvalPower {%
4 -2 roll 7 index (0) eq
{%%if du=0 then (u^v)'=v'ln(u)u^v
4 index (0) eq
{ (0) StrConcat }%%if dv=0 then (u^v)'=0
{ 4 index (1) ne { AddOpPar 4 index StrConcat (\)*) StrConcat } if
8 index (e) ne { (ln\() StrConcat 8 index StrConcat (\)*) StrConcat } if
AddOpPar 8 index StrConcat (\)^\() StrConcat 5 index StrConcat AddClPar } ifelse
}
{%%du!=0
4 index (0) eq
{%%if dv=0 then (u^v)'=vu'u^(v-1)
5 index dup IsStrNumber
{ dup (0) eq
{ StrConcat }
{ dup dup (1) eq exch (1.0) eq or
{ StrConcat }
{ StrConcat
7 index dup (1) ne exch (1.0) ne and%%%dr 09102006 insert du if <> 1
{ (*\() StrConcat 7 index StrConcat (\)) StrConcat } if%%%dr 09102006
(*\() StrConcat 8 index StrConcat (\)) StrConcat
5 index dup dup (2) eq exch (2.0) eq or
{ pop } { cvr 1 sub 20 string cvs 3 1 roll (^) StrConcat 3 -1 roll StrConcat } ifelse } ifelse } ifelse }
{ pop AddOpPar 5 index StrConcat (\)*\() StrConcat 8 index StrConcat (\)^\() StrConcat
5 index StrConcat (-1\)) StrConcat } ifelse
}
{%%if dv!=0 and du!=0 then (u^v)'=u'vu^(v-1)+v'u^(v)ln(u)
7 index (1) ne { AddOpPar 7 index StrConcat (\)*) StrConcat } if
AddOpPar 5 index StrConcat (\)*\() StrConcat
8 index StrConcat (\)^\() StrConcat
5 index StrConcat (-1\)+\() StrConcat
4 index (1) ne { 4 index StrConcat (\)*\() StrConcat } if
8 index StrConcat (\)^\() StrConcat
5 index StrConcat (\)*ln\() StrConcat
8 index StrConcat AddClPar
} ifelse
} ifelse
2 copy pop 0 6 2 roll GetIntervalNewStr
mark 11 -5 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll
} def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% str -> true/false
/IsStrNumber {%
true exch
{ dup 48 lt exch dup 57 gt 3 -1 roll or
exch dup 46 ne%%.
exch dup 43 ne%%+
exch 45 ne%%-
and and and { pop false } if } forall
} def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% literal switch -> func call, vector, variables
/EvalLiteral {%
ReadLiteral dup 40 eq%%% there is an open par -> function call
{ pop (EvalFunc_ ) 9 4 index StrConcat 0 exch getinterval cvn cvx exec }
{ dup 91 eq%%% there is an open bracket -> vector element
{ ERROR_vector_not_yet_implemented }
{ pop EvalVariable }
ifelse }
ifelse
} def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% first last parpos Expr[first:parpos-1] ->
/EvalVariable { 2 index Variable eq { (1) } { (0) } ifelse 4 -1 roll exch 6 2 roll } def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% (f(u))'=u'f'(u)
/EvalFunc {
4 2 roll 4 index (1) ne
{ AddOpPar 4 index StrConcat (\)*) StrConcat } if
(Eval ) 4 8 index StrConcat 0 exch getinterval cvn cvx exec
2 copy pop 0 6 2 roll GetIntervalNewStr
mark 9 -3 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll
} def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Func derivative -> Eval<func>
/EvalFunc_sin {%
PreCommonFunc
{ (cos\() StrConcat 5 index StrConcat AddClPar } if
PostCommonFunc } def
/EvalFunc_cos {%
PreCommonFunc
{ (\(-sin\() StrConcat 5 index StrConcat (\)\)) StrConcat } if
PostCommonFunc } def
/EvalFunc_tan {%
PreCommonFunc
{ dup 0 eq { (1) StrConcat } { 1 sub } ifelse (/cos\() StrConcat 5 index StrConcat (\)^2) StrConcat } if
PostCommonFunc } def
/EvalFunc_asin {%
PreCommonFunc
{ (1/sqrt\(1-\() StrConcat 5 index StrConcat (\)^2\)\)) StrConcat } if
PostCommonFunc } def
/EvalFunc_acos {%
PreCommonFunc
{ (-1/sqrt\(1-\() StrConcat 5 index StrConcat (\)^2\)\)) StrConcat } if
PostCommonFunc } def
/EvalFunc_atg {%
PreCommonFunc
{ (1/\(1+\() StrConcat 5 index StrConcat (\)^2\)\)) StrConcat } if
PostCommonFunc } def
/EvalFunc_ln {%
PreCommonFunc
{ dup 0 eq { (1) StrConcat } { 1 sub } ifelse (/\() StrConcat 5 index StrConcat AddClPar } if
PostCommonFunc } def
/EvalFunc_exp {%
PreCommonFunc
{ (exp\() StrConcat 5 index StrConcat AddClPar } if
PostCommonFunc } def
/EvalFunc_sqrt {%
PreCommonFunc
{ dup 0 eq { (1) StrConcat } { 1 sub } ifelse (/\(2*sqrt\() StrConcat 5 index StrConcat (\)\)) StrConcat } if
PostCommonFunc } def
/EvalFunc_Fact {%
PreCommonFunc { ERROR_no_variable_expression_in_Fact } if
PostCommonFunc } def
/EvalFunc_sh {%
PreCommonFunc
{ (ch\() StrConcat 5 index StrConcat AddClPar } if
PostCommonFunc } def
/EvalFunc_ch {%
PreCommonFunc
{ (sh\() StrConcat 5 index StrConcat AddClPar } if
PostCommonFunc } def
/EvalFunc_th {%
PreCommonFunc
{ dup 0 eq { (1) StrConcat } { 1 sub } ifelse (/ch\() StrConcat 5 index StrConcat (\)^2) StrConcat } if
PostCommonFunc } def
/EvalFunc_Argsh {%
PreCommonFunc
{ (1/sqrt\(1+\() StrConcat 5 index StrConcat (\)^2\)\)) StrConcat } if
PostCommonFunc } def
/EvalFunc_Argch {%
PreCommonFunc
{ (1/sqrt\(\() StrConcat 5 index StrConcat (\)^2-1\)\)) StrConcat } if
PostCommonFunc } def
/EvalFunc_Argth {%
PreCommonFunc
{ (1/\(1-\() StrConcat 5 index StrConcat (\)^2\)\)) StrConcat } if
PostCommonFunc } def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
/PreCommonFunc {
1 add NextNonBlankChar pop 3 -1 roll 5 1 roll AnalyzeExpr 1 add NextNonBlankChar pop
4 2 roll 4 index (0) eq
{ (0) StrConcat false }
{ 4 index (1) ne { AddOpPar 4 index StrConcat (\)*) StrConcat } if true } ifelse
} def
/PostCommonFunc {
2 copy pop 0 6 2 roll GetIntervalNewStr
mark 9 -3 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll
} def
/EvalFunc_Derive {%
1 add ReadNumber cvi 1 add dup cvr log 1 add cvi string cvs
4 -1 roll pop 5 1 roll 1 add NextNonBlankChar pop AnalyzeExpr 1 add
4 -2 roll (Derive\() StrConcat 7 -1 roll StrConcat (,) StrConcat 6 -1 roll StrConcat AddClPar
2 copy pop 0 6 2 roll GetIntervalNewStr 6 -1 roll pop 2 index 6 index dup 4 index exch sub getinterval
exch 6 2 roll } def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% literal switch -> func call, vector, variables
/EvalFunc_Sum {%
1 add NextNonBlankChar pop
%% read the variable name
ReadLiteral pop 3 -1 roll pop NextNonBlankChar
44 ne { ANALYZER_ERROR_missing_first_comma_in_Sum } if
%% read the initial value
1 add NextNonBlankChar pop ReadNumber pop
2 copy get 44 ne { ANALYZER_ERROR_missing_second_comma_in_Sum } if
%% read the increment value
1 add NextNonBlankChar pop ReadNumber pop
2 copy get 44 ne { ANALYZER_ERROR_missing_third_comma_in_Sum } if
%% read the limit value
1 add NextNonBlankChar pop ReadNumber pop
2 copy get 44 ne { ANALYZER_ERROR_missing_fourth_comma_in_Sum } if
1 add NextNonBlankChar pop dup 6 1 roll 3 -1 roll pop AnalyzeExpr 1 add NextNonBlankChar pop
4 -2 roll 3 index 8 index dup 9 index exch sub getinterval StrConcat
4 index StrConcat AddClPar
2 copy pop 0 6 2 roll GetIntervalNewStr
mark 9 -3 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll
} def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% literal switch -> func call, vector, variables
/EvalFunc_IfTE {%
3 -1 roll pop 1 add NextNonBlankChar pop SkipCond
NextNonBlankChar
44 ne { ANALYZER_ERROR_missing_first_comma_in_IfTE } if
1 add NextNonBlankChar pop dup 5 1 roll
AnalyzeExpr NextNonBlankChar
44 ne { ANALYZER_ERROR_missing_second_comma_in_IfTE } if
1 add NextNonBlankChar pop
AnalyzeExpr 1 add NextNonBlankChar pop
4 -2 roll 3 index 10 index dup 11 index exch sub getinterval StrConcat
6 index StrConcat (,) StrConcat 4 index StrConcat AddClPar
2 copy pop 0 6 2 roll GetIntervalNewStr
mark 11 -5 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll
} def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% advance in str until a comma is found (no error detection!)
%% str index -> str index'
/SkipCond { { 1 add 2 copy get 44 eq {exit } if } loop } bind def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Convert to radians if trigo function call
%% (name) ->
/TrigoFunc {
dup (cos) eq 1 index (sin) eq or exch (tan) eq or
{ /ExpressionVector ExpressionVector aload length Pi /div cvx 180 /mul cvx 5 -1 roll 4 add
array astore def
} if
} def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% No derivative for condition....
/EvalCondOp { 3 -1 roll pop } bind def
/PutIntervalOneAdd {putinterval 1 add} bind def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Add open parenthesis in string at the given index
%% str index -> str index+1
/AddOpPar {2 copy (\() PutIntervalOneAdd} bind def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Add close parenthesis in string at the given index
%% str index -> str index+1
/AddClPar {2 copy (\)) PutIntervalOneAdd} bind def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Add 0 in string at the given index
%% str index -> str index+1
/AddZero {2 copy (0) PutIntervalOneAdd} bind def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Add open parenthesis in string at the given index
%% str index -> str index+1
/AddMul {2 copy (*) PutIntervalOneAdd} bind def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Add open parenthesis in string at the given index
%% str index -> str index+1
/AddDiv {2 copy (/) PutIntervalOneAdd} bind def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Add a plus sign in string at the given index
%% str index -> str index+1
/AddAdd {2 copy (+) PutIntervalOneAdd} bind def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Add a minus sign in string at the given index
%% str index -> str index+1
/AddSub {2 copy (-) PutIntervalOneAdd} bind def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Add a pipe sign in string at the given index
%% str index -> str index+1
/AddPipe {2 copy (|) PutIntervalOneAdd} bind def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% H O O K S
/AnalyzePreHook { dup 5 1 roll } bind def
/PreEvalHook {} def
/AnalyzePostHook { 7 -1 roll pop } bind def
/AnalyzeListOfEPostHook { 6 -1 roll mark 6 1 roll cleartomark } bind def
/RollOp { 5 1 roll } bind def
end%%%tx@CoreAnalyzerDict
/tx@AddMathFunc 12 dict def tx@AddMathFunc begin
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% NEW FUNC
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% function arcsine in radians asin(x)=atan(x/sqrt(1-x^2))
%% x -> theta
/asin {%
dup abs 1 gt { EQDFasinrangeerror } if
dup dup dup mul 1 exch sub sqrt atan exch 0 lt { 360 sub } if DegtoRad
} def
%% function arccosine in radians acos(x)=atan(sqrt(1-x^2)/x)
%% x -> theta
/acos {%
dup abs 1 gt { EQDFacosrangeerror } if
dup dup mul 1 exch sub sqrt exch atan DegtoRad
} def
%% function arctangent in radians
%% x -> theta
/atg { 1 atan dup 90 gt { 360 sub } if DegtoRad } bind def
%% HYPERBOLIC FUNCTIONS
/sh { dup Ex exch neg Ex sub 2 div } def
/ch { dup Ex exch neg Ex add 2 div } def
/th { dup sh exch ch div } def
/Argsh { dup dup mul 1 add sqrt add ln } def
/Argch { dup dup mul 1 sub sqrt add ln } def
/Argth { dup 1 add exch 1 exch sub div ln 2 div } def
%% modified exponential funtion for 0
%% x n -> x^n
/Exp { dup 0 eq { pop pop 1 } { exp } ifelse } bind def
%% modified exponential funtion for 0
%% x -> e^x
/Ex { Euler exch exp } bind def
%%
%% factorial function
%% n -> n!
/Fact { 1 exch 2 exch 1 exch { mul } for } bind def
/fact { Fact } bind def
end
%
% END pstricks.pro
%%EndProcSet
%%BeginProcSet: pst-dots.pro 0 0
% $Id: pst-dots.pro 11 2008-01-24 13:37:27Z herbert $
%
%% PostScript prologue for pstricks.tex.
%% Version 2.01, 2008/04/18
%%
%% For distribution, see pstricks.tex.
%%
%% Timothy Van Zandt <tvz@Princeton.EDU>
%%
%% This program can be redistributed and/or modified under the terms
%% of the LaTeX Project Public License Distributed from CTAN archives
%% in directory macros/latex/base/lppl.txt.
%%
%% Modified by Etienne Riga - Dec. 16, 1999
%% Modified by Etienne Riga - 2005/01/01 (er)
%% to add /Diamond, /SolidDiamond and /BoldDiamond
%% Modified by Herbert Voss (hv) - 2008/04/17
%
10 dict dup begin % hold local
/FontType 3 def
/FontMatrix [.001 0 0 .001 0 0] def
/FontBBox [-571.5 -742.5 571.5 742.5] def
% /FontBBox [-1000 -1000 1000 1000] def % See end of file in /BuildGlyph
/Encoding 256 array def
0 1 255 {Encoding exch /.notdef put} for % fill the array with /.notdef
Encoding % replace with given dot names
dup (b) 0 get /Bullet put % get the numerical position of b in ASCII
% % and save /Bullet at this place in Encoding
dup (c) 0 get /Circle put
dup (C) 0 get /BoldCircle put % 67
dup (u) 0 get /SolidTriangle put
dup (t) 0 get /Triangle put
dup (T) 0 get /BoldTriangle put
dup (r) 0 get /SolidSquare put
dup (s) 0 get /Square put
dup (S) 0 get /BoldSquare put
dup (q) 0 get /SolidPentagon put
dup (p) 0 get /Pentagon put
dup (P) 0 get /BoldPentagon put
%%%
dup (k) 0 get /Asterisk put
dup (K) 0 get /BoldAsterisk put
dup (J) 0 get /SolidAsterisk put
dup (h) 0 get /Hexagon put
dup (H) 0 get /BoldHexagon put
dup (G) 0 get /SolidHexagon put
dup (f) 0 get /Octogon put % 2008-04-18 hv
dup (F) 0 get /BoldOctogon put % 2008-04-18 hv
dup (g) 0 get /SolidOctogon put % 2008-04-18 hv
dup (a) 0 get /Add put
dup (A) 0 get /BoldAdd put % 65
dup (x) 0 get /Mul put
dup (X) 0 get /BoldMul put
dup (m) 0 get /Oplus put
dup (M) 0 get /BOplus put
dup (e) 0 get /SolidOplus put
dup (n) 0 get /Otimes put
dup (N) 0 get /BOtimes put
dup (E) 0 get /SolidOtimes put
dup (i) 0 get /Bar put
dup (I) 0 get /BoldBar put
dup (l) 0 get /SolidDiamond put
dup (d) 0 get /Diamond put
(D) 0 get /BoldDiamond put
%%%
/CharProcs 47 dict def
CharProcs begin
/CirclePath {0 0 500 0 360 arc closepath} def
/Bullet {CirclePath fill} def
/Circle {CirclePath .9 .9 scale CirclePath eofill} def
/BoldCircle {CirclePath .8 .8 scale CirclePath eofill} def
/TrianglePath {0 660 moveto -571.5 -330 lineto 571.5 -330 lineto closepath} def
/SolidTriangle {TrianglePath fill} def
/Triangle {TrianglePath .85 .85 scale TrianglePath eofill} def
/BoldTriangle {TrianglePath .7 .7 scale TrianglePath eofill} def
/SquarePath {-450 450 moveto 450 450 lineto 450 -450 lineto -450 -450 lineto closepath} def
/SolidSquare {SquarePath fill} def
/Square {SquarePath .89 .89 scale SquarePath eofill} def
/BoldSquare {SquarePath .78 .78 scale SquarePath eofill} def
/PentagonPath {
-337.8 -465 moveto 337.8 -465 lineto 546.6 177.6 lineto
0 574.7 lineto -546.6 177.6 lineto closepath
} def
/SolidPentagon {PentagonPath fill} def
/Pentagon {PentagonPath .89 .89 scale PentagonPath eofill} def
/BoldPentagon {PentagonPath .78 .78 scale PentagonPath eofill} def
%-------------- hv begin 2004/07/25 from: er 2003/03/24
/HexagonPath {
0 550 moveto -476 275 lineto -476 -275 lineto
0 -550 lineto 476 -275 lineto 476 275 lineto closepath
} def
/SolidHexagon {HexagonPath fill} def
/Hexagon {HexagonPath .89 .89 scale HexagonPath eofill} def
/BoldHexagon {HexagonPath .79 .79 scale HexagonPath eofill} def
% 2008-04-18 hv
/OctogonPath {
228 550 moveto 7 { -456 0 rlineto 45 rotate } repeat
closepath
} def
/SolidOctogon { OctogonPath fill } def
/Octogon { OctogonPath .89 .89 scale OctogonPath eofill } def
/BoldOctogon { OctogonPath .79 .79 scale OctogonPath eofill } def
%
/AsteriskPath {
20 0 moveto 10 250 180 500 0 500 curveto
-180 500 -10 250 -20 0 curveto closepath
} def
/Asterisk {
AsteriskPath 60 rotate AsteriskPath 60 rotate AsteriskPath
60 rotate AsteriskPath 60 rotate AsteriskPath 60 rotate AsteriskPath fill
} def
%
/Basterp {50 250 220 500 0 500 curveto -220 500 -50 250 -50 30 cos 100 mul curveto} def
/BoldAsteriskPath {
50 30 cos 100 mul moveto Basterp
60 rotate Basterp 60 rotate Basterp
60 rotate Basterp 60 rotate Basterp
60 rotate Basterp closepath
} def
/BoldAsterisk {BoldAsteriskPath fill} def
/SolidAsterisk {CirclePath .9 .9 scale BoldAsteriskPath eofill} def
/CrossPath {
40 550 moveto -40 550 lineto -40 40 lineto -550 40 lineto
-550 -40 lineto -40 -40 lineto -40 -550 lineto 40 -550 lineto
40 -40 lineto 550 -40 lineto 550 40 lineto 40 40 lineto closepath
} def
/BoldCrossPath {80 550 moveto -80 550 lineto -80 80 lineto -550 80 lineto
-550 -80 lineto -80 -80 lineto -80 -550 lineto 80 -550 lineto
80 -80 lineto 550 -80 lineto 550 80 lineto 80 80 lineto closepath
} def
/Add {CrossPath fill} def
/Mul {45 rotate CrossPath fill} def
/BoldAdd {BoldCrossPath fill} def
/BoldMul {45 rotate BoldCrossPath fill} def
/Oplus {CirclePath .9 .9 scale CirclePath eofill .775 .775 scale CrossPath fill } def
/SolidOplus {CirclePath .775 .775 scale BoldCrossPath eofill} def
/BOplus {CirclePath .8 .8 scale CirclePath eofill .775 .775 scale BoldCrossPath fill} def
/Otimes {CirclePath .9 .9 scale CirclePath eofill 45 rotate .775 .775 scale CrossPath fill} def
/BOtimes {CirclePath .8 .8 scale CirclePath eofill 45 rotate .775 .775 scale BoldCrossPath fill } def
/SolidOtimes {CirclePath 45 rotate .775 .775 scale BoldCrossPath eofill} def
/BarPath {40 660 moveto -40 660 lineto -40 -660 lineto 40 -660 lineto closepath} def
/Bar {BarPath fill} def
/BoldBarPath {80 660 moveto -80 660 lineto -80 -660 lineto 80 -660 lineto closepath} def
/BoldBar {BoldBarPath fill} def
/DiamondPath {0 742.5 moveto -428.5 0 lineto 0 -742.5 lineto 428.5 0 lineto closepath} def
/SolidDiamond {DiamondPath fill} def
/Diamond {DiamondPath .865 .865 scale DiamondPath eofill} def
/BoldDiamond {DiamondPath .73 .73 scale DiamondPath eofill} def
%%%
/.notdef { } def
end
%
/BuildGlyph {
exch
begin
% Metrics 1 index get exec 0
0 0
% BBoxes 3 index get exec
-1000 -1000 1000 1000
% -571.5 -742.5 571.5 742.5
setcachedevice
CharProcs begin load exec end
end
} def
%
/BuildChar {
1 index /Encoding get exch get
1 index /BuildGlyph get exec
} bind def
end
/PSTricksDotFont exch definefont pop
%% end
%%EndProcSet
%%BeginProcSet: xcolor.pro 0 0
%!
%%
%% This is file `xcolor.pro',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% xcolor.dtx (with options: `dvips')
%%
%% IMPORTANT NOTICE:
%%
%% For the copyright see the source file.
%%
%% Any modified versions of this file must be renamed
%% with new filenames distinct from xcolor.pro.
%%
%% For distribution of the original source see the terms
%% for copying and modification in the file xcolor.dtx.
%%
%% This generated file may be distributed as long as the
%% original source files, as listed above, are part of the
%% same distribution. (The sources need not necessarily be
%% in the same archive or directory.)
%%
%% xcolor.pro (PostScript/dvips header file)
%% [2007/01/21 v2.11 LaTeX color extensions (UK)]
%%
%% ----------------------------------------------------------------
%% Copyright (C) 2003-2007 by Dr. Uwe Kern <xcolor at ukern dot de>
%% ----------------------------------------------------------------
%%
userdict begin
/setcmycolor{0 setcmykcolor}def
/XCbd{bind def}bind def
/XCed{exch def}XCbd
/XCdef{exch dup TeXDict exch known{pop pop}{XCed}ifelse}XCbd
/XCsetcolor{cvx counttomark array astore cvx exch pop XCdef}XCbd
/XCcmy{mark exch exec/setcmycolor XCsetcolor}XCbd
/XCcmyk{mark exch exec/setcmykcolor XCsetcolor}XCbd
/XCgray{mark exch exec/setgray XCsetcolor}XCbd
/XChsb{mark exch exec/sethsbcolor XCsetcolor}XCbd
/XCrgb{mark exch exec/setrgbcolor XCsetcolor}XCbd
/XCfixnormalscale{/normalscale{Resolution 72 div VResolution 72 div neg
scale magscale{DVImag dup scale}if}def}def
/XC!b{save XCfixnormalscale}XCbd
/XC!e{restore}XCbd
/XCsp2bp{1 65781.76 div dup scale}XCbd
/XCsetline
{setlinewidth [] 0 setdash 2 setlinecap 0 setlinejoin 4 setmiterlimit}XCbd
/XCboxframe{/d XCed/h XCed/w XCed/l XCed w 0 gt{h d neg gt{l 0 gt
{XCsp2bp l XCsetline
l 2 div dup translate
0 d neg w l sub h l sub d add rectstroke}if}if}if}XCbd
/XCcolorblock{/d XCed/h XCed/w XCed w 0 gt{h d neg gt
{XCsp2bp 0 XCsetline
0 d neg w h d add rectfill}if}if}XCbd
end
%% End of file `xcolor.pro'.
%%EndProcSet
%%BeginProcSet: wieesgeht.xcp 0 0
%!
TeXDict begin
/XC@red{0 1 1 0}XCcmyk
/XC@green{1 0 1 0}XCcmyk
/XC@blue{1 1 0 0}XCcmyk
/XC@brown{0 0.25 0.5 0.25}XCcmyk
/XC@lime{0.25 0 1 0}XCcmyk
/XC@orange{0 0.5 1 0}XCcmyk
/XC@pink{0 0.25 0.25 0}XCcmyk
/XC@purple{0 0.75 0.5 0.25}XCcmyk
/XC@teal{0.5 0 0 0.5}XCcmyk
/XC@violet{0 0.5 0 0.5}XCcmyk
/XC@cyan{1 0 0 0}XCcmyk
/XC@magenta{0 1 0 0}XCcmyk
/XC@yellow{0 0 1 0}XCcmyk
/XC@olive{0 0 1 0.5}XCcmyk
/XC@black{0 0 0 1}XCcmyk
/XC@darkgray{0 0 0 0.75}XCcmyk
/XC@gray{0 0 0 0.5}XCcmyk
/XC@lightgray{0 0 0 0.25}XCcmyk
/XC@white{0 0 0 0}XCcmyk
/GreenYellow{0.15 0 0.69 0}XCcmyk
/Yellow{0 0 1 0}XCcmyk
/Goldenrod{0 0.1 0.84 0}XCcmyk
/Dandelion{0 0.29 0.84 0}XCcmyk
/Apricot{0 0.32 0.52 0}XCcmyk
/Peach{0 0.5 0.7 0}XCcmyk
/Melon{0 0.46 0.5 0}XCcmyk
/YellowOrange{0 0.42 1 0}XCcmyk
/Orange{0 0.61 0.87 0}XCcmyk
/BurntOrange{0 0.51 1 0}XCcmyk
/Bittersweet{0 0.75 1 0.24}XCcmyk
/RedOrange{0 0.77 0.87 0}XCcmyk
/Mahogany{0 0.85 0.87 0.35}XCcmyk
/Maroon{0 0.87 0.68 0.32}XCcmyk
/BrickRed{0 0.89 0.94 0.28}XCcmyk
/Red{0 1 1 0}XCcmyk
/OrangeRed{0 1 0.5 0}XCcmyk
/RubineRed{0 1 0.13 0}XCcmyk
/WildStrawberry{0 0.96 0.39 0}XCcmyk
/Salmon{0 0.53 0.38 0}XCcmyk
/CarnationPink{0 0.63 0 0}XCcmyk
/Magenta{0 1 0 0}XCcmyk
/VioletRed{0 0.81 0 0}XCcmyk
/Rhodamine{0 0.82 0 0}XCcmyk
/Mulberry{0.34 0.9 0 0.02}XCcmyk
/RedViolet{0.07 0.9 0 0.34}XCcmyk
/Fuchsia{0.47 0.91 0 0.08}XCcmyk
/Lavender{0 0.48 0 0}XCcmyk
/Thistle{0.12 0.59 0 0}XCcmyk
/Orchid{0.32 0.64 0 0}XCcmyk
/DarkOrchid{0.4 0.8 0.2 0}XCcmyk
/Purple{0.45 0.86 0 0}XCcmyk
/Plum{0.5 1 0 0}XCcmyk
/Violet{0.79 0.88 0 0}XCcmyk
/RoyalPurple{0.75 0.9 0 0}XCcmyk
/BlueViolet{0.86 0.91 0 0.04}XCcmyk
/Periwinkle{0.57 0.55 0 0}XCcmyk
/CadetBlue{0.62 0.57 0.23 0}XCcmyk
/CornflowerBlue{0.65 0.13 0 0}XCcmyk
/MidnightBlue{0.98 0.13 0 0.43}XCcmyk
/NavyBlue{0.94 0.54 0 0}XCcmyk
/RoyalBlue{1 0.5 0 0}XCcmyk
/Blue{1 1 0 0}XCcmyk
/Cerulean{0.94 0.11 0 0}XCcmyk
/Cyan{1 0 0 0}XCcmyk
/ProcessBlue{0.96 0 0 0}XCcmyk
/SkyBlue{0.62 0 0.12 0}XCcmyk
/Turquoise{0.85 0 0.2 0}XCcmyk
/TealBlue{0.86 0 0.34 0.02}XCcmyk
/Aquamarine{0.82 0 0.3 0}XCcmyk
/BlueGreen{0.85 0 0.33 0}XCcmyk
/Emerald{1 0 0.5 0}XCcmyk
/JungleGreen{0.99 0 0.52 0}XCcmyk
/SeaGreen{0.69 0 0.5 0}XCcmyk
/Green{1 0 1 0}XCcmyk
/ForestGreen{0.91 0 0.88 0.12}XCcmyk
/PineGreen{0.92 0 0.59 0.25}XCcmyk
/LimeGreen{0.5 0 1 0}XCcmyk
/YellowGreen{0.44 0 0.74 0}XCcmyk
/SpringGreen{0.26 0 0.76 0}XCcmyk
/OliveGreen{0.64 0 0.95 0.4}XCcmyk
/RawSienna{0 0.72 1 0.45}XCcmyk
/Sepia{0 0.83 1 0.7}XCcmyk
/Brown{0 0.81 1 0.6}XCcmyk
/Tan{0.14 0.42 0.56 0}XCcmyk
/Gray{0 0 0 0.5}XCcmyk
/Black{0 0 0 1}XCcmyk
/White{0 0 0 0}XCcmyk
/XC@AliceBlue{0.06 0.028 0 0}XCcmyk
/XC@AntiqueWhite{0 0.06 0.136 0.02}XCcmyk
/XC@Aqua{1 0 0 0}XCcmyk
/XC@Aquamarine{0.502 0 0.17 0}XCcmyk
/XC@Azure{0.06 0 0 0}XCcmyk
/XC@Beige{0 0 0.096 0.04}XCcmyk
/XC@Bisque{0 0.106 0.23 0}XCcmyk
/XC@Black{0 0 0 1}XCcmyk
/XC@BlanchedAlmond{0 0.08 0.196 0}XCcmyk
/XC@Blue{1 1 0 0}XCcmyk
/XC@BlueViolet{0.348 0.718 0 0.112}XCcmyk
/XC@Brown{0 0.483 0.483 0.352}XCcmyk
/XC@BurlyWood{0 0.15 0.34 0.13}XCcmyk
/XC@CadetBlue{0.256 0.008 0 0.372}XCcmyk
/XC@Chartreuse{0.502 0 1 0}XCcmyk
/XC@Chocolate{0 0.414 0.708 0.176}XCcmyk
/XC@Coral{0 0.502 0.688 0}XCcmyk
/XC@CornflowerBlue{0.538 0.345 0 0.07}XCcmyk
/XC@Cornsilk{0 0.028 0.136 0}XCcmyk
/XC@Crimson{0 0.784 0.629 0.136}XCcmyk
/XC@Cyan{1 0 0 0}XCcmyk
/XC@DarkBlue{0.545 0.545 0 0.455}XCcmyk
/XC@DarkCyan{0.545 0 0 0.455}XCcmyk
/XC@DarkGoldenrod{0 0.195 0.676 0.28}XCcmyk
/XC@DarkGray{0 0 0 0.336}XCcmyk
/XC@DarkGreen{0.392 0 0.392 0.608}XCcmyk
/XC@DarkGrey{0 0 0 0.336}XCcmyk
/XC@DarkKhaki{0 0.024 0.32 0.26}XCcmyk
/XC@DarkMagenta{0 0.545 0 0.455}XCcmyk
/XC@DarkOliveGreen{0.088 0 0.235 0.58}XCcmyk
/XC@DarkOrange{0 0.45 1 0}XCcmyk
/XC@DarkOrchid{0.2 0.604 0 0.2}XCcmyk
/XC@DarkRed{0 0.545 0.545 0.455}XCcmyk
/XC@DarkSalmon{0 0.322 0.432 0.088}XCcmyk
/XC@DarkSeaGreen{0.176 0 0.176 0.264}XCcmyk
/XC@DarkSlateBlue{0.261 0.305 0 0.455}XCcmyk
/XC@DarkSlateGray{0.125 0 0 0.69}XCcmyk
/XC@DarkSlateGrey{0.125 0 0 0.69}XCcmyk
/XC@DarkTurquoise{0.82 0.012 0 0.18}XCcmyk
/XC@DarkViolet{0.248 0.828 0 0.172}XCcmyk
/XC@DeepPink{0 0.92 0.424 0}XCcmyk
/XC@DeepSkyBlue{1 0.25 0 0}XCcmyk
/XC@DimGray{0 0 0 0.59}XCcmyk
/XC@DimGrey{0 0 0 0.59}XCcmyk
/XC@DodgerBlue{0.884 0.435 0 0}XCcmyk
/XC@FireBrick{0 0.566 0.566 0.302}XCcmyk
/XC@FloralWhite{0 0.02 0.06 0}XCcmyk
/XC@ForestGreen{0.413 0 0.413 0.455}XCcmyk
/XC@Fuchsia{0 1 0 0}XCcmyk
/XC@Gainsboro{0 0 0 0.136}XCcmyk
/XC@GhostWhite{0.028 0.028 0 0}XCcmyk
/XC@Gold{0 0.156 1 0}XCcmyk
/XC@Goldenrod{0 0.207 0.73 0.145}XCcmyk
/XC@Gray{0 0 0 0.5}XCcmyk
/XC@Green{0.5 0 0.5 0.5}XCcmyk
/XC@GreenYellow{0.32 0 0.815 0}XCcmyk
/XC@Grey{0 0 0 0.5}XCcmyk
/XC@Honeydew{0.06 0 0.06 0}XCcmyk
/XC@HotPink{0 0.59 0.295 0}XCcmyk
/XC@IndianRed{0 0.444 0.444 0.196}XCcmyk
/XC@Indigo{0.216 0.51 0 0.49}XCcmyk
/XC@Ivory{0 0 0.06 0}XCcmyk
/XC@Khaki{0 0.04 0.39 0.06}XCcmyk
/XC@Lavender{0.08 0.08 0 0.02}XCcmyk
/XC@LavenderBlush{0 0.06 0.04 0}XCcmyk
/XC@LawnGreen{0.502 0 0.99 0.01}XCcmyk
/XC@LemonChiffon{0 0.02 0.196 0}XCcmyk
/XC@LightBlue{0.22 0.052 0 0.1}XCcmyk
/XC@LightCoral{0 0.44 0.44 0.06}XCcmyk
/XC@LightCyan{0.12 0 0 0}XCcmyk
/XC@LightGoldenrod{0 0.066 0.423 0.067}XCcmyk
/XC@LightGoldenrodYellow{0 0 0.156 0.02}XCcmyk
/XC@LightGray{0 0 0 0.172}XCcmyk
/XC@LightGreen{0.367 0 0.367 0.068}XCcmyk
/XC@LightGrey{0 0 0 0.172}XCcmyk
/XC@LightPink{0 0.288 0.244 0}XCcmyk
/XC@LightSalmon{0 0.372 0.52 0}XCcmyk
/XC@LightSeaGreen{0.573 0 0.03 0.302}XCcmyk
/XC@LightSkyBlue{0.45 0.172 0 0.02}XCcmyk
/XC@LightSlateBlue{0.482 0.56 0 0}XCcmyk
/XC@LightSlateGray{0.132 0.068 0 0.4}XCcmyk
/XC@LightSlateGrey{0.132 0.068 0 0.4}XCcmyk
/XC@LightSteelBlue{0.18 0.1 0 0.13}XCcmyk
/XC@LightYellow{0 0 0.12 0}XCcmyk
/XC@Lime{1 0 1 0}XCcmyk
/XC@LimeGreen{0.608 0 0.608 0.196}XCcmyk
/XC@Linen{0 0.04 0.08 0.02}XCcmyk
/XC@Magenta{0 1 0 0}XCcmyk
/XC@Maroon{0 0.5 0.5 0.5}XCcmyk
/XC@MediumAquamarine{0.404 0 0.136 0.196}XCcmyk
/XC@MediumBlue{0.804 0.804 0 0.196}XCcmyk
/XC@MediumOrchid{0.098 0.496 0 0.172}XCcmyk
/XC@MediumPurple{0.284 0.42 0 0.14}XCcmyk
/XC@MediumSeaGreen{0.465 0 0.256 0.3}XCcmyk
/XC@MediumSlateBlue{0.448 0.524 0 0.068}XCcmyk
/XC@MediumSpringGreen{0.98 0 0.376 0.02}XCcmyk
/XC@MediumTurquoise{0.536 0 0.02 0.18}XCcmyk
/XC@MediumVioletRed{0 0.696 0.26 0.22}XCcmyk
/XC@MidnightBlue{0.342 0.342 0 0.56}XCcmyk
/XC@MintCream{0.04 0 0.02 0}XCcmyk
/XC@MistyRose{0 0.106 0.116 0}XCcmyk
/XC@Moccasin{0 0.106 0.29 0}XCcmyk
/XC@NavajoWhite{0 0.13 0.32 0}XCcmyk
/XC@Navy{0.5 0.5 0 0.5}XCcmyk
/XC@NavyBlue{0.5 0.5 0 0.5}XCcmyk
/XC@OldLace{0 0.032 0.092 0.008}XCcmyk
/XC@Olive{0 0 0.5 0.5}XCcmyk
/XC@OliveDrab{0.136 0 0.42 0.444}XCcmyk
/XC@Orange{0 0.352 1 0}XCcmyk
/XC@OrangeRed{0 0.73 1 0}XCcmyk
/XC@Orchid{0 0.415 0.015 0.145}XCcmyk
/XC@PaleGoldenrod{0 0.022 0.264 0.068}XCcmyk
/XC@PaleGreen{0.389 0 0.389 0.015}XCcmyk
/XC@PaleTurquoise{0.244 0 0 0.068}XCcmyk
/XC@PaleVioletRed{0 0.42 0.284 0.14}XCcmyk
/XC@PapayaWhip{0 0.064 0.165 0}XCcmyk
/XC@PeachPuff{0 0.145 0.275 0}XCcmyk
/XC@Peru{0 0.284 0.556 0.196}XCcmyk
/XC@Pink{0 0.248 0.204 0}XCcmyk
/XC@Plum{0 0.24 0 0.132}XCcmyk
/XC@PowderBlue{0.21 0.02 0 0.1}XCcmyk
/XC@Purple{0 0.5 0 0.5}XCcmyk
/XC@Red{0 1 1 0}XCcmyk
/XC@RosyBrown{0 0.176 0.176 0.264}XCcmyk
/XC@RoyalBlue{0.629 0.474 0 0.116}XCcmyk
/XC@SaddleBrown{0 0.275 0.47 0.455}XCcmyk
/XC@Salmon{0 0.48 0.532 0.02}XCcmyk
/XC@SandyBrown{0 0.312 0.58 0.044}XCcmyk
/XC@SeaGreen{0.365 0 0.205 0.455}XCcmyk
/XC@Seashell{0 0.04 0.068 0}XCcmyk
/XC@Sienna{0 0.308 0.452 0.372}XCcmyk
/XC@Silver{0 0 0 0.248}XCcmyk
/XC@SkyBlue{0.39 0.112 0 0.08}XCcmyk
/XC@SlateBlue{0.389 0.452 0 0.196}XCcmyk
/XC@SlateGray{0.125 0.065 0 0.435}XCcmyk
/XC@SlateGrey{0.125 0.065 0 0.435}XCcmyk
/XC@Snow{0 0.02 0.02 0}XCcmyk
/XC@SpringGreen{1 0 0.502 0}XCcmyk
/XC@SteelBlue{0.43 0.195 0 0.295}XCcmyk
/XC@Tan{0 0.119 0.274 0.176}XCcmyk
/XC@Teal{0.5 0 0 0.5}XCcmyk
/XC@Thistle{0 0.098 0 0.152}XCcmyk
/XC@Tomato{0 0.61 0.72 0}XCcmyk
/XC@Turquoise{0.63 0 0.065 0.12}XCcmyk
/XC@Violet{0 0.422 0 0.068}XCcmyk
/XC@VioletRed{0 0.691 0.251 0.184}XCcmyk
/XC@Wheat{0 0.09 0.26 0.04}XCcmyk
/XC@White{0 0 0 0}XCcmyk
/XC@WhiteSmoke{0 0 0 0.04}XCcmyk
/XC@Yellow{0 0 1 0}XCcmyk
/XC@YellowGreen{0.2 0 0.608 0.196}XCcmyk
/XC@gradbegin{1 0 0 0}XCcmyk
/XC@gradend{0.95 0.85 0 0.05}XCcmyk
/XC@black{0 0 0 1}XCcmyk
/XC@darkgray{0 0 0 0.75}XCcmyk
/XC@gray{0 0 0 0.5}XCcmyk
/XC@lightgray{0 0 0 0.25}XCcmyk
/XC@white{0 0 0 0}XCcmyk
/XC@red{0 1 1 0}XCcmyk
/XC@green{1 0 1 0}XCcmyk
/XC@blue{1 1 0 0}XCcmyk
/XC@yellow{0 0 1 0}XCcmyk
/XC@cyan{1 0 0 0}XCcmyk
/XC@magenta{0 1 0 0}XCcmyk
end
%%EndProcSet
%%BeginProcSet: pst-node.pro 0 0
% $Id: pst-node.pro 40 2008-09-04 17:56:41Z herbert $
%%
%% PostScript prologue for pst-node.tex.
%% Version 1.02, 2009/01/30.
%%
%% This program can be redistributed and/or modified under the terms
%% of the LaTeX Project Public License Distributed from CTAN archives
%% in directory macros/latex/base/lppl.txt.
%
/tx@NodeDict 400 dict def tx@NodeDict begin
tx@Dict begin % from main pstricks dict
/T /translate load def
end
/NewNode { % on stack: { x y } boolean N@name type InitXnode
gsave
/next ED % { x y } boolean N@name type
dict dup % { x y } boolean N@name dict dict
3 1 roll def % { x y } boolean dict N@name dict def
exch { dup 3 1 roll def } if % { x y } dict boolean
begin % { x y } dict begin
tx@Dict begin
STV CP T exec % set scaling
end
/NodeMtrx CM def % save CM
next % InitXNode
end
grestore
} def
%
/InitPnode {
/Y ED /X ED
/NodePos { NodeSep Cos mul NodeSep Sin mul } def
} def
%
/InitCnode {
/r ED /Y ED /X ED
/NodePos { NodeSep r add dup Cos mul exch Sin mul } def
} def
%
/GetRnodePos {
Cos 0 gt { /dx r NodeSep add def } { /dx l NodeSep sub def } ifelse
Sin 0 gt { /dy u NodeSep add def } { /dy d NodeSep sub def } ifelse
dx Sin mul abs dy
Cos mul abs gt { dy Cos mul Sin div dy } { dx dup Sin mul Cos Div } ifelse
} def
%
/InitRnode {
/Y ED /X ED X sub /r ED /l X neg def Y add neg /d ED Y sub /u ED
/NodePos { GetRnodePos } def
} def
%
/DiaNodePos {
w h mul w Sin mul abs h Cos mul abs add Div NodeSep add dup
Cos mul exch Sin mul
} def
%
/TriNodePos {
Sin s lt
{ d NodeSep sub dup Cos mul Sin Div exch }
{ w h mul w Sin mul h Cos abs mul add Div
NodeSep add dup Cos mul exch Sin mul
} ifelse
} def
%
/InitTriNode {
sub 2 div exch
2 div exch
2 copy T
2 copy 4 index index /d ED
pop pop pop pop
-90 mul rotate
/NodeMtrx CM def
/X 0 def /Y 0 def
d sub abs neg /d ED
d add /h ED
2 div h mul h d sub Div /w ED
/s d w Atan sin def
/NodePos { TriNodePos } def
} def
%
/OvalNodePos {
/ww w NodeSep add def
/hh h NodeSep add def
Sin ww mul Cos hh mul Atan dup cos ww mul exch sin hh mul
} def
%
/GetCenter { begin X Y NodeMtrx transform CM itransform end } def
%
/XYPos {
dup sin exch cos Do
/Cos ED /Sin ED /Dist ED
Cos 0 gt
{ Dist Dist Sin mul Cos div }
{ Cos 0 lt
{ Dist neg Dist Sin mul Cos div neg }
{ 0 Dist Sin mul } ifelse
} ifelse
Do
} def
%
/GetEdge {
dup 0 eq
{ pop begin 1 0 NodeMtrx dtransform
CM idtransform
exch atan sub
dup
sin /Sin ED
cos /Cos ED
/NodeSep ED
NodePos NodeMtrx dtransform CM idtransform end }
{ 1 eq {{exch}} {{}} ifelse /Do ED pop XYPos } ifelse
} def
%
/AddOffset {
1 index 0 eq
{ pop pop }
{ 2 copy 5 2 roll cos mul add 4 1 roll sin mul sub exch } ifelse
} def
%
/GetEdgeA {
NodeSepA AngleA NodeA NodeSepTypeA GetEdge
OffsetA AngleA AddOffset
yA add /yA1 ED
xA add /xA1 ED
} def
%
/GetEdgeB {
NodeSepB AngleB NodeB NodeSepTypeB GetEdge
OffsetB AngleB AddOffset
yB add /yB1 ED
xB add /xB1 ED
} def
%
/GetArmA {
ArmTypeA 0 eq
{ /xA2 ArmA AngleA cos mul xA1 add def
/yA2 ArmA AngleA sin mul yA1 add def }
{ ArmTypeA 1 eq {{exch}} {{}} ifelse
/Do ED
ArmA AngleA XYPos OffsetA AngleA AddOffset
yA add /yA2 ED
xA add /xA2 ED } ifelse
} def
%
/GetArmB {
ArmTypeB 0 eq
{ /xB2 ArmB AngleB cos mul xB1 add def
/yB2 ArmB AngleB sin mul yB1 add def }
{ ArmTypeB 1 eq {{exch}} {{}} ifelse
/Do ED
ArmB AngleB XYPos OffsetB AngleB AddOffset
yB add /yB2 ED
xB add /xB2 ED } ifelse
} def
%
/InitNC {
/b ED /a ED % second and first node
/NodeSepTypeB ED /NodeSepTypeA ED
/NodeSepB ED /NodeSepA ED
/OffsetB ED /OffsetA ED
tx@NodeDict a known tx@NodeDict b known and dup {
/NodeA a load def
/NodeB b load def
NodeA GetCenter /yA ED /xA ED
NodeB GetCenter /yB ED /xB ED } if
} def
%
/LPutLine {
4 copy
3 -1 roll sub neg 3 1 roll sub Atan /NAngle ED
1 t sub mul
3 1 roll 1 t sub mul
4 1 roll t mul add /Y ED
t mul add /X ED
} def
%
/LPutLines {
mark LPutVar counttomark 2 div 1 sub /n ED
% t floor dup n gt
t floor dup n ge % to allow npos<= hv 2008-08-14
{ pop n 1 sub /t 1 def } { dup t sub neg /t ED } ifelse
cvi 2 mul { pop } repeat
LPutLine
cleartomark
} def
%
/BezierMidpoint { /y3 ED /x3 ED /y2 ED /x2 ED /y1 ED /x1 ED /y0 ED /x0 ED
/t ED /cx x1 x0 sub 3 mul def /cy y1 y0 sub 3 mul def /bx x2 x1 sub 3
mul cx sub def /by y2 y1 sub 3 mul cy sub def /ax x3 x0 sub cx sub bx
sub def /ay y3 y0 sub cy sub by sub def ax t 3 exp mul bx t t mul mul
add cx t mul add x0 add ay t 3 exp mul by t t mul mul add cy t mul add
y0 add 3 ay t t mul mul mul 2 by t mul mul add cy add 3 ax t t mul mul
mul 2 bx t mul mul add cx add atan /NAngle ED /Y ED /X ED } def
/HPosBegin { yB yA ge { /t 1 t sub def } if /Y yB yA sub t mul yA add def
} def
/HPosEnd { /X Y yyA sub yyB yyA sub Div xxB xxA sub mul xxA add def
/NAngle yyB yyA sub xxB xxA sub Atan def } def
/HPutLine { HPosBegin /yyA ED /xxA ED /yyB ED /xxB ED HPosEnd } def
/HPutLines { HPosBegin yB yA ge { /check { le } def } { /check { ge } def
} ifelse /xxA xA def /yyA yA def mark xB yB LPutVar { dup Y check { exit
} { /yyA ED /xxA ED } ifelse } loop /yyB ED /xxB ED cleartomark HPosEnd
} def
/VPosBegin { xB xA lt { /t 1 t sub def } if /X xB xA sub t mul xA add def
} def
/VPosEnd { /Y X xxA sub xxB xxA sub Div yyB yyA sub mul yyA add def
/NAngle yyB yyA sub xxB xxA sub Atan def } def
/VPutLine { VPosBegin /yyA ED /xxA ED /yyB ED /xxB ED VPosEnd } def
/VPutLines { VPosBegin xB xA ge { /check { le } def } { /check { ge } def
} ifelse /xxA xA def /yyA yA def mark xB yB LPutVar { 1 index X check {
exit } { /yyA ED /xxA ED } ifelse } loop /yyB ED /xxB ED cleartomark
VPosEnd } def
/HPutCurve { gsave newpath /SaveLPutVar /LPutVar load def LPutVar 8 -2
roll moveto curveto flattenpath /LPutVar [ {} {} {} {} pathforall ] cvx
def grestore exec /LPutVar /SaveLPutVar load def } def
/NCCoor { /AngleA yB yA sub xB xA sub Atan def /AngleB AngleA 180 add def
GetEdgeA GetEdgeB /LPutVar [ xB1 yB1 xA1 yA1 ] cvx def /LPutPos {
LPutVar LPutLine } def /HPutPos { LPutVar HPutLine } def /VPutPos {
LPutVar VPutLine } def LPutVar } def
/NCLine { NCCoor tx@Dict begin ArrowA CP 4 2 roll ArrowB lineto pop pop
end } def
/NCLines { false NArray n 0 eq { NCLine } { 2 copy yA sub exch xA sub
Atan /AngleA ED n 2 mul dup index exch index yB sub exch xB sub Atan
/AngleB ED GetEdgeA GetEdgeB /LPutVar [ xB1 yB1 n 2 mul 4 add 4 roll xA1
yA1 ] cvx def mark LPutVar tx@Dict begin false Line end /LPutPos {
LPutLines } def /HPutPos { HPutLines } def /VPutPos { VPutLines } def }
ifelse } def
/NCCurve { GetEdgeA GetEdgeB xA1 xB1 sub yA1 yB1 sub Pyth 2 div dup 3 -1
roll mul /ArmA ED mul /ArmB ED /ArmTypeA 0 def /ArmTypeB 0 def GetArmA
GetArmB xA2 yA2 xA1 yA1 tx@Dict begin ArrowA end xB2 yB2 xB1 yB1 tx@Dict
begin ArrowB end curveto /LPutVar [ xA1 yA1 xA2 yA2 xB2 yB2 xB1 yB1 ]
cvx def /LPutPos { t LPutVar BezierMidpoint } def /HPutPos { { HPutLines
} HPutCurve } def /VPutPos { { VPutLines } HPutCurve } def } def
%
/NCAngles {
GetEdgeA GetEdgeB GetArmA GetArmB
/mtrx AngleA matrix rotate def
xA2 yA2 mtrx transform pop
xB2 yB2 mtrx transform exch pop
mtrx itransform
/y0 ED /x0 ED
mark ArmB 0 ne { xB1 yB1 } if
xB2 yB2 x0 y0 xA2 yA2
ArmA 0 ne { xA1 yA1 } if
tx@Dict begin false Line end
/LPutVar [ xB1 yB1 xB2 yB2 x0 y0 xA2 yA2 xA1 yA1 ] cvx def
/LPutPos { LPutLines } def
/HPutPos { HPutLines } def
/VPutPos { VPutLines } def } def
%
/NCAngle {
GetEdgeA GetEdgeB GetArmB
/mtrx AngleA matrix rotate def
xB2 yB2 mtrx itransform pop xA1 yA1 mtrx itransform exch pop mtrx transform
/y0 ED /x0 ED
mark
ArmB 0 ne { xB1 yB1 } if
xB2 yB2 x0 y0 xA1 yA1
tx@Dict begin false Line end
/LPutVar [ xB1 yB1 xB2 yB2 x0 y0 xA1 yA1 ] cvx def
/LPutPos { LPutLines } def
/HPutPos { HPutLines } def
/VPutPos { VPutLines } def
} def
%
/NCBar {
GetEdgeA GetEdgeB GetArmA GetArmB
/mtrx AngleA matrix rotate def
xA2 yA2 mtrx itransform pop
xB2 yB2 mtrx itransform pop
sub dup 0 mtrx transform
3 -1 roll 0 gt
{ /yB2 exch yB2 add def /xB2 exch xB2 add def }
{ /yA2 exch neg yA2 add def /xA2 exch neg xA2 add def } ifelse
mark
ArmB 0 ne { xB1 yB1 } if
xB2 yB2 xA2 yA2 ArmA 0 ne { xA1 yA1 } if
tx@Dict begin false Line end
/LPutVar [ xB1 yB1 xB2 yB2 xA2 yA2 xA1 yA1 ] cvx def
/LPutPos { LPutLines } def
/HPutPos { HPutLines } def
/VPutPos { VPutLines } def
} def
%
/NCDiag {
GetEdgeA GetEdgeB GetArmA GetArmB mark
ArmB 0 ne { xB1 yB1 } if
xB2 yB2 xA2 yA2
ArmA 0 ne { xA1 yA1 } if
tx@Dict begin false Line end
/LPutVar [ xB1 yB1 xB2 yB2 xA2 yA2 xA1 yA1 ] cvx def
/LPutPos { LPutLines } def
/HPutPos { HPutLines } def
/VPutPos { VPutLines } def
} def
%
/NCDiagg {
GetEdgeA GetArmA
yB yA2 sub xB xA2 sub Atan 180 add /AngleB ED
GetEdgeB
mark
xB1 yB1 xA2 yA2
ArmA 0 ne { xA1 yA1 } if
tx@Dict begin false Line end
/LPutVar [ xB1 yB1 xA2 yA2 xA1 yA1 ] cvx def
/LPutPos { LPutLines } def
/HPutPos { HPutLines } def
/VPutPos { VPutLines } def
} def
%
/NCLoop {
GetEdgeA GetEdgeB GetArmA GetArmB
/mtrx AngleA matrix rotate def
xA2 yA2 mtrx transform loopsize add /yA3 ED /xA3 ED
/xB3 xB2 yB2 mtrx transform pop def
xB3 yA3 mtrx itransform /yB3 ED /xB3 ED
xA3 yA3 mtrx itransform /yA3 ED /xA3 ED
mark ArmB 0 ne { xB1 yB1 } if
xB2 yB2 xB3 yB3 xA3 yA3 xA2 yA2 ArmA 0 ne { xA1 yA1 } if
tx@Dict begin false Line end
/LPutVar [ xB1 yB1 xB2 yB2 xB3 yB3 xA3 yA3 xA2 yA2 xA1 yA1 ] cvx def
/LPutPos { LPutLines } def
/HPutPos { HPutLines } def
/VPutPos { VPutLines } def
} def
%
% DG/SR modification begin - May 9, 1997 - Patch 1
%/NCCircle { 0 0 NodesepA nodeA \tx@GetEdge pop xA sub 2 div dup 2 exp r
%r mul sub abs sqrt atan 2 mul /a ED r AngleA 90 add PtoC yA add exch xA add
%exch 2 copy /LPutVar [ 4 2 roll r AngleA ] cvx def /LPutPos { LPutVar t 360
%mul add dup 5 1 roll 90 sub \tx@PtoC 3 -1 roll add /Y ED add /X ED /NAngle ED
%
/NCCircle {
NodeSepA 0 NodeA 0 GetEdge pop
2 div dup 2 exp r r mul sub abs sqrt
atan 2 mul /a ED
r AngleA 90 add PtoC yA add exch xA add
exch 2 copy
/LPutVar [ 4 2 roll r AngleA ] cvx def
/LPutPos {
LPutVar t 360 mul add dup 5 1 roll 90 sub PtoC
3 -1 roll add
/Y ED add /X ED /NAngle ED
% DG/SR modification end
} def
/HPutPos { LPutPos } def
/VPutPos { LPutPos } def
r AngleA 90 sub a add AngleA 270 add a sub
tx@Dict begin
/angleB ED /angleA ED /r ED
/c 57.2957 r Div def
/y ED /x ED
} def
%
/NCBox { /d ED /h ED /AngleB yB yA sub xB xA sub Atan def /AngleA AngleB
180 add def GetEdgeA GetEdgeB /dx d AngleB sin mul def /dy d AngleB cos
mul neg def /hx h AngleB sin mul neg def /hy h AngleB cos mul def
/LPutVar [ xA1 hx add yA1 hy add xB1 hx add yB1 hy add xB1 dx add yB1 dy
add xA1 dx add yA1 dy add ] cvx def /LPutPos { LPutLines } def /HPutPos
{ xB yB xA yA LPutLine } def /VPutPos { HPutPos } def mark LPutVar
tx@Dict begin false Polygon end } def
/NCArcBox { /l ED neg /d ED /h ED /a ED /AngleA yB yA sub xB xA sub Atan
def /AngleB AngleA 180 add def /tA AngleA a sub 90 add def /tB tA a 2
mul add def /r xB xA sub tA cos tB cos sub Div dup 0 eq { pop 1 } if def
/x0 xA r tA cos mul add def /y0 yA r tA sin mul add def /c 57.2958 r div
def /AngleA AngleA a sub 180 add def /AngleB AngleB a add 180 add def
GetEdgeA GetEdgeB /AngleA tA 180 add yA yA1 sub xA xA1 sub Pyth c mul
sub def /AngleB tB 180 add yB yB1 sub xB xB1 sub Pyth c mul add def l 0
eq { x0 y0 r h add AngleA AngleB arc x0 y0 r d add AngleB AngleA arcn }
{ x0 y0 translate /tA AngleA l c mul add def /tB AngleB l c mul sub def
0 0 r h add tA tB arc r h add AngleB PtoC r d add AngleB PtoC 2 copy 6 2
roll l arcto 4 { pop } repeat r d add tB PtoC l arcto 4 { pop } repeat 0
0 r d add tB tA arcn r d add AngleA PtoC r h add AngleA PtoC 2 copy 6 2
roll l arcto 4 { pop } repeat r h add tA PtoC l arcto 4 { pop } repeat }
ifelse closepath /LPutVar [ x0 y0 r AngleA AngleB h d ] cvx def /LPutPos
{ LPutVar /d ED /h ED /AngleB ED /AngleA ED /r ED /y0 ED /x0 ED t 1 le {
r h add AngleA 1 t sub mul AngleB t mul add dup 90 add /NAngle ED PtoC }
{ t 2 lt { /NAngle AngleB 180 add def r 2 t sub h mul t 1 sub d mul add
add AngleB PtoC } { t 3 lt { r d add AngleB 3 t sub mul AngleA 2 t sub
mul add dup 90 sub /NAngle ED PtoC } { /NAngle AngleA 180 add def r 4 t
sub d mul t 3 sub h mul add add AngleA PtoC } ifelse } ifelse } ifelse
y0 add /Y ED x0 add /X ED } def /HPutPos { LPutPos } def /VPutPos {
LPutPos } def } def
/Tfan { /AngleA yB yA sub xB xA sub Atan def GetEdgeA w xA1 xB sub yA1 yB
sub Pyth Pyth w Div CLW 2 div mul 2 div dup AngleA sin mul yA1 add /yA1
ED AngleA cos mul xA1 add /xA1 ED /LPutVar [ xA1 yA1 m { xB w add yB xB
w sub yB } { xB yB w sub xB yB w add } ifelse xA1 yA1 ] cvx def /LPutPos
{ LPutLines } def /VPutPos@ { LPutVar flag { 8 4 roll pop pop pop pop }
{ pop pop pop pop 4 2 roll } ifelse } def /VPutPos { VPutPos@ VPutLine }
def /HPutPos { VPutPos@ HPutLine } def mark LPutVar tx@Dict begin
/ArrowA { moveto } def /ArrowB { } def false Line closepath end } def
%
/LPutCoor {
NAngle
tx@Dict begin /NAngle ED end
gsave
CM STV
CP Y sub neg exch X sub neg exch moveto
setmatrix CP
grestore
} def
%
/LPut {
tx@NodeDict /LPutPos known
{ LPutPos } { CP /Y ED /X ED /NAngle 0 def } ifelse
LPutCoor
} def
%
/HPutAdjust {
Sin Cos mul 0 eq
{ 0 }
{ d Cos mul Sin div flag not { neg } if
h Cos mul Sin div flag { neg } if
2 copy gt { pop } { exch pop } ifelse
} ifelse
s add flag { r add neg }{ l add } ifelse
X add /X ED
} def
%
/VPutAdjust {
Sin Cos mul
0 eq
{ 0 }
{ l Sin mul Cos div flag { neg } if
r Sin mul Cos div flag not { neg } if
2 copy gt { pop } { exch pop } ifelse
} ifelse
s add flag { d add } { h add neg } ifelse
Y add /Y ED
} def
%
end
%
% END pst-node.pro
%%EndProcSet
%%BeginProcSet: 8r.enc 0 0
% File 8r.enc TeX Base 1 Encoding Revision 2.0 2002-10-30
%
% @@psencodingfile@{
% author = "S. Rahtz, P. MacKay, Alan Jeffrey, B. Horn, K. Berry,
% W. Schmidt, P. Lehman",
% version = "2.0",
% date = "27nov06",
% filename = "8r.enc",
% email = "tex-fonts@@tug.org",
% docstring = "This is the encoding vector for Type1 and TrueType
% fonts to be used with TeX. This file is part of the
% PSNFSS bundle, version 9"
% @}
%
% The idea is to have all the characters normally included in Type 1 fonts
% available for typesetting. This is effectively the characters in Adobe
% Standard encoding, ISO Latin 1, Windows ANSI including the euro symbol,
% MacRoman, and some extra characters from Lucida.
%
% Character code assignments were made as follows:
%
% (1) the Windows ANSI characters are almost all in their Windows ANSI
% positions, because some Windows users cannot easily reencode the
% fonts, and it makes no difference on other systems. The only Windows
% ANSI characters not available are those that make no sense for
% typesetting -- rubout (127 decimal), nobreakspace (160), softhyphen
% (173). quotesingle and grave are moved just because it's such an
% irritation not having them in TeX positions.
%
% (2) Remaining characters are assigned arbitrarily to the lower part
% of the range, avoiding 0, 10 and 13 in case we meet dumb software.
%
% (3) Y&Y Lucida Bright includes some extra text characters; in the
% hopes that other PostScript fonts, perhaps created for public
% consumption, will include them, they are included starting at 0x12.
% These are /dotlessj /ff /ffi /ffl.
%
% (4) hyphen appears twice for compatibility with both ASCII and Windows.
%
% (5) /Euro was assigned to 128, as in Windows ANSI
%
% (6) Missing characters from MacRoman encoding incorporated as follows:
%
% PostScript MacRoman TeXBase1
% -------------- -------------- --------------
% /notequal 173 0x16
% /infinity 176 0x17
% /lessequal 178 0x18
% /greaterequal 179 0x19
% /partialdiff 182 0x1A
% /summation 183 0x1B
% /product 184 0x1C
% /pi 185 0x1D
% /integral 186 0x81
% /Omega 189 0x8D
% /radical 195 0x8E
% /approxequal 197 0x8F
% /Delta 198 0x9D
% /lozenge 215 0x9E
%
/TeXBase1Encoding [
% 0x00
/.notdef /dotaccent /fi /fl
/fraction /hungarumlaut /Lslash /lslash
/ogonek /ring /.notdef /breve
/minus /.notdef /Zcaron /zcaron
% 0x10
/caron /dotlessi /dotlessj /ff
/ffi /ffl /notequal /infinity
/lessequal /greaterequal /partialdiff /summation
/product /pi /grave /quotesingle
% 0x20
/space /exclam /quotedbl /numbersign
/dollar /percent /ampersand /quoteright
/parenleft /parenright /asterisk /plus
/comma /hyphen /period /slash
% 0x30
/zero /one /two /three
/four /five /six /seven
/eight /nine /colon /semicolon
/less /equal /greater /question
% 0x40
/at /A /B /C
/D /E /F /G
/H /I /J /K
/L /M /N /O
% 0x50
/P /Q /R /S
/T /U /V /W
/X /Y /Z /bracketleft
/backslash /bracketright /asciicircum /underscore
% 0x60
/quoteleft /a /b /c
/d /e /f /g
/h /i /j /k
/l /m /n /o
% 0x70
/p /q /r /s
/t /u /v /w
/x /y /z /braceleft
/bar /braceright /asciitilde /.notdef
% 0x80
/Euro /integral /quotesinglbase /florin
/quotedblbase /ellipsis /dagger /daggerdbl
/circumflex /perthousand /Scaron /guilsinglleft
/OE /Omega /radical /approxequal
% 0x90
/.notdef /.notdef /.notdef /quotedblleft
/quotedblright /bullet /endash /emdash
/tilde /trademark /scaron /guilsinglright
/oe /Delta /lozenge /Ydieresis
% 0xA0
/.notdef /exclamdown /cent /sterling
/currency /yen /brokenbar /section
/dieresis /copyright /ordfeminine /guillemotleft
/logicalnot /hyphen /registered /macron
% 0xB0
/degree /plusminus /twosuperior /threesuperior
/acute /mu /paragraph /periodcentered
/cedilla /onesuperior /ordmasculine /guillemotright
/onequarter /onehalf /threequarters /questiondown
% 0xC0
/Agrave /Aacute /Acircumflex /Atilde
/Adieresis /Aring /AE /Ccedilla
/Egrave /Eacute /Ecircumflex /Edieresis
/Igrave /Iacute /Icircumflex /Idieresis
% 0xD0
/Eth /Ntilde /Ograve /Oacute
/Ocircumflex /Otilde /Odieresis /multiply
/Oslash /Ugrave /Uacute /Ucircumflex
/Udieresis /Yacute /Thorn /germandbls
% 0xE0
/agrave /aacute /acircumflex /atilde
/adieresis /aring /ae /ccedilla
/egrave /eacute /ecircumflex /edieresis
/igrave /iacute /icircumflex /idieresis
% 0xF0
/eth /ntilde /ograve /oacute
/ocircumflex /otilde /odieresis /divide
/oslash /ugrave /uacute /ucircumflex
/udieresis /yacute /thorn /ydieresis
] def
%%EndProcSet
%%BeginProcSet: texps.pro 0 0
%!
TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0
ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{
pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get
div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type
/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end
definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup
sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll
mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[
exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if}
forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def
end
%%EndProcSet
%%BeginProcSet: special.pro 0 0
%!
TeXDict begin/SDict 200 dict N SDict begin/@SpecialDefaults{/hs 612 N
/vs 792 N/ho 0 N/vo 0 N/hsc 1 N/vsc 1 N/ang 0 N/CLIP 0 N/rwiSeen false N
/rhiSeen false N/letter{}N/note{}N/a4{}N/legal{}N}B/@scaleunit 100 N
/@hscale{@scaleunit div/hsc X}B/@vscale{@scaleunit div/vsc X}B/@hsize{
/hs X/CLIP 1 N}B/@vsize{/vs X/CLIP 1 N}B/@clip{/CLIP 2 N}B/@hoffset{/ho
X}B/@voffset{/vo X}B/@angle{/ang X}B/@rwi{10 div/rwi X/rwiSeen true N}B
/@rhi{10 div/rhi X/rhiSeen true N}B/@llx{/llx X}B/@lly{/lly X}B/@urx{
/urx X}B/@ury{/ury X}B/magscale true def end/@MacSetUp{userdict/md known
{userdict/md get type/dicttype eq{userdict begin md length 10 add md
maxlength ge{/md md dup length 20 add dict copy def}if end md begin
/letter{}N/note{}N/legal{}N/od{txpose 1 0 mtx defaultmatrix dtransform S
atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{
itransform lineto}}{6 -2 roll transform 6 -2 roll transform 6 -2 roll
transform{itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll
curveto}}{{closepath}}pathforall newpath counttomark array astore/gc xdf
pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack}
if}N/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1
-1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3
get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip
yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub
neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{
noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop
90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get
neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr
1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr
2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4
-1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S
TR}if}N/cp{pop pop showpage pm restore}N end}if}if}N/normalscale{
Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale
}if 0 setgray}N/psfts{S 65781.76 div N}N/startTexFig{/psf$SavedState
save N userdict maxlength dict begin/magscale true def normalscale
currentpoint TR/psf$ury psfts/psf$urx psfts/psf$lly psfts/psf$llx psfts
/psf$y psfts/psf$x psfts currentpoint/psf$cy X/psf$cx X/psf$sx psf$x
psf$urx psf$llx sub div N/psf$sy psf$y psf$ury psf$lly sub div N psf$sx
psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub
TR/showpage{}N/erasepage{}N/setpagedevice{pop}N/copypage{}N/p 3 def
@MacSetUp}N/doclip{psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll
newpath 4 copy 4 2 roll moveto 6 -1 roll S lineto S lineto S lineto
closepath clip newpath moveto}N/endTexFig{end psf$SavedState restore}N
/@beginspecial{SDict begin/SpecialSave save N gsave normalscale
currentpoint TR @SpecialDefaults count/ocount X/dcount countdictstack N}
N/@setspecial{CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs
neg 0 rlineto closepath clip}if ho vo TR hsc vsc scale ang rotate
rwiSeen{rwi urx llx sub div rhiSeen{rhi ury lly sub div}{dup}ifelse
scale llx neg lly neg TR}{rhiSeen{rhi ury lly sub div dup scale llx neg
lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly moveto urx lly lineto urx
ury lineto llx ury lineto closepath clip}if/showpage{}N/erasepage{}N
/setpagedevice{pop}N/copypage{}N newpath}N/@endspecial{count ocount sub{
pop}repeat countdictstack dcount sub{end}repeat grestore SpecialSave
restore end}N/@defspecial{SDict begin}N/@fedspecial{end}B/li{lineto}B
/rl{rlineto}B/rc{rcurveto}B/np{/SaveX currentpoint/SaveY X N 1
setlinecap newpath}N/st{stroke SaveX SaveY moveto}N/fil{fill SaveX SaveY
moveto}N/ellipse{/endangle X/startangle X/yrad X/xrad X/savematrix
matrix currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc
savematrix setmatrix}N end
%%EndProcSet
%%BeginProcSet: color.pro 0 0
%!
TeXDict begin/setcmykcolor where{pop}{/setcmykcolor{dup 10 eq{pop
setrgbcolor}{1 sub 4 1 roll 3{3 index add neg dup 0 lt{pop 0}if 3 1 roll
}repeat setrgbcolor pop}ifelse}B}ifelse/TeXcolorcmyk{setcmykcolor}def
/TeXcolorrgb{setrgbcolor}def/TeXcolorgrey{setgray}def/TeXcolorgray{
setgray}def/TeXcolorhsb{sethsbcolor}def/currentcmykcolor where{pop}{
/currentcmykcolor{currentrgbcolor 10}B}ifelse/DC{exch dup userdict exch
known{pop pop}{X}ifelse}B/GreenYellow{0.15 0 0.69 0 setcmykcolor}DC
/Yellow{0 0 1 0 setcmykcolor}DC/Goldenrod{0 0.10 0.84 0 setcmykcolor}DC
/Dandelion{0 0.29 0.84 0 setcmykcolor}DC/Apricot{0 0.32 0.52 0
setcmykcolor}DC/Peach{0 0.50 0.70 0 setcmykcolor}DC/Melon{0 0.46 0.50 0
setcmykcolor}DC/YellowOrange{0 0.42 1 0 setcmykcolor}DC/Orange{0 0.61
0.87 0 setcmykcolor}DC/BurntOrange{0 0.51 1 0 setcmykcolor}DC
/Bittersweet{0 0.75 1 0.24 setcmykcolor}DC/RedOrange{0 0.77 0.87 0
setcmykcolor}DC/Mahogany{0 0.85 0.87 0.35 setcmykcolor}DC/Maroon{0 0.87
0.68 0.32 setcmykcolor}DC/BrickRed{0 0.89 0.94 0.28 setcmykcolor}DC/Red{
0 1 1 0 setcmykcolor}DC/OrangeRed{0 1 0.50 0 setcmykcolor}DC/RubineRed{
0 1 0.13 0 setcmykcolor}DC/WildStrawberry{0 0.96 0.39 0 setcmykcolor}DC
/Salmon{0 0.53 0.38 0 setcmykcolor}DC/CarnationPink{0 0.63 0 0
setcmykcolor}DC/Magenta{0 1 0 0 setcmykcolor}DC/VioletRed{0 0.81 0 0
setcmykcolor}DC/Rhodamine{0 0.82 0 0 setcmykcolor}DC/Mulberry{0.34 0.90
0 0.02 setcmykcolor}DC/RedViolet{0.07 0.90 0 0.34 setcmykcolor}DC
/Fuchsia{0.47 0.91 0 0.08 setcmykcolor}DC/Lavender{0 0.48 0 0
setcmykcolor}DC/Thistle{0.12 0.59 0 0 setcmykcolor}DC/Orchid{0.32 0.64 0
0 setcmykcolor}DC/DarkOrchid{0.40 0.80 0.20 0 setcmykcolor}DC/Purple{
0.45 0.86 0 0 setcmykcolor}DC/Plum{0.50 1 0 0 setcmykcolor}DC/Violet{
0.79 0.88 0 0 setcmykcolor}DC/RoyalPurple{0.75 0.90 0 0 setcmykcolor}DC
/BlueViolet{0.86 0.91 0 0.04 setcmykcolor}DC/Periwinkle{0.57 0.55 0 0
setcmykcolor}DC/CadetBlue{0.62 0.57 0.23 0 setcmykcolor}DC
/CornflowerBlue{0.65 0.13 0 0 setcmykcolor}DC/MidnightBlue{0.98 0.13 0
0.43 setcmykcolor}DC/NavyBlue{0.94 0.54 0 0 setcmykcolor}DC/RoyalBlue{1
0.50 0 0 setcmykcolor}DC/Blue{1 1 0 0 setcmykcolor}DC/Cerulean{0.94 0.11
0 0 setcmykcolor}DC/Cyan{1 0 0 0 setcmykcolor}DC/ProcessBlue{0.96 0 0 0
setcmykcolor}DC/SkyBlue{0.62 0 0.12 0 setcmykcolor}DC/Turquoise{0.85 0
0.20 0 setcmykcolor}DC/TealBlue{0.86 0 0.34 0.02 setcmykcolor}DC
/Aquamarine{0.82 0 0.30 0 setcmykcolor}DC/BlueGreen{0.85 0 0.33 0
setcmykcolor}DC/Emerald{1 0 0.50 0 setcmykcolor}DC/JungleGreen{0.99 0
0.52 0 setcmykcolor}DC/SeaGreen{0.69 0 0.50 0 setcmykcolor}DC/Green{1 0
1 0 setcmykcolor}DC/ForestGreen{0.91 0 0.88 0.12 setcmykcolor}DC
/PineGreen{0.92 0 0.59 0.25 setcmykcolor}DC/LimeGreen{0.50 0 1 0
setcmykcolor}DC/YellowGreen{0.44 0 0.74 0 setcmykcolor}DC/SpringGreen{
0.26 0 0.76 0 setcmykcolor}DC/OliveGreen{0.64 0 0.95 0.40 setcmykcolor}
DC/RawSienna{0 0.72 1 0.45 setcmykcolor}DC/Sepia{0 0.83 1 0.70
setcmykcolor}DC/Brown{0 0.81 1 0.60 setcmykcolor}DC/Tan{0.14 0.42 0.56 0
setcmykcolor}DC/Gray{0 0 0 0.50 setcmykcolor}DC/Black{0 0 0 1
setcmykcolor}DC/White{0 0 0 0 setcmykcolor}DC end
%%EndProcSet
%%BeginFont: LucidaBrightCE
%!PS-AdobeFont-1.0: LucidaBrightCE 001.000
%%CreationDate: 18.02.00 at 15:55
%%VMusage: 1024 47599
% Generated by Fontographer 4.1
% Copyright \(c\) 1998 Bigelow & Holmes Inc. Pat. Des 289,421.
% ADL: 800 200 0
%%EndComments
FontDirectory/LucidaBrightCE known{/LucidaBrightCE findfont dup/UniqueID known{dup
/UniqueID get 4890615 eq exch/FontType get 1 eq and}{pop false}ifelse
{save true}{false}ifelse}{false}ifelse
20 dict begin
/FontInfo 16 dict dup begin
/version (001.000) readonly def
/FullName (LucidaBrightCE) readonly def
/FamilyName (LucidaBrightCE) readonly def
/Weight (Medium) readonly def
/ItalicAngle 0 def
/isFixedPitch false def
/UnderlinePosition -200 def
/UnderlineThickness 100 def
/Notice (Copyright \(c\) 1998 Bigelow & Holmes Inc. Pat. Des 289,421.) readonly def
/em 1000 def
/ascent 800 def
/descent 200 def
end readonly def
/FontName /LucidaBrightCE def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 40 /parenleft put
dup 41 /parenright put
dup 44 /comma put
dup 45 /hyphen put
dup 46 /period put
dup 49 /one put
dup 51 /three put
dup 65 /A put
dup 66 /B put
dup 67 /C put
dup 68 /D put
dup 69 /E put
dup 70 /F put
dup 72 /H put
dup 73 /I put
dup 75 /K put
dup 77 /M put
dup 80 /P put
dup 83 /S put
dup 84 /T put
dup 86 /V put
dup 88 /X put
dup 90 /Z put
dup 97 /a put
dup 98 /b put
dup 100 /d put
dup 101 /e put
dup 102 /f put
dup 103 /g put
dup 104 /h put
dup 105 /i put
dup 107 /k put
dup 108 /l put
dup 109 /m put
dup 110 /n put
dup 111 /o put
dup 112 /p put
dup 114 /r put
dup 115 /s put
dup 116 /t put
dup 117 /u put
dup 120 /x put
dup 121 /y put
dup 122 /z put
dup 228 /adieresis put
readonly def
/PaintType 0 def
/FontType 1 def
/StrokeWidth 0 def
/FontMatrix[0.001 0 0 0.001 0 0]readonly def
/FontBBox{-36 -318 1014 993}readonly def
currentdict end
currentfile eexec
D9D66F633B846AB28EDC112EE8CE6C673600130707DE48BF082E5E38F377870F
EC577CC0BE324DC9F48DDE3E42F41F80F0529CA4D00437E413B730C2971C6596
BC0E5C3CB3B0C4CB00F49710EE39BFC08B25EE73EE0110AA0B09087B61961613
F28957190014C668EBE72F94F0C3F59D322B6654935C89D08228D87A26CB5A02
2AF72D68BFA18797C9A4FCE0EA5F267180E8BBB3523B860BA31385E6D13FB249
82A8F708AC7E7D555EF420CED2D8DB13A0496426DF3157841D9CB57CA0874D6C
1664C8C8A9CC63CD76B945A2969EA0EA63C31EDAD9E7870E96E3E72336D46967
E2EA0D0FA5AA4B8604D019149C8957096EEB1BEA900ECD03022DB5142AB0A1F2
A0C71498AAECE590586CA1F863B9E9AB06D9E27AC5D1DA50CECFAC74079A60A4
F6230379CBAB3461A106E033B6B59B40E8D65D99E65021394297EB3507ABE8EA
DEA26615E1210C21B30725C3640860849878C424D06E3DD1F22F0A674109204C
A95519D84EFC3F1B77BAE0B13BC5357B109628D853AA0833BF4B06CB19D1C124
0FD5E1ED6C9E910C32611762700E6475AAB74B8E9FA547ACFB7E9B2B15F1D5A8
9543DB47255A2C5443BCED6E28F46E079CF27120ABB9917BBDF765C662C25C0E
1C118C7B61DEF5D51FC56896A34EF0F1657A403654044F0315DFBD0783B71787
2DB951A9A1A36F27A910774C31F7E1D0878CC6570470AF607FBB369CB6BF9F66
15B04672B879998517BF99B9E4F0ADD769E5D41AB933E3E6DA8EC54BEA6E431B
7A5E2DBA54549224E46E3C5E5E9AFA5541E4775DD42FA9522E820F5D07539F1A
FCFEFF7376918A35C7EA8C1A0A48D9721A86BEDEF76AD6F32D5A3768FB6BFF5A
1E7BEC988F06F62E178393E8BB74CA37E8D89DC67C0F9842B0368AD7A499EE5D
B75C1A20FC3A555708DD7932F8863383E5851027BBE6D042F65CEFCD3023B738
6FD34E7056F062F57B7A5DA64B28AC1842A8F42ADD4915D8D4407C4A868FD4E9
256C6E8561AB69E56C391001D99B860BDFC3508BE480018EA7760738963A66B9
B5D897A3C67A2462C67F883413E087786C64C752F930E609AA90D47A1310422E
1AED61C75904BBA4E3377958FC9412767223B29BC367F1C0A4313FC57A916CF9
434B2384EB1ED34FF52F9C9E0D3FB5901AC4BB19D8066FEB0E9B16FA1385BD5F
1B653894A952257D37FF0E25A81CA7D01F5A103CB3F50F1D88919C419C91A650
AEE18C8BC3BC1633C1EED8854448063316B83CB4058BBC339DF76BAFABEC1D78
053982CA60D0A2B591F4139829FC1AE5BF699E0506DFFA5739E88BEB81076CBB
0D25D106A2E0B77B2219F8DFC93B00AB0E2AAA910AD5C7C4064B4DEC8B2A5378
89B206A137DEB2509F6AF2C908FB12B5D161B63A9E42CDAF15BDA866D575DDA2
FAA82DBADA1FCB2770B15579D50F03C3B45ABA5EA21743669C87A0D99DD594E1
C3B520A779331BA4EA61ACF225D27F2C179B139811BF4EE0281A610B03592111
5379F02C527E4625FC0A91AA222524C6AEBB402EDC33ED2C6C1BBD8827527917
8552D080E2A715B0E16C82BD58EE66C622DE285C8B2BA420BC87B3E776FAA4A8
E3A31BC6C19C309C72BFD7EDCFDF439B2B05CCA4C3C1E3AA750E86B604B81F22
B414AAF0E1A95B47BFF24C4E93AF27FB1BE92AD979EC491ADAB58E002E8A1762
5632601A8A2CD0CB820C71C9F09504A66E08D42F0A1D4CE48EDFDBEE06EA244A
AFDABAF7A8C06C8C61F288B8E820FB0228863CF12161FA0A770ED6D39E571D79
E7ABE0D0583038C3346D7FF6A92E3A15F5BF0D75F30CE83E1D5AEC2C330B4F75
B39E74BA104215F3C12D51650AAE159DE6E9FE620D86E9B05E900D14042BF7FF
0CE1300F22FE7136611595047CE8FAD26EDB09844D3209B64E00A86B9E3CDE75
D72CD14E5821A476F51FF61C1BC23091605CDA81DF7AFD6C9BB23D75C86DEC3C
DAAB810C2E0DF5239BF33993123C80F7C2A81D666FC998798BDCD371CCFA568C
79AD7D9815E0BD34702EFF739EF974989569AFD6AC2191776FD806E84A974A00
C1807FEF6F0AB2532B630445F8B4F7F4B975DB8D7E5D664C30D82236EEAF7236
E220EFE0D60DB5E9D3E39B24A78AB2C62629C048F320F7045055F1636279052D
63383C0D35946F084C8D59321F918EBFA21910AB452424307E0C5685C0E79759
DE2709F47847F981E61F7E086A867FE874762CEEA7BA9CABCEA4DF01C72D51B2
795B17073F7556030AB9C797372FA41E76391B55ABCDA623F55A3E82E5AAA694
7BFB2743C872FCBBB373AF6421C788FB9264AA9D82F4E5DA9C8513B9A0AE52DD
248ACD3FB6AE7A99FC866794AC1F3365E5792A46A5BFF3BC69D0EE356B34D0B3
801CC3432BC8C99AC01A0005FB2EE6FC30FB29C0FF50BB1D23CF91DD906AC481
E28B9EB73E963DEBCF119B1A1F627D6E78CB328EFAEDDC0D51EBE0C2888B369D
421BEBB6E7FCDCA196ACDC62087BBAFA394FEA400984FE53C5E61C03E3930585
CF95DE2F4696D2F24B8A11518C65601D62FD795E1A67EB300EBE8891A877C3D7
B0F0D6AC90858CB2DF7CBF17F5C7B10288D40B623A22FE5D9CB9EE4B758840DF
7BF9C8949FC4335BE0FE6D0F6493ABF0629D1882ED5CAD28D7AAAF5DB961F79B
776580EED2567976EFDE5F160A83B6BA54E9A92DCCF3F80A8F6E82B0C4BE159F
1FFE69903E315C601C5CDBF7CFFC95F27EA0792C87DC525532FF2370583B082B
75C735FEC6D53DF6A7895FFAC9A8E8D927EDB7278F17D62CB86F2BDA69DFEEDF
76DD11EE009AE4AEFE178AAC68F5FBA0B930BC84861CE5D9CCC2ADD97B114725
E11C84F7F6E8117D338C6A5B59881ABB66ACCCDFF457EF70D7E213898246A0F8
E534A05D9ADBD0ED6FF22ADFC529E2149B9A574F6D08DAFC69C29F305CF08B57
79488F15A313A17F552E5E69ECA25F35C313BEC07F7852D31DE56BE21DFBBF93
05092E87740A7F60F5C7EF6573B1ECA3D9137DF5EA301BAF0E630B0B6253D36B
7012C80E9E3C0FA10D0B9999D2330281D9057CFC928132D299BBE6A6DF9744D6
9C71E4396905538AB55686AE4DBB1E3D7AAD020E7A6C7790294B0330B852B4F2
2B1738CCB7933CB706D9172025B1E100423F773B45583683094D4E3A93B7892C
1BE21A3DFC7CFB35E19025DC0E0BFE1E8724866EEE2F9B557A3757C3CC58920E
82E0B514384EEC28B33B84D075F46EAAC0FDB0137341CD04A8B52471908AE151
534D5FEACD9E7209572BF049A41F70D637D76DC345472CF61777CBA7787E9550
82E4D4C71396FA6A537641AD4D2389EAF3F0F6CDBC26F6C64562846FC73B3324
0A73FCE50DFCAF6C4F15600AEC20578682D9B00A2C6589C92DB0F1FBA5921B8A
62BAF30BE5AF104DF56B8A107A8AD29F105279381C986BFCAC77A376E7AB677F
94165CA9A108DF5CF4A938FED50331E9E39957A90D3BD69E1C978CE26B683CDA
EC7BE97BCB940256D1E23DF701BE018D951E64F7145DDCD6AE768A910C3E5A31
1BA8D8C69352B12EEA916B4487EDE3762AFA2EF766F57F2358F3022B1BF94866
2136D3385E054C5D5741E6D0A3A34950438EB4067CFBDD9856B588AD9FF43739
AB26B223E36F4959258BC4C04B151259EF4854FCF903B9358699BA59C3457871
CF222176E7778A3DBA7F996B3BC60101A63F9519ACEE1E468BB222EBA8BCC3FB
7DC371485B9A63F7B6FC2902B9AC5AC550A7A7EAFD6293CDD986B41131F4D582
2FD6D5CC31DE06F192528B3EE7DE6EE6ED53B51E9DBB15BDF6B9EE5C277DF354
FCA6BA5585C9C545650D7538342D32DACF923BACF30683B8CAF4C3BE2D9805BA
C811F8662ECFA7FBD623B9C73846D0307F36D19FF321D2DF159515D48A32BA14
745AE580CE51356C6BFF5C183EFAB82F66B1E76D7A62E0F9FBFE98E3109EE9CD
C913937A28AA74915A858724AD3F58F0B9315291E8C70C28CD49AF3310EDDA89
20A1718DFABF780E8557602DB8EA63FA566CAF1518C0261B218D2D9F5FC3C429
0F59F715AFF98FF485CAB673A38A4E58B37645CC0FAD687060A72F4B6D6D9069
A4C5D612B6AE00B6F9241A358FB12B1DA0CF354D6439F1D6EC4210D9AE49D496
3540E8B10E468F53F770A7C333779043E79F8E8E49FE3B554A99A282BEAABE0F
3D35EBE6927D4BCF1DAE5ABF4CF9E44A55EA019EB1F8B3A21B85E8440728FDA6
E785141F6A283FEA15CB2E04FC8987D0BE71AA3565519DAE4B20A20139899C76
E19AB5711B78B077D12978922A292D4425136AF93799A598C242E24459A1A63D
F29CE90F42FB3D7454635950FCBFD60E695FB562A50E863DC8E42BD1129BA58B
63F5EAA7169F949A65DAEF9124BFFE4D5DF1F7711B9DCEE9DCE113EAB4060046
CA992C26D7AED7CFC38089CAC56D5F9897EC3E628459A56788D6B03933BC5A46
877014ED1D703AB7CEE1406128111A0F2A5474B5A03ABE84F8A8701FD2BBBC1A
2F096AC0AC54A0D23F8A1F44EE26D9FEB4799D814809FA0B508E468A40208640
B2C47992C48D7EA1794DF5341F1F8AE0C8F5ACC6DFFB79EEDD6FD3B720900DBE
03AA6EEB9CDF7FAD505C70454BA0FB883E2415C26B284407AC7D4C602C8ADEB4
BBB9AFBAA5B44457DCC42D0AEB2F948A60B4833F50BD77859C6F8B975CE5A164
E375EB1D42FCD94DB862977C6E6A9718C83840EE024F069B5F1E2927A923950A
811661EEC30D6F3789DE80CA4729DE366CAF8B32164A530FC3B04AD9377E1EDC
8E550C3ECABA1556101AB8278FA596F460F632CCBAD91AAD3684B6973AF3B543
D5AEE13391B8D65BBB189C0D5131960E2426D48C9E07EC15EA94362050C667FC
861ABFC947E52AB59BC1F958AE8963F5A945CDA944A2DB91AC2F9D1D1E63C48E
5FE7A555F73EC3ADFC1B786770E19FAA2364B8FFECC695478C95394775A5936E
6F84955BE446E9CA13674DE40BBAAD2039060EEAF750ABD433FC540D43FB5A57
93886D68F7581E85A4761FDD281913462FB5E925F8D8ECAC334ABBE8756D8BC3
5B5F8D8F8C0097F40056173D3AEC06AD95E9B1ED681A9A7F6E1BBDA383AD61ED
B35952CA895FF526029A799122AB79F06F6890FCE493CA7BFA6285F7851B1BAB
F419AC37A61EFBE823569245AB01DCC45821DD1B1ADDCD46E226A4B4502AC8B2
62CCAFFEA61B73EB6ADB9E0C12CAAC426C9F1ED39E7226F3430A260FA7D82BC7
620DC66D883D40753BCE01231AFD9DE187FCBDE96C278336A37813EEACFC530C
022F381794B5F27EC031FC1DCEA982D8412EE373E92B4190C97D3DA3F5DA339C
5016E4A0330A11423AC54D0DE81DA44D2058F65434A44F01023C3EA18373E083
9BFA31AD78489B7E2495EAC1F51C743185D3E6F2A34C37B414A8F93F0C684E38
0364C3E1C2E75007CC38A310DCAAF98A9C750C80B809668BEB0B6810362198FA
1C23C00AE41C417A58B41B301FE702313064066D86B9AEFE97DF38222D9D9FED
D6052953FC39219028ECC8FC90900EB593BC5EB16A0F8C8C26C710FE8F5A804D
AA354B808D2E303C24E83312E06E366C59141943FACBD6998095AF52A963E7A1
FA942A4FDCF44F55522465B82A18A4DF9199D9F46B1C2E0D5397F0A7AB6A552E
AC512EEFD176FAAC23991F465B3463F4253AD4BEDDC933C420A4F1F02E9DD7FE
48F779E08AFED30209D7A9EC92CB249770B74D6F82601E4F4F10956115CD956C
3B1F420EF3A6C0198E82B2A7A84397D66B32BA0CDDCE057612AC14E3A0F9966B
F78DF3FC010B4B0ABCB9EF44046E7443C87A035E4FF44D086C618E7C7E3ADBE2
404698B4041781DA590D73A58A49B43FCEC92B58D50410B32A75F3FA0F07FEEB
1BB4540B375082BA01A325F1AB3EB48758AD9968195575CCC2B294E10F8D84F5
7F49C4B93E7E23965B6CEE228B17D1E569FC53F95A6CF24EBDEDDF61B263C632
F02DE118F608AD734DE71E321844E30CA564C93008D1B39275C86E03452E87BD
2CF46FD9ED6D7CB14BAF17916972B08021F5CEB2E85EE91447E4416D379F53D2
BCD4825B12FF3EDEF9F439F146195F44C20B05C0E79E2F3FADAE612CBBFFCBA5
07610B525421DA25B5023E851755445BE59AAEBD9E31CEA5E4DAB941907E63F4
5A855D9896C783C88ACC8AEC447A946371E7F5E77EBA05ACF43F9F702018C5E1
9EE407FEACF7A8B252EC73B2ACD5105460D430DEE2C3B78C80D81844D804B98B
30A1BE22B7278FBF24FECF61BA13A4F35A14259BB04BF74D17A7E7B7FA28CC91
2099DD510B0EBD7394B26ECB33430C94CC4B3EA14374B4B838AEBA14602C876C
BAF1CE4A9D6B214375AE9E5BBEA54F424C4151D3FF6D442FD287B217C2D53A7D
5DE74662007FC8B7F8760D774FF93506EF1C2FDDE46788BCA28B9DDBBEC0D8EA
20EBD944FC83F7ABD0EA77E65D2F1B736206CB5E1D27B1EE8AEB42141406E314
C2DCA94941F67F5CC0D788F43A3ABFFE4EFC9A825A69955682D36FFA18C7B5A3
B5D01EE4BB944E9E0F8CA438EAD2B679B02B621BDA36CBAAF6395F158B699130
E5CFB2512D99A1E8DE1C9B1EE13AD831924410D38F1DE14AA1F7D317A8F2E3E0
542F59CCE9DA35C4878768885FEF99F21F9E9DD0B99C10A99B5D728CE0A72269
545AC304C7998EB92BD47C5386AC22D9CD51E6FF45000FBE1F2F09F90EB265A8
8B2D70B1BC088816F600A29AFD4FCACF313369B08959A6ED478D5874ACAA1B68
B03B03F4DD7E58E93D92AA0A0BC28A9E9C6762A539494A890C9783D36B86BCD9
AD173CDE0758F5B20F8292E6A504EF03FDA016763798BFF14410EE4E592F74F9
9A92C79539206E225CD94ED10689BA313C26455F144DC6CF4B1AC99FF1265672
89FC495D0B8A49A60266C06C598B7B372CA3694D123F7B05ED102BCDC0A9796A
D77C4F1D3D20C0F8FDC33D6C6DA3252F1DE65D98501CAC77972C876D1F206339
3A2931084DB63E40DEADC6E7B1C27DBF88F5BEF7847F72DDB2684FBC0EA0AEE1
C056A081F0ED0221EF59B0E50DD9B3E10DDEBE07138424009E6AC35F702FD182
2D1BF5BB42C63B7D68ED3F0234C5299B8ADEDED4E5A3034FBF77430CF4BE91C9
19F8B1693B30997642103F1170B861EDB14C98A278EF133537A9D188D1282D7E
B21E424025D52A99BF82E818AB3774485E5CA20116033B6F76D225B6A0350EE9
1A935126FBE34C4537BEFA6A05209E0B8EC443A306679A8C2A59135421B9FB51
B5F9867A1EBA3E76EFA33FF01CC61782F00ACE57ABE68C5AFA48D7FCD737EDDD
84F9B347D390A5A7E1BC307679BB976680D65FF2CCFE31F94B4357757514EC17
142C398FEACAD6C27F7E781651E5590242EED22529D4B32E159563231F3091F8
EBB51035A54E09DBC6EDBEBEF8D5B486887C6D7A1B91FC3BE0253A0100688CFD
285EC3F16070CC2FEE2604E7CF4E962D60946B473BF174DBB3617512C38B9DD4
31A7C153FCF68BD9E4520C5E3449E00EA0ED7A4AE8BCFEBE6DA65958730B298F
B50C0ACB145D69FCCB1A533548F122D5CCA2CF1AF421DE5885059FF65FC122A4
74541E8CB59F977876DE92D679F58401F2083E961D448568EBCEDE7F07CDEDA6
19904F826E696C34C6CAFC680303670F28FB26EC355087082F3DD7597E7126AA
68E1F3334F4CD9243AC9051FAD8C76DD61330D89A58DC1E94D738181135CA376
00BB6658A2F38D4C385C2D0D39797D973A647D2BA79EDBF98EC34EBE0982779D
612146B6EB1DC13C4BDC92EBEFD46B20FE0D904211BEEDD16EFDBC9E878B1495
2BF7F5D38679388AE320D5D4A64DA1B32197A28A6B929BABA470EBA78A91A05B
604B42C95D4BF56B8602C2C1E539E0C49AA936AD9F8C3692F150008D1006EE5A
EFDF6E4E08782D9A67D1F63067F269C29CF655887D56D4264FEF5A3167EEC777
C1F722A92E5C5AEAA1A20E9D82E3C99CBB6F1B331A441C5F8825737950A32D13
8F48B49A783D379C5BE3788106A47F1DF1B49C8526B85D82941F2064732C66FF
82561D06AD28654187A6F502AC3178C8014D1943E287A2EF30D1497989840832
A089DC38F5C36361FB506B815224640CBB4CB38C5D56D6970447D13D1E8A7637
AE112A86DA9B2B0726CFAE85B918BF848816BD7F5BD18E974B38C77734565AE3
FD487B855D2D65136B39A73FA7B66B4DEB01EAADE01972F5D39FFCFC3765E4E9
47C1F855F43F49E67D6D9577CE32212096AD99CC00F93C0893F027C5264C4783
65F434BE3561981A6F71084F39228156080E61A5CF9F8AD165684778BE5D1214
1D01BC7C7F598BC28C87E6DEF4565D8A63388F93D5529DFB7254409A74CA5C78
EF4214775FC75D89CB86B88BC6030F718F50F7D66FA9F74AC255681B6ACFA49A
0074F80A00339A36503478382D32E699C448B9303DF152E77E7573B535FFB40A
AE424DAC6A9AE56B39CFFE0B0367B5F4F614563DE3B4CA30586318CA250322A6
681B39CFD58D9E7958AE206C8F2DCE01D899C44CCFA1D198AA44501ACC6B8CFE
EC811899F75825B49F396EED17D95703CFE367B5BC06617C356E5619F9CD919B
654DFC2F2ABDDD6360150D8A976058EBE34D113E7475480681AB0A1FF0580BE1
FC9F7BC36EA193D2164B2EB8D623AC874E83A3A28724FC8EC1B5A9E5ADCE8462
D4AF1963BA1A9F28932C04FF17AB32747D2416C856F1581BC01794D15B0BB02F
8BF8CAAB12843316FFE1211F2F595EE6E3AA4488654A16340147ED0B203E3456
5410A26D8C9F2115E4156BEDE05CA81819FEFAF953B5193A4C3136FB16885F33
CEE94ED70DB203C109E7D414E9969702D73FBBB31B4D82E3AAC88EA8D6980725
7B88186C5DEF881E4DC65D44990D5ECF5B8504A3CECF4206E28308AE776244EC
005297EF7326F01704BD18ABD49E04FD0D7E7E519B1F038DEDBB3185951D66D4
4BE8D61B18621E12C6B02C411585F53FDD0F68EB0B5F6488A928B5B07EE8CA0A
94600DE7113D253CDE2C76B3918A56E922A9724E7872C7E290C60E0CF644E3C5
24EB1E65114E465229057EE787E736A981E1918D8FE798631FD4FE51885A5B65
C14DE540F379D3C3C0F09DFEF903BBDBF66C563B1C62A573EB0603EBDCFBE84B
03677AF26C01317E5200D904E305FF3136593C252F8E623B37652A0E484C539C
A9C812E95CFB0B9824F8EE9F97A4C0C2E935BE89DF8C762937D25A392E01178F
95F0D1A6AE42D57C9409A96281BC088472F8CEDED2DBA08DA84BF6179C7DACDD
45F7DFA8D152161310F5B198FE8D4D7009A18799C7757FB47F029BF5F01B913B
4C66EB2D59689D5CD72BC59E13C7210D57629DE10685B1FA508DC3ED49DEC9A9
4ED1D318ACB60AA416F6729F0DE5C57A0EC29C4E130B0487DB674BCE6F811BCD
F07DCFF5EC6B2384636422616E6D657075F5E01F783FB4F3EDC22E9EF3DE5068
5690EEC6F5278A7BA6E2DAEB8084095B465E2F66E5102435B8A904848B708C59
4997C66384E433D8349BD5238FFC9D69022345B02BAE6A3DE412892DB69D7B89
EEE9266625B8EEA74B72EA9287307F64D91556CC94AA1D6CAAFCC6D6156D4F1C
E3EA366B16666D20599886ABA8734B92776748E5EB53D5B30F6084F7AB201D5E
716201027D7C0ED2F4966C0ABE9BB774763C7C5045C1A3F72B11069E13117E11
7CC6885E1E852ECAB4BEB313DAC59534055C45774180E763DCDDDE64DB3DDB11
50BFBDFE2A4C1D595F0017AF147BB002506089FB5EBC57B74283D5F732770BFD
58B902E45847FA0022E7B6DB9FE55D07C7BF57A6864A7734844CC534ED9951A1
22DA3927A2A8140922EE41524F0BCE548DADC047A0489DDBE9CC612336CF5CED
21130586C0F48CACD6B13F932F76668D4532D3127599AE7037EBA388BF0E4879
6A1E4CBFAA0022EAC1D44615E450B6F99522F2589D3459AAC8DD9DB8B72BCEDB
25924053F6809B3D25DA50E29C60E76F1E7F5B5320DAAE8656E939C45D05D983
BECEBF267FF41F617766E30226972BFAC06D4748DFFFAE2C2D5E0003D4B3F239
3A7FFA021D9AC4A2B0B62221DE0FD9E3D0EF80A592A2CFDBF306C4946BCDB069
89584B013936438C89A1B42F77EA19EEF541BF1B130CAFD5D9692E48B0498649
B1B7D24F131238080A70CD38D4F83CA05611C4741AEDADA722DC233AC6374874
82ACE403CEDAF685BBA04CD1441394577550715434D80BB574B091934AEB7FCF
34A38A7C99A8E40A1527C47684FBF8FE6A0F51D1B216DC0863C1C96432199161
C40213C79B0AD5FAF233A64B2029406DFBC47C8C5255541B6B4F1AF04EEE2D7A
7B68C47BC7BE7BF018A2B89A392E617A066256F393FA05924C9145D014FD9152
B986C9E79D60F451878709FF0F3540B7466DC199221386CE348B65C98AFA536A
33D0B685ADDEAC414A479B3EF27D5988B51FDED72480F6A1A43340DFBFA9DD75
D55D383121F9E713D8CEAE6AB1B297A1EC2E1196DF48E6C3589E5D0558E9C6CD
17632CC09EAB03F728BC4C67F7E173D6E9DACD99BA670244FA34CE78BA7807DB
C4F4BF52526017748E10F1EB223A96C6D76D50F9513FC5807D76103BAA33C2CE
4F959E6DCE32DD8EFC78F4457A05DDD932D4ACD754959A236DB415821A93D7DF
DDD91AFD8BDC659B59EB5B84A49BF6535562013BA7112D078FF1B717760C31F1
A7F75F7FE7831849BBDC507FE875369F49680F54737973B85AA5DE4789623172
4F09FCE02078234F752BA08CC6520E6051C93DD85D1677B01201D20BFD57AF70
A0CAD6791D6B466F815468C5EACE0F9B1A0BE397E9695081348F752DC3810683
272C67809BC5D021A412A7D31E55B42B6CABD4DDA8D917D7418A38505C2C2F57
C9B9155FEDFAA3017EE7D1C75577E347FBAA585B35C237099C14C9A7ACA5529C
85AEE0D6E20317A3E6673CDE5E7ED8B4B983DEFE2C73C31BBCDCCB101919A6DC
FECD12CC142523BAED6F78E28FAB02E804590664DBBD4AA4A6992F02C1E054A6
0FA53DCEC02036554C89A8BA6BB1CD3121E5388A55600481CF8E0C0952F401D6
C3EA92D314164FF8E335035081D3C5AB43EEA5462A96EFE50CE071E6C17D1CAF
E58E244998FD425014E0B0B54B49740E82E0221DE3D863DBABFEB39C3B1AF4EC
CBA498F2A4CFF965DF4DBC6383F212D5427813CE902BF8E30B0B85320FD502EB
1B0E606B6A5E263648CD77C9F77B731029DA91B5A8AA22F401D844112C004E24
83F0AE30D89C5A78F76AF0772D00A1E0BEEEC3E3ED5DD84C90EDF242277963BB
341049337AC3F33CE02DE93E8F5FF463A788A14E02A522F039FD7D26B0BEFD97
BE429A0F527D7182EE133C5291FF35C7F269E1EB73575EFF92D9328B39406063
3A5C0F208ABDAF933DDD2F48A1E8571B418FB32AC6686B4DBB1FEB65D7858678
296D85EF316648D079375800EC712627B34926CF41C542F491472F5798EA2AAF
B6A9F5E540202B5F136DCD474D6C662AE3C7F11CB7A40D926E3CCDE38A87ECE9
657B806688FFCE2B10E27AE03F1E9DAD1207A2A85B3FB70C349E2627F7FE372C
F3174D8777E4985ABB10F116042460ACE945591284367CC3BB3D312CCB4999B6
F1BF5FA095E705954523C573ED0F0F10887A149C68CD0A16417DC30561FB66D8
42CC989C6F694ADBB064BB5E6E57CF11FDBE72381B2399EC7ADEF283A9B0D302
A1D969F69612A6AB78C6EA08E27A527B11AD2121249F117C7A56843B1E17B0B1
D1E0DA0DD6CCEA83C63D60F314FA826259C8C2167542D16FF3B46CE34669B38C
1F1EA068CFD585F1F90AFC2DA5A7C3ED9E08DE1F9926F5DC4E0FC422123185E7
AB7F6B6C8E1F33CFB724E4B3401541CE133B9F22DDA38D4F23489987C8FED499
D4456298A9865B4F0B47F21190977DE56A36DD665CFF0B117FC3B697036D25E0
E2103B98BB3787CEF2908A2797691BC01FBAF3E48850C048A870A866314CCBF0
F9C1FA776B54B67134242A353514B0726B1EBB53352EDB15886980C6690058C4
30F9EAF88DA2F1A54408D3836EEA6C5F00B8A5D2AC0063C86F266A2571A7E2AE
7C866962C0D6E7636F440A3B72F5BF141D73180C1915B757941DCA5D5B7CBA22
7E841314D6E7303EA9506BE3019D85633B4E87EFCF6D86C36FFD2CF9A0672D8A
9517FEF736A5093D81544D0C75AFE7894B7D9F65E035EAE63E6B9A205B37FAF7
4E76CAEFB2CA314FC615563CF3F4D1CCA8154703BCABA0EA88F62229C9ACACDC
03A56F203E46B94E0A13397C98604821E01F883E2387CCE3FD1A76EA4148CA9E
68BD8B49D45C39AB0C620CA7D12A86892AC441692A166F51180202F4EC3854B8
50FAD53B2CEFC495A0393D832FD8786DCD567772E50B23AFC76A54A611BF0708
7ECFB7488510CFB2C175428F1DE21520C338B48A6F4AC9EA487D4DBC690116F8
6F896BBC3E4120412AAC07BFAEB390811B0E628793F8DD8C4BEF8B088AF00799
06A59A9B27A74880B78B8637E50653985212DD45FE677027DF5C40B37465AA83
3476022E907300C2C72D3A485F5D38F1A7B21C8BE16748BD1702BC49AAEC6E07
B1BC1727D1DB053625AB8B3945DFA40AFF97A2018DCB532E7E8671A722C20037
C0C29D6E0E06DEF5E0AF6B987E9D36F97B9EC014A366124918507A2EACC31280
04C7F840EBB21B0BB11F81987310906055CE5BCCDF7C32880F7E2A0B40660E16
941DDBE36DE54CDE16DE96BDD88B14688C08AAE4938109B81E8794A83D3A2EB4
4A0BD8903FA386CC83FF7FE031FCC6F3C99DBD3DD961C713E8B6A395B55E82A6
4423927FEE493B050C22C86467E39C0E1B341A4BD614860B102CFA6379B767CD
355EBFA68A663B583F56187B048F80E29238B208F1F062EACE8A2D7DBC83CC80
218FA484AC546146A6DA52E5C8432255E6F4CBC3DCA58EF0691805817042878E
F3B77426C0A61E3D07F123DDADEBC0F4D8798ACDCE3106B0E722238AE0B0ACDA
EFBE54FA5AAE849219E77FD7650105F954DAC187B128DC3DDDFAC7C3494A4644
A647D090084D52FA14098E35ACA1BB77D98E658773AACB3D7FB0FA688384E32C
072833618C72F007500BEB9E3FB121E4AF6BAE5493E1F7C105252486AFDD8751
DD35C516605C354980D1F01307597B7985146464554C49A87E5D6C1E6BEDC1EA
3F575A376B5BE7EB71548429B8AB2E6FD6A1D5D02B254DAEE84886EFE5EFBEC7
7BD25B41952FAAE6D91BF1448CEDAD1C5336F06655A9EA3B23A094729DE9FFBC
51C659427D9AE9F3B5E6BFD4818475E1B32A9F9926AA17D9E4E6D9228C473641
4B1EAE8C048EDCB5922928A9C8212A808E1D039B8AEB42A0A2CBDABF6383EC04
011D88EE5ECE841B10ECBA60F37AA1EB1B375C5306D2CCE0BA2855A71955F05C
5CDF7515AF810EEFC1D9746E80DB8C6D1F1660CE961CAD132F9A194C5A5C331B
EE6569884A7DED0464C622EF317CB84590236ED09E4A2811494884EB156215B5
9F71D6FA34C119186C6C8E7BAEB668201C6E0D5A7904E5C03AFBE8B05BACA12F
ABB1F44A6AD6056EF703AB3A493D96813F4A685ED14953A35F57102DABFCCA77
0D8CEACDBCF4911AE0A6FB53BDD7463DC5E38A9BEC309A087F718947C99749A5
E6EC7CEE1B0BF87A7293CD3C778A826BEBC455FCA9D89C56824DC3B5FA1D29BA
10FA582302106DB094EA752F77981A5F15849F57EBD2BC97D65610D2F9FF2467
E24CF3B2C054C716F79C50C0C52F097ACD4E959C81A8E3D6DB21F728E19039F7
5B567634A64F8D416E96E20BC194
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark{restore}if
%%EndFont
%%BeginFont: LucidaSans-Typewriter
%!PS-AdobeFont-1.1: LucidaSans-Typewriter 1.006
%%CreationDate: 1993 Dec 07 10:43:50
%%RevisionDate: 1998 Aug 11 09:45:12
% Bigelow & Holmes Inc. Pat. Des. 289,422
% Lucida is a registered trademark of Bigelow & Holmes Inc.
11 dict begin
/FontInfo 9 dict dup begin
/version (1.006) readonly def
/Notice (Copyright (c) 1991 Bigelow & Holmes and Y&Y, Inc. http://www.YandY.com All Rights Reserved.) readonly def
/FullName (Lucida Sans Typewriter) readonly def
/FamilyName (LucidaSansTypewriter) readonly def
/Weight (Medium) readonly def
/ItalicAngle 0 def
/isFixedPitch true def
/UnderlinePosition -100 def
/UnderlineThickness 50 def
end readonly def
/FontName /LucidaSans-Typewriter def
/PaintType 0 def
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0] readonly def
/Encoding StandardEncoding def
/FontBBox{-12 -205 618 928}readonly def
currentdict end
currentfile eexec
D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
2BDBF16FBC7512FAA308A093FE5F093A8DD28A1105B8F1F45E83350E1A28A9FB
120979EB7214FB22705850743580927667FFE0A7F79B201CE22DE069A46E69CE
07EF71A03D0719532050C8E023D2D3B0BC64AB04C9048B447134BA084A29DE31
AA6C3E58684B266860B1428F95F838E5E279C2EE9D6C8BD836B1554C2B17A1FB
3431BFCD994A9900889B090388203BB5EB869ECD8E5374B724D279E941796B51
2B9A129F690746109B89666D1C4DC0594C07C7BA3A993BD85F63CDB6911C7173
D4BC2B5372FE9DF6F902A1AF01F36C4E12A93A5E8E781BCEC47D70E12A13D9DD
E203E7344655838AB5D9E0332A2F41E29140361904C0103B5C1CC6CD9185F359
9166A1D59404EE64C441F412802C79896447F0CAFCECBA339A7918DAF195EC11
5ECA390C6E6BE029A13DCBB49148B21B6675BF9BBC168669BAA4EB9A6C0826DE
476186CEC9462EB3C1C34F4BD2C3DE28426FE84C3747D3894735856D585C7565
3493F792593C9F2DF043842CA4B7334F101019DE241FFDAB47BB7AD92208F155
9E173E7AB4B4B20A31FE1934CA70C680AED8E7621C8AE143CE86C70A831B6811
D838290481144F47547D034A893A55A70ADD53FFB9184E32504C988DB7B866EF
D978A8BEF2D95B7284325DA96DC5EC4CDC72BE1FF19A64C20F06ADC0511C2DEE
D173897B9CC85E2797C5FAC9BABBEEBA98AD92AFB248FA68493462A254182C4D
74C6015B2E051A6C01EAA64D5BB8AFE4FBAEC50F70C945AAF733C7B0F7166237
0BF63C246E94023837575D02BEC675BB4B5754D6A9D26140BA17197CD4A6FF4E
01A45898DD0F2BE9148FD403D181CF3B498F8F696E6146D2E5511ACA11F04D70
E268F1D4B5DE04B45FD7B2D6290324B1C341427D0A4107DD587499B7A4B09E56
92F323BC687A2F4EA3B19D7E909D7E57B80AD9F00D0CC3D3B7A1ECFC649A6142
11EBEBA3D0A82B2003DA541162672A62617B5C7D69D73B3D107D4E9FF30796CA
DE8F0C39DF8F351E153B539BF8237387D56F9CAEC0D5C3C68A433198010C94B8
8ABB8D8D08262725A0904BCB5EA7C17A39552A1F26283F54A8AA17D716B28286
06C553F92C65BC84B42D8361F4F4AAC58F6CA8228F29E7E73BC9CA5E20B1B2C5
ACB704C5AB8E84B4BB49A972F49D260EF7A5A6763155E7FF5DB75C1A20FC3A54
B30B97E23CD3030B8255F7C59FCD30333A29536DCB1FFE24A9224B08CF14E591
7061FEDF22A5CA189508F1C6E52F1D15141F83FFE6AAE18CC0C8944004642195
78846685909845C2A0B9924D7BC3394593C5B714D11C02CC38D1DD42E3743CD9
89FF2F781D1E47C6309659B02050118CBD931E99A7EA9CF38D4DC9CEF2618FDD
A774EBDBE7A95014ED450627C39C2D01215CEDDAE51158AF491169D7FDCAC504
4E1EB97149F9616B2BE2C332D736A277AD129893E668AB6E56729EBD42E0590F
3089B1CCB31958BE05D50483317505A8B7891E5023062BFA55918CA493180E5D
EFCCF303FC7994638F0F14DB3C180F84CFCACA59F16FCEC9F8C1BEAA555F7D56
544EEFEBF1D3F3CCDC189380F5A35DE65E45B0135F710FE5A044AB0E8D7E3E68
73CD7F574245CB42154B3241037B8AA1DB2A52AB99BBA392E127C63CD8959D9A
65EF45AEE10546E33593CB959BFA693C5E3296F653357D5368782DA29016C87D
70824346621EF420E7F2982C73F8942122D709569A92AFFF54C0ACD377489056
3561F6EB92307AC314EBA480C184AD8F07CD7C6689E3A8B78AF75972140DA275
C25E80658F5864CFC3C4B17778DCFC0217DDB3A85A0A284B863AC79188F0E884
2F590B0085CFCB984961F1CD5EDA44A2417FC94C3F69B34ECA68F8B27F929DA6
23BD36780349A3383193FA419DB7587DB5F5922047941C76D585FD8A324639A4
99E137A5A092F17D358DCB42CE0BE35F8144E2002A8954BD5B13DD4572D53EB1
9881B664DE528A57110A96B88325D8B21EDD46E771AB9D6FAC3A27E55198D0EE
516FA4D2E555C2E1E24231224B4ACEA3B8CFC9140FFEBDE5DBF52B698D593F36
4EF5244E5C2ECDB3C7CF828FE728E6F4C99DDCB5BA5FEEA87AAE2B9120E5AA44
4F64A64A0E6703534E93E08D96B612BF0C2ABE3A90DDEC4DD57D22D23B16F7A8
243FC9CB2229D5B0142C50820744E06EF35A656F243E44E6D85747365B2ACEC1
7BC0FF1579B936B58E4DA0E7332E8D2A3403C9C0DBA6785D535BEF2E6F53BA13
CADA440506513B9DB5F7344BB7D0DF0A1DE792CF53A1F7EA532AA8F26AB1F77B
FC0AE724678F69DF20A093BBBAD9C03510CF28BF2ACB640167F539509184350E
C343C85483662486008F30C8136AE86E9BC61E9C1FE4523E7319D0A1459D4AF4
CA3E25ABEE3FF84898D2AD8C05632CB2DAB23060C8897B8EBAD04E05797C4119
7F77ECC27DDFB51EC441AD9B81C081229AFD69BF599FC83F56F85621AC7DF5E2
49AF73118C9823A693F5A90CE04C91F3F45E3A14562065620BE6E77AC7F78950
20BC2F46A2412DF008F552DEE49A701AE8572A7DD638B5DC7DC5D627FF9D5CC2
75A64EE8695B96B49130909A70334FBC6C9C897AC8CC1631E2E0F61902132F2D
ECE8905A29E776978DACE10B6AD982CA4C80F4DC6ED8AABB58003444F93682EE
2F1FE8AFE0670DF5E4BC47D6A687951B22215259897FA61021ED425F565D92C4
F614377CF4D5037FA2283AAC577783EE72BCD98BCB05F01560F6DA2A6F087163
C374A355BDA461F252CB9ED18195F08B051E9EF5AAA28F777E4B38F62EF56EEC
3EE18494D13A029420CB695539D43C062F396D9CBBD1AA80E2362280A0F91AEC
3A1E5D5E2FEF17B65265C9A76680CFA3A67D589C574FA31FD4122A54124C19BA
D8B0AE29EF4B873111C519537C11F8E32A0DE7F1B00C0C5434ABEADCF1323766
9F1DADA849333F1DDAFCA7FAC202D9355F924C856231FE5DA6FC520202CF4D1D
F2047A7B2E9AB3BD3FCE1504892B17EF92053C4E7C1E1790D9FC2341291F1139
A23D6AEEFF1023A3D84E29BFA4D11F5F79BB7E9BCCF3D1B9C0498C448C9D873C
45060B78BF529CB5F5F4324540C415147AF4EDC20504B77FCA9B275215D6B710
5A14F6355EE890914DF8EAEFFD592BCAFE306B7401AA39AA61A760448D037AA5
318C90F8EC19FD29C47B622E863C651A0054BDA26E4A14C0E6DE8DE3FBD5E295
C59B4F4538075C8BB2347E6619D0FDB77CC23C3DA462621C2348A7C611D6F521
07D132189931FB8BA438606FA02B732C1649706F5BDFED4AC10C607F4240135E
AAA9237C12F92559BA3F0D48F2EFEF55B620932D1B397A8F565D1F9145C81348
7B06D15C33162AC05B9D7D2B7F5115538972801845639CD4B53953B33D1AC75B
15345DBE9977CD34F786C80D8826B7C68473EEFCC107238DE011B0A08BEB5CDC
F3472CD3619146BFE3029848E69DD2A3ABFEC7612E15059A6BD6808FDD27FE78
706C3D705A8D5543DA4787059081A6A585A023EEA94A804E8BFB6DC285BFFC4A
759B6AADEC57A2E38D6A681D7DFEAE21ABAC15D147F15C61AD76623A26225973
3B3344B3C18FE43DC600BD480CBA8CAF9126E3612B0389F3618CDC776C1A674F
AE69FF7C2EF73A5D6EA1F965E0928650FE30A83A15C00091182783623694A93F
392546669D87BFF1E19531A0A4DA1CE63A550BA4268110A665BA7B4091B85A2C
F846EE895ED1D2D40F6E0173A1F092DFC8DC7C0D7F506660715142C26D8D8BC8
7CA02556A50D18B642A4419844D92E160D53481B097B43E196153EAED66E59E2
575E6EA8817D4A3BEAB6276E21F36104C234C84ADD48BCAF0C16C583431535BC
379BF175AD135A368144BFFA48618A0B734DD5BCCAB37F9EF75CC006E0CFB735
84EB71D0ECF2E74C10AD6C6980CDD73AFF6402879FA59D6444D7C57A5AF99BE4
E19B0AC28C5518130C71CC70E85259C43AFE47F482E880F3D982D02298742764
01CFA264455E90C789303DB5587BB836EF15909A1BDC9077F70F2BABD919636A
F8239D454135EFF2B9C4FE20F19AD1CDA32B4C4F709FDA6EB7885C9BFB606366
6855A5C672AD6C37B3C03E932C5284A0E87C77EF00A6A494F034F6D97DC28D94
F3F277A02BE0CC2C08EB092D1B42F3AD513A10F8DBA26EEA6E6060E80D52B199
D3DAE4428BA8B60D429A8080
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
%%EndFont
%%BeginFont: LucidaBright-Demi
%!PS-AdobeFont-1.1: LucidaBright-Demi 1.010
%%CreationDate: 1993 Aug 11 14:19:39
%%RevisionDate: 1998 Aug 11 09:45:12
% Lucida is a registered trademark of Bigelow & Holmes Inc.
% Bigelow & Holmes Inc. Pat. Des. 289,421
11 dict begin
/FontInfo 9 dict dup begin
/version (1.010) readonly def
/Notice (Copyright (c) 1991, 1992 Bigelow & Holmes and Y&Y, Inc. http://www.YandY.com All Rights Reserved.) readonly def
/FullName (Lucida Bright Demibold) readonly def
/FamilyName (LucidaBright) readonly def
/Weight (DemiBold) readonly def
/ItalicAngle 0 def
/isFixedPitch false def
/UnderlinePosition -100 def
/UnderlineThickness 50 def
end readonly def
/FontName /LucidaBright-Demi def
/PaintType 0 def
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0] readonly def
/Encoding StandardEncoding def
/FontBBox{-287 -205 1122 928}readonly def
currentdict end
currentfile eexec
D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
2BDBF16FBC7512FAA308A093FE5F093A8DD28A1105B8F1F45E83350E1C85FB4B
8E0949C46537E67A9D92EE02E5724E15F8F3B3E93C8F35B871FFEA1B4DB0DB19
B21866F8DFDF2DCFA70C3B351F8279D762826688E0BAA2A93A97B39FD3DC894E
BE465409060FB4A755BCB74CCF9250ED2CFC57DCF3888B1DF55F1E8FCB6AA441
B3006FB7A4CE515E6EE633C9C492186870A0935E897EA3CB3F072F9B78FD4BF0
A8D1466FA5EA1CB4D188F300EC0C49B3F67B0B7F39290107FE36BD36A6DC32B9
E774FDD17523E7AEDA9B664CC8FFC808F3450F244B6D2ED304C838A9CD353F30
11BB4F0EE55209B464ACBB3501EE7348661D12C5846573444207293BB2B16730
719E5CAE448461186329331A717AF04574C8F1D8F3F26C2B575B6C182E390E00
8817A70D21F5DA3ADB0EEAA86FD793068922723A28DC27060F79E34533749F85
AB9F381CBB865FB8A641BBBD0924B947734C73FD7AC576C17638941885EE92BF
3C0D2B8F5374F36FA27FF568D6DF65D2DD3FC9D67268B6551AB2E4EA58BE1E93
E6E016233E7D4E8D54A47418CF91DE34178FDC9666D9EFC7D0E1E7FBF2742CDD
ECBE888F47B4C192212D8E1E058A2DC36A19A900C20BCDC50E8712A8ED3E6D23
CEC6F81C987F54CE4F7174F6C4D80055F87B980427CA2095E2D236055D8D4F24
A5AF8C162D8C5D0918889614FEB7A2D51EE4BDB9E6E9840FE2D8A1F8B975B64B
76766095B00B3BBB75DBEE08A7E5877208A658006E6AD382239E2AAB88824048
5B0A6E4018FB03C530C2DB257C42BDF8F4324B6D4F8117D51896E73ADCF88131
996F6B19CB8FEFCBC7FC09F9FDB1F478E3990DF27DDD98272660643BA5293F09
EA311F49295304D67B63178154B496940A35962879E04DC0D6283698A574592C
951B42EA7469609F072D384661B2F06F856541DAF493CECD10A54A3281F18C95
43719F90217B8FADECBD0A0255ABDEB555EE5EA7AD4D7782A8387E49B8F4641A
F333A71119C04E7C670E03482CC063B75149A74D1489DFD974588112D4CB6303
89A4F601F288DC3A55C75248E4DB744F6E0C54E83C14066C3443BB3AD6DC4CF0
05D393672AF65F0D015C86E975DA613B1A7BF337DA8B9939021638949FB0039D
A5F622FC4100B2ED4E790A79B996D7C775A472FC1F39ABD4BDEA1D5AD143A5E8
6CB8B7FFA77448B48C85E46121067F55360E3E2A83100A7477F0591A23CFC73E
FC3F8B29E27BED418F2926E3496E3DD9C4C65867FE27A3706B63E838D767065B
E62A4C6637A0FCB6836AAAC07E50D024D45A9A51D740B3A96E7AB386AB4E1154
350DFD382B371DA1EBCC42F52683F8F49270A5065C793517EE94E6FDB094D882
E2C716E592FB4DAB538C280A8164E79E8841E7080BFEE466A1D97C63750404EC
5E3A3F07070905E0622558353F91315BFDCEEA44345BB1F938A561CDF4FDB94A
ECC50946E35C24843A7B62D21FC003739276995E30218C8E845A418D697A3875
96180740D0CEB6C5B14CFFDBC5AE92C777114569740FBB5BED1DE0646F56F9C7
FD6AABBE605A4785AEDB5A295F77C7F3597665D53F539E269F431CBC87F668E9
9B42621C2C212F7FBC125CD7E22B34A5E2E9064C6443F42ABD28940932FEFDDD
1A0EB7BB9A900DEBB6211CE3C17EE39CBDF02CC4DB937D6D65EDCEC72E05BE70
6BE6BBF540B73C9268FBB2ECDC51608951A6720E2C11C10F3C61A201262D85E0
479B51BAE5B57A30844CDFEA6506CD5686D98B39AB7430B63CF0AA378B53F687
F703558DAE23665B1FD2DADF6013E01082F9D8123A4AC2F36BE4210E0AB3B21F
2EAA800EBFA9C86AD6D937F0C76DA62C7C44A8456C90D18E5663632646CC97FD
BFBB1AC537877E4FB07EEE6EEF5803B850BE68193F5E23E31CACB91A692CCB05
2937052B6DAB8C02FBBFAE92983B396478CDA35BC3F1E4B5686D6A10AC0E8CF0
DEA7DA19881B7402A86FC94651A5F857CA4C4A88CC3673E1CBDA35F3E0A293F6
B321287A6CE2DB2F6ECBA45FABD9550C187F17A987C761F8B61F42CFA8CB1A4F
90D21ED4DC9E5CC0512C9C3F7AE1A3858110044549CF53648510388D1BE1DE71
BB00FD82A0B7EA1F6B653685213207D10B85D19D578718D637AD0BA43F25AA0D
EB5235E70EF63788154D9A74857C7730449E1984B04EDAE8B1EE0DE1E4EF7BE1
3D95DD16C898748C1D026197BF5DE48A607A46D2B8EC4CE738C2135F89745E15
A6815F9DCCBB0341A60D255609C293876FC0CF3CAF1CD0400E4AE09D44DD72DA
7D50680F1D903957F2FDF4A84F96CD019F9C02775BE06FE300093652D986941C
7B1B9FC7BED14BB903EC66BE875F2FED6D8C0C6CA0657270010ED6BE2A5A1B55
19E85D2EE252D3F04655CBFDA4566BC870528C4FD8940971FEA8DF73B718FB94
45722C3B50DCB437DF6E518BF765B66B1E674E79A8D053D902A94AD5A3EE7570
03F14EFEEDC96845A7D73A8C48CCA72DFF86EEEAB106ACAB24B88CAB8036938B
55DA649EC8E5B332A532423F9E1F4E57C6F2EAE2E28DA245CF5A9E7909D36114
DD6004726643092F42A67EE784C1AC964AC3DBA158DBF8F477F6E757E1AF2574
1872DC4238FA1C1B8059EB4B11BB65CEA4CBF519CD4D1EA7DD7F08DEC1B25535
99AB9825918728B868B3AA59D66F52396DC8366EF0658444A03E10EDAABDE7CA
00B18B226FB7B22C78454297C7BB3F5BCBF2412175AA1C4FDF7E79C70FB1214D
6A9C084BAE2DFA603DE0BEC4EA38F08B3A9CBD30E81B98B528A087DFA19EF923
237465D8696CF8F5BAF6DA8989774ACFD442A06B9BFFA4D0C10F163838C2BF01
30E8EA2AB8F95AB54E2C062C7546A3227931C1FE2C22D41AE7EF9365E29ECCAC
34C2711A70D9C4921940795D7BC356146971EB2CCB636B4D512028B138AC87CA
21015749FEE7BCBAE79E96A3B25B6EA6B32AA0CB3C522EAFDCB5EC4D3518092C
3329DDA6019F58908E9C3813BE1EFEDD7A9E9862D01F7BB852E308B42F72B5A2
CD4DF2A05ABF7CDE6977DB56950FAB75D47F9EDFD5644F56D09DDA5F61F93969
978E007A8FC7FED44A4E85D27691E651E981FE647D03707515460A6A9760A39E
4D26EC05ED435B5742B9BBE1B00B630C49BE768178462BA6C8E1E0030D9B08E4
D94ED908816740A02EEB4F43290E43D895488B80D5D4B0EC2502DF618406C788
D458FD6E3BB082203B6250D255E3550CAB2937EB8912FA88CB9B7EEEEED5AD05
206BD9533D607EFD797CC41B64C6E2273CBBEBBF8FA50F2523F5AD2499F49174
1C203BD16325744724512D4F2BC2618DD3F109D9C52AAEDA5EE9E4AB406DC1F2
015A90C5DC9DF127E900F604D5A22DDD6FED2ECC93CE5396EDB54D49987E6094
24E48CC4691B4B422C873ABC84A4F5900D98811EF530D3A23F8E8F30E0BD5A1E
2C6F3EC2243BFECF17867643B0227A66C525C0A3842B6FB5466B158636F5AF7C
0340EAC929330C4C37C4E6A8B1A2C66CA1D91578D4FEB5DFCD1564E483B4CB34
D8EE38B95D2F4FB183433141A02993E1E795C5EC45DC68CEC9DC4133FBBBEC2F
D3E050C82C60D87E85B67B8E8F59A14395AA88975D64961D40E9BA2EF074FB60
3D188643B8CEBDDF4C3B30D674A1AEB6C8C3E0B256135CC77B3A4CDC0A1E9F19
1300C3FFB4672D49F46405FA7B1743A48B6B055CBEA3ACFE3470FAF423F7F609
CBD6B8D13C6575DFA932C6C2E33A3CA1E6F468A97B008AAFBFBE7F59D33746FF
FC8B7A641617CAEF381F98A64077C74D0A750615E657159D60D27EFDD672359F
ACAF24C997895E85DA91A46E2C2A93FC5BE6587C65454BC3200CFE3BFE4E6703
D8885066337A1C325FFFE0DFA71606F619099305ABDA093EBB1FEDB040C5A57F
55DC3762A4FA0718BBE91EC9B75AF8CF4DA692A2F3C608DE81EA453AEC156768
A95035AA131552247AD8D85DBA90F7CAE0476D1BBDD76CEB8D1EF7402976457B
0816F9F4E2955E9254DF57372F057ECD00EE79B05F8EAE210F0E3319A0EBF1CD
7B6CDE6FFDE272592990EC2CEC4A54F18CFB2DE2E347BB274369FB86A36F4E47
0082DEA5D88D4F05D023081F678CFE58E7D9AFF5343BF2A456C42FD15EF7899F
1B2DE6186C5F08DAF34F5EAE33FD7097CED52050007FFB75CC78DFD646A8DAD3
508F9BF37A8BDF68425A881A239D203CCC7640C505C32438B21BFECABC304B25
BE59939BEB9CC5A8F3F8AA5A18B2A8C1E8EF9FCBAFF5CF80B7458E4EC14E9C6E
78C9EBE8FEA91B5C95AE0EC12A0F552C48C519B5BE339877DCF7697BCFB86ED5
76C66E6A6DD54F4C7DAA5834443D63B2F1DB15F6EE40544BB4A0187EA177F934
F930B7239828D849D12B8C973435C3DDAA8FCB41B1F9EADC6BC71F9E8C6648B8
59D6D91E295A36E58D2E17C703B754699983F371F605BFC462EFD8A7079538A5
63A00B1E3DEE28B7287861800F9CECEFC39919927337E9ECACA8D7D9829B2591
D8B6754F7A02C6715587CEC78FD539ACB8A9EB92DF6B4F55321F31A914B8808E
6DC0C43C7C18CA5AEA0E71142522022F51862EDA124274B375B4631F8E32D8E4
FD799590D4ED552209C80F5C59EB3F9EDD58EA2C18CDB0A90323013932ABAA9A
D8C95D1DCDC6704F26D995F20B2F2CB111E2023A4F5522CFE857699A4123733E
B3BFE28D3324575C95E27F4B0484A504C16EFA8357EB6C414CE5875128361B40
0C0F175A2D16AE1FF8DFC7FD672CC0E8B07D5327A084F9BC0CABE0598A9C3DD7
1A23F408D23839C9B46B3217BE6F20452106B9BFB35DB0DB657D0C0F463C0DD7
8D62E30396D1CBF5149219C4058E0DD6F6E1CDCE7D8742502490DC51084B4610
D578B52B7B382FE9052A9F0555C9EB64ADF49118B7CF472FE10D04343E0C4853
E720286B6F14AF5BE28FD1672FF0D4D8F7267DF57DC25AFAEA9603BFB4A339F8
A6194C93F304A4F9876741D0406E95B7FD97DD5F0AC41AE3629E73376D2F261E
1B954283552E4BE25A727B74C96DB2C59145192010D323B1F56E4DF96E778914
C8C4B20D9A15DB9B6E55D41463CD63689382AD45D837013501D46BA94B3F63FD
0DEE315187EEAFBF661F20F5A2442ABA5CBF6935D8640B9BF636AA116AAAF266
34BA0762789E2317B7D5CDCF42F9B15878414EC5EF166A28EF47556ABED44624
79C435F19F515251ED6F25CFF52848ACD7A2AC757440BAE2B2115ADC297679EB
67EF99585457C8078A708ED35AEB86C15730BF3A7AAA4229AD4EE31DB46E232C
239405078097D02AB9A1FB97EE6D6F2500498B9CCD8A87DD759A6E34281ECDAF
03734790C3F6323EA7E3AB0A4695249E89B7DB7E3A6BD87914A5341B2172C116
3F97187141F671DE835DE1378576DE25A0424EEAEAB30528C4352DF96840E3EF
8D111B7C1355CA7C01BC6E96FC7781DDA4FA11D2246EE4505C8EE0D8AC6BE84D
D8AEEA27B133227E9BCE7CBD112C8592B57BB913EF8FCD54366DD5CCC3019E46
3CD6ACA285B846A46DF25C7DB1284A344130194379F4337A437F91569758E0D7
5F79D6153ACB451C8DAFEAA357B8AF8F1722CBC5DCCBECEC5B1CF3CC81D6F153
DBA3B35D5A55E149C1F9048C0BEE5853B5FDF77CF3041D26706A750A2B5150B3
72728B82EB0AA9DC21A4265EFB0164794AA7B4DDEFC9441D57E9231CC57F0654
A83F5F8969F1949ADAAE297140C3E59D0E975E6DB23560E9B9B5671FD8666C4B
878D898D38E34BECFC49C52E85A66D0F6197FF037B9F8420165210CE849337FB
AD86B5C4E461E54E2F46625B99B942269FB8152FC5B83E606E150102EDCD1264
6DE7D701997C93BC5DD8CB90D6D2CB99013894AF6730184B7FD52274D77CE6FD
27F168A18C760721D551AD127BA78F97EBA581E132537C660630BA9A5E88BC8F
3A09C83DB706A9C6991B1BDF819934B221375B29460C5C9B1E8D26F7B4DAD37A
B4145854461DBF7F1B33E22C24DE1810BB9421049C54FEBE01002DB9ECAB218A
46AE61F223ADA791441580F70A7ACC31B3D4BB832F703F70F37AE1DE21FCAA0E
559D346B48BD079EE0444039269A8B0EF29F611B66866465D98E7868E218BADA
39FB04FFDC5378514A552D2ED6806D9C0CEEC67D9EC3A5B288575522B5B8DED1
52BCBA9C275F5DC2956325BC0BAEC3D55EFB11B4F6F23184C9073A3D424B4798
CC3D7EA0D06E14E4E02E59C176A53EC7E8AA66A78B3E723673F6188806D65A31
CF67C6A5630267A7476A6154FF59666072150C2E7CE801590E697FB3F683805F
BEF78422057AC1C94F05AA5BECB9AF69B9C1B9757BD631983747B985AD3D4A39
753505BAD1C6721584BA0D2F6F0F04672A9BBFBA5C7EF4DB44267D7BA0EC0871
80B72061CEF1D21F3B1986D3C5706158C11E0CC785B7383D902896B2F3A2FCDA
A2017A2323F2BFB06C80035743E4FE19A4B070B9D3894F432425D1EFE33E6112
B9B7E66E16971E73EA04A387885B602CC8FFD866DB3CC1E5492F176EA0D2E90E
011AE6438C4B5A540D6CC434D550CDA2641B9F5C850C08FD9FAC9CF43BAED59E
6DC927C793826DEF390F626E5FD6C154359A41FF90E4ACFC
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
%%EndFont
TeXDict begin 40258437 52099154 1000 600 600 (wieesgeht.dvi)
@start /Fa 135[38 3[27 1[30 2[41 43 64 21 41 1[21 43
39 1[36 44 1[42 37 16[39 6[22 6[41 21[18 2[21 21 40[{}21
67.9953 /LucidaBrightCE rf /Fb 139[45 45 45 1[45 45 5[45
45 45 3[45 12[45 2[45 2[45 6[45 2[45 1[45 68[{
TeXBase1Encoding ReEncodeFont}15 74.7193 /LucidaSans-Typewriter
rf /Fc 27[41 105[45 41 3[47 29 38 33 1[48 45 47 71 23
45 1[23 47 43 30 40 48 1[46 41 6[47 1[49 1[52 1[50 40
2[43 2[64 1[53 1[24 58 1[41 42 57 52 46 56 13[45 1[45
2[20 24 20 2[24 24 40[{}44 74.7193 /LucidaBrightCE rf
/Fd 141[41 1[57 54 1[85 28 2[28 2[36 49 57 11[62 3[63
14[53 1[62 21[25 45[{TeXBase1Encoding ReEncodeFont}14
87.6717 /LucidaBright-Demi rf /Fe 190[43 65[{
TeXBase1Encoding ReEncodeFont}1 54.6286 /LucidaBright-Demi
rf /Ff 135[45 2[49 29 7[24 6[42 12[52 3[53 2[61 4[44
6[45 69[{TeXBase1Encoding ReEncodeFont}10 74.7193 /LucidaBright-Demi
rf end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 600dpi
TeXDict begin
end
%%EndSetup
TeXDict begin 1 0 bop 0 0 0 1 TeXcolorcmyk Black 0 0 0 1
TeXcolorcmyk 1677 577 a
tx@Dict begin tx@NodeDict begin {10.79294 6.21198 91.44824 45.72412
2.29048 } false /N@A 16 {InitRnode } NewNode end end
1677 577 a 32 w @beginspecial
@setspecial
tx@Dict begin STP newpath 0.8 SLW TeXDict begin XC@black end 0.4
true 3.8 neg 6.21198 neg 87.64824 10.79294 .5 Frame gsave 3.0 -45.
PtoC Shadow 0 0 0 0.4 setcmykcolor gsave fill grestore stroke grestore
gsave 0 0.1656 0.584 0.116 setcmykcolor gsave fill grestore stroke
grestore gsave 0 0.1656 0.584 0.116 setcmykcolor 1. .setopacityalpha
fill grestore gsave 0.8 SLW TeXDict begin XC@black end 1. .setopacityalpha
0 setlinecap stroke grestore end
@endspecial 74 w Ff(L)1800 564 y Fe(A)1832
577 y Ff(T)1873 597 y(E)1909 577 y(X)23 b(Quelltext)1594
935 y
tx@Dict begin tx@NodeDict begin {13.80516 8.4301 111.32481 55.6624
2.68753 } false /N@B 16 {InitRnode } NewNode end end
1594 935 a 47 w @beginspecial @setspecial
tx@Dict begin STP newpath 2.6 SLW TeXDict begin XC@black end 0.
true 5.6 neg 8.4301 neg 105.72481 13.80516 .5 Frame gsave 3.0 -45.
PtoC Shadow 0 0 0 0.4 setcmykcolor gsave fill grestore stroke grestore
gsave 0 0 0.3 0 setcmykcolor gsave fill grestore stroke grestore gsave
0 0 0.3 0 setcmykcolor 1. .setopacityalpha fill grestore gsave
2.6 SLW TeXDict begin XC@black end 1. .setopacityalpha 0 setlinecap
stroke grestore gsave 1.0 SLW TeXDict begin XC@white end stroke grestore
end
@endspecial
45 w Fd(pdfT)1884 958 y(E)1927 935 y(X-Compiler)875 2684
y
tx@Dict begin gsave STV newpath 0.8 SLW TeXDict begin XC@black end
/ArrowA { moveto } def /ArrowB { BeginArrow 1. 1. scale false 0.4
1.4 1.5 2. 1. .setopacityalpha Arrow EndArrow } def /NCLW CLW
def tx@NodeDict begin 0.0 0.0 neg 0.0 0.0 0 0 /N@A /N@B InitNC { NCLine
} if end gsave 0.8 SLW TeXDict begin XC@black end 1. .setopacityalpha
0 setlinecap stroke grestore grestore end
875 2684 a 2794 700 a
tx@Dict begin tx@NodeDict begin {18.61697 12.98303 78.42354 39.21176
2.81697 } false /N@C 16 {InitRnode } NewNode end end
2794 700 a 32 w @beginspecial
@setspecial
tx@Dict begin STP newpath 0.8 SLW TeXDict begin XC@black end 0.4
true 3.8 neg 12.98303 neg 74.62354 18.61697 .5 Frame gsave 3.0 -45.
PtoC Shadow 0 0 0 0.4 setcmykcolor gsave fill grestore stroke grestore
gsave 0 0.0621 0.219 0.0435 setcmykcolor gsave fill grestore stroke
grestore gsave 0 0.0621 0.219 0.0435 setcmykcolor 1. .setopacityalpha
fill grestore gsave 0.8 SLW TeXDict begin XC@black end 1. .setopacityalpha
0 setlinecap stroke grestore end
@endspecial 2875 646 a Fc(Klassendatei)2875
746 y(Zusatzpakete)875 2684 y
tx@Dict begin gsave STV newpath 0.8 SLW TeXDict begin XC@black end
/ArrowA { moveto } def /ArrowB { BeginArrow 1. 1. scale false 0.4
1.4 1.5 2. 1. .setopacityalpha Arrow EndArrow } def /NCLW CLW
def tx@NodeDict begin 0.0 -5.0 neg 0.0 0.0 0 0 /N@C /N@B InitNC { tx@Dict
begin /Lineto /lineto load def false 0 setlinejoin pop end /AngleA
-90. def /AngleB 0. def /ArmA 10.0 def /ArmB 10.0 def /ArmTypeA 0 def
/ArmTypeB 0 def NCAngle } if end gsave 0.8 SLW TeXDict begin XC@black
end 1. .setopacityalpha 0 setlinecap stroke grestore grestore
end
875 2684 a 567 700 a
tx@Dict begin tx@NodeDict begin {18.61697 12.98303 102.87631 51.43816
2.81697 } false /N@D 16 {InitRnode } NewNode end end
567
700 a 31 w @beginspecial @setspecial
tx@Dict begin STP newpath 0.8 SLW TeXDict begin XC@black end 0.4
true 3.8 neg 12.98303 neg 99.07631 18.61697 .5 Frame gsave 3.0 -45.
PtoC Shadow 0 0 0 0.4 setcmykcolor gsave fill grestore stroke grestore
gsave 0 0.0621 0.219 0.0435 setcmykcolor gsave fill grestore stroke
grestore gsave 0 0.0621 0.219 0.0435 setcmykcolor 1. .setopacityalpha
fill grestore gsave 0.8 SLW TeXDict begin XC@black end 1. .setopacityalpha
0 setlinecap stroke grestore end
@endspecial 648
646 a Fc(bin\344re)e(Formatdatei)648 746 y(Fonts)i(\(Metriken\))875
2684 y
tx@Dict begin gsave STV newpath 0.8 SLW TeXDict begin XC@black end
/ArrowA { moveto } def /ArrowB { BeginArrow 1. 1. scale false 0.4
1.4 1.5 2. 1. .setopacityalpha Arrow EndArrow } def /NCLW CLW
def tx@NodeDict begin 0.0 0.0 neg 0.0 0.0 0 0 /N@D /N@B InitNC { tx@Dict
begin /Lineto /lineto load def false 0 setlinejoin pop end /AngleA
-90. def /AngleB 180. def /ArmA 10.0 def /ArmB 10.0 def /ArmTypeA 0
def /ArmTypeB 0 def NCAngle } if end gsave 0.8 SLW TeXDict begin
XC@black end 1. .setopacityalpha 0 setlinecap stroke grestore
grestore end
875 2684 a 1480 1283 a
tx@Dict begin tx@NodeDict begin {15.8 11.8 53.63864 26.81932 2.0 }
false /N@E 16 {InitRnode } NewNode end end
1480 1283 a 31 w @beginspecial
@setspecial
tx@Dict begin STP newpath 0.8 SLW TeXDict begin XC@black end 0.4
true 3.8 neg 11.8 neg 49.83864 15.8 .5 Frame gsave 3.0 -45. PtoC Shadow
0 0 0 0.4 setcmykcolor gsave fill grestore stroke grestore gsave 0
0 0.3 0 setcmykcolor gsave fill grestore stroke grestore gsave 0 0
0.3 0 setcmykcolor 1. .setopacityalpha fill grestore gsave 0.8
SLW TeXDict begin XC@black end 1. .setopacityalpha 0 setlinecap
stroke grestore end
@endspecial 17 w Fb(DVI)p Fc(-Datei)875
2684 y
tx@Dict begin gsave STV newpath 0.8 SLW TeXDict begin XC@black end
/ArrowA { BeginArrow 1. 1. scale false 0.4 1.4 1.5 2. 1. .setopacityalpha
Arrow EndArrow moveto } def /ArrowB { } def /NCLW CLW def tx@NodeDict
begin 0.0 42.8 neg 0.0 0.0 0 0 /N@E /N@B InitNC { tx@Dict begin /Lineto
/lineto load def false 0 setlinejoin pop end /AngleA 90. def /AngleB
-90. def /ArmA 10.0 def /ArmB 10.0 def /ArmTypeA 0 def /ArmTypeB 0
def NCAngle } if end gsave 0.8 SLW TeXDict begin XC@black end 1.
.setopacityalpha 0 setlinecap stroke grestore grestore end
875 2684 a 2320 1283 a
tx@Dict begin tx@NodeDict begin {15.8 11.8 64.47456 32.23727 2.0 }
false /N@F 16 {InitRnode } NewNode end end
2320 1283 a 32 w @beginspecial
@setspecial
tx@Dict begin STP newpath 0.8 SLW TeXDict begin XC@black end 0.4
true 3.8 neg 11.8 neg 60.67456 15.8 .5 Frame gsave 3.0 -45. PtoC Shadow
0 0 0 0.4 setcmykcolor gsave fill grestore stroke grestore gsave 0
0 0.3 0 setcmykcolor gsave fill grestore stroke grestore gsave 0 0
0.3 0 setcmykcolor 1. .setopacityalpha fill grestore gsave 0.8
SLW TeXDict begin XC@black end 1. .setopacityalpha 0 setlinecap
stroke grestore end
@endspecial 17 w Fc(Hilfsdateien)875 2684
y @beginspecial @setspecial
tx@Dict begin STP newpath 0.8 SLW TeXDict begin XC@black end /ArrowA
{ moveto } def /ArrowB { BeginArrow 1. 1. scale false 0.4 1.4 1.5
2. 1. .setopacityalpha Arrow EndArrow } def [ 184.94283 184.08928
184.94283 202.01465 /Lineto /lineto load def false 0 setlinejoin
Line gsave 0.8 SLW TeXDict begin XC@black end 1. .setopacityalpha
0 setlinecap stroke grestore end
@endspecial 875 2684 a
tx@Dict begin gsave STV newpath 0.8 SLW TeXDict begin XC@black end
/ArrowA { moveto } def /ArrowB { BeginArrow 1. 1. scale false 0.4
1.4 1.5 2. 1. .setopacityalpha Arrow EndArrow } def /NCLW CLW
def tx@NodeDict begin -20.0 5.0 neg 0.0 0.0 0 0 /N@F /N@B InitNC {
tx@Dict begin /Lineto /lineto load def false 0 setlinejoin pop end
/AngleA 90. def /AngleB 0. def /ArmA 10.0 def /ArmB 10.0 def /ArmTypeA
0 def /ArmTypeB 0 def NCAngle } if end gsave 0.8 SLW TeXDict begin
XC@black end 1. .setopacityalpha 0 setlinecap stroke grestore
grestore end
875
2684 a 2951 1286 a
tx@Dict begin tx@NodeDict begin {16.36348 11.8 97.46252 48.73126 2.28174
} false /N@G 16 {InitRnode } NewNode end end
2951 1286 a 32 w @beginspecial @setspecial
tx@Dict begin STP newpath 0.8 SLW TeXDict begin XC@black end 0.
true 3.8 neg 11.8 neg 93.66252 16.36348 .5 Frame gsave 3.0 -45. PtoC
Shadow 0 0 0 0.4 setcmykcolor gsave fill grestore stroke grestore
gsave 0 0.1242 0.438 0.087 setcmykcolor gsave fill grestore stroke
grestore gsave 0 0.1242 0.438 0.087 setcmykcolor 1. .setopacityalpha
fill grestore gsave 0.8 SLW TeXDict begin XC@black end 1. .setopacityalpha
0 setlinecap stroke grestore end
@endspecial 3033 1245 a Fa(externe)d(Programme)3033
1320 y(\(Index,Bibliothek\))875 2684 y
tx@Dict begin gsave STV newpath 0.8 SLW TeXDict begin XC@black end
/ArrowA { moveto } def /ArrowB { BeginArrow 1. 1. scale false 0.4
1.4 1.5 2. 1. .setopacityalpha Arrow EndArrow } def /NCLW CLW
def tx@NodeDict begin 0.0 0.0 neg 0.0 0.0 0 0 /N@F /N@G InitNC { tx@Dict
begin /Lineto /lineto load def false 0 setlinejoin pop end /AngleA
-90. def /AngleB 0. def /ArmA 12.80363 def /ArmB 10.0 def /ArmTypeA
0 def /ArmTypeB 0 def /AngleB -90. def NCBar } if end gsave 0.8 SLW
TeXDict begin XC@black end 1. .setopacityalpha 0 setlinecap stroke
grestore grestore end
875 2684 a 875
2684 a
tx@Dict begin gsave STV newpath 0.8 SLW TeXDict begin XC@black end
/ArrowA { moveto } def /ArrowB { BeginArrow 1. 1. scale false 0.4
1.4 1.5 2. 1. .setopacityalpha Arrow EndArrow } def /NCLW CLW
def tx@NodeDict begin 0.0 0.0 neg 0.0 0.0 0 0 /N@G /N@B InitNC { tx@Dict
begin /Lineto /lineto load def false 0 setlinejoin pop end /AngleA
90. def /AngleB 0. def /ArmA 10.0 def /ArmB 10.0 def /ArmTypeA 0 def
/ArmTypeB 0 def NCAngle } if end gsave 0.8 SLW TeXDict begin XC@black
end 1. .setopacityalpha 0 setlinecap stroke grestore grestore
end
875 2684 a 1460 1643 a
tx@Dict begin tx@NodeDict begin {10.84695 5.62248 58.46756 29.23378
2.61223 } false /N@H 16 {InitRnode } NewNode end end
1460 1643 a 31 w @beginspecial
@setspecial
tx@Dict begin STP newpath 0.8 SLW TeXDict begin XC@black end 0.
true 3.8 neg 5.62248 neg 54.66756 10.84695 .5 Frame gsave 3.0 -45.
PtoC Shadow 0 0 0 0.4 setcmykcolor gsave fill grestore stroke grestore
gsave 0 0.1656 0.584 0.116 setcmykcolor gsave fill grestore stroke
grestore gsave 0 0.1656 0.584 0.116 setcmykcolor 1. .setopacityalpha
fill grestore gsave 0.8 SLW TeXDict begin XC@black end 1. .setopacityalpha
0 setlinecap stroke grestore end
@endspecial Fb(DVI)p Fc(-Treiber)875 2684
y
tx@Dict begin gsave STV newpath 0.8 SLW TeXDict begin XC@black end
/ArrowA { moveto } def /ArrowB { BeginArrow 1. 1. scale false 0.4
1.4 1.5 2. 1. .setopacityalpha Arrow EndArrow } def /NCLW CLW
def tx@NodeDict begin 0.0 0.0 neg 0.0 0.0 0 0 /N@E /N@H InitNC { NCLine
} if end gsave 0.8 SLW TeXDict begin XC@black end 1. .setopacityalpha
0 setlinecap stroke grestore grestore end
875 2684 a 532 1704 a
tx@Dict begin tx@NodeDict begin {18.61697 12.98303 82.72548 41.36273
2.81697 } false /N@I 16 {InitRnode } NewNode end end
532 1704 a 32 w @beginspecial
@setspecial
tx@Dict begin STP newpath 0.8 SLW TeXDict begin XC@black end 0.4
true 3.8 neg 12.98303 neg 78.92548 18.61697 .5 Frame gsave 3.0 -45.
PtoC Shadow 0 0 0 0.4 setcmykcolor gsave fill grestore stroke grestore
gsave 0 0.0621 0.219 0.0435 setcmykcolor gsave fill grestore stroke
grestore gsave 0 0.0621 0.219 0.0435 setcmykcolor 1. .setopacityalpha
fill grestore gsave 0.8 SLW TeXDict begin XC@black end 1. .setopacityalpha
0 setlinecap stroke grestore end
@endspecial 613 1650 a Fc(Fonts)j(\(Type1,)613
1750 y(Type3,Bitmap\))875 2684 y
tx@Dict begin gsave STV newpath 0.8 SLW TeXDict begin XC@black end
/ArrowA { moveto } def /ArrowB { BeginArrow 1. 1. scale false 0.4
1.4 1.5 2. 1. .setopacityalpha Arrow EndArrow } def /NCLW CLW
def tx@NodeDict begin 2.56073 0.0 neg 0.0 0.0 0 0 /N@I /N@H InitNC
{ NCLine } if end gsave 0.8 SLW TeXDict begin XC@black end 1. .setopacityalpha
0 setlinecap stroke grestore grestore end
875 2684 a @beginspecial
@setspecial
tx@Dict begin STP newpath 0.8 SLW TeXDict begin XC@black end /ArrowA
{ moveto } def /ArrowB { BeginArrow 1. 1. scale false 0.4 1.4 1.5
2. 1. .setopacityalpha Arrow EndArrow } def [ 156.49008 113.81097
38.41138 113.81097 /Lineto /lineto load def false 0 setlinejoin
Line gsave 0.8 SLW TeXDict begin XC@black end 1. .setopacityalpha
0 setlinecap stroke grestore end
@endspecial 1502 2701 a
tx@Dict begin tx@NodeDict begin {15.8 11.8 48.22069 24.11034 2.0 }
false /N@J 16 {InitRnode } NewNode end end
1502 2701 a 32 w
@beginspecial @setspecial
tx@Dict begin STP newpath 0.8 SLW TeXDict begin XC@black end 0.4
true 3.8 neg 11.8 neg 44.42068 15.8 .5 Frame gsave 3.0 -45. PtoC Shadow
0 0 0 0.4 setcmykcolor gsave fill grestore stroke grestore gsave 0
0 0.3 0 setcmykcolor gsave fill grestore stroke grestore gsave 0 0
0.3 0 setcmykcolor 1. .setopacityalpha fill grestore gsave 0.8
SLW TeXDict begin XC@black end 1. .setopacityalpha 0 setlinecap
stroke grestore end
@endspecial 16 w Fb(PS)p Fc(-Datei)875
2684 y
tx@Dict begin gsave STV newpath 0.8 SLW TeXDict begin XC@black end
/ArrowA { moveto } def /ArrowB { BeginArrow 1. 1. scale false 0.4
1.4 1.5 2. 1. .setopacityalpha Arrow EndArrow } def /NCLW CLW
def tx@NodeDict begin 0.0 0.0 neg 0.0 0.0 0 0 /N@H /N@J InitNC { NCLine
} if end gsave 0.8 SLW TeXDict begin XC@black end 1. .setopacityalpha
0 setlinecap stroke grestore grestore end
875 2684 a @beginspecial @setspecial
tx@Dict begin STP newpath 0.8 SLW TeXDict begin XC@black end /DS
2.0 2. CLW mul add 2 div def /PSTricksDotFont 0. [1.0 0.0 0.0 1.0 0.0
0.0] FontDot /Dot { moveto gsave 1. 1. scale (b) show grestore }
bind def 99.5846 85.35823 Dot end
@endspecial
875 2684 a
tx@Dict begin tx@NodeDict begin {99.5846 85.35823 } false /N@J 10
{InitPnode } NewNode end end
875 2684 a 951 2350 a
tx@Dict begin tx@NodeDict begin {10.60394 5.62248 67.1975 33.59874
2.49072 } false /N@J1 16 {InitRnode } NewNode end end
951 2350 a 31 w @beginspecial
@setspecial
tx@Dict begin STP newpath 0.8 SLW TeXDict begin XC@black end 0.
true 3.8 neg 5.62248 neg 63.39749 10.60394 .5 Frame gsave 3.0 -45.
PtoC Shadow 0 0 0 0.4 setcmykcolor gsave fill grestore stroke grestore
gsave 0 0.1656 0.584 0.116 setcmykcolor gsave fill grestore stroke
grestore gsave 0 0.1656 0.584 0.116 setcmykcolor 1. .setopacityalpha
fill grestore gsave 0.8 SLW TeXDict begin XC@black end 1. .setopacityalpha
0 setlinecap stroke grestore end
@endspecial Fb(ghostscript)875 2684 y
tx@Dict begin gsave STV newpath 0.8 SLW TeXDict begin XC@black end
/ArrowA { moveto } def /ArrowB { BeginArrow 1. 1. scale false 0.4
1.4 1.5 2. 1. .setopacityalpha Arrow EndArrow } def /NCLW CLW
def tx@NodeDict begin 0.0 0.0 neg 0.0 0.0 0 0 /N@J /N@J1 InitNC { tx@Dict
begin /Lineto /lineto load def false 0 setlinejoin pop end /AngleA
180. def /AngleB 90. def /ArmA 10.0 def /ArmB 10.0 def /ArmTypeA 0
def /ArmTypeB 0 def NCAngle } if end gsave 0.8 SLW TeXDict begin
XC@black end 1. .setopacityalpha 0 setlinecap stroke grestore
grestore end
875
2684 a 1007 2701 a
tx@Dict begin tx@NodeDict begin {15.8 11.8 53.63864 26.81932 2.0 }
false /N@J2 16 {InitRnode } NewNode end end
1007 2701 a 32 w @beginspecial @setspecial
tx@Dict begin STP newpath 0.8 SLW TeXDict begin XC@black end 0.4
true 3.8 neg 11.8 neg 49.83864 15.8 .5 Frame gsave 3.0 -45. PtoC Shadow
0 0 0 0.4 setcmykcolor gsave fill grestore stroke grestore gsave 0
0 0.3 0 setcmykcolor gsave fill grestore stroke grestore gsave 0 0
0.3 0 setcmykcolor 1. .setopacityalpha fill grestore gsave 0.8
SLW TeXDict begin XC@black end 1. .setopacityalpha 0 setlinecap
stroke grestore end
@endspecial 16 w Fb(PDF)p Fc(-Datei)875 2684 y
tx@Dict begin gsave STV newpath 0.8 SLW TeXDict begin XC@black end
/ArrowA { moveto } def /ArrowB { BeginArrow 1. 1. scale false 0.4
1.4 1.5 2. 1. .setopacityalpha Arrow EndArrow } def /NCLW CLW
def tx@NodeDict begin 0.0 0.0 neg 0.0 0.0 0 0 /N@J1 /N@J2 InitNC {
NCLine } if end gsave 0.8 SLW TeXDict begin XC@black end 1. .setopacityalpha
0 setlinecap stroke grestore grestore end
875 2684
a 1952 2701 a
tx@Dict begin tx@NodeDict begin {15.8 11.8 53.63864 26.81932 2.0 }
false /N@K 16 {InitRnode } NewNode end end
1952 2701 a 32 w @beginspecial @setspecial
tx@Dict begin STP newpath 0.8 SLW TeXDict begin XC@black end 0.4
true 3.8 neg 11.8 neg 49.83864 15.8 .5 Frame gsave 3.0 -45. PtoC Shadow
0 0 0 0.4 setcmykcolor gsave fill grestore stroke grestore gsave 0
0 0.3 0 setcmykcolor gsave fill grestore stroke grestore gsave 0 0
0.3 0 setcmykcolor 1. .setopacityalpha fill grestore gsave 0.8
SLW TeXDict begin XC@black end 1. .setopacityalpha 0 setlinecap
stroke grestore end
@endspecial 16 w Fb(PDF)p Fc(-Datei)875 2684 y
tx@Dict begin gsave STV newpath 0.8 SLW TeXDict begin XC@black end
/ArrowA { BeginArrow 1. 1. scale false 0.4 1.4 1.5 2. 1. .setopacityalpha
Arrow EndArrow moveto } def /ArrowB { } def /NCLW CLW def tx@NodeDict
begin 0.0 -14.22636 neg 0.0 0.0 0 0 /N@K /N@B InitNC { tx@Dict begin
/Lineto /lineto load def false 0 setlinejoin pop end /AngleA 90. def
/AngleB -90. def /ArmA 10.0 def /ArmB 10.0 def /ArmTypeA 0 def /ArmTypeB
0 def NCAngle } if end gsave 0.8 SLW TeXDict begin XC@black end
1. .setopacityalpha 0 setlinecap stroke grestore grestore end
875 2684
a 2473 2152 a Fc(Der)g(Aufbau)f(eines)g(T)3163 2172 y(E)3195
2152 y(X-Systems)g(mit)2648 2252 y(pdfT)2812 2271 y(E)2845
2252 y(X)g(als)h(Compiler,)f(der)g(eine)2792 2351 y(Ausgabe)f(im)h
(PDF-)h(oder)g(im)2516 2451 y(treiberunabh\344ngigen)e(DVI-Format)3446
2551 y(erlaubt.)p 0 0 0 1 TeXcolorcmyk 0 0 0 1 TeXcolorcmyk
eop end
%%Trailer
userdict /end-hook known{end-hook}if
%%EOF
|