thinreports 0.10.2 → 0.10.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (154) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.travis.yml +22 -6
  4. data/CHANGELOG.md +6 -0
  5. data/Gemfile +1 -1
  6. data/README.md +5 -6
  7. data/Rakefile +11 -25
  8. data/lib/thinreports/generator/pdf/document/draw_shape.rb +1 -1
  9. data/lib/thinreports/generator/pdf/document/draw_template_items.rb +1 -1
  10. data/lib/thinreports/layout/legacy_schema.rb +1 -0
  11. data/lib/thinreports/version.rb +1 -1
  12. data/test/features/dynamic_style/expect.pdf +3714 -0
  13. data/{examples → test/features}/dynamic_style/image.png +0 -0
  14. data/{examples/dynamic_style/dynamic_style.tlf → test/features/dynamic_style/templates/styles.tlf} +0 -0
  15. data/{examples/dynamic_style/dynamic_style_in_list.tlf → test/features/dynamic_style/templates/styles_in_list.tlf} +0 -0
  16. data/test/features/dynamic_style/test_dynamic_style.rb +152 -0
  17. data/{examples → test/features}/eudc/eudc.ttf +0 -0
  18. data/test/features/eudc/expect.pdf +0 -0
  19. data/{examples/eudc/eudc.tlf → test/features/eudc/template.tlf} +0 -0
  20. data/test/features/eudc/test_eudc.rb +27 -0
  21. data/test/features/feature_test.rb +58 -0
  22. data/test/features/graphics/expect.pdf +475 -0
  23. data/test/features/graphics/template.tlf +309 -0
  24. data/test/features/graphics/test_graphics.rb +12 -0
  25. data/test/features/hidden_item/expect.pdf +0 -0
  26. data/{examples/hidden_shapes/hidden_shapes.tlf → test/features/hidden_item/template.tlf} +0 -0
  27. data/test/features/hidden_item/test_hidden_item.rb +12 -0
  28. data/test/features/image_block/expect.pdf +0 -0
  29. data/{examples/dynamic_image → test/features/image_block}/img200x100.png +0 -0
  30. data/{examples/dynamic_image → test/features/image_block}/img50x50.png +0 -0
  31. data/{examples/dynamic_image/dynamic_image.tlf → test/features/image_block/template.tlf} +0 -0
  32. data/test/features/image_block/test_image_block.rb +35 -0
  33. data/test/features/list_events/expect.pdf +659 -0
  34. data/{examples/list_events/list_events.tlf → test/features/list_events/template.tlf} +0 -0
  35. data/{examples/list_events/list_events.rb → test/features/list_events/test_list_events.rb} +7 -3
  36. data/test/features/list_manually/expect.pdf +599 -0
  37. data/{examples/list_manual_generation/list_manual_generation.tlf → test/features/list_manually/template.tlf} +0 -0
  38. data/test/features/list_manually/test_list_manually.rb +25 -0
  39. data/test/features/page_number/expect.pdf +400 -0
  40. data/{examples/page_number/page_number.tlf → test/features/page_number/template.tlf} +0 -0
  41. data/test/features/page_number/test_page_number.rb +24 -0
  42. data/test/features/page_number_with_list/expect.pdf +721 -0
  43. data/{examples/list_page_number/list_page_number.tlf → test/features/page_number_with_list/template.tlf} +0 -0
  44. data/test/features/page_number_with_list/test_page_number_with_list.rb +21 -0
  45. data/test/features/palleted_png/expect.pdf +0 -0
  46. data/{examples → test/features}/palleted_png/palleted_png.png +0 -0
  47. data/{examples/palleted_png/palleted_png.tlf → test/features/palleted_png/template.tlf} +0 -0
  48. data/test/features/palleted_png/test_palleted_png.rb +14 -0
  49. data/test/features/report_callbacks/expect.pdf +169 -0
  50. data/{examples/report_callbacks/report_callbacks.tlf → test/features/report_callbacks/template.tlf} +0 -0
  51. data/test/features/report_callbacks/test_report_callbacks.rb +18 -0
  52. data/test/features/text_align/expect.pdf +0 -0
  53. data/{examples/text_align/text_align.tlf → test/features/text_align/template.tlf} +0 -0
  54. data/test/features/text_align/test_text_align.rb +12 -0
  55. data/test/features/text_block_overflow/expect.pdf +0 -0
  56. data/{examples/tblock_overflow/tblock_overflow.tlf → test/features/text_block_overflow/template.tlf} +0 -0
  57. data/test/features/text_block_overflow/test_text_block_overflow.rb +25 -0
  58. data/test/features/text_block_singleline/expect.pdf +0 -0
  59. data/{examples/single_line_tblock/single_line_tblock.tlf → test/features/text_block_singleline/template.tlf} +0 -0
  60. data/test/features/text_block_singleline/test_text_block_singleline.rb +15 -0
  61. data/test/features/text_block_style/expect.pdf +1390 -1
  62. data/{examples/tblock_styles/tblock_styles.tlf → test/features/text_block_style/templates/basic_styles.tlf} +0 -0
  63. data/{examples/tblock_styles → test/features/text_block_style/templates}/font_size.tlf +0 -0
  64. data/{examples/tblock_styles/tblock_styles.rb → test/features/text_block_style/test_text_block_style.rb} +9 -5
  65. data/test/features/text_character_spacing/expect.pdf +0 -0
  66. data/{examples/character_spacing/character_spacing.tlf → test/features/text_character_spacing/template.tlf} +0 -0
  67. data/test/features/text_character_spacing/test_text_character_spacing.rb +12 -0
  68. data/test/features/text_word_wrap/expect.pdf +0 -0
  69. data/{examples/word_wrap/word_wrap.tlf → test/features/text_word_wrap/template.tlf} +0 -0
  70. data/test/features/text_word_wrap/test_text_word_wrap.rb +30 -0
  71. data/test/test_helper.rb +1 -10
  72. data/test/{unit → units}/core/format/test_base.rb +0 -0
  73. data/test/{unit → units}/core/shape/base/test_internal.rb +0 -0
  74. data/test/{unit → units}/core/shape/basic/test_block_format.rb +0 -0
  75. data/test/{unit → units}/core/shape/basic/test_block_interface.rb +0 -0
  76. data/test/{unit → units}/core/shape/basic/test_block_internal.rb +0 -0
  77. data/test/{unit → units}/core/shape/basic/test_format.rb +0 -0
  78. data/test/{unit → units}/core/shape/basic/test_interface.rb +0 -0
  79. data/test/{unit → units}/core/shape/basic/test_internal.rb +0 -0
  80. data/test/{unit → units}/core/shape/image_block/test_interface.rb +0 -0
  81. data/test/{unit → units}/core/shape/image_block/test_internal.rb +0 -0
  82. data/test/{unit → units}/core/shape/list/test_format.rb +0 -0
  83. data/test/{unit → units}/core/shape/list/test_manager.rb +0 -0
  84. data/test/{unit → units}/core/shape/list/test_page.rb +0 -0
  85. data/test/{unit → units}/core/shape/list/test_page_state.rb +0 -0
  86. data/test/{unit → units}/core/shape/list/test_section_format.rb +0 -0
  87. data/test/{unit → units}/core/shape/list/test_section_interface.rb +0 -0
  88. data/test/{unit → units}/core/shape/list/test_section_internal.rb +0 -0
  89. data/test/{unit → units}/core/shape/manager/test_format.rb +0 -0
  90. data/test/{unit → units}/core/shape/manager/test_internal.rb +0 -0
  91. data/test/{unit → units}/core/shape/manager/test_target.rb +0 -0
  92. data/test/{unit → units}/core/shape/page_number/test_format.rb +0 -0
  93. data/test/{unit → units}/core/shape/page_number/test_interface.rb +0 -0
  94. data/test/{unit → units}/core/shape/page_number/test_internal.rb +0 -0
  95. data/test/{unit → units}/core/shape/styles/test_base.rb +0 -0
  96. data/test/{unit → units}/core/shape/styles/test_basic.rb +0 -0
  97. data/test/{unit → units}/core/shape/styles/test_graphic.rb +0 -0
  98. data/test/{unit → units}/core/shape/styles/test_text.rb +0 -0
  99. data/test/{unit → units}/core/shape/text/test_format.rb +0 -0
  100. data/test/{unit → units}/core/shape/text/test_internal.rb +0 -0
  101. data/test/{unit → units}/core/shape/text_block/formatter/test_basic.rb +0 -0
  102. data/test/{unit → units}/core/shape/text_block/formatter/test_datetime.rb +0 -0
  103. data/test/{unit → units}/core/shape/text_block/formatter/test_number.rb +0 -0
  104. data/test/{unit → units}/core/shape/text_block/formatter/test_padding.rb +0 -0
  105. data/test/{unit → units}/core/shape/text_block/test_format.rb +0 -0
  106. data/test/{unit → units}/core/shape/text_block/test_formatter.rb +0 -0
  107. data/test/{unit → units}/core/shape/text_block/test_interface.rb +0 -0
  108. data/test/{unit → units}/core/shape/text_block/test_internal.rb +0 -0
  109. data/test/{unit → units}/core/test_shape.rb +0 -0
  110. data/test/{unit → units}/core/test_utils.rb +0 -0
  111. data/test/{unit → units}/generator/pdf/document/graphics/test_attributes.rb +0 -0
  112. data/test/{unit → units}/generator/pdf/document/graphics/test_basic.rb +0 -0
  113. data/test/{unit → units}/generator/pdf/document/graphics/test_image.rb +0 -0
  114. data/test/{unit → units}/generator/pdf/document/graphics/test_text.rb +0 -0
  115. data/test/{unit → units}/generator/pdf/document/test_font.rb +0 -0
  116. data/test/{unit → units}/generator/pdf/document/test_graphics.rb +0 -0
  117. data/test/{unit → units}/generator/pdf/document/test_page.rb +0 -0
  118. data/test/{unit → units}/generator/pdf/document/test_parse_color.rb +0 -0
  119. data/test/{unit → units}/generator/pdf/prawn_ext/test_calc_image_dimensions.rb +0 -0
  120. data/test/{unit → units}/generator/pdf/prawn_ext/test_width_of.rb +0 -0
  121. data/test/{unit → units}/generator/pdf/test_document.rb +0 -0
  122. data/test/{unit → units}/generator/test_pdf.rb +0 -0
  123. data/test/{unit → units}/layout/test_base.rb +0 -0
  124. data/test/{unit → units}/layout/test_format.rb +0 -0
  125. data/test/{unit → units}/layout/test_legacy_schema.rb +3 -1
  126. data/test/{unit → units}/layout/test_version.rb +0 -0
  127. data/test/{unit → units}/report/test_base.rb +0 -0
  128. data/test/{unit → units}/report/test_internal.rb +0 -0
  129. data/test/{unit → units}/test_config.rb +0 -0
  130. data/test/{unit → units}/test_layout.rb +0 -0
  131. data/test/{unit → units}/test_report.rb +0 -0
  132. data/thinreports.gemspec +0 -1
  133. metadata +122 -123
  134. data/examples/character_spacing/character_spacing.rb +0 -8
  135. data/examples/dynamic_image/dynamic_image.rb +0 -31
  136. data/examples/dynamic_style/dynamic_style.rb +0 -150
  137. data/examples/eudc/eudc.rb +0 -20
  138. data/examples/helper.rb +0 -50
  139. data/examples/hidden_shapes/hidden_shapes.rb +0 -9
  140. data/examples/list_manual_generation/list_manual_generation.rb +0 -22
  141. data/examples/list_page_number/list_page_number.rb +0 -17
  142. data/examples/page_number/page_number.rb +0 -33
  143. data/examples/palleted_png/palleted_png.rb +0 -9
  144. data/examples/password_setting/password_setting.rb +0 -10
  145. data/examples/password_setting/password_setting.tlf +0 -45
  146. data/examples/report_callbacks/report_callbacks.rb +0 -14
  147. data/examples/single_line_tblock/single_line_tblock.rb +0 -13
  148. data/examples/tblock_overflow/tblock_overflow.rb +0 -20
  149. data/examples/text_align/text_align.rb +0 -8
  150. data/examples/typeB_page_size/B4_ISO.tlf +0 -45
  151. data/examples/typeB_page_size/B4_JIS.tlf +0 -45
  152. data/examples/typeB_page_size/typeB_page_size.rb +0 -17
  153. data/examples/word_wrap/word_wrap.rb +0 -26
  154. data/test/tmp/.gitkeep +0 -0
