brcobranca 6.9.1 → 7.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +3 -0
- data/CHANGELOG.md +4 -0
- data/Gemfile.lock +7 -7
- data/README.md +14 -12
- data/Rakefile +1 -0
- data/brcobranca.gemspec +1 -0
- data/lib/brcobranca/arquivos/logos/banrisul.eps +121 -0
- data/lib/brcobranca/arquivos/logos/banrisul_carne.eps +121 -0
- data/lib/brcobranca/boleto/banco_brasil.rb +8 -8
- data/lib/brcobranca/boleto/banco_nordeste.rb +1 -0
- data/lib/brcobranca/boleto/banestes.rb +10 -10
- data/lib/brcobranca/boleto/banrisul.rb +84 -0
- data/lib/brcobranca/boleto/base.rb +6 -5
- data/lib/brcobranca/boleto/bradesco.rb +2 -1
- data/lib/brcobranca/boleto/caixa.rb +6 -5
- data/lib/brcobranca/boleto/hsbc.rb +7 -6
- data/lib/brcobranca/boleto/itau.rb +1 -0
- data/lib/brcobranca/boleto/santander.rb +1 -0
- data/lib/brcobranca/boleto/sicoob.rb +12 -11
- data/lib/brcobranca/boleto/sicredi.rb +1 -0
- data/lib/brcobranca/boleto/template/base.rb +5 -4
- data/lib/brcobranca/boleto/template/rghost.rb +7 -6
- data/lib/brcobranca/boleto/template/rghost_carne.rb +9 -9
- data/lib/brcobranca/boleto/unicred.rb +1 -1
- data/lib/brcobranca/calculo.rb +14 -15
- data/lib/brcobranca/calculo_data.rb +2 -0
- data/lib/brcobranca/currency.rb +4 -3
- data/lib/brcobranca/formatacao.rb +2 -1
- data/lib/brcobranca/formatacao_string.rb +1 -0
- data/lib/brcobranca/limpeza.rb +1 -0
- data/lib/brcobranca/remessa/base.rb +2 -1
- data/lib/brcobranca/remessa/cnab240/banco_brasil.rb +7 -6
- data/lib/brcobranca/remessa/cnab240/base.rb +16 -15
- data/lib/brcobranca/remessa/cnab240/caixa.rb +1 -0
- data/lib/brcobranca/remessa/cnab240/sicoob.rb +9 -9
- data/lib/brcobranca/remessa/cnab400/banco_brasil.rb +2 -3
- data/lib/brcobranca/remessa/cnab400/base.rb +8 -7
- data/lib/brcobranca/remessa/cnab400/bradesco.rb +2 -1
- data/lib/brcobranca/remessa/cnab400/citibank.rb +3 -2
- data/lib/brcobranca/remessa/cnab400/itau.rb +2 -1
- data/lib/brcobranca/remessa/cnab400/santander.rb +7 -5
- data/lib/brcobranca/remessa/cnab400/sicoob.rb +6 -5
- data/lib/brcobranca/remessa/pagamento.rb +4 -4
- data/lib/brcobranca/retorno/base.rb +1 -0
- data/lib/brcobranca/retorno/cnab240/base.rb +6 -7
- data/lib/brcobranca/retorno/cnab240/caixa.rb +1 -0
- data/lib/brcobranca/retorno/cnab240/santander.rb +3 -3
- data/lib/brcobranca/retorno/cnab240/sicoob.rb +7 -6
- data/lib/brcobranca/retorno/cnab400/base.rb +5 -6
- data/lib/brcobranca/retorno/cnab400/bradesco.rb +1 -0
- data/lib/brcobranca/retorno/cnab400/itau.rb +1 -0
- data/lib/brcobranca/retorno/retorno_cbr643.rb +1 -0
- data/lib/brcobranca/retorno/retorno_cnab240.rb +3 -2
- data/lib/brcobranca/retorno/retorno_cnab400.rb +1 -0
- data/lib/brcobranca/util/empresa.rb +2 -3
- data/lib/brcobranca/version.rb +2 -1
- data/lib/brcobranca.rb +3 -1
- data/spec/brcobranca/base_spec.rb +51 -50
- data/spec/brcobranca/boleto/banco_brasil_spec.rb +46 -45
- data/spec/brcobranca/boleto/banco_nordeste_spec.rb +13 -12
- data/spec/brcobranca/boleto/banestes_spec.rb +108 -105
- data/spec/brcobranca/boleto/banrisul_spec.rb +165 -0
- data/spec/brcobranca/boleto/bradesco_spec.rb +56 -52
- data/spec/brcobranca/boleto/caixa_spec.rb +9 -7
- data/spec/brcobranca/boleto/hsbc_spec.rb +17 -15
- data/spec/brcobranca/boleto/itau_spec.rb +22 -20
- data/spec/brcobranca/boleto/santander_spec.rb +16 -14
- data/spec/brcobranca/boleto/sicoob_spec.rb +94 -94
- data/spec/brcobranca/boleto/sicredi_spec.rb +32 -28
- data/spec/brcobranca/boleto/unicred_spec.rb +16 -14
- data/spec/brcobranca/boletos_em_lote_spec.rb +4 -3
- data/spec/brcobranca/calculo_data_spec.rb +2 -1
- data/spec/brcobranca/calculo_spec.rb +97 -97
- data/spec/brcobranca/currency_spec.rb +6 -5
- data/spec/brcobranca/formatacao_spec.rb +1 -0
- data/spec/brcobranca/formatacao_string_spec.rb +1 -2
- data/spec/brcobranca/limpeza_spec.rb +1 -0
- data/spec/brcobranca/remessa/base_spec.rb +11 -9
- data/spec/brcobranca/remessa/cnab240/banco_brasil_spec.rb +11 -9
- data/spec/brcobranca/remessa/cnab240/base_spec.rb +11 -9
- data/spec/brcobranca/remessa/cnab240/caixa_spec.rb +12 -10
- data/spec/brcobranca/remessa/cnab240/sicoob_spec.rb +13 -11
- data/spec/brcobranca/remessa/cnab400/banco_brasil_spec.rb +2 -1
- data/spec/brcobranca/remessa/cnab400/base_spec.rb +20 -18
- data/spec/brcobranca/remessa/cnab400/bradesco_spec.rb +11 -9
- data/spec/brcobranca/remessa/cnab400/citibank_spec.rb +11 -9
- data/spec/brcobranca/remessa/cnab400/itau_spec.rb +11 -9
- data/spec/brcobranca/remessa/cnab400/santander_spec.rb +12 -10
- data/spec/brcobranca/remessa/cnab400/sicoob_spec.rb +11 -9
- data/spec/brcobranca/remessa/pagamento_spec.rb +12 -10
- data/spec/brcobranca/retorno/cnab240/base_spec.rb +10 -9
- data/spec/brcobranca/retorno/cnab240/santander_spec.rb +23 -22
- data/spec/brcobranca/retorno/cnab240/sicoob_spec.rb +21 -20
- data/spec/brcobranca/retorno/cnab400/base_spec.rb +13 -12
- data/spec/brcobranca/retorno/cnab400/bradesco_spec.rb +3 -1
- data/spec/brcobranca/retorno/cnab400/itau_spec.rb +4 -1
- data/spec/brcobranca/retorno/retorno_cbr643_spec.rb +1 -0
- data/spec/brcobranca/retorno/retorno_cnab400_spec.rb +1 -0
- data/spec/brcobranca/retorno/retorno_cnab_240_spec.rb +1 -0
- data/spec/brcobranca/rghost_spec.rb +1 -0
- data/spec/brcobranca/util/empresa_spec.rb +13 -12
- data/spec/brcobranca_spec.rb +6 -5
- data/spec/spec_helper.rb +3 -3
- data/spec/support/remessa_helpers.rb +3 -1
- data/spec/support/shared_examples/busca_logotipo.rb +2 -0
- data/spec/support/shared_examples/cnab240.rb +22 -20
- data/spec/support/shared_examples/cnab400.rb +12 -12
- data/spec/support/shared_examples/formatos_validos.rb +6 -4
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e64c1b8d888e877461dc9ee4e50d1b5935ae53ae
|
4
|
+
data.tar.gz: 66c20f5799e0bce3a611f3e6866d15c5948924be
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 91097810fce52fa27dcd38d13aa4ea17daaf86f86c5c54af36fe8ec8c4628e8e9b39000291c96e6e408134d74383c3714eca8b42f5db64cf3844c5b9d342bfaa
|
7
|
+
data.tar.gz: effd571492c5b72524996ac2d3afdb1b308ab7e2d46b37672fbc5cc0d25a121450199be9d02a2fadcc589459f1c11ca0f89bfe9f3aa78d8d82c5e2262c9373e0
|
data/.rubocop.yml
CHANGED
data/CHANGELOG.md
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
brcobranca (
|
4
|
+
brcobranca (7.0.0)
|
5
5
|
activemodel (>= 3)
|
6
6
|
activesupport (>= 3)
|
7
7
|
parseline (~> 1.0.3)
|
@@ -24,12 +24,12 @@ GEM
|
|
24
24
|
simplecov
|
25
25
|
coderay (1.1.1)
|
26
26
|
concurrent-ruby (1.0.2)
|
27
|
-
coveralls (0.8.
|
27
|
+
coveralls (0.8.17)
|
28
28
|
json (>= 1.8, < 3)
|
29
29
|
simplecov (~> 0.12.0)
|
30
|
-
term-ansicolor (~> 1.3
|
30
|
+
term-ansicolor (~> 1.3)
|
31
31
|
thor (~> 0.19.1)
|
32
|
-
tins (
|
32
|
+
tins (~> 1.6)
|
33
33
|
diff-lcs (1.2.5)
|
34
34
|
docile (1.1.5)
|
35
35
|
i18n (0.7.0)
|
@@ -45,7 +45,7 @@ GEM
|
|
45
45
|
method_source (~> 0.8.1)
|
46
46
|
slop (~> 3.4)
|
47
47
|
rainbow (2.1.0)
|
48
|
-
rake (
|
48
|
+
rake (12.0.0)
|
49
49
|
rghost (0.9.6)
|
50
50
|
rghost_barcode (0.9)
|
51
51
|
rspec (3.5.0)
|
@@ -76,7 +76,7 @@ GEM
|
|
76
76
|
simplecov-html (~> 0.10.0)
|
77
77
|
simplecov-html (0.10.0)
|
78
78
|
slop (3.6.0)
|
79
|
-
term-ansicolor (1.
|
79
|
+
term-ansicolor (1.4.0)
|
80
80
|
tins (~> 1.0)
|
81
81
|
thor (0.19.4)
|
82
82
|
thread_safe (0.3.5)
|
@@ -84,7 +84,7 @@ GEM
|
|
84
84
|
tins (1.13.0)
|
85
85
|
tzinfo (1.2.2)
|
86
86
|
thread_safe (~> 0.1)
|
87
|
-
unicode-display_width (1.1.
|
87
|
+
unicode-display_width (1.1.2)
|
88
88
|
unidecoder (1.1.2)
|
89
89
|
|
90
90
|
PLATFORMS
|
data/README.md
CHANGED
@@ -21,18 +21,20 @@ Gem para emissão de bloquetos de cobrança para bancos brasileiros.
|
|
21
21
|
|
22
22
|
### Bancos Disponíveis
|
23
23
|
|
24
|
-
| Bancos
|
25
|
-
|
26
|
-
| 001 - Banco do Brasil
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
24
|
+
| Bancos | Carteiras | Documentações |
|
25
|
+
|------------------------|-------------------|----------------|
|
26
|
+
| 001 - Banco do Brasil | Todas as carteiras presentes na documentação | [pdf](http://www.bb.com.br/docs/pub/emp/empl/dwn/Doc5175Bloqueto.pdf) |
|
27
|
+
| 004 - Banco do Nordeste| Todas as carteiras presentes na documentação - [Marcelo J. Both](https://github.com/marceloboth)| |
|
28
|
+
| 021 - Banestes | Todas as carteiras presentes na documentação | |
|
29
|
+
| 033 - Santander | Todas as carteiras presentes na documentação - [Ronaldo Araujo](https://github.com/ronaldoaraujo) | [pdf](http://177.69.143.161:81/Treinamento/SisMoura/Documentação%20Boleto%20Remessa/Documentacao_SANTANDER/Layout%20de%20Cobrança%20-%20Código%20de%20Barras%20Santander%20Setembro%202012%20v%202%203.pdf) |
|
30
|
+
| 041 - Banrisul | Todas as carteiras presentes na documentação | |
|
31
|
+
| 104 - Caixa | Todas as carteiras presentes na documentação - [Túlio Ornelas](https://github.com/tulios) | [pdf](http://downloads.caixa.gov.br/_arquivos/cobranca_caixa_sigcb/manuais/CODIGO_BARRAS_SIGCB.PDF) |
|
32
|
+
| 237 - Bradesco | Todas as carteiras presentes na documentação | [pdf](http://www.bradesco.com.br/portal/PDF/pessoajuridica/solucoes-integradas/outros/layout-de-arquivo/cobranca/4008-524-0121-08-layout-cobranca-versao-portugues.pdf) |
|
33
|
+
| 341 - Itaú | Todas as carteiras presentes na documentação | [CNAB240](http://download.itau.com.br/bankline/cobranca_cnab240.pdf), [CNAB400](http://download.itau.com.br/bankline/layout_cobranca_400bytes_cnab_itau_mensagem.pdf) |
|
34
|
+
| 399 - HSBC | CNR, CSB - [Rafael DL](https://github.com/rafaeldl) | |
|
35
|
+
| 748 - Sicredi | C (03) | |
|
36
|
+
| 756 - Sicoob | Todas as carteiras presentes na documentação | |
|
37
|
+
| 756 - Unicred | 03 - [Marcelo J. Both](https://github.com/marceloboth) | |
|
36
38
|
|
37
39
|
### Retornos Disponíveis
|
38
40
|
|
data/Rakefile
CHANGED
data/brcobranca.gemspec
CHANGED
@@ -0,0 +1,121 @@
|
|
1
|
+
%!PS-Adobe-3.0 EPSF-3.0
|
2
|
+
%%Pages: 1
|
3
|
+
%%BoundingBox: 0 0 148 35
|
4
|
+
%%DocumentData: Clean7Bit
|
5
|
+
%%LanguageLevel: 2
|
6
|
+
%%EndComments
|
7
|
+
%%Page: 1 1
|
8
|
+
save 9 dict begin
|
9
|
+
{/T currentfile/ASCII85Decode filter def/DeviceRGB setcolorspace
|
10
|
+
/F T<</BitsPerComponent 8/Columns 148/Colors 3/Predictor 10>>/LZWDecode filter def
|
11
|
+
<</ImageType 1/Width 148/Height 35/BitsPerComponent
|
12
|
+
8/ImageMatrix[1 0 0 -1 0 35]/Decode
|
13
|
+
[0 1 0 1 0 1]/DataSource F>> image
|
14
|
+
F closefile T closefile}
|
15
|
+
%%BeginData:;
|
16
|
+
exec
|
17
|
+
J,isG0E`.##D>EP:q1$o*=mro@So+\<\5,H7Uo<*jE<[.O?u31)'kMB-^757;Rp>H>nrLFk#4:9enm
|
18
|
+
@9:1P"UeFn;TTMT<"fDHBj'`q4r<4ZX!SO*=mW\fPA(6)@MeDT7'eIi*oK%FI3)\mD4:UEXXoQq%1\
|
19
|
+
S77.!#I-@Se2%47P#*#mEuYH^d0RCRf/[Qrdih,f*l1G$X0mpZ$=o]49E9/[aY[SQu")WHG1JPJ<2&
|
20
|
+
;?693`^eD-_23IsB>#(AfOn'%5^M[%4Zg%Da0FgG.?uRVJ<Q*K0%d/aqbjY[amhQaY8-0)"!C:+d0L
|
21
|
+
-N`#6M^A//SI#rpjGPT"MD3iq$MhE?m9;O=T2JqVkX##;,4<&4Z^#.=rZCe9qQ&BH0!iX7?\N,:Y/A
|
22
|
+
Z33G6(aKlPL]@GUW+Z=.SnHCM!1a4rN";SS)WKh.-Af*NM#k_9!!qLj!.5m04<0!(knkHBL7lU'+p@
|
23
|
+
t.KGoL%csdQ;5TgEP+7CHH\1unBjEmK98KM0&V)cd0J0Js0Dj4bYP2_$Gbbg+WTE#JcJ-#-P)?QQlQ
|
24
|
+
id=RlZ!N1Y_"S$T?KPm$A!n-NX(H\l09,e^_tpVc\n7S#6CJgmUmU#0Mluu!:V=aYlGc>O/l3*Os:"
|
25
|
+
$J3F+--ebd.3_kqd=eAF9e:!t/=jVL5B$'%"P:"A`/VF7?dNAUABGi[%C)^PqRtj:5>ob)MJdER=Oa
|
26
|
+
M9iJuR$9"lU-jB!KK.h^AI0ao$K-MCigQ7qb$_NA/F%Q59ThH)u=X-XliX3[\sP!.sL?$j7/3$/A8`
|
27
|
+
!+_N#Wm$nhF<:bPhcCdT_@CZ0+9D.V2h1lD!J8+;$jfLu8/;7._$ClT'IO_S#FP]Cc6:>4NQAI,0iQ
|
28
|
+
/B7jpHq.,nC`re3L+^#k:/lp)6dJA^;k#o4gYfEOAaHP1q$.O\$p!$sYB!",T[fI2K)h8YO-Wsg8PO
|
29
|
+
5cNp#Wn:Prknd@iQQQ\7R>B$!?`ne!1]sdp(IYgBb4;a_Z5o;"Q8JqAn]<2l2Uur+=o%!i42`e*:j0
|
30
|
+
/-A)>,8e!7R/pEj1Q\Y[=UL4bVYD.T.*^KtmR/CY?T\p^h*0JC@E%%A-+p3]l1$iq6Vm^3t7>WpC_#
|
31
|
+
OR>W#Gf2GT)7P6G]10#Xgt8Oaq(t7gYidRJLlma+#9@<ddt[\Z6+5!B.6ab4#7WMe56>?]e_>DHqcO
|
32
|
+
p\"SbJ.;S[,YEglNYOk,h.Rr7)M0(Q!Z6R;+_@b2PnNXlgq2?jWNlFc_@6F"lOkS!<3:m?Fp.jG"s1
|
33
|
+
[XHOi@U5"D7ILBHaf%mW*<a/AtZ"6</akD0*PJOUlE\>_lipcaJl##HQR`"kUi%"TgJ#CpK40lS\ji
|
34
|
+
b832,OGBJ7^e,r0jHjhV?0)?8K))i>$VE>29*NB\d1[sN\SC"78fm$UJ+C8i(WTn0STs%XG6k4L&aO
|
35
|
+
aeleQ*!Ko3'njtUHPTt8mO)bAY3ls<#8@u$J&`e]b2XZC:)"J^Ma8cXBP`n?\pFceCJq,-9!!^O;"C
|
36
|
+
U"'Pn40$LthKbOH#'Wfo,q3)^GIB,o`G4I/Uig%06j%oLHna0o'`=*eVCW&!?WNa5aH*?p4`47t2eI
|
37
|
+
Ja"=-J:A(AlokfFL,VKlmJpW/C64P@*M^PqNq)Eoa5Y5B!-AX#+:nP_@P!/\G^^/hmQSf<I#<G+2h6
|
38
|
+
De!Jebp+(I-CN_uZ37o9F3c>XPM"rofS"V)VJL3SdTQ>2S);BT_6&WXuC3$2u5*b42J!0@`m5g%1O!
|
39
|
+
,)Z>,JOQ4@A+c"U2\4!,X7=f#67;p,t0!@4pTSIRF9AP!!!l@%ZOF3/4rd)\*"$TC6Ea*#gj0Ung=W
|
40
|
+
6<Zg7"JrUTrn:8:W!$cT+O'os?JA>:nTWkJr-:'>^%(/gO]Rq[XGY#UekETMdB-m6OGeaU<*cXR[J=
|
41
|
+
odG5f9RNY$>n8Z&1A.!508FN)0tmbWAdWhGPIi!s_)3#"(p[#&$sC*ci"q7u6g[+Zr#J6,#I:i#PCa
|
42
|
+
+Dq]5NZs'',QkhY8.'?s+[uau5H'E?<T!on6+@X@JV5%qB-f9foZ7)#J9-b/:`i-I/cggeW/Ui/4pK
|
43
|
+
r*$$AWsM/e+qKo"b3i%+j2OEq540FP(:\/#>.EXT[)[f?LmG`QjG+TanX"5m^=9R2d_a0>7P!o.Go@
|
44
|
+
;IkmT\LU(!q)m25b!9(-Nuap49WGp'>`l\!\5[O$ZV%^!iV>$JD^rg_8Nr>5R/$tp`tD5(]rV0BE1A
|
45
|
+
p?4A$u-Usag"99uj=g2uP^dt10i?SYYUsg9=V.GNofR;-K7_+EO$NR?OfA#O8.`L>q(#n_(!ann.7a
|
46
|
+
UI[J4'M?aaVT%!X0$a?lPpR#WtVuqE'39UnRS17@dmK@OCSRN?Q.BJ;=TNVjm_sZ.qK1fXVqG-R42h
|
47
|
+
+p!H!mR0FDI1*k8&D8PV/VTR,%H5S^"k_?:U?M[g[32#*!Zbf:#S$kH&d,J-jAr!/<Xo-I0aB\g&Rc
|
48
|
+
ds!RNP_%^YdIN*LCa!V#&ElAuh"5]MSl7P_ru_B!#T&HK$iQIu(Y.&*eO%`)1)"i012iAf-a#Yr`:8
|
49
|
+
GO/sW:LR!F>67Xj:jrMDH`ah%KVq.c&)W*ZdiV$P^qp=,=S7G7;dC.`5hp^S9kH;(bS6rX)oJs"bM7
|
50
|
+
s!pnS>E22n2UsL`=`dmJ!@>$:m;3EWKYVlXjfRh'FE]8c`j>RP7I=Ts5'0't.;?MEIJFEn-#C-(d8i
|
51
|
+
DKeY-:8D/<TuW=CR;q=?":I,68nmBFdE*+T\eT$=LXVf!2A;LJV:i_`/,-:`MBV\>g%sr'ZMfr\J3^
|
52
|
+
oTDIik_P@]5"E]4*(+S#LEKn)6O5SX\n&(5lI&5=#Ytuk&-*5MMk(+s\c;_P"74AC36.-X$D><DLg\
|
53
|
+
@8JKPg3WW_rU/>M,.J;"Pe=:ta%-8to;+s*NC&HP-2#f(Zi)'cY=%RJ,F5c=tm5aV`b@E^l%5a*#De
|
54
|
+
3J^&.l>E$%S*/l"9:,'a$:1P!9*9ENNO0""R7#E"<G>,*p,ko9]cMo7KHqn)F<9s6%0a1dL(MFZpt)
|
55
|
+
r?nq`?"s.4X!COp9i@l/1gaXnK)$-ZWAiqKEXAC;<!!Qa4O>JM>`rj:).q)Hp@A`01c3?OY!Wg5KTs
|
56
|
+
2m/=9F'b$:%ht@?MT2j;C7j*eVZYTlq3eP3G4o+2pLFBdNf[)utV1GRs'?TFBl?Z:[s&$_bZ@Wd]Y6
|
57
|
+
O<Xsq5CfO5TH7"ic5C'O.3aWVJT`)C[KE0>"@+:6lJ<ARgirk0*hb%n5[8m@8cXAW*MB2E!SR[;j;W
|
58
|
+
oL]nIR_!!E]rGTL7'"(2rLi&1V7VNN/R3eA?.+B/J?^ijGOI,YJRV/UiQKE*,#,[n\Qi%b@D_>qY46
|
59
|
+
>8&ii04HH;A[/[!5O6t!HJ[#WWYSg#[gWL?m#I-%KM(P<hXmY6+dR+14/!`"^j.f@>5TWg_jM"*/'=
|
60
|
+
TM:Q>cE^p00!90lD!-\^"$k*,N"TU^fTsbqlfF,MB(r<kq":e<01'%Dr)?J+kTUHrf(nUl20`ueFiU
|
61
|
+
/+jg)o5W!?_RgUO3S[NWYq^"J@G+5Qi,om*\_IOA8V2aNu?2E\ATu*oZT(JX!c3:]W:Y+2QU\5hH>b
|
62
|
+
1_8Ne#N-YtJ`\#ine<6V)8Ip-KSB](9R_sRSRMM'W^Irkm-O#;2c?=1#4Rh\fIu6Ypk.o6JPZV;*X`
|
63
|
+
!j*T1PVJXRV\rY$H8*[">\_:BAWdf9@^$K.!H5e%+c@N`IT"lLR6J\3%t-l[a2bQ%hgn_>U%(aN_5!
|
64
|
+
$L8;J^P:kZ2ip(!63SaO%KBQX;m1"];".)Kk+3j('&k;d(rHpU"U4>/f+N%%DY4@^t&cbSB:qsc/JX
|
65
|
+
-+CYI^VA(/I"J@eNXXG>aQjVc/"lZg.J_UdP:`Fod"6;KD+:&n%]H'kp+n.So+k@^nq?(+L!22jm!/
|
66
|
+
Lb#/coJjA=shO@%&+/`XuXJ!FSI6O>IdtclSnC1bok&_A>8lk3G8477!"H5_K@.1n'LW,)F5\TunEE
|
67
|
+
7*]@U?(`&&C.t;]2?H7S%Nr+`KcitnOuh$iXMm^RVBhBshC-10"lLX5M/j>^c6'hed(pRjL-,J:8-o
|
68
|
+
9@)j2BH!(8\3<f1m3!$L>.!$i2.aG,9N`F&b+J,gUdg'"[X(ZELY5tDk:edZ#5"%)^YNm/9fZ>JP'$
|
69
|
+
D9um%-3t2a<'Q<)\`o!+dO.(?3!Ge!2)F\^a9a=3ZK8C"/2(lTX4sg"J$a2"b8i?,]Y!Ce<OP#+$o9
|
70
|
+
fO"_Y`&t\GN+KG)YA2XDqKY+4`WhKt)9(X-CIM/=e#.)5LCc[D#?C;p/4-_"UKK^FXmN9Qc<)kJ!^a
|
71
|
+
M60jr>Q8'qkU41^!pCmjg6&5b]AP;LSWhJct!S)<"U9!#c"@*!2ca!9"J)J]8\ghA2d*#s_Sq?oS3q
|
72
|
+
+9B7jE$RLqW6QTo3u"km1ChckkbfW?#S2H7!b#1FU!uR4#l```U>QM#KQ73g(]Y^7)WCAq@A4dGFoo
|
73
|
+
MT_k9?G+^bQU)@?LY*T00`TFMqF!qcT&MBG7_+P7O)k0$'M#%0Im`1Vc?4<[-_BI#bN!2rYC*9i%h?
|
74
|
+
(q0+9mdBn,T))l!3t/X5]-Vh9H2p"#p<[Z+<tD4-?`")o-'VC_/^D:]G7-C*T>)RhuQhfb_*b>![%a
|
75
|
+
L.qg!MA3E]2,fYoG.ZBdPC9+'?!3-VqUC.dQ"<k^Z>saDL5QV*S5^j!'P#SZ]<Hp'(\o;':$QsC*iP
|
76
|
+
N.APTA[D!FSY)+;,A3O<$VR(1D"Z&/GTQ49<6@"[FUG5_K:d.T>F1g`h9R!^n3r,)Tc7"$dh=J8bNY
|
77
|
+
3,f1c*=1.U7`Jt=0FGXV*hg>K8eGfgPQd^,%R=%q+i%ak/34sRR2&2H,,2!Nj;7&[<hn*f'/Ek7`[K
|
78
|
+
/hMKO*BO;%e*!"2&"5f*'nj2gQ'UIjFk*H4i@Vdp^^`#R^0&)gt(5hm17+rA)@*/E$5iX-c^6Bpc\K
|
79
|
+
YfF6JgMSk5_EOS_mRLh+qC!VrW@[!![2.di0Y*AbQU;P*J*c#/5Q?9[K[jZ!['+q@:1#4i!uG3)Lt9
|
80
|
+
d_."<mS?]rkCVj3`8P1,`V?P6R*hge!J^POR$lt*i*F[58=F?$XdJsr@'d85Ll"Xl4r^3=_%)?TY^]
|
81
|
+
5@j`W4uK*5Db!6-G/EarP_I"aFu'6'<1<@Mj[+K_PA&_C.OFdhIRK"bI-b5V@D&4M.a[>s[d)64=g,
|
82
|
+
bT247%\[\TTr];#?K3NJ.3aoeJ@5U>A.QJ!(;TbOJTMHRJ.4b["!R+tCGCeM;h/=(>gR43K$="H#Q\
|
83
|
+
>u$\3UD+Y3r9+q4NS"[d5HlSKV='E`6c"[H+8@IbMulRdunW<2-5:Ltu2nh#l$M$MF5;RVO_d-/<K!
|
84
|
+
!.B`i"uR8=M(AN*m'R0V(rKfQlsc*(dX6&$!J7FH3">eJ5mR=+j@!dg]l\'"Lq\hi[SW9VS,;*C$Ac
|
85
|
+
#DEF69*$=GsX?f#c@A?C;rtQXh)CU=DE;gS;n-D9Y"3X"S@E]a#j:]:@*$>dof#0;R3Kn+N]YH+oep
|
86
|
+
7ND]H!Wt'ObktTd1I@ar^_)"/$n>_/^HFg`-@;*C*^0J2ggI\h7_/!(!D\Z:5q"aGC!1j[dH7_4Va@
|
87
|
+
g&N$u*LP8NiZAkIA/hn1$@s<;TG:qpe,Wka*O@:S;'Z/carH!-'0tCYW3?BS6ONpd)hH-?_'U(.0E`
|
88
|
+
L<*?)GmES:EN7Q]Sc*'s95!9!*,63FY_KVS5lP+QQYNE(`$<h];d@IP.#YT,q-'S2qX!"9n.&N`=;V
|
89
|
+
;Nn-+n&g4J/]Ze!!">GP-,c*ndWBl"F;!@loNX0W$'gL6Uk-T"EZDO(Sc,k7>'A:@<`ZN31L$YW5')
|
90
|
+
OJ5??`mL0)>5G/5bQ!FP;YWFQ*jT#8^q=@o9Nmkof<'fK'i>NCrKG%^2*'cC`^^Wk<4=)K"/*uN*_$
|
91
|
+
Ul"NDt,;+5tNqqb0%:\CNp	Y,s+HQc]])uf6%cKGcm1UCoWE4U*Y<fJQ+M7uq-4/U^"mLRg=[+A]
|
92
|
+
7a:!P&"tlu2BW!dX@-LbS&)$D7<f`+bQ:$>!>"Gsd;%:LmL2@,!rt0)/D;1r.QhTF*j9)VH=.WLa9_
|
93
|
+
im"RDrC_@*^op(kK#)PIEQJ]%U$s(bbdYg1FBi`Pi>rO7Re+Uce$!W!B/6l<`[&-8pB_!2&1U^-rm"
|
94
|
+
L7Bdi!L:ZQ&MQnc<p^%6AlB:98WcX1l7WhiX-[2T`79['4I7I6,Xf9^];2;(kKOAJZ9c!5Qee;*!L'
|
95
|
+
Y"[mLDP3g@%(4guS+[-]ng'.ON!C>.7TJmX\NB<d9*MM+-!=06EKcsh6e8A5#6#mkeFr=`C!C.PDC,
|
96
|
+
=Bb#&F@8+(=dP@)*">IK95@ULdq\0$4k/O\J`H/4F)3?qeY;7"un[)b!tG+oDebXp/Y5dZD<O!+H$r
|
97
|
+
?l7kT!A;#H^^:h1$l=Hb(4-)b<m1PPN#P(4(?(d2c!DI."9IbfA4J+$6KG8B*YdDN(#d"75dCIRqAj
|
98
|
+
!$(+Z`o5RrMo<7X;QkO:5,6)+SA":ROl",F0)^eR4h!!Ifb)mraMTEH9IJ<g33'X.FEi#eCQ/-A-K*
|
99
|
+
!,(C7TUmFe5*%`Os.+N!RM0]nua)`!26&*."X)tH5rWM*l/U(!*f`USs[@jR/dF/Z]5HEnelWo!?n6
|
100
|
+
Y8:i!<jqo9,'VS,(4gG/qS%#,L*l7dK+o`g""p'5\j#?ib(_doa_bs%#a1skB^`4(4":/SU"']6&!!
|
101
|
+
ipu1(F=s)k6OCJ50JP-r-le+2J'q=HH-$dRPVa#2h096*GmZ@%$I[J:@<1%QXX(<:4JM.j><_GJjUD
|
102
|
+
d(imAU*T40O_Ri\!Z^OjYg5p;($I3"d_\<]:uV0h6.tNHqA@&WLbJ0"?s!H9q2%?C#`tJsTqWJ,kQq
|
103
|
+
6F!hdiJ8GXFD/-4ZG(')8W5bJM$Hldf[!MD^s@LN9R[m+=#+:]1Ie7:B@Op+-/'1LJ$"p&%+a7pVY!
|
104
|
+
<@Wp&V(Qt!!r[Y!0M4K#RqLK7H6.j^_0WpQUVk;LCrU[+pS1"YLiCF=oa&uahRub1h@O*!.]".oC\R
|
105
|
+
$Dk;pI&4doLrgh&<^_cA$'N"pqa?nV!U3gI:!5O+=!.YP+#m#Zu.l=[e!<rRT+jbHJ<#l5R"[S9\\3
|
106
|
+
:H-!b^uf9icEV$%s3&!Z=!4^hgBL?iXjG!?hG-UCYE'gf=nX)MbX83L'0VGmo8>#@$<[U6a*^m$C)p
|
107
|
+
!9nmCJhOn@q<Id)5A[[J47A10>J1pX\@^@Ss/f;n2.-MllIZMr^_17[hiGjhguhiFS(4Ybn4FY'HFG
|
108
|
+
:&&dEqcLE]TKOQ'Q6#5N4PSOOdDH@Q7$K]N5B&;1UGK%RRJMF%kT#Q\=*XFDYbi\2a8Tik]!+2Z]!B
|
109
|
+
H-+JGbm3sa?TqAj'Yn?$"8Zq?CGF:nnacSE#o!"#LS),-]atfI32htJ9dPJE!cRbkL$:7-'+dH!2oC
|
110
|
+
f0e=h.4M%.4lH=.+XHN1=0I)c3Pa!7B@IAOcMlb'd,2a@t!s"u<9+IdORZB3K'+uj>SnG$[B,g!<]Q
|
111
|
+
PAL0J!N]6"!@p"p$tK#(YVdfQa!#K8K]TY=KO)!s",qPCPGtp1t]2<;MTqkNG/?!W]/C#>5FA!d5Ui
|
112
|
+
TtGFe^b?#p-g=/s%t_Sn&-Gk/WOd'ie#LKc+5n>'a+8b?[koBh+urDieoBGXUF4cs&qcjM+`'t2p],
|
113
|
+
V7a(aU\*j]eeSUhnS%LReqBGWb*20-fU/;J6/HQ7f4i-e=M4d6D-TR6#/,:;s+G+H[!lT>/dciUS.+
|
114
|
+
TO+sXX>:AGF\tAiWA4\ei"4q+N6Q.WtiOuRa+Ju\MHl/1/To5H,bK1-aL_&]''MS"//(YjQ/743]4H
|
115
|
+
(h5`F=V^Ip&GF_C\[/cbmRbYLMll+#%qJ5<M]:u3ep9*^t\dYcOBR?WB]4VYOkI]>-gpNm+qNc0'UA
|
116
|
+
OkiN,1QKH!KbVp2;I#Er<\kE;YHE[B=luW0ZqPo]DM1)ojtTCco;R[dgu]4Yc-4G5Km6rJ+n9G($9(
|
117
|
+
gNNP9F5(;Tf6cD!rWe)7G^_#u3?TF~>
|
118
|
+
%%EndData
|
119
|
+
end restore showpage
|
120
|
+
%%Trailer
|
121
|
+
%%EOF
|
@@ -0,0 +1,121 @@
|
|
1
|
+
%!PS-Adobe-3.0 EPSF-3.0
|
2
|
+
%%Pages: 1
|
3
|
+
%%BoundingBox: 0 0 148 35
|
4
|
+
%%DocumentData: Clean7Bit
|
5
|
+
%%LanguageLevel: 2
|
6
|
+
%%EndComments
|
7
|
+
%%Page: 1 1
|
8
|
+
save 9 dict begin
|
9
|
+
{/T currentfile/ASCII85Decode filter def/DeviceRGB setcolorspace
|
10
|
+
/F T<</BitsPerComponent 8/Columns 148/Colors 3/Predictor 10>>/LZWDecode filter def
|
11
|
+
<</ImageType 1/Width 148/Height 35/BitsPerComponent
|
12
|
+
8/ImageMatrix[1 0 0 -1 0 35]/Decode
|
13
|
+
[0 1 0 1 0 1]/DataSource F>> image
|
14
|
+
F closefile T closefile}
|
15
|
+
%%BeginData:;
|
16
|
+
exec
|
17
|
+
J,isG0E`.##D>EP:q1$o*=mro@So+\<\5,H7Uo<*jE<[.O?u31)'kMB-^757;Rp>H>nrLFk#4:9enm
|
18
|
+
@9:1P"UeFn;TTMT<"fDHBj'`q4r<4ZX!SO*=mW\fPA(6)@MeDT7'eIi*oK%FI3)\mD4:UEXXoQq%1\
|
19
|
+
S77.!#I-@Se2%47P#*#mEuYH^d0RCRf/[Qrdih,f*l1G$X0mpZ$=o]49E9/[aY[SQu")WHG1JPJ<2&
|
20
|
+
;?693`^eD-_23IsB>#(AfOn'%5^M[%4Zg%Da0FgG.?uRVJ<Q*K0%d/aqbjY[amhQaY8-0)"!C:+d0L
|
21
|
+
-N`#6M^A//SI#rpjGPT"MD3iq$MhE?m9;O=T2JqVkX##;,4<&4Z^#.=rZCe9qQ&BH0!iX7?\N,:Y/A
|
22
|
+
Z33G6(aKlPL]@GUW+Z=.SnHCM!1a4rN";SS)WKh.-Af*NM#k_9!!qLj!.5m04<0!(knkHBL7lU'+p@
|
23
|
+
t.KGoL%csdQ;5TgEP+7CHH\1unBjEmK98KM0&V)cd0J0Js0Dj4bYP2_$Gbbg+WTE#JcJ-#-P)?QQlQ
|
24
|
+
id=RlZ!N1Y_"S$T?KPm$A!n-NX(H\l09,e^_tpVc\n7S#6CJgmUmU#0Mluu!:V=aYlGc>O/l3*Os:"
|
25
|
+
$J3F+--ebd.3_kqd=eAF9e:!t/=jVL5B$'%"P:"A`/VF7?dNAUABGi[%C)^PqRtj:5>ob)MJdER=Oa
|
26
|
+
M9iJuR$9"lU-jB!KK.h^AI0ao$K-MCigQ7qb$_NA/F%Q59ThH)u=X-XliX3[\sP!.sL?$j7/3$/A8`
|
27
|
+
!+_N#Wm$nhF<:bPhcCdT_@CZ0+9D.V2h1lD!J8+;$jfLu8/;7._$ClT'IO_S#FP]Cc6:>4NQAI,0iQ
|
28
|
+
/B7jpHq.,nC`re3L+^#k:/lp)6dJA^;k#o4gYfEOAaHP1q$.O\$p!$sYB!",T[fI2K)h8YO-Wsg8PO
|
29
|
+
5cNp#Wn:Prknd@iQQQ\7R>B$!?`ne!1]sdp(IYgBb4;a_Z5o;"Q8JqAn]<2l2Uur+=o%!i42`e*:j0
|
30
|
+
/-A)>,8e!7R/pEj1Q\Y[=UL4bVYD.T.*^KtmR/CY?T\p^h*0JC@E%%A-+p3]l1$iq6Vm^3t7>WpC_#
|
31
|
+
OR>W#Gf2GT)7P6G]10#Xgt8Oaq(t7gYidRJLlma+#9@<ddt[\Z6+5!B.6ab4#7WMe56>?]e_>DHqcO
|
32
|
+
p\"SbJ.;S[,YEglNYOk,h.Rr7)M0(Q!Z6R;+_@b2PnNXlgq2?jWNlFc_@6F"lOkS!<3:m?Fp.jG"s1
|
33
|
+
[XHOi@U5"D7ILBHaf%mW*<a/AtZ"6</akD0*PJOUlE\>_lipcaJl##HQR`"kUi%"TgJ#CpK40lS\ji
|
34
|
+
b832,OGBJ7^e,r0jHjhV?0)?8K))i>$VE>29*NB\d1[sN\SC"78fm$UJ+C8i(WTn0STs%XG6k4L&aO
|
35
|
+
aeleQ*!Ko3'njtUHPTt8mO)bAY3ls<#8@u$J&`e]b2XZC:)"J^Ma8cXBP`n?\pFceCJq,-9!!^O;"C
|
36
|
+
U"'Pn40$LthKbOH#'Wfo,q3)^GIB,o`G4I/Uig%06j%oLHna0o'`=*eVCW&!?WNa5aH*?p4`47t2eI
|
37
|
+
Ja"=-J:A(AlokfFL,VKlmJpW/C64P@*M^PqNq)Eoa5Y5B!-AX#+:nP_@P!/\G^^/hmQSf<I#<G+2h6
|
38
|
+
De!Jebp+(I-CN_uZ37o9F3c>XPM"rofS"V)VJL3SdTQ>2S);BT_6&WXuC3$2u5*b42J!0@`m5g%1O!
|
39
|
+
,)Z>,JOQ4@A+c"U2\4!,X7=f#67;p,t0!@4pTSIRF9AP!!!l@%ZOF3/4rd)\*"$TC6Ea*#gj0Ung=W
|
40
|
+
6<Zg7"JrUTrn:8:W!$cT+O'os?JA>:nTWkJr-:'>^%(/gO]Rq[XGY#UekETMdB-m6OGeaU<*cXR[J=
|
41
|
+
odG5f9RNY$>n8Z&1A.!508FN)0tmbWAdWhGPIi!s_)3#"(p[#&$sC*ci"q7u6g[+Zr#J6,#I:i#PCa
|
42
|
+
+Dq]5NZs'',QkhY8.'?s+[uau5H'E?<T!on6+@X@JV5%qB-f9foZ7)#J9-b/:`i-I/cggeW/Ui/4pK
|
43
|
+
r*$$AWsM/e+qKo"b3i%+j2OEq540FP(:\/#>.EXT[)[f?LmG`QjG+TanX"5m^=9R2d_a0>7P!o.Go@
|
44
|
+
;IkmT\LU(!q)m25b!9(-Nuap49WGp'>`l\!\5[O$ZV%^!iV>$JD^rg_8Nr>5R/$tp`tD5(]rV0BE1A
|
45
|
+
p?4A$u-Usag"99uj=g2uP^dt10i?SYYUsg9=V.GNofR;-K7_+EO$NR?OfA#O8.`L>q(#n_(!ann.7a
|
46
|
+
UI[J4'M?aaVT%!X0$a?lPpR#WtVuqE'39UnRS17@dmK@OCSRN?Q.BJ;=TNVjm_sZ.qK1fXVqG-R42h
|
47
|
+
+p!H!mR0FDI1*k8&D8PV/VTR,%H5S^"k_?:U?M[g[32#*!Zbf:#S$kH&d,J-jAr!/<Xo-I0aB\g&Rc
|
48
|
+
ds!RNP_%^YdIN*LCa!V#&ElAuh"5]MSl7P_ru_B!#T&HK$iQIu(Y.&*eO%`)1)"i012iAf-a#Yr`:8
|
49
|
+
GO/sW:LR!F>67Xj:jrMDH`ah%KVq.c&)W*ZdiV$P^qp=,=S7G7;dC.`5hp^S9kH;(bS6rX)oJs"bM7
|
50
|
+
s!pnS>E22n2UsL`=`dmJ!@>$:m;3EWKYVlXjfRh'FE]8c`j>RP7I=Ts5'0't.;?MEIJFEn-#C-(d8i
|
51
|
+
DKeY-:8D/<TuW=CR;q=?":I,68nmBFdE*+T\eT$=LXVf!2A;LJV:i_`/,-:`MBV\>g%sr'ZMfr\J3^
|
52
|
+
oTDIik_P@]5"E]4*(+S#LEKn)6O5SX\n&(5lI&5=#Ytuk&-*5MMk(+s\c;_P"74AC36.-X$D><DLg\
|
53
|
+
@8JKPg3WW_rU/>M,.J;"Pe=:ta%-8to;+s*NC&HP-2#f(Zi)'cY=%RJ,F5c=tm5aV`b@E^l%5a*#De
|
54
|
+
3J^&.l>E$%S*/l"9:,'a$:1P!9*9ENNO0""R7#E"<G>,*p,ko9]cMo7KHqn)F<9s6%0a1dL(MFZpt)
|
55
|
+
r?nq`?"s.4X!COp9i@l/1gaXnK)$-ZWAiqKEXAC;<!!Qa4O>JM>`rj:).q)Hp@A`01c3?OY!Wg5KTs
|
56
|
+
2m/=9F'b$:%ht@?MT2j;C7j*eVZYTlq3eP3G4o+2pLFBdNf[)utV1GRs'?TFBl?Z:[s&$_bZ@Wd]Y6
|
57
|
+
O<Xsq5CfO5TH7"ic5C'O.3aWVJT`)C[KE0>"@+:6lJ<ARgirk0*hb%n5[8m@8cXAW*MB2E!SR[;j;W
|
58
|
+
oL]nIR_!!E]rGTL7'"(2rLi&1V7VNN/R3eA?.+B/J?^ijGOI,YJRV/UiQKE*,#,[n\Qi%b@D_>qY46
|
59
|
+
>8&ii04HH;A[/[!5O6t!HJ[#WWYSg#[gWL?m#I-%KM(P<hXmY6+dR+14/!`"^j.f@>5TWg_jM"*/'=
|
60
|
+
TM:Q>cE^p00!90lD!-\^"$k*,N"TU^fTsbqlfF,MB(r<kq":e<01'%Dr)?J+kTUHrf(nUl20`ueFiU
|
61
|
+
/+jg)o5W!?_RgUO3S[NWYq^"J@G+5Qi,om*\_IOA8V2aNu?2E\ATu*oZT(JX!c3:]W:Y+2QU\5hH>b
|
62
|
+
1_8Ne#N-YtJ`\#ine<6V)8Ip-KSB](9R_sRSRMM'W^Irkm-O#;2c?=1#4Rh\fIu6Ypk.o6JPZV;*X`
|
63
|
+
!j*T1PVJXRV\rY$H8*[">\_:BAWdf9@^$K.!H5e%+c@N`IT"lLR6J\3%t-l[a2bQ%hgn_>U%(aN_5!
|
64
|
+
$L8;J^P:kZ2ip(!63SaO%KBQX;m1"];".)Kk+3j('&k;d(rHpU"U4>/f+N%%DY4@^t&cbSB:qsc/JX
|
65
|
+
-+CYI^VA(/I"J@eNXXG>aQjVc/"lZg.J_UdP:`Fod"6;KD+:&n%]H'kp+n.So+k@^nq?(+L!22jm!/
|
66
|
+
Lb#/coJjA=shO@%&+/`XuXJ!FSI6O>IdtclSnC1bok&_A>8lk3G8477!"H5_K@.1n'LW,)F5\TunEE
|
67
|
+
7*]@U?(`&&C.t;]2?H7S%Nr+`KcitnOuh$iXMm^RVBhBshC-10"lLX5M/j>^c6'hed(pRjL-,J:8-o
|
68
|
+
9@)j2BH!(8\3<f1m3!$L>.!$i2.aG,9N`F&b+J,gUdg'"[X(ZELY5tDk:edZ#5"%)^YNm/9fZ>JP'$
|
69
|
+
D9um%-3t2a<'Q<)\`o!+dO.(?3!Ge!2)F\^a9a=3ZK8C"/2(lTX4sg"J$a2"b8i?,]Y!Ce<OP#+$o9
|
70
|
+
fO"_Y`&t\GN+KG)YA2XDqKY+4`WhKt)9(X-CIM/=e#.)5LCc[D#?C;p/4-_"UKK^FXmN9Qc<)kJ!^a
|
71
|
+
M60jr>Q8'qkU41^!pCmjg6&5b]AP;LSWhJct!S)<"U9!#c"@*!2ca!9"J)J]8\ghA2d*#s_Sq?oS3q
|
72
|
+
+9B7jE$RLqW6QTo3u"km1ChckkbfW?#S2H7!b#1FU!uR4#l```U>QM#KQ73g(]Y^7)WCAq@A4dGFoo
|
73
|
+
MT_k9?G+^bQU)@?LY*T00`TFMqF!qcT&MBG7_+P7O)k0$'M#%0Im`1Vc?4<[-_BI#bN!2rYC*9i%h?
|
74
|
+
(q0+9mdBn,T))l!3t/X5]-Vh9H2p"#p<[Z+<tD4-?`")o-'VC_/^D:]G7-C*T>)RhuQhfb_*b>![%a
|
75
|
+
L.qg!MA3E]2,fYoG.ZBdPC9+'?!3-VqUC.dQ"<k^Z>saDL5QV*S5^j!'P#SZ]<Hp'(\o;':$QsC*iP
|
76
|
+
N.APTA[D!FSY)+;,A3O<$VR(1D"Z&/GTQ49<6@"[FUG5_K:d.T>F1g`h9R!^n3r,)Tc7"$dh=J8bNY
|
77
|
+
3,f1c*=1.U7`Jt=0FGXV*hg>K8eGfgPQd^,%R=%q+i%ak/34sRR2&2H,,2!Nj;7&[<hn*f'/Ek7`[K
|
78
|
+
/hMKO*BO;%e*!"2&"5f*'nj2gQ'UIjFk*H4i@Vdp^^`#R^0&)gt(5hm17+rA)@*/E$5iX-c^6Bpc\K
|
79
|
+
YfF6JgMSk5_EOS_mRLh+qC!VrW@[!![2.di0Y*AbQU;P*J*c#/5Q?9[K[jZ!['+q@:1#4i!uG3)Lt9
|
80
|
+
d_."<mS?]rkCVj3`8P1,`V?P6R*hge!J^POR$lt*i*F[58=F?$XdJsr@'d85Ll"Xl4r^3=_%)?TY^]
|
81
|
+
5@j`W4uK*5Db!6-G/EarP_I"aFu'6'<1<@Mj[+K_PA&_C.OFdhIRK"bI-b5V@D&4M.a[>s[d)64=g,
|
82
|
+
bT247%\[\TTr];#?K3NJ.3aoeJ@5U>A.QJ!(;TbOJTMHRJ.4b["!R+tCGCeM;h/=(>gR43K$="H#Q\
|
83
|
+
>u$\3UD+Y3r9+q4NS"[d5HlSKV='E`6c"[H+8@IbMulRdunW<2-5:Ltu2nh#l$M$MF5;RVO_d-/<K!
|
84
|
+
!.B`i"uR8=M(AN*m'R0V(rKfQlsc*(dX6&$!J7FH3">eJ5mR=+j@!dg]l\'"Lq\hi[SW9VS,;*C$Ac
|
85
|
+
#DEF69*$=GsX?f#c@A?C;rtQXh)CU=DE;gS;n-D9Y"3X"S@E]a#j:]:@*$>dof#0;R3Kn+N]YH+oep
|
86
|
+
7ND]H!Wt'ObktTd1I@ar^_)"/$n>_/^HFg`-@;*C*^0J2ggI\h7_/!(!D\Z:5q"aGC!1j[dH7_4Va@
|
87
|
+
g&N$u*LP8NiZAkIA/hn1$@s<;TG:qpe,Wka*O@:S;'Z/carH!-'0tCYW3?BS6ONpd)hH-?_'U(.0E`
|
88
|
+
L<*?)GmES:EN7Q]Sc*'s95!9!*,63FY_KVS5lP+QQYNE(`$<h];d@IP.#YT,q-'S2qX!"9n.&N`=;V
|
89
|
+
;Nn-+n&g4J/]Ze!!">GP-,c*ndWBl"F;!@loNX0W$'gL6Uk-T"EZDO(Sc,k7>'A:@<`ZN31L$YW5')
|
90
|
+
OJ5??`mL0)>5G/5bQ!FP;YWFQ*jT#8^q=@o9Nmkof<'fK'i>NCrKG%^2*'cC`^^Wk<4=)K"/*uN*_$
|
91
|
+
Ul"NDt,;+5tNqqb0%:\CNp	Y,s+HQc]])uf6%cKGcm1UCoWE4U*Y<fJQ+M7uq-4/U^"mLRg=[+A]
|
92
|
+
7a:!P&"tlu2BW!dX@-LbS&)$D7<f`+bQ:$>!>"Gsd;%:LmL2@,!rt0)/D;1r.QhTF*j9)VH=.WLa9_
|
93
|
+
im"RDrC_@*^op(kK#)PIEQJ]%U$s(bbdYg1FBi`Pi>rO7Re+Uce$!W!B/6l<`[&-8pB_!2&1U^-rm"
|
94
|
+
L7Bdi!L:ZQ&MQnc<p^%6AlB:98WcX1l7WhiX-[2T`79['4I7I6,Xf9^];2;(kKOAJZ9c!5Qee;*!L'
|
95
|
+
Y"[mLDP3g@%(4guS+[-]ng'.ON!C>.7TJmX\NB<d9*MM+-!=06EKcsh6e8A5#6#mkeFr=`C!C.PDC,
|
96
|
+
=Bb#&F@8+(=dP@)*">IK95@ULdq\0$4k/O\J`H/4F)3?qeY;7"un[)b!tG+oDebXp/Y5dZD<O!+H$r
|
97
|
+
?l7kT!A;#H^^:h1$l=Hb(4-)b<m1PPN#P(4(?(d2c!DI."9IbfA4J+$6KG8B*YdDN(#d"75dCIRqAj
|
98
|
+
!$(+Z`o5RrMo<7X;QkO:5,6)+SA":ROl",F0)^eR4h!!Ifb)mraMTEH9IJ<g33'X.FEi#eCQ/-A-K*
|
99
|
+
!,(C7TUmFe5*%`Os.+N!RM0]nua)`!26&*."X)tH5rWM*l/U(!*f`USs[@jR/dF/Z]5HEnelWo!?n6
|
100
|
+
Y8:i!<jqo9,'VS,(4gG/qS%#,L*l7dK+o`g""p'5\j#?ib(_doa_bs%#a1skB^`4(4":/SU"']6&!!
|
101
|
+
ipu1(F=s)k6OCJ50JP-r-le+2J'q=HH-$dRPVa#2h096*GmZ@%$I[J:@<1%QXX(<:4JM.j><_GJjUD
|
102
|
+
d(imAU*T40O_Ri\!Z^OjYg5p;($I3"d_\<]:uV0h6.tNHqA@&WLbJ0"?s!H9q2%?C#`tJsTqWJ,kQq
|
103
|
+
6F!hdiJ8GXFD/-4ZG(')8W5bJM$Hldf[!MD^s@LN9R[m+=#+:]1Ie7:B@Op+-/'1LJ$"p&%+a7pVY!
|
104
|
+
<@Wp&V(Qt!!r[Y!0M4K#RqLK7H6.j^_0WpQUVk;LCrU[+pS1"YLiCF=oa&uahRub1h@O*!.]".oC\R
|
105
|
+
$Dk;pI&4doLrgh&<^_cA$'N"pqa?nV!U3gI:!5O+=!.YP+#m#Zu.l=[e!<rRT+jbHJ<#l5R"[S9\\3
|
106
|
+
:H-!b^uf9icEV$%s3&!Z=!4^hgBL?iXjG!?hG-UCYE'gf=nX)MbX83L'0VGmo8>#@$<[U6a*^m$C)p
|
107
|
+
!9nmCJhOn@q<Id)5A[[J47A10>J1pX\@^@Ss/f;n2.-MllIZMr^_17[hiGjhguhiFS(4Ybn4FY'HFG
|
108
|
+
:&&dEqcLE]TKOQ'Q6#5N4PSOOdDH@Q7$K]N5B&;1UGK%RRJMF%kT#Q\=*XFDYbi\2a8Tik]!+2Z]!B
|
109
|
+
H-+JGbm3sa?TqAj'Yn?$"8Zq?CGF:nnacSE#o!"#LS),-]atfI32htJ9dPJE!cRbkL$:7-'+dH!2oC
|
110
|
+
f0e=h.4M%.4lH=.+XHN1=0I)c3Pa!7B@IAOcMlb'd,2a@t!s"u<9+IdORZB3K'+uj>SnG$[B,g!<]Q
|
111
|
+
PAL0J!N]6"!@p"p$tK#(YVdfQa!#K8K]TY=KO)!s",qPCPGtp1t]2<;MTqkNG/?!W]/C#>5FA!d5Ui
|
112
|
+
TtGFe^b?#p-g=/s%t_Sn&-Gk/WOd'ie#LKc+5n>'a+8b?[koBh+urDieoBGXUF4cs&qcjM+`'t2p],
|
113
|
+
V7a(aU\*j]eeSUhnS%LReqBGWb*20-fU/;J6/HQ7f4i-e=M4d6D-TR6#/,:;s+G+H[!lT>/dciUS.+
|
114
|
+
TO+sXX>:AGF\tAiWA4\ei"4q+N6Q.WtiOuRa+Ju\MHl/1/To5H,bK1-aL_&]''MS"//(YjQ/743]4H
|
115
|
+
(h5`F=V^Ip&GF_C\[/cbmRbYLMll+#%qJ5<M]:u3ep9*^t\dYcOBR?WB]4VYOkI]>-gpNm+qNc0'UA
|
116
|
+
OkiN,1QKH!KbVp2;I#Er<\kE;YHE[B=luW0ZqPo]DM1)ojtTCco;R[dgu]4Yc-4G5Km6rJ+n9G($9(
|
117
|
+
gNNP9F5(;Tf6cD!rWe)7G^_#u3?TF~>
|
118
|
+
%%EndData
|
119
|
+
end restore showpage
|
120
|
+
%%Trailer
|
121
|
+
%%EOF
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
+
#
|
2
3
|
module Brcobranca
|
3
4
|
module Boleto
|
4
5
|
class BancoBrasil < Base # Banco do Brasil
|
@@ -10,16 +11,15 @@ module Brcobranca
|
|
10
11
|
validates_each :numero_documento do |record, attr, value|
|
11
12
|
valor_tamanho = value.to_s.size
|
12
13
|
registro_tamanho = record.convenio.to_s.size
|
13
|
-
quantidade =
|
14
|
-
when (valor_tamanho > 9) && (registro_tamanho == 8)
|
14
|
+
quantidade = if (valor_tamanho > 9) && (registro_tamanho == 8)
|
15
15
|
'9'
|
16
|
-
|
16
|
+
elsif (valor_tamanho > 10) && (registro_tamanho == 7)
|
17
17
|
'10'
|
18
|
-
|
18
|
+
elsif (valor_tamanho > 7) && (registro_tamanho == 4)
|
19
19
|
'7'
|
20
|
-
|
20
|
+
elsif (valor_tamanho > 5) && (registro_tamanho == 6) && !record.codigo_servico
|
21
21
|
'5'
|
22
|
-
|
22
|
+
elsif (valor_tamanho > 17) && (registro_tamanho == 6) && record.codigo_servico
|
23
23
|
'17'
|
24
24
|
end
|
25
25
|
record.errors.add attr, "deve ser menor ou igual a #{quantidade} dígitos." if quantidade
|
@@ -102,7 +102,7 @@ module Brcobranca
|
|
102
102
|
when 6
|
103
103
|
codigo_servico ? 17 : 5
|
104
104
|
else
|
105
|
-
|
105
|
+
raise Brcobranca::NaoImplementado, 'Tipo de convênio não implementado.'
|
106
106
|
end
|
107
107
|
quantidade ? @numero_documento.to_s.rjust(quantidade, '0') : @numero_documento
|
108
108
|
end
|
@@ -145,7 +145,7 @@ module Brcobranca
|
|
145
145
|
"#{convenio}#{numero_documento}#{agencia}#{conta_corrente}#{carteira}"
|
146
146
|
else
|
147
147
|
# Nosso Número de 17 dígitos com Convenio de 6 dígitos e sem numero_documento, carteira 16 e 18
|
148
|
-
|
148
|
+
raise "Só é permitido emitir boletos com nosso número de 17 dígitos com carteiras 16 ou 18. Sua carteira atual é #{carteira}" unless %w(16 18).include?(carteira)
|
149
149
|
"#{convenio}#{numero_documento}21"
|
150
150
|
end
|
151
151
|
when 4 # Nosso Número de 7 dígitos com Convenio de 4 dígitos e sem numero_documento
|
@@ -1,20 +1,20 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
+
#
|
2
3
|
module Brcobranca
|
3
4
|
module Boleto
|
4
5
|
class Banestes < Base # Banestes
|
5
|
-
|
6
6
|
# <b>REQUERIDO</b>: digito verificador da conta corrente
|
7
7
|
attr_accessor :digito_conta_corrente
|
8
8
|
|
9
|
-
validates_length_of :agencia, maximum: 4, message:
|
10
|
-
validates_length_of :conta_corrente, maximum: 10, message:
|
11
|
-
validates_length_of :numero_documento, maximum: 8, message:
|
9
|
+
validates_length_of :agencia, maximum: 4, message: 'deve ser menor ou igual a 4 dígitos.'
|
10
|
+
validates_length_of :conta_corrente, maximum: 10, message: 'deve ser menor ou igual a 10 dígitos.'
|
11
|
+
validates_length_of :numero_documento, maximum: 8, message: 'deve ser menor ou igual a 8 dígitos.'
|
12
12
|
validates_length_of :variacao, maximum: 1, message: 'deve ser menor ou igual a 1 dígitos.'
|
13
13
|
validates_length_of :carteira, maximum: 2, message: 'deve ser menor ou igual a 2 dígitos.'
|
14
14
|
validates_length_of :digito_conta_corrente, is: 1, message: 'deve ser igual a 1 dígitos.'
|
15
15
|
|
16
16
|
def initialize(campos = {})
|
17
|
-
campos = { carteira:
|
17
|
+
campos = { carteira: '11', variacao: '2' }.merge!(campos)
|
18
18
|
super(campos)
|
19
19
|
end
|
20
20
|
|
@@ -22,35 +22,35 @@ module Brcobranca
|
|
22
22
|
#
|
23
23
|
# @return [String] 3 caracteres numéricos.
|
24
24
|
def banco
|
25
|
-
|
25
|
+
'021'
|
26
26
|
end
|
27
27
|
|
28
28
|
# Dígito verificador do banco
|
29
29
|
#
|
30
30
|
# @return [String] 1 caractere.
|
31
31
|
def banco_dv
|
32
|
-
|
32
|
+
'3'
|
33
33
|
end
|
34
34
|
|
35
35
|
# Agência
|
36
36
|
#
|
37
37
|
# @return [String] 4 caracteres numéricos.
|
38
38
|
def agencia=(valor)
|
39
|
-
@agencia = valor.to_s.rjust(4,
|
39
|
+
@agencia = valor.to_s.rjust(4, '0') if valor
|
40
40
|
end
|
41
41
|
|
42
42
|
# Conta
|
43
43
|
#
|
44
44
|
# @return [String] 7 caracteres numéricos.
|
45
45
|
def conta_corrente=(valor)
|
46
|
-
@conta_corrente = valor.to_s.rjust(10,
|
46
|
+
@conta_corrente = valor.to_s.rjust(10, '0') if valor
|
47
47
|
end
|
48
48
|
|
49
49
|
# Número documento
|
50
50
|
#
|
51
51
|
# @return [String] 8 caracteres numéricos.
|
52
52
|
def numero_documento=(valor)
|
53
|
-
@numero_documento = valor.to_s.rjust(8,
|
53
|
+
@numero_documento = valor.to_s.rjust(8, '0') if valor
|
54
54
|
end
|
55
55
|
|
56
56
|
# Nosso número para exibição no boleto.
|
@@ -0,0 +1,84 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
#
|
3
|
+
module Brcobranca
|
4
|
+
module Boleto
|
5
|
+
class Banrisul < Base # Banrisul
|
6
|
+
validates_length_of :agencia, maximum: 4, message: 'deve ser menor ou igual a 4 dígitos.'
|
7
|
+
validates_length_of :conta_corrente, maximum: 8, message: 'deve ser menor ou igual a 8 dígitos.'
|
8
|
+
validates_length_of :numero_documento, maximum: 8, message: 'deve ser menor ou igual a 8 dígitos.'
|
9
|
+
validates_length_of :carteira, maximum: 1, message: 'deve ser menor ou igual a 1 dígitos.'
|
10
|
+
validates_length_of :convenio, maximum: 7, message: 'deve ser menor ou igual a 7 dígitos.'
|
11
|
+
|
12
|
+
def initialize(campos = {})
|
13
|
+
campos = { carteira: '2' }.merge!(campos)
|
14
|
+
super(campos)
|
15
|
+
end
|
16
|
+
|
17
|
+
# Codigo do banco emissor (3 dígitos sempre)
|
18
|
+
#
|
19
|
+
# @return [String] 3 caracteres numéricos.
|
20
|
+
def banco
|
21
|
+
'041'
|
22
|
+
end
|
23
|
+
|
24
|
+
# Dígito verificador do banco
|
25
|
+
#
|
26
|
+
# @return [String] 1 caractere.
|
27
|
+
def banco_dv
|
28
|
+
'8'
|
29
|
+
end
|
30
|
+
|
31
|
+
# Agência
|
32
|
+
#
|
33
|
+
# @return [String] 4 caracteres numéricos.
|
34
|
+
def agencia=(valor)
|
35
|
+
@agencia = valor.to_s.rjust(4, '0') if valor
|
36
|
+
end
|
37
|
+
|
38
|
+
# Conta
|
39
|
+
#
|
40
|
+
# @return [String] 8 caracteres numéricos.
|
41
|
+
def conta_corrente=(valor)
|
42
|
+
@conta_corrente = valor.to_s.rjust(8, '0') if valor
|
43
|
+
end
|
44
|
+
|
45
|
+
# Número documento
|
46
|
+
#
|
47
|
+
# @return [String] 8 caracteres numéricos.
|
48
|
+
def numero_documento=(valor)
|
49
|
+
@numero_documento = valor.to_s.rjust(8, '0') if valor
|
50
|
+
end
|
51
|
+
|
52
|
+
# Número do convênio/contrato do cliente junto ao banco.
|
53
|
+
# @return [String] 7 caracteres numéricos.
|
54
|
+
def convenio=(valor)
|
55
|
+
@convenio = valor.to_s.rjust(7, '0') if valor
|
56
|
+
end
|
57
|
+
|
58
|
+
# Nosso número para exibição no boleto.
|
59
|
+
#
|
60
|
+
# @return [String] caracteres numéricos.
|
61
|
+
def nosso_numero_boleto
|
62
|
+
"#{numero_documento}-#{numero_documento.duplo_digito}"
|
63
|
+
end
|
64
|
+
|
65
|
+
def agencia_conta_boleto
|
66
|
+
"#{agencia} / #{convenio}"
|
67
|
+
end
|
68
|
+
|
69
|
+
# Posições 20 a 20 - Produto:
|
70
|
+
# 1 Cobrança Normal, Fichário emitido pelo BANRISUL.
|
71
|
+
# 2 Cobrança Direta, Fichário emitido pelo CLIENTE.
|
72
|
+
# Posição 21 a 21 - Constante 1
|
73
|
+
# Posição 22 a 25 - Código da Agência, com quatro dígitos, sem o Número de Controle.
|
74
|
+
# Posição 26 a 32 - Código de Cedente do Beneficiário sem Número de Controle.
|
75
|
+
# Posição 33 a 40 - Nosso Número sem Número de Controle.
|
76
|
+
# Posição 41 a 42 - Constante 40.
|
77
|
+
# Posição 43 a 44 - Duplo Dígito referente às posições 20 a 42 (módulos 10 e 11).
|
78
|
+
def codigo_barras_segunda_parte
|
79
|
+
campo_livre = "#{carteira}1#{agencia}#{convenio}#{numero_documento}40"
|
80
|
+
campo_livre + campo_livre.duplo_digito
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
+
#
|
2
3
|
# @author Kivanio Barbosa
|
3
4
|
module Brcobranca
|
4
5
|
module Boleto
|
@@ -149,12 +150,12 @@ module Brcobranca
|
|
149
150
|
|
150
151
|
# @abstract Deverá ser sobreescrito para cada banco.
|
151
152
|
def nosso_numero_boleto
|
152
|
-
|
153
|
+
raise Brcobranca::NaoImplementado, 'Sobreescreva este método na classe referente ao banco que você esta criando'
|
153
154
|
end
|
154
155
|
|
155
156
|
# @abstract Deverá ser sobreescrito para cada banco.
|
156
157
|
def agencia_conta_boleto
|
157
|
-
|
158
|
+
raise Brcobranca::NaoImplementado, 'Sobreescreva este método na classe referente ao banco que você esta criando'
|
158
159
|
end
|
159
160
|
|
160
161
|
# Valor total do documento: <b>quantidate * valor</b>
|
@@ -189,7 +190,7 @@ module Brcobranca
|
|
189
190
|
# @raise [Brcobranca::BoletoInvalido] Caso as informações fornecidas não sejam suficientes ou sejam inválidas.
|
190
191
|
# @return [String] código de barras formado por 44 caracteres numéricos.
|
191
192
|
def codigo_barras
|
192
|
-
|
193
|
+
raise Brcobranca::BoletoInvalido, self unless valid?
|
193
194
|
codigo = codigo_barras_primeira_parte # 18 digitos
|
194
195
|
codigo << codigo_barras_segunda_parte # 25 digitos
|
195
196
|
if codigo =~ /^(\d{4})(\d{39})$/
|
@@ -202,7 +203,7 @@ module Brcobranca
|
|
202
203
|
codigo = "#{Regexp.last_match[1]}#{codigo_dv}#{Regexp.last_match[2]}"
|
203
204
|
codigo
|
204
205
|
else
|
205
|
-
|
206
|
+
raise Brcobranca::BoletoInvalido, self
|
206
207
|
end
|
207
208
|
end
|
208
209
|
|
@@ -210,7 +211,7 @@ module Brcobranca
|
|
210
211
|
#
|
211
212
|
# @abstract Deverá ser sobreescrito para cada banco.
|
212
213
|
def codigo_barras_segunda_parte
|
213
|
-
|
214
|
+
raise Brcobranca::NaoImplementado, 'Sobreescreva este método na classe referente ao banco que você esta criando'
|
214
215
|
end
|
215
216
|
|
216
217
|
private
|