@@ -0,0 +1,152 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'feature_test'
4
+
5
+ class TestDynamicStyle < FeatureTest
6
+ feature :dynamic_style do
7
+ image = path_of('image.png')
8
+ setup_values = Proc.new do |page|
9
+ # The Basic Style
10
+ page.values(basic_show5: 'TextBlock',
11
+ basic_show6: image,
12
+ basic_hide5: 'TextBlock',
13
+ basic_hide6: image)
14
+ # The Text Style
15
+ page.values(text_b3: 'To bold',
16
+ text_b4: 'To normal',
17
+ text_i3: 'To italic',
18
+ text_i4: 'To normal',
19
+ text_u3: 'To underline',
20
+ text_u4: 'To none',
21
+ text_l3: 'To line-through',
22
+ text_l4: 'To none')
23
+ page.values(text_a2: 'To right align',
24
+ text_a3: "To right align\n右寄せ",
25
+ text_va2: "To bottom align\n下揃え",
26
+ text_color2: '赤色')
27
+ end
28
+
29
+ report = Thinreports::Report.new layout: template_path('templates/styles.tlf')
30
+
31
+ # Create raw-page.
32
+ report.start_new_page
33
+ report.page.item(:title).value('Original Page')
34
+
35
+ setup_values.call(report.page)
36
+
37
+ # Create styled-page.
38
+ report.start_new_page
39
+
40
+ setup_values.call(report.page)
41
+ report.page.item(:title).value('Styled Page')
42
+
43
+ # The Basic Style
44
+ 6.times do |i|
45
+ report.page.item("basic_show#{i + 1}").style(:visible, true)
46
+ report.page.item("basic_hide#{i + 1}").style(:visible, false)
47
+ end
48
+
49
+ # The Graphic Style
50
+ report.page.item(:graphic_bcolor1).style(:border_color, '#ff0000')
51
+ report.page[:graphic_bcolor2].style(:border_color, 'red')
52
+ # nil or 'none'.
53
+ report.page.item(:graphic_bcolor4).style(:border_color, nil)
54
+
55
+ report.page.item(:graphic_bwidth1).style(:border_width, 5)
56
+ report.page.item(:graphic_bwidth2).style(:border_width, 5)
57
+ report.page.item(:graphic_bwidth3).style(:border_width, 5)
58
+ report.page.item(:graphic_bwidth4).style(:border_width, 2)
59
+ report.page.item(:graphic_bwidth5).style(:border_width, 0)
60
+
61
+ report.page.item(:graphic_fcolor1).style(:fill_color, '#ff0000')
62
+ # nil or 'none'
63
+ report.page.item(:graphic_fcolor3).style(:fill_color, 'none')
64
+ report.page.item(:graphic_fcolor4).style(:fill_color, 'ff0000')
65
+
66
+ # The Text Style
67
+ [1, 3].each do |i|
68
+ report.page["text_b#{i}"].style(:bold, true)
69
+ report.page.item("text_i#{i}").style(:italic, true)
70
+ report.page.item("text_u#{i}").style(:underline, true)
71
+ report.page.item("text_l#{i}").style(:linethrough, true)
72
+ end
73
+ [2, 4].each do |i|
74
+ report.page.item("text_b#{i}").style(:bold, false)
75
+ report.page.item("text_i#{i}").style(:italic, false)
76
+ report.page.item("text_u#{i}").style(:underline, false)
77
+ report.page.item("text_l#{i}").style(:linethrough, false)
78
+ end
79
+
80
+ 3.times do |i|
81
+ report.page.item("text_a#{i + 1}").style(:align, :right)
82
+ end
83
+ 2.times do |i|
84
+ report.page.item("text_va#{i + 1}").style(:valign, :bottom)
85
+ end
86
+
87
+ 2.times do |i|
88
+ report.page["text_color#{i + 1}"].style(:color, 'ff0000')
89
+ end
90
+
91
+ report.start_new_page(layout: template_path('templates/styles_in_list.tlf'))
92
+
93
+ # Settings for Header.
94
+ report.page.list(:list).header do |header|
95
+ header.item(:rect).styles(border_color: nil,
96
+ fill_color: 'ff00ff')
97
+ header.item(:text).styles(align: :center,
98
+ valign: :middle,
99
+ bold: true)
100
+ header[:tblock].styles(align: :center,
101
+ valign: :middle,
102
+ color: 'red',
103
+ linethrough: true)
104
+ end
105
+
106
+ 1.step(10, 1) do |i|
107
+ # Flag of overflowed list-page.
108
+ is_overflowed = report.page.list(:list).overflow?
109
+
110
+ # Add details.
111
+ report.page.list(:list).add_row do |row|
112
+ case
113
+ when i % 2 == 0
114
+ row.item(:rect).styles(border_color: 'ff0000',
115
+ border_width: 3,
116
+ fill_color: '0000ff')
117
+ row.item(:text).styles(color: 'red',
118
+ align: :left,
119
+ valign: :middle)
120
+ row.item(:tblock).styles(color: 'blue',
121
+ align: :left,
122
+ valign: :middle)
123
+ when i % 3 == 0
124
+ row.item(:rect).style(:visible, false)
125
+ row.item(:text).styles(color: '0000ff',
126
+ align: :right,
127
+ valign: :bottom)
128
+ row.item(:tblock).styles(color: 'ff0000',
129
+ align: :right,
130
+ valign: :bottom)
131
+ end
132
+ end
133
+
134
+ # Change header styles when list-page was overflowed.
135
+ if is_overflowed
136
+ report.page.list(:list).header do |header|
137
+ header.item(:rect).styles(border_color: 'black',
138
+ fill_color: '#ffffff')
139
+ header.item(:text).styles(align: :left,
140
+ valign: :top,
141
+ bold: false)
142
+ header.item(:tblock).styles(align: :left,
143
+ valign: :top,
144
+ color: '#000000',
145
+ linethrough: false)
146
+ end
147
+ end
148
+ end
149
+
150
+ assert_pdf report.generate
151
+ end
152
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'feature_test'
4
+
5
+ class TestEudc < FeatureTest
6
+ feature :eudc do
7
+ Thinreports.configure do |config|
8
+ config.fallback_fonts = path_of('eudc.ttf')
9
+ end
10
+
11
+ report = Thinreports::Report.new layout: template_path
12
+ report.start_new_page do |page|
13
+ page.item(:eudc).value('日本で生まれ世界が育てた言語 Ruby')
14
+ page.values(
15
+ eudc_bold: '太字',
16
+ eudc_italic: '斜体',
17
+ eudc_bold_italic: '太字斜体'
18
+ )
19
+ end
20
+
21
+ assert_pdf report.generate
22
+ end
23
+
24
+ def teardown
25
+ Thinreports.config.fallback_fonts = []
26
+ end
27
+ end
@@ -0,0 +1,58 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'minitest/autorun'
4
+ require 'minitest/unit'
5
+ require 'pathname'
6
+ require 'thinreports'
7
+
8
+ class FeatureTest < Minitest::Test
9
+ class << self
10
+ attr_reader :name, :desc
11
+
12
+ def feature(name, desc = nil, &block)
13
+ @name = name
14
+ @desc = desc
15
+ define_method(:test_feature, &block)
16
+ end
17
+ end
18
+
19
+ def dir
20
+ @dir ||= Pathname.new(__dir__).join(feature_name.to_s)
21
+ end
22
+
23
+ def path_of(filename)
24
+ dir.join(filename).to_path
25
+ end
26
+
27
+ def assert_pdf(actual)
28
+ actual_pdf.binwrite(actual)
29
+
30
+ if expect_pdf.exist?
31
+ assert match_expect_pdf?, 'Does not match expect.pdf. Check diff.pdf for details.'
32
+ else
33
+ flunk 'expect.pdf does not exist.'
34
+ end
35
+ end
36
+
37
+ def template_path(filename = 'template.tlf')
38
+ dir.join(filename).to_path
39
+ end
40
+
41
+ private
42
+
43
+ def feature_name
44
+ self.class.name
45
+ end
46
+
47
+ def match_expect_pdf?
48
+ system("diff-pdf --output-diff=#{path_of('diff.pdf')} #{expect_pdf} #{actual_pdf}")
49
+ end
50
+
51
+ def actual_pdf
52
+ dir.join('actual.pdf')
53
+ end
54
+
55
+ def expect_pdf
56
+ dir.join('expect.pdf')
57
+ end
58
+ end
@@ -0,0 +1,475 @@
1
+ %PDF-1.3
2
+ %����
3
+ 1 0 obj
4
+ << /CreationDate (D:20181106102142+09'00')
5
+ /Creator <feff005400680069006e007200650070006f007200740073002000470065006e0065007200610074006f007200200066006f00720020005200750062007900200030002e00310030002e0032>
6
+ /Title <feff>
7
+ /Producer <feff0050007200610077006e>
8
+ >>
9
+ endobj
10
+ 2 0 obj
11
+ << /Type /Catalog
12
+ /Pages 3 0 R
13
+ >>
14
+ endobj
15
+ 3 0 obj
16
+ << /Type /Pages
17
+ /Count 1
18
+ /Kids [7 0 R]
19
+ >>
20
+ endobj
21
+ 4 0 obj
22
+ << /Length 8
23
+ >>
24
+ stream
25
+ q
26
+ 0.9 w
27
+
28
+ endstream
29
+ endobj
30
+ 5 0 obj
31
+ << /Type /Page
32
+ /Parent 3 0 R
33
+ /MediaBox [0 0 612.0 792.0]
34
+ /CropBox [0 0 612.0 792.0]
35
+ /BleedBox [0 0 612.0 792.0]
36
+ /TrimBox [0 0 612.0 792.0]
37
+ /ArtBox [0 0 612.0 792.0]
38
+ /Contents 4 0 R
39
+ /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
40
+ >>
41
+ >>
42
+ endobj
43
+ 6 0 obj
44
+ << /Length 98
45
+ >>
46
+ stream
47
+ q
48
+ 0.9 w
49
+ /Stamp1 Do
50
+ /Stamp2 Do
51
+ /Stamp3 Do
52
+ /Stamp4 Do
53
+ /Stamp5 Do
54
+ /Stamp6 Do
55
+ /Stamp7 Do
56
+ /Stamp8 Do
57
+ Q
58
+
59
+ endstream
60
+ endobj
61
+ 7 0 obj
62
+ << /Type /Page
63
+ /Parent 3 0 R
64
+ /MediaBox [0 0 595.28 841.89]
65
+ /CropBox [0 0 595.28 841.89]
66
+ /BleedBox [0 0 595.28 841.89]
67
+ /TrimBox [0 0 595.28 841.89]
68
+ /ArtBox [0 0 595.28 841.89]
69
+ /Contents 6 0 R
70
+ /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
71
+ /XObject << /Stamp1 8 0 R
72
+ /Stamp2 10 0 R
73
+ /Stamp3 11 0 R
74
+ /Stamp4 12 0 R
75
+ /Stamp5 13 0 R
76
+ /Stamp6 14 0 R
77
+ /Stamp7 15 0 R
78
+ /Stamp8 16 0 R
79
+ >>
80
+ >>
81
+ >>
82
+ endobj
83
+ 8 0 obj
84
+ << /Type /XObject
85
+ /Subtype /Form
86
+ /BBox [0 0 595.28 841.89]
87
+ /Resources << /Font << /F1.0 9 0 R
88
+ >>
89
+ >>
90
+ /Length 1659
91
+ >>
92
+ stream
93
+ q
94
+ /DeviceRGB cs
95
+ 0.0 0.0 0.0 scn
96
+ /DeviceRGB CS
97
+ 0.0 0.0 0.0 SCN
98
+ 0.9 w
99
+ 0 J
100
+ 0 j
101
+ [] 0 d
102
+ q
103
+ 0.9 w
104
+ /DeviceRGB cs
105
+ 1.0 1.0 1.0 scn
106
+ /DeviceRGB CS
107
+ 0.0 0.0 0.0 SCN
108
+ 20.0 720.89 120.1 62.0 re
109
+ b
110
+ Q
111
+ q
112
+ 0.9 w
113
+ /DeviceRGB cs
114
+ 1.0 1.0 1.0 scn
115
+ /DeviceRGB CS
116
+ 0.0 0.0 0.0 SCN
117
+ 165.0 782.89 m
118
+ 265.1 782.89 l
119
+ 270.6228 782.89 275.1 778.4128 275.1 772.89 c
120
+ 275.1 730.89 l
121
+ 275.1 725.3672 270.6228 720.89 265.1 720.89 c
122
+ 165.0 720.89 l
123
+ 159.4772 720.89 155.0 725.3672 155.0 730.89 c
124
+ 155.0 772.89 l
125
+ 155.0 778.4128 159.4772 782.89 165.0 782.89 c
126
+ h
127
+ b
128
+ Q
129
+ q
130
+ /DeviceRGB cs
131
+ 0.0 0.0 0.0 scn
132
+
133
+ BT
134
+ 20.0 808.966 Td
135
+ /F1.0 18 Tf
136
+ [<52656374a02873746174696329>] TJ
137
+ ET
138
+
139
+ Q
140
+ q
141
+ [2.0 2.0] 0.0 d
142
+ 0.9 w
143
+ /DeviceRGB cs
144
+ 1.0 1.0 1.0 scn
145
+ /DeviceRGB CS
146
+ 0.0 0.0 0.0 SCN
147
+ 300.0 782.89 m
148
+ 400.1 782.89 l
149
+ 405.6228 782.89 410.1 778.4128 410.1 772.89 c
150
+ 410.1 730.89 l
151
+ 410.1 725.3672 405.6228 720.89 400.1 720.89 c
152
+ 300.0 720.89 l
153
+ 294.4772 720.89 290.0 725.3672 290.0 730.89 c
154
+ 290.0 772.89 l
155
+ 290.0 778.4128 294.4772 782.89 300.0 782.89 c
156
+ h
157
+ b
158
+ Q
159
+ q
160
+ [1.0 2.0] 0.0 d
161
+ 0.9 w
162
+ /DeviceRGB cs
163
+ 1.0 1.0 1.0 scn
164
+ /DeviceRGB CS
165
+ 0.0 0.0 0.0 SCN
166
+ 435.0 782.89 m
167
+ 535.1 782.89 l
168
+ 540.6228 782.89 545.1 778.4128 545.1 772.89 c
169
+ 545.1 730.89 l
170
+ 545.1 725.3672 540.6228 720.89 535.1 720.89 c
171
+ 435.0 720.89 l
172
+ 429.4772 720.89 425.0 725.3672 425.0 730.89 c
173
+ 425.0 772.89 l
174
+ 425.0 778.4128 429.4772 782.89 435.0 782.89 c
175
+ h
176
+ b
177
+ Q
178
+ q
179
+ 0.9 w
180
+ /DeviceRGB cs
181
+ 1.0 1.0 1.0 scn
182
+ /DeviceRGB CS
183
+ 1.0 0.0 0.0 SCN
184
+ 20.0 639.89 120.1 62.0 re
185
+ b
186
+ Q
187
+ q
188
+ /DeviceRGB cs
189
+ 1.0 0.0 0.0 scn
190
+ 155.0 639.89 120.1 62.0 re
191
+ f
192
+ Q
193
+ q
194
+ 0.9 w
195
+ /DeviceRGB CS
196
+ 0.0 0.4392 0.7529 SCN
197
+ 250.0 658.89 97.1 43.0 re
198
+ S
199
+ Q
200
+ q
201
+ /DeviceRGB cs
202
+ 0.0 0.0 0.0 scn
203
+
204
+ BT
205
+ 20.0 603.966 Td
206
+ /F1.0 18 Tf
207
+ [<52656374a02864796e616d696329>] TJ
208
+ ET
209
+
210
+ Q
211
+ Q
212
+
213
+ endstream
214
+ endobj
215
+ 9 0 obj
216
+ << /Type /Font
217
+ /Subtype /Type1
218
+ /BaseFont /Helvetica
219
+ /Encoding /WinAnsiEncoding
220
+ >>
221
+ endobj
222
+ 10 0 obj
223
+ << /Type /XObject
224
+ /Subtype /Form
225
+ /BBox [0 0 595.28 841.89]
226
+ /Length 183
227
+ >>
228
+ stream
229
+ q
230
+ /DeviceRGB cs
231
+ 0.0 0.0 0.0 scn
232
+ /DeviceRGB CS
233
+ 0.0 0.0 0.0 SCN
234
+ 0.9 w
235
+ 0 J
236
+ 0 j
237
+ [] 0 d
238
+ q
239
+ 0.9 w
240
+ /DeviceRGB cs
241
+ 1.0 1.0 1.0 scn
242
+ /DeviceRGB CS
243
+ 0.0 0.0 0.0 SCN
244
+ 20.0 514.89 120.1 62.0 re
245
+ b
246
+ Q
247
+ Q
248
+
249
+ endstream
250
+ endobj
251
+ 11 0 obj
252
+ << /Type /XObject
253
+ /Subtype /Form
254
+ /BBox [0 0 595.28 841.89]
255
+ /Length 418
256
+ >>
257
+ stream
258
+ q
259
+ /DeviceRGB cs
260
+ 0.0 0.0 0.0 scn
261
+ /DeviceRGB CS
262
+ 0.0 0.0 0.0 SCN
263
+ 0.9 w
264
+ 0 J
265
+ 0 j
266
+ [] 0 d
267
+ q
268
+ 0.9 w
269
+ /DeviceRGB cs
270
+ 1.0 1.0 1.0 scn
271
+ /DeviceRGB CS
272
+ 0.0 0.0 0.0 SCN
273
+ 165.0 576.89 m
274
+ 265.1 576.89 l
275
+ 270.6228 576.89 275.1 572.4128 275.1 566.89 c
276
+ 275.1 524.89 l
277
+ 275.1 519.3672 270.6228 514.89 265.1 514.89 c
278
+ 165.0 514.89 l
279
+ 159.4772 514.89 155.0 519.3672 155.0 524.89 c
280
+ 155.0 566.89 l
281
+ 155.0 572.4128 159.4772 576.89 165.0 576.89 c
282
+ h
283
+ b
284
+ Q
285
+ Q
286
+
287
+ endstream
288
+ endobj
289
+ 12 0 obj
290
+ << /Type /XObject
291
+ /Subtype /Form
292
+ /BBox [0 0 595.28 841.89]
293
+ /Length 434
294
+ >>
295
+ stream
296
+ q
297
+ /DeviceRGB cs
298
+ 0.0 0.0 0.0 scn
299
+ /DeviceRGB CS
300
+ 0.0 0.0 0.0 SCN
301
+ 0.9 w
302
+ 0 J
303
+ 0 j
304
+ [] 0 d
305
+ q
306
+ [2.0 2.0] 0.0 d
307
+ 0.9 w
308
+ /DeviceRGB cs
309
+ 1.0 1.0 1.0 scn
310
+ /DeviceRGB CS
311
+ 0.0 0.0 0.0 SCN
312
+ 300.0 576.89 m
313
+ 400.1 576.89 l
314
+ 405.6228 576.89 410.1 572.4128 410.1 566.89 c
315
+ 410.1 524.89 l
316
+ 410.1 519.3672 405.6228 514.89 400.1 514.89 c
317
+ 300.0 514.89 l
318
+ 294.4772 514.89 290.0 519.3672 290.0 524.89 c
319
+ 290.0 566.89 l
320
+ 290.0 572.4128 294.4772 576.89 300.0 576.89 c
321
+ h
322
+ b
323
+ Q
324
+ Q
325
+
326
+ endstream
327
+ endobj
328
+ 13 0 obj
329
+ << /Type /XObject
330
+ /Subtype /Form
331
+ /BBox [0 0 595.28 841.89]
332
+ /Length 434
333
+ >>
334
+ stream
335
+ q
336
+ /DeviceRGB cs
337
+ 0.0 0.0 0.0 scn
338
+ /DeviceRGB CS
339
+ 0.0 0.0 0.0 SCN
340
+ 0.9 w
341
+ 0 J
342
+ 0 j
343
+ [] 0 d
344
+ q
345
+ [1.0 2.0] 0.0 d
346
+ 0.9 w
347
+ /DeviceRGB cs
348
+ 1.0 1.0 1.0 scn
349
+ /DeviceRGB CS
350
+ 0.0 0.0 0.0 SCN
351
+ 435.0 576.89 m
352
+ 535.1 576.89 l
353
+ 540.6228 576.89 545.1 572.4128 545.1 566.89 c
354
+ 545.1 524.89 l
355
+ 545.1 519.3672 540.6228 514.89 535.1 514.89 c
356
+ 435.0 514.89 l
357
+ 429.4772 514.89 425.0 519.3672 425.0 524.89 c
358
+ 425.0 566.89 l
359
+ 425.0 572.4128 429.4772 576.89 435.0 576.89 c
360
+ h
361
+ b
362
+ Q
363
+ Q
364
+
365
+ endstream
366
+ endobj
367
+ 14 0 obj
368
+ << /Type /XObject
369
+ /Subtype /Form
370
+ /BBox [0 0 595.28 841.89]
371
+ /Length 183
372
+ >>
373
+ stream
374
+ q
375
+ /DeviceRGB cs
376
+ 0.0 0.0 0.0 scn
377
+ /DeviceRGB CS
378
+ 0.0 0.0 0.0 SCN
379
+ 0.9 w
380
+ 0 J
381
+ 0 j
382
+ [] 0 d
383
+ q
384
+ 0.9 w
385
+ /DeviceRGB cs
386
+ 1.0 1.0 1.0 scn
387
+ /DeviceRGB CS
388
+ 1.0 0.0 0.0 SCN
389
+ 20.0 433.89 120.1 62.0 re
390
+ b
391
+ Q
392
+ Q
393
+
394
+ endstream
395
+ endobj
396
+ 15 0 obj
397
+ << /Type /XObject
398
+ /Subtype /Form
399
+ /BBox [0 0 595.28 841.89]
400
+ /Length 148
401
+ >>
402
+ stream
403
+ q
404
+ /DeviceRGB cs
405
+ 0.0 0.0 0.0 scn
406
+ /DeviceRGB CS
407
+ 0.0 0.0 0.0 SCN
408
+ 0.9 w
409
+ 0 J
410
+ 0 j
411
+ [] 0 d
412
+ q
413
+ /DeviceRGB cs
414
+ 1.0 0.0 0.0 scn
415
+ 155.0 433.89 120.1 62.0 re
416
+ f
417
+ Q
418
+ Q
419
+
420
+ endstream
421
+ endobj
422
+ 16 0 obj
423
+ << /Type /XObject
424
+ /Subtype /Form
425
+ /BBox [0 0 595.28 841.89]
426
+ /Length 159
427
+ >>
428
+ stream
429
+ q
430
+ /DeviceRGB cs
431
+ 0.0 0.0 0.0 scn
432
+ /DeviceRGB CS
433
+ 0.0 0.0 0.0 SCN
434
+ 0.9 w
435
+ 0 J
436
+ 0 j
437
+ [] 0 d
438
+ q
439
+ 0.9 w
440
+ /DeviceRGB CS
441
+ 0.0 0.4392 0.7529 SCN
442
+ 250.0 452.89 97.1 43.0 re
443
+ S
444
+ Q
445
+ Q
446
+
447
+ endstream
448
+ endobj
449
+ xref
450
+ 0 17
451
+ 0000000000 65535 f
452
+ 0000000015 00000 n
453
+ 0000000291 00000 n
454
+ 0000000340 00000 n
455
+ 0000000397 00000 n
456
+ 0000000454 00000 n
457
+ 0000000716 00000 n
458
+ 0000000864 00000 n
459
+ 0000001270 00000 n
460
+ 0000003078 00000 n
461
+ 0000003175 00000 n
462
+ 0000003466 00000 n
463
+ 0000003992 00000 n
464
+ 0000004534 00000 n
465
+ 0000005076 00000 n
466
+ 0000005367 00000 n
467
+ 0000005623 00000 n
468
+ trailer
469
+ << /Size 17
470
+ /Root 2 0 R
471
+ /Info 1 0 R
472
+ >>
473
+ startxref
474
+ 5890
475
+ %%EOF