From 10498f4d335f6bf0089791b263e795233ff79ec5 Mon Sep 17 00:00:00 2001 From: Nigel Tao Date: Tue, 31 Jan 2012 14:01:53 +1100 Subject: [PATCH] image: remove image/bmp and image/tiff from std. They have moved to the code.google.com/p/go.image subrepo. R=rsc CC=golang-dev https://golang.org/cl/5552052 --- src/pkg/Makefile | 3 - src/pkg/image/bmp/Makefile | 11 - src/pkg/image/bmp/reader.go | 152 ------- src/pkg/image/decode_test.go | 9 +- src/pkg/image/testdata/video-001.bmp | Bin 46610 -> 0 bytes src/pkg/image/testdata/video-001.tiff | Bin 30810 -> 0 bytes src/pkg/image/tiff/Makefile | 14 - src/pkg/image/tiff/buffer.go | 54 --- src/pkg/image/tiff/buffer_test.go | 36 -- src/pkg/image/tiff/compress.go | 59 --- src/pkg/image/tiff/consts.go | 103 ----- src/pkg/image/tiff/reader.go | 430 ------------------ src/pkg/image/tiff/reader_test.go | 119 ----- src/pkg/image/tiff/testdata/bw-deflate.tiff | Bin 594 -> 0 bytes src/pkg/image/tiff/testdata/bw-packbits.tiff | Bin 890 -> 0 bytes .../image/tiff/testdata/bw-uncompressed.tiff | Bin 1396 -> 0 bytes src/pkg/image/tiff/testdata/no_rps.tiff | Bin 1294 -> 0 bytes .../tiff/testdata/video-001-uncompressed.tiff | Bin 46674 -> 0 bytes 18 files changed, 2 insertions(+), 988 deletions(-) delete mode 100644 src/pkg/image/bmp/Makefile delete mode 100644 src/pkg/image/bmp/reader.go delete mode 100644 src/pkg/image/testdata/video-001.bmp delete mode 100644 src/pkg/image/testdata/video-001.tiff delete mode 100644 src/pkg/image/tiff/Makefile delete mode 100644 src/pkg/image/tiff/buffer.go delete mode 100644 src/pkg/image/tiff/buffer_test.go delete mode 100644 src/pkg/image/tiff/compress.go delete mode 100644 src/pkg/image/tiff/consts.go delete mode 100644 src/pkg/image/tiff/reader.go delete mode 100644 src/pkg/image/tiff/reader_test.go delete mode 100644 src/pkg/image/tiff/testdata/bw-deflate.tiff delete mode 100644 src/pkg/image/tiff/testdata/bw-packbits.tiff delete mode 100644 src/pkg/image/tiff/testdata/bw-uncompressed.tiff delete mode 100644 src/pkg/image/tiff/testdata/no_rps.tiff delete mode 100644 src/pkg/image/tiff/testdata/video-001-uncompressed.tiff diff --git a/src/pkg/Makefile b/src/pkg/Makefile index 73079c59a8..cd9776d5a5 100644 --- a/src/pkg/Makefile +++ b/src/pkg/Makefile @@ -89,13 +89,11 @@ DIRS=\ html\ html/template\ image\ - image/bmp\ image/color\ image/draw\ image/gif\ image/jpeg\ image/png\ - image/tiff\ index/suffixarray\ io\ io/ioutil\ @@ -181,7 +179,6 @@ NOTEST+=\ exp/ebnflint\ go/doc\ hash\ - image/bmp\ image/gif\ net/http/pprof\ net/http/httptest\ diff --git a/src/pkg/image/bmp/Makefile b/src/pkg/image/bmp/Makefile deleted file mode 100644 index 56635f7ce3..0000000000 --- a/src/pkg/image/bmp/Makefile +++ /dev/null @@ -1,11 +0,0 @@ -# Copyright 2011 The Go Authors. All rights reserved. -# Use of this source code is governed by a BSD-style -# license that can be found in the LICENSE file. - -include ../../../Make.inc - -TARG=image/bmp -GOFILES=\ - reader.go\ - -include ../../../Make.pkg diff --git a/src/pkg/image/bmp/reader.go b/src/pkg/image/bmp/reader.go deleted file mode 100644 index 58bd7812ff..0000000000 --- a/src/pkg/image/bmp/reader.go +++ /dev/null @@ -1,152 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package bmp implements a BMP image decoder. -// -// The BMP specification is at http://www.digicamsoft.com/bmp/bmp.html. -package bmp - -import ( - "errors" - "image" - "image/color" - "io" -) - -// ErrUnsupported means that the input BMP image uses a valid but unsupported -// feature. -var ErrUnsupported = errors.New("bmp: unsupported BMP image") - -func readUint16(b []byte) uint16 { - return uint16(b[0]) | uint16(b[1])<<8 -} - -func readUint32(b []byte) uint32 { - return uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24 -} - -// decodePaletted reads an 8 bit-per-pixel BMP image from r. -func decodePaletted(r io.Reader, c image.Config) (image.Image, error) { - var tmp [4]byte - paletted := image.NewPaletted(image.Rect(0, 0, c.Width, c.Height), c.ColorModel.(color.Palette)) - // BMP images are stored bottom-up rather than top-down. - for y := c.Height - 1; y >= 0; y-- { - p := paletted.Pix[y*paletted.Stride : y*paletted.Stride+c.Width] - _, err := io.ReadFull(r, p) - if err != nil { - return nil, err - } - // Each row is 4-byte aligned. - if c.Width%4 != 0 { - _, err := io.ReadFull(r, tmp[:4-c.Width%4]) - if err != nil { - return nil, err - } - } - } - return paletted, nil -} - -// decodeRGBA reads a 24 bit-per-pixel BMP image from r. -func decodeRGBA(r io.Reader, c image.Config) (image.Image, error) { - rgba := image.NewRGBA(image.Rect(0, 0, c.Width, c.Height)) - // There are 3 bytes per pixel, and each row is 4-byte aligned. - b := make([]byte, (3*c.Width+3)&^3) - // BMP images are stored bottom-up rather than top-down. - for y := c.Height - 1; y >= 0; y-- { - _, err := io.ReadFull(r, b) - if err != nil { - return nil, err - } - p := rgba.Pix[y*rgba.Stride : y*rgba.Stride+c.Width*4] - for i, j := 0, 0; i < len(p); i, j = i+4, j+3 { - // BMP images are stored in BGR order rather than RGB order. - p[i+0] = b[j+2] - p[i+1] = b[j+1] - p[i+2] = b[j+0] - p[i+3] = 0xFF - } - } - return rgba, nil -} - -// Decode reads a BMP image from r and returns it as an image.Image. -// Limitation: The file must be 8 or 24 bits per pixel. -func Decode(r io.Reader) (image.Image, error) { - c, err := DecodeConfig(r) - if err != nil { - return nil, err - } - if c.ColorModel == color.RGBAModel { - return decodeRGBA(r, c) - } - return decodePaletted(r, c) -} - -// DecodeConfig returns the color model and dimensions of a BMP image without -// decoding the entire image. -// Limitation: The file must be 8 or 24 bits per pixel. -func DecodeConfig(r io.Reader) (config image.Config, err error) { - // We only support those BMP images that are a BITMAPFILEHEADER - // immediately followed by a BITMAPINFOHEADER. - const ( - fileHeaderLen = 14 - infoHeaderLen = 40 - ) - var b [1024]byte - if _, err = io.ReadFull(r, b[:fileHeaderLen+infoHeaderLen]); err != nil { - return - } - if string(b[:2]) != "BM" { - err = errors.New("bmp: invalid format") - return - } - offset := readUint32(b[10:14]) - if readUint32(b[14:18]) != infoHeaderLen { - err = ErrUnsupported - return - } - width := int(readUint32(b[18:22])) - height := int(readUint32(b[22:26])) - if width < 0 || height < 0 { - err = ErrUnsupported - return - } - // We only support 1 plane, 8 or 24 bits per pixel and no compression. - planes, bpp, compression := readUint16(b[26:28]), readUint16(b[28:30]), readUint32(b[30:34]) - if planes != 1 || compression != 0 { - err = ErrUnsupported - return - } - switch bpp { - case 8: - if offset != fileHeaderLen+infoHeaderLen+256*4 { - err = ErrUnsupported - return - } - _, err = io.ReadFull(r, b[:256*4]) - if err != nil { - return - } - pcm := make(color.Palette, 256) - for i := range pcm { - // BMP images are stored in BGR order rather than RGB order. - // Every 4th byte is padding. - pcm[i] = color.RGBA{b[4*i+2], b[4*i+1], b[4*i+0], 0xFF} - } - return image.Config{pcm, width, height}, nil - case 24: - if offset != fileHeaderLen+infoHeaderLen { - err = ErrUnsupported - return - } - return image.Config{color.RGBAModel, width, height}, nil - } - err = ErrUnsupported - return -} - -func init() { - image.RegisterFormat("bmp", "BM????\x00\x00\x00\x00", Decode, DecodeConfig) -} diff --git a/src/pkg/image/decode_test.go b/src/pkg/image/decode_test.go index 1b7db8bade..d659867243 100644 --- a/src/pkg/image/decode_test.go +++ b/src/pkg/image/decode_test.go @@ -11,11 +11,9 @@ import ( "os" "testing" - _ "image/bmp" _ "image/gif" _ "image/jpeg" _ "image/png" - _ "image/tiff" ) type imageTest struct { @@ -25,7 +23,7 @@ type imageTest struct { } var imageTests = []imageTest{ - {"testdata/video-001.png", "testdata/video-001.bmp", 0}, + {"testdata/video-001.png", "testdata/video-001.png", 0}, // GIF images are restricted to a 256-color palette and the conversion // to GIF loses significant image quality. {"testdata/video-001.png", "testdata/video-001.gif", 64 << 8}, @@ -33,10 +31,7 @@ var imageTests = []imageTest{ {"testdata/video-001.png", "testdata/video-001.5bpp.gif", 128 << 8}, // JPEG is a lossy format and hence needs a non-zero tolerance. {"testdata/video-001.png", "testdata/video-001.jpeg", 8 << 8}, - {"testdata/video-001.png", "testdata/video-001.png", 0}, - {"testdata/video-001.png", "testdata/video-001.tiff", 0}, - - // Test grayscale images. + // Grayscale images. {"testdata/video-005.gray.png", "testdata/video-005.gray.jpeg", 8 << 8}, {"testdata/video-005.gray.png", "testdata/video-005.gray.png", 0}, } diff --git a/src/pkg/image/testdata/video-001.bmp b/src/pkg/image/testdata/video-001.bmp deleted file mode 100644 index ca3dd42a7c9157d2cd4c6775c91968c8867dd7f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46610 zcmaI82V7Iv8#jIu_6UJMNFWeMNFaNXK?Zv-2MA8w)>gZ$d(=@^)vC2_ZQTnLoG5NV z+w`v(39 zhz>16^@k9m_;md_Pe4N+e~>n1f54P|RPr)EOhPAXiY@aQ5tP{IXd8ofWUgAaJaD{H(0W?Nb04;*x5$H{0yHnXN{!HXT%g8JF zVa)9A#iJ+;6(UfP55tEUjmS(wKolZHyO8)UB!LSl#)TY3@MF5Ug}Ar}6TE|w4+Z%L zx>9J~K@5Ltcu+7ohR@=OA|x`lP#7r_MJF5L4eGckiAJC)2pF)CK6*bIc7Ql|BSQ2k zRm7im5`QU0zwC1xe}pxuDraV;e#l~(ws%CNOs5oOCMmPClL~s}r>E)?R2-Rrqm~Qf zR8jyi(Ws7#lLL$@m4p|~;zWgq(kbKsl0U_d78)8B5fK_5?oX!?h(x^;LmZ_JGhpZd zSO5*^SS(#)w_3XdV8J1RL$jp|KmZfY0NMZ=d>l?X4*^&^T;u4lSWN(z11__htyZ(e zZn2r$JFM1Lhoi;r`0VJkG`CutS{!Xwtf{>XK5lb3tbiEc+-AZ|%@}6+)cOuH**hH= zX72yw8w@UNvD@JobJ(yBQ|rS!SGTTNks^;J5?mu$F+9GM6cmQsDMa5; z0x1l6(L5+Tdy!WW`~5Zqd76OkYHc38zYPq!wVIQm|B%2D?KSI$rvk6^vnI3|3fM1 zn=;an6$k}PtR(!ngEXlEjoa@rzA9?+(Y#rQdrjJ`)c2Fg5|ZMS>GAT!M0I**Qbwvi zIW9)RXUT*dg(L>3m}pQZCFzV#B>8+6mm9_m3l5@^sk9(QWH^(>0xD8MLkKP|dZV$e zt<7cy3_D=#0XNKQ1s*y9wA!5vwA-w98xRk;^glcV+`4cE%$V2BuD8LPnBCsg*57 zka$uh1g{vP58pFL=H@R#ZsEu~#4|J!QF$m(hytaEA}8V^B~pYgL3~%wNKdlBogyTX zVhFyGe!-kbj!+^}q^IV@8xvUUFaiscOWhCZhCuJo_ zRWg38lou-#Xk*33I3)mRFsL*dsYt}(#Y99#(r9!FJv5NXj%0D8nCu8jC>=2D(xsp( zaUT8;hBzQNCh!(;4_AgTwhjQzsY2~e&508d1V_xNS7E&ISpZ1E#Wn|K29|(Q>;wk3 znc6!+1%jqEW1a0*tkaA+K%-i0E#`Ksy#?z8aN03*3ubM#TXELG)c~8h!*0SpfCj~( z#(oJbZC0|Z1$3~~)4`bHB;e1c~* z(T7W83Z*iYQ5UC>tBpouLK1vc2!}_}>3H$+(!88RUW~G5;Scly3u&YFqmpvMsO<>( zjXxMLp@KBA0*x;7ns_u~!r`Pz<^8Acptxa@EilM+HFy1E(@5^x@N=~9~= z82B#_yQpaCGKQc|0Z$y9E_@uoFo4T>2Gkjj?U#3PNbR_4efgm7?!}AGA3SLN_z~a$ zyJ)s_w3*xO9Wd;sIdDDcc>CnRhkGwRJbY<-@uvOp6UXDHpKm^BfB6Zp z0fb&Xf7bT&DfZ$e_TiJ|>GO_PFB%(PV(o7+2k3dsc^5loF}<(5zhcUCy;K+x7|3RX z2h*7z-l1+mQ7)7imp~En6d|(0jjC~{s9gL+04$LdLLgDV9wL7>0yBskLjkZ3>>-iN zB$6ZCsRGwPF`V=a5^#9RIGr{*QLWafgrXR&L7tYOH6}@TJQ^#~KQ&oPa!0G1`NTc37WJQ$MC0ej|o-uF$WSS?#Ums9uWl@8NJes8a~TkEM})=CiN-K z&r6Msixq<|jg|3%gnDppG%}q|q0=dqN*p+9gm$BngoVo!~?BXG9XnU@#d(63f*m%GEc@ z-G}8y3UeceBL7fgP!!lkqA%Z@CgAd=DwR;9VaIC4d`SdX7%G;B>y47!oP@MwqedYQ ziOuTy?eFaIrRbYVG~_7yW)DI>;|_e`;m_r0%t6|i135Df^&Gzexd;;z^Lyr`sl?2f zm@s|3x<|M4fkheV$$GhnE8?-#N)hl7NC+4@*(e35nM_JxFexm88pUUG`0Q{tqYFde zVS9T!pyYH-Y=B-DjBx10&|>`;LtMGp?d>hCAUJw(2#7hH3mW~~OH8tJ3U2!6h^q`MV^QrkQFV8kNTy|X8UE7m(IX&dVmOn8-4a1tP4$KM@ z3ckeA`20zxQAhP9g)vx&Kz8xxfGgullOb;zfvR_<84*cF^cA=VM!N=tArB9NUm%f0 zck>H#^NRHJj`Z{m^Y9JvBn2UVDv`<}P@)NBo_~laS}0bkxH36aD2r6;q7%~PhD4D_ z%2X@)J@Rq}_b)+Ag|29P_a%LTo{& z2CP$e z%H^`9iyqy${Q2FB8>fzSJgLV%eYm{8{MFO?7j<_rs~I!3oIY~!@q;@rA3eapYIWMM zPoFj{S#GPr*&amm!`kPUPS#G$IXz5{U94(&RC6}j>s{GWu#y&s zy%~I2_{C1U2=i&exN#mt7ao&G2Cu~@9C?I!(}m<9y$?m@5h!z`2niGpfyyKVhoTS~ zA_wD?^JftJLI~a=1Wy`rrxQIx5h>gyC=x;wS~!Otn&crk^pckJc&g~YT znPZ6JP(wpW;9Lrgzr>DQh`uXBgZH5RfZ+**f~M`IPum|jX)k43C3)&0_LO~TQ}%cN zX%|9Tzu?%UtQ144h{q3z3?plm@?Jgjy5**WB~(awQrtVm4I{7-^r}iJ;q%zx3@Rfu zh{F!!^P+e$EDk#yq6>F-l$n`iGlSQMdn!2ha13!a0{yJupn}50`G!5e|6t*;!In2K zV5ZwUnh)*Ta^XP5k&Wx`oH_=SGCi%oUbgGZ)=gK>p6u*2e|Yln`kpeZwfW7ZO9%g6 z1K5K5vi8?;*vFUKrjL7i|2o#*VzWY=0l^~-d-IWRWp$In9?X=!n#OM&iJB*&h8fI` z8=G$a_U*fK+s_sGT>Gmp)^ulUKF2)R75g!)TIbUC@ye|keQ%bn1n0KHY%zn&Y6Cw9 zCpK8#)2B{RNdZJeV1)}pLiz6gETTWhldSRdk9GH#yZDR2YeD{8L}sCY2vC?1Jpf`L zL~^(*CDJ31;C*7wuOgxCk06b zNFX=fh}hB_K(ed>~=!!R%36^@gE5Q9>j?G9z1~*Nfz0 z9z^j9mAIfFFE=+098rlR8XQp&FoqE3t5q`iejr{Hivd?c+D0nj!5NW=MWuS?=V$zj zA?|4a5AiVHW&B{|YoNKRN3ha==ml`@%J1j8i~ zhKq$^Q9K_Om&A_t3uAftgDE8wfP@@Qh>*tv+e9GgGls4}!*`$|pfP>M91fgt%xCN| zG`=ry)@4^s3vvfc<#R|>| zm>DpMFeI0&YtB_2#_V|D0F=dZBf!ZHQ+@q|Pp_WVp00wi?6kDLefH>C-RNFfdR5&kGqf_K{%S=etiDf+aT8WIu7ezq_yi=tT zCP^e<$l)*mTZKXZ*vjS65fOpCdgX(9w3+d&nbRZ1!#p!!2nd00kWO7D#nM1_t`zqncas{HEFJFl}Bs zr@j3hgc45gr_~HWh8Y}F_|U7GALaFcy2Ta`BY_m;@ggk;DPt6>O#pi2)(MJ0&pjBTh2>kF~b}C0orVJROd+&;evHL+%tV zwAmoPVucGJG1>{qFne3a=XJAxHMKU{ET8e@I@l~Y3pNbKyZP0z$vw*p++GYq^`m@V zPNY5_jqdg)*Zx#^cgjzg{aI_>;Zp_S)d^7#$Nk)JaO0H&n_3soyCZYmo$UMW=oVl* z{7Cp-P$X8+4xmp#r@)VJKnemfLh#G&RYwky{k@{1m29qp#gQ{uvd~CrV3>#!CZRAS zlyDX#ApPm#lu#xuoXO-w^T7a0rQl5%^>U+Ls?!NH8m>AnQXR)sX~Gm5COD;P9XDD) zjp5S;A|?Q+RPwuJWo8v+iMs#LW9&xe$Zdj=fFUeuz{?ec=#7vY=yl}ghKK|jO{~@! zd?*CCAWjRqS{9e66YB(GX^b&J3uzlooC2UzswDyuM=@Rk+sZR#|&;9y$s zoV~Vw+~dV#E-V;bGrj2P!U2s_h8-R;?ADS$Td-Dh-Q)6+dABDFxYDoNzJ6&Z2Xt>J z%)ByDdu#1Ptm!eHYrxatW~=!#+|glc10Scgtqs?ucAKLE=8^T(@grbLq~bUbiChaJ zl52!=6<4YR;mgF)VquJsFP6zvS}o+!ba8sMN}HgU>(rt+HD9mi>-5n|b!eMG4qoXA%atO^W$dyP&t`rm;L5$@1MDu8DexO_(lie*jBPWp$ZjCrbrj)Zd z9F;N}x5v_$&`3IiNsWnN2n8V;H770(FeD8aRMcUCu)@*WZfP}vn~sBKalT+~!@pgJ z(00AL-hw`K@Y(;LYq~D(dh5&8|Nise`v6P-Jq=`sS%SYHRRC)ykm|$50Yq{J?Olg> zTC^RqsZQyDw(Ah$&rXNcVYfhr#s*WuDbVl4v*vKJwbKTg0_L5)`t)9&5Xm(hzJMzh zf$CGKbi!C8OA!|-lt=OvERl*6BZ=V2SSr0#8?OLgL#7gg0R)#3a-nf?(Mn~cQpo~c z3ZhTsDb(O=#IPbm!8;TQ!i))mQQsG*B&&sDu73y}5nK_`9l5##4Y`>f;&kL5Y3T9Y zlGR6x`^}9{8p)2%qR^GF_C@d@yOO^f;PN8W z8X@pdrIAJRS#Uu}SfENJV6g+EIe}rJ-X$fyfOoJo1P%cx9t-rG_(0o*&sSu+#{R!( zK)>tNg~`|c*G|{1zFhRb)8Q+UUtxsQ0<1;aY-U)kfHN2a4md+j z03G;8U5Fxpi%@=YdV#r--;*2s)LbN8HuhjCS+8D8# z8zYV2%h_s!TpO=c=@fBBwb3Be#fg;4D7l=aR&$I-k-;DY3}Y2BDM=c3c(9nyft;p9 z#Om88KPyY;>4DUGNReqg87!|bb~s;*kYP$${+!ax3Cqvcw;!o(oW1Zw$?$c(2K?2# z@9fOnamg9qsN#D`HQA!rRKFk&gp&xlczBX&!65+@vVV{_U(C`QWpZT{haVzW@nf|j zk&F`(5e!*2iBb&yGPti~vRm)so-k7(E^arqf}(_A`M-et7Y#W76-GD@hhItf-;Y55 zD`;Jpb)ETo%~$lk-W<+!o&4H5Pkd>twywn!X#d->013bHu#1X#YwG~N*-6e;(5pBP zJ8fsq?32h`lsZ^Cik3-ZwVF7ML83|EYvYA5EK)U3poof*M#|K}xP;iacnv_I2VW65 z87GQW@l;x#&LGyuOC<_sBrIyVy2(WXSmWbyLpf1FYOS!iI3GNJFAABf(jXE8#l#U} zbjX#85Ov%>)aUo{rRQ#Zz|P+>SDk9wyz|L~8OMfyw`Jt_o5xPvHD==0UnXyuG=1au zWB%+vc&130ijXft?o=w18cHKkT&Q$6dYB7W%mgh#p}T|a4vnOVm2x)oQq zK|z7j%Gu4P76>oEv*{Y_uTcCKfv+dOVhAvPz5eT!U%~0RtgG$1?7#i5cl+{|86q55 z$b{AoEiU+qGo+9p(*W)g%nevkg!W6n(+(@o;KtxBF3u0&9mu@_Ii0o<$Ix!AKC@q@ z_LLjg0%?p`qExCi3awZk7cGzDOOzr}EH_#b!IyD>gz+f`Eu={xF``pwwGx9tVKl;W zg;=KGaCtN;-PPS2g#?fTd|l~uH!1@`x--8ZIXyQiD3s#LjMWwWpdT?iX25K2|5=(L zzkxe5a+7v`#o1P@&V)UFi#>XZRi88MJN|Cb>YHO{93M07@c0==#{GKWmnnP3Puo4~ z_d|;om-QVm*_#Z>32)$|yPpri9nr$P2qfe~clV_bs0=Sspcn2eQJBaVY-~6p(7zis z&eDeakPr*vA)*}y<%_-gs!O{D{_FX#Xut(s*L+0-uKfRbb$#%^ABT(o?`QEvVhD1a zFm_>x;|V8WB^n3zi~ReR0|yWnCz4JKok#-gxLUTgLW16jp{1tgK&+muh-ZtGF;WP$ z)Eb#eB8%hUb}v>gQSqb2ETNpMF)DNk+E@suRT4QY-hoEd$AX6+!3p-Kx_god9)8G! zgxuUwKrq3@2Zi&!1X?Cv&1Fk@$kP)sy2XFHk~w6p_mGY51OH)^tc9T-wtD=LduN-m zD{osLy?4M`TFv#A>RYDmM;n)HelUN{&3P+t&i?bt^o6w(e>*m5?$O`>tX#3~)VQhZ z1@>a{nY=r^Yxmqw}NZBUR`fNAMZE;`~up)gaq_}e!xAa zbaikx0`_=59>)vZUtGElp@o_ozz`x*zz`7bw3};c4{8#E6iHm6iYJmQWh%8uB@(Ej zB^rr17Sf<1z%WL_k|>2@g+K(^50w-!6hd)}APTZ=ZoV!AH{|MrJpGBD{w^+l$SZ_^ zYdj*9=mcrg^JGcg__{n4F_6=DE$Y1)4J=1}ccb2rYx5Yg{I9ETu3E90H!Y7$*yX3z zt1q!L4INeYZ2Paa?>f`GbnD}Z3ocBYe}2ls^S>^>FmBe~8A}f@-%vB_k5YZc5ah;! zuYht8LWn2wN1lO*=!sms2t5Z3d)tmxU48NM{K|c&UYx)364nmdTcH99R90uJ3HM9C z464)f>>Bw00{A}z-*w<@zkaam<6jTIUea|QZq@brdKp~M)rXFg+PFX5_3FCG*A`BG zy%HuHAoc}A@NEBu5mLW^p~Y^pLyZT1(tP&ZA$@X)DlJ;1=7|(aa5_06E=$B@3pi{Z zpDT)hTpWW%XL1+}Rwyebk|*MW1TyGkT98M8C(+x*h2-Kv@o=ZOgHm&$f+GnpcY?p5 zaL}~U{kO`i9#@`u{nxHKQt~|1Z38MSL)~_u!mW@V8nLqMndA5e$Jr0IGcU~N-(aVn z+0VSi&b`G>J;qMfVf!yTHXQu4c+-;^e_fya$Ay_IPS03&V&1Bg>vmmQx%pJjlF39e zxJIEaOkcN9S8p1k&!)NM0HGx+HWkp~M@!|;>;QtQQ z*YWG>biLKp?;7u~gZkgj*NeNL`1&d6{67JN>tU521nTJUQaYd-ZUymvmpC07IP>Ks z@DkqtiXlXUI9z}#PFRO?5e7=BAW;Z7o6puBGNy)UGWcQ*EF#HcgtAarK4tn*!h-y% zu#W2EL-F*Z`cUX(GL=LN4~9Y&dRT~0kiSn*fM)>7mE?wtzpE?RmEeg-?f#JhU24gU zxw~i0Kl0Or{ma+itvX{lb-5$|r&5%)3iaKC3QJvkKs`;=FRS*w#?E}g&V9gYURy4I z#7@8LxcCXX+-SY_5j+3FeC;)M`3Y8asr68G^NxeBrq91V{Loj50`Mgt7%m9yV8n3`wH+240f}~t84}Mh)cBNu zbRD$t=`Z4}dIW_H0R#jz7E8Ms1oEBEjvY#8aDjvil*mEy7BYB{4RAU&c<~jUm&5DW zAfpD~3(1&HNX)kZ+&Fl+yW{*1a!yci^k!qX(qe$*o-pEQF<9df>E<; zTd?X+_A~FzwT;#rt=M%FcILI^TC?p&i{t7C+nvwYy(a9&YwXr5?DAvmU`^Y)-Or{i zyEJY=&GKyzPhPehJ^T5uHMOakKf05^1@#Jzi~${fzV1a`EB1T&g^Mj%RbA7iM{OoE z)&^R~3W-fT>j4pRiwTN6@gwl@@ac{(RG8Z>cy0v-zYP*_R-7kROFMvOhQv%KUNi_H z9avLHbwS{5G6Oi^BSF0xj3VBFL=T?vv0*rw0Dc&9NG^1>(CL7jp1Gs_e+56&0a(MA zwZY_o9|FNYgoc0{#Ex**>B+!P1@{wDO8_R^5Hd+{uXYn;dhx^(EWw;QQyIqc0KSoF zoaokK zC*;~lDfu^AEVnJ#l~!wYW9!-X<_C7{;(P2`i{)ywF#%KGT7VLft_MjC5JTJcJ zy!Z?|Rflaq^>M+*yUR8|+I!q|_6oMUvi|2ue+N?IAY4Iip%?1joPTZJee39xC`avjefO25G4jjiAun84rZgvEM1lWhS<0rJ@n2fkis zf|(D=6IhXg)E4j)c;>JJw_42(kd_WdbGyB{-PY1>hkgsFH<&LSc%B_kwVPlP;2lew zt<3`XTTN!r0$m+5^g%wgwBmEb3U_FSnF2qk4L=Va5ZnrC5MU;O+X^^3XB?b?0!PU0 z!GwXrWotWlHfPUOg)oWU6juPy+uz;I-_3*KhI%9_Vy2?LftKyLh%WtxcYj! zQ@knRR8OjxM*xB7M!+*J$X^{lVAkS_1#8cYT~Ik@Y4zBp=Vq?GyJ+*XReKtDoi-o1 z;;6cfRX=i^e}!$i`W|J^LWLVp{yK!T`MsaCS)bali;b<BM8e6n3>#IC-_&OOJfZaH?H`mk!(qrEka8_I7_nYD?- z&p>XR#hVY+S+KIZjn$uRRSlo+HrhW!0X39|L4^yz0$@VNVQy<~!bt>uP?U1`{Guuraw*Sf(3kUSV?H{CS zf!|O(>{Nn4Pr$(Gcsg6S4=@X62AI)yi_HYNb0`jh55P&>1;ycle>>hUN5q6>uJNd+Z?jxoey9xDJ<=P!$3$Z3=_}JN{CofmmzpJ?NxcvOH6}v9>|6z6Z zuqj19&Yie)%gWs+D{AjteD>*4EA|S?B|1BwcVZ8Lw;$~nKVU%7TM&*km=53SsHlCj z_f-9%Q}^btC@q=1_}VAz@UzyMX8ZAH&G(zIk2b6oh65BHUXcb1@3=ZJ>C}LbU{8v_yT2dVKhn#O=0))b z=-j~b^mq57QAwephzP|T_7c#&Zuc zn&ZfQ?D#`mpmX4k_3T^h=S|mNsR6`7NS5EmgK@&vO6 z+cbjk)+O98+K|+1Wbe__R_xeab?tV&$qqFy_uH}SpF6I9Hr@Pey4;98YRBqYu*a>~ zqZX|E(!(PU-(UHR)i&F!U$@_F!XAAv-+B4=`r{YZAHKhQyXnD$mb2#@UcR%xZ^a(J zX?yn3`s4$M?a@2S`*!S23ob7|SiyCF_O|`aM@!RZ^XoTF?;Bg2nmd|XEv9xWtX_bC z>g{NUrN~ZD$zKIrUwlymszLv4@#MBsKpB3S0bTRp-xgQxFje4Pe6GMu!4E-;gT{al zLRFP>MaA9$GX_*HUh|C$T!{Ncusqq>d8YQX3kmsBylG+702&z-CW%TR)2Oa~BsVh2 zmmG$OF0Nz`ARfWrmClKxMGEjtnQzRp4ON@>-=DMk%KQzF=Wcj5V{OCe`PU||YFN7G zrS~vHc8|o& z+_?Az8AP6Pb#MrWLS+SoaF|@V2PKl=85$wd3RP*)ait34a!Y2fFFo_{^`kcIi4|+G zV0SvOvu{n;S{%@+vtjqzu*&-{FTXQiX~%AwaBQ!=FrB&kyzKO?wR^6Qn}2N8-#1e7 zW@i-7s=3{?|6D`)x%%oy&8HqT*F3dXH(2&xd3*5EtCKexZ#I~VhtDbbZo&5xRuq&> z>;KK%@5U_~HGbJoQ&x?chRg8p=MEh;d*C-S1`PYP&)_M=C6js$m{3$Qap17YB||5b z40FoRNdt#Z9z0^|pb=As4E^rvy=3_GAAVUj z>W39emQ+1_WWI9!^@nEc`8(5-SDza{V>Pvp_wBo}aKZ9L3sx>(xaN-qYc_4%b>YIb z>o;#w89|<8_uw!piQ-4}a0SyB5JK|^0LR7Oo#Y2jOaPPYLLs>-M6ZA7-q7{_WgLf0n)7e5CErHSFkp>_h{0{0X-Io}=uVeQT|4`z5UW zrv3P1$B}xBKV(a2F~o<;K|iOB9Gf+8c#nR)2M+3$lcUYbfGl}{R1_H#6~>?iu%jZq zNF<_%r^c9+onNSsWyJ83y=fZcBPT>A8j62hu=!y1gV(n@toJ*y8y5RTljUl=iWfrDi|?@G zFR_!au#-=*ny1*c=h(Fd%q^lIsoT_9E6xlaw{_&yT@w~m{xa{t_=N{S#w|Gb!?exc zPW)%!k1L8s{E=5OH>>Y&8NFwu7thGf8{Z{adE>J3#^>Zu$n7>EuluC_B$f;qFM z?4X@D9Y<{KPDq6YiYfS|sf zbXPnR5=sKs-JQhWxbfKDGw)ZIK3=%xDF8Tj*`smG>i$05w(E?g@*;Nj5q7#BJ6dl! z_|UTFwsrRnY}-Yw^cJ@7uJz<|>*?26_nDRMd9Y_DrRayWo_+F)v-0{R>+=j^Bdm!i z6XTST(cuxCFo;b>az5yIS1+jfp>!+E(-{?F316YrXbtJ9+5Li9dW1Ois7!6q$oX6M z9lG`8>L<&!*3Jtp_H(ArOE#c?>zXqS>uO$9+-$z^6sx?}HgEU6)#pCm`q*~qi8WIH zQ?Kt-z@6+?H>iBmVo38*)V&})oDx5j-0+X zx!)pi_7Jn+^bJ$R_0KzwKf3k!bJ^kZc?0ImU2%2M`fIDp&LU4ORhX1k)LWU7=t&7h zE|4J$f;AmiA8$aCPNfF-qv-rJoOx3PV9u$>RE z(mPo73-CcY)>qynCx4Gn&fqC&g#)q+((`*Kr4}S>GZJ<2TD@Avg2g`(n-Wfus3oDC zP)Gnl{va_cF)2L}GDI`GFTs9OKfI2udGk!K)(;fl=%7wkIv^V01<{jqE8(u!aH*gJmdfnSzX{Jd!Qj6V)e z{eAC*IlIUHw)2-+JI2h~_T%);qo-~BamKbErf(fRZOf>so4=j1apa^8!^W>4GIs62 zAO0>Gy}s|aYl=s%>h;Zv!f#gMGIFJ+&%AL&1Ff|8p{?SfqwJnz&qM6sGi>J_Y(FU2N0!@-*wNeX5jzi| z{BLHZ^&XO4n3dZrDXDvcCM{lN)WEhTo}32~$PAQeWqbvn8cBr=T8um~y2;*o(F!&rS88u$g}yBC+})Bt>qpDvcNdl{-Z$h*t1pq^j6BjV3{+#`KcznJ=wJ9#HX_3A9fu1B3ll=-LUuN-xV+ZE`Pp$&+{4oT>5>}z28>c zS-7Hp^303m(C_)`UlQ}CAWBbKSmA@apAT1FEg8Q2j}^E7+;DH@t_#RD(j_>|JKS5B zs)FPvgBbyNZk}B1$tHO+eJCtHMhrcIA3^kSMSgBREP6PX8N>|r3S@{ixtq%`&0l+A z=E|GDt*amV*S#4Vo-8}~Y3Jq6gAcJokVSdyIP~06(O};H%zE@Kw(nWzk=NMHI_s(n zjZ13Y?0>ETx0|t>jh#nopEAXL-2*ZR-g0+3Gg<{( zFA+7IA>p&7f+*Oa3fpWHNtukee1BbkY2O)woWhvhXuee29rQ^Vez6R@nX+lVkD35;(`|@L2d@7 zCzH>kal?JWqo7iF`l5)-zz-o0n}?73V2T)uO~>OG}LZoT|e`>B2Z%a4~@u^aDf z*XmpL9JwKl>(7%Gv7&Q%;#3ccKk`P@2u~`*BQ$~zelcwFfeow?`aBm+KW4uL>TzXg zNCg_Q9}Pc376^dn^4+{i5rjIY{jmA#vnEI z$c#N~#-{&yz>8fhjW1EE3ZFiDSz1U=VFB!8gLN^k5B%zS*{eN2f+lu4!SD#w6 zzGmj?@@dPqjTkpao|vmn&Nt@w0}Kbu(iVT8)2Fz5adv86k~%3KFoarQmMDr8O7^6B z3)Nz_m}5vciqv9Kh@TfVL}@UFaigdabVG)otB8aeJV6|LQ+et8RtVhibPFyJ0)O~$ z^~A};`%XN0*Zjm3PBbqPHK=gHnuw}LMM_MLs*es!S3X6PnSSMjgFBT zbkg|vNNp0;*b60mPZ_u_Xk-N%QGte*qkd(me>oaZfd=hCL-wG7JMgU|Lo3kmeQ3m9 zG^`vAh222AaTy5L?8OB-CFQt4XYf8W>LC8X!MmMpx!Z{SXy9&?wPwoND_7oQyDofK zS$Tix?A@d098NFUgy_G}q}>?Y_&ay%Ht*Q(6RH|MX2ZI&D^r*M154o4@KAq-i$cQ_ z2_@m7!V4GfLB{;Rq2sO|LF0a&cA@&lvj>egFFskfs-nK`^YjJVi@#a?$3It>?|eFa z^}S_#-)^byI9i7td4wH(?6~kAyV;CYKmD|9@2R+cKf(S~{D}%KGJ1F#jgcA_kxnE^ z2?Pm~nMPv8!d4uKK1FRzF(juK_8Wu{f8bn2@%I@;y$gHi_vqCvtDt*gZkp0459H9n z1$L+V2;-z-B35j&Ha1BsH7a4}GEXWC=fwm<9bU3FOv&{X&wk58i;dikV}3m>}G14szq3@$^(J5aw;e6I-9HxDgEgSVmnux|t~amo-t1_0cH zMgVAVz6{3)+5u(wA;3O#FOFXS9cW-F8dL`2G4g=hu)Qe%pG8}q&sz6*=IUp~Ki8tr zdCG44l-(<0(su;L_I07^FJG-Yci~1#?&u{e&u`vych1Tkklu9h_5q_Ok_(Lb3<_Bq zt17(xpz(thE33S;Xhr#yU)N8Wwqeq=t;Hq3&;Fxw%ABK1{=PZx_p{&6t68w4{?M(? z>L=KV$CfiM&9_>xb1zH_wjNaG420z$kkD{rAcGgm6iAgup+u|ICa9JA1YKfQT8=I$ zLv2V*%g)Kj%7O}){{8y{hJ)rQdjFhOSd`yAD?K~KkdY!cs@W2jFEhX=%-@?q7U^V6 zF~;xacIra zbJ5wL5(B)cGL<5aOH)%2%RR)M6z0W|Fwm9Ndo7ALAhqCND<1{OamD4eR$s-grjvAQ^rSnUQ7frn5>1Rb1>klS=Xsu9Zf@SX2}j+vnM zAd3R1Q3771P{l6Tp1Sw# z(A66@-aAqIZrP@N-Y$xepzaFgcw_q92-VMiqG5OREYoC~JH(^zGUk@2I16Jzc(F=5zj2$h(=t-iGtx3L(+diF^eQUs)3-NZ*l$^6-|=}R zeF}@yb@2Rzc%w94&6kHjJORNWlgCU*PlWYopJ7;W-SS}u&jDRFa@0}p7z*T^;_f{OnL8Ykg4%F=*l)h^AmKS3eUp#!) zeCj%O;x@Le#B!;JkVNlx~0Y z$GjVpCfAOge0ucQ%H`|oX05&bPvx5fSKDhK0(gp@sCS%hz@UG+4uiaCx+cfiKi0w1Yy2a`Vr_~vE=i`+LnRKA#nx(cP^3yCd$OX!Inj|KF;A^kCMFr6 zGF)%a<>Y4P=H=w%X61Lw8&CoSM#Xq`hJ~^KrDwH0aDBxM`dx>hIg7TTBEZTCBcKOhLJMc$ ze8Cn}ybZrw@9nrwF5XTWxMzE<_16`5k6psbPIQ)Cw3S|Nz3~>iT!$^)_2QT5$BGLV z-Maj7cWG_y<@#m+z|uMFYoM=Rci>GU_NEzY_>8@=V)tHSH|nwdw=EFA9k^pT^3ZXt z-f^iBJNpXHd0u&mU3lWS_|$syrR8Cx^#g1>z_7W0tsw;a%ah|($%$N+J@H)K?}G6A-}Y62p8}8G9wB%qaK?8Ny?z|3m>r^=b9=mICj)v z(>K3DoJpCz*KXflf8_;Meyn-Sn2L+%KfZipe*d{cm)46T&K)>xZr_q6Mg7-w@4vdw zPa8HKxnKRzbf&KL%scGlYdjZK^BSvpiJf|4KlRjh_J#f8ljiF$O?B_huS||sJJtqk zDh|imzt@EbgS43%UAjgI)%&pjS1y;x6#~A9E969QnILQ)3*07%x3oreLW(gyIWZ|M zB_$&@uX{d7k3!rY7XHQTJ=f6x$AtVI`Mr7;_3s<2Rgrw%gmI!k4wb~D=ra?qHS-L`G(dK%ANogy%1#l~l7Vs#RcTnJD5fh|!yaWq%Jfk(u^qbbA+ zQEZ$7O2Z-1sZTKGbjt-v%S;F9-47C7DDThEzJC~pPmk|CFukZ}T3$Bn3k{2iR441X zaxo<`EIun;pO%_e)T?K|ewjUbs8cfanYk(53-y_KX+4W{8M#>ny-W93?mJXjeeQfK z7(b|DfEL!)z!}9C+F)CJd&~Q#dsl9zY2tficjrkIY^7SH(SR|8bOCI`gQd`Dxg0i0 z0xi|4X^19@%o`syaGeVjPeSDnD7`)aW0!gaG=N=B!L_ARz8=DYC~yo~kS?t776=KS za-M-Uemo3}QW8HqLr7M>q_wGI%RdHkEgi0;G zpA<5yQZQbU7(cpycr_&IF}=i)y5_!DiabtXf$}ZMtb+cyyAZ8J$m)*KRCH(pZo#C(hBNcXyVSZQQhZ+3$-d|1$B&p{m@x9*n3M zps^}3l_8Q!<8(kmg~8xWqXn~ABDEU8)FvmxgT+vUhF3f%sP6_;upM;+2JXTuVY}ce zfZ=xv*fD?(u)Zl0P+rx!d)n73ksVN zKVpCRWo*{Qmw~a8Q(e)H>}`$~S8f4KVEM-!A7;15@6Z8G1!b@TYqqfi9`8ma^K zOadFN?fdqZQ>lcsOf@_;0d`axV3WuToTM8IPfm;*o7s+FB#Zd6C)F#9Ml7L}+ zYO*mUDJ?rQGe5UmuL4|`u138UMGg8*(f^x-;zEg0?HL@z7RvLA`|8tkV8cXeenEcm zz~VvQ6b<;MSN{X%aj7aa%CndKqqkHeXf>CcD|B_xSc(wH)ZIw=h{y#j_H5K@3T1uy|aLt2_pXLRGINK2M@ z7HvS?cS7kF9uO37#8n@V2h10g$3hDj0;)jKE{lgF`LB|MGhhJ!%RN93#~IokfEbQj zParVdb{Fct73FM1Ih#F-cX(xOK{1P`ta@H?3CkG18kV1EXp>+x~0!XKyZ-<&A>8n2TR`MAXA7a&w#g!TmZY&%_ZJgZp4tN2$>d2)njFvc$qd{qBcN!NRyDJ&?SOM)d_O7Ax5Hz z5(xDv8PpglL!QV>>>eV>bW@G+?zIZ{BztZ`eE<+AmwO0vr9JN7l3XA0h4JS58{uW#SKsW<$!Nmm-yX-_s>yU2K!b->F-;Wa!pF~fU z_g~HHvC2#KD{@UEGc^#``!nVK+^i63zX(Ntp>8lWItRJQV8b?pl^7e>%NSdjVd$$< z6Se^ll(oc}0AQN*b%l`A*4YPl91keed#?RBqS6;LKi0tV@y>gs#9ve4zt&~dYMv4^)nw$ZsJ)6`=5Yx6^#-KEn-}<+D&lU;V zpiM(IK~F&khO(`;G@vEzqD`Wp$9c|fVOcLGuN@w6H@~kP=UEVX+vc4 zE6qPV)FUX`JF3veGjX_QqDNG|U;GsR=&azltO!eXY+7D=(lkqKz9l**G9+=~yv4WP zJn!_$Q(ye!GhTefubSm+%hX~PU(f@sAW zZ{M(>VYZ_uc)IXIKm?YD@e$F%{JJJBEn@1_)QlF)N z5V|I37ly>71VmUOEg9ayF>xumv=cKX2gW9Hx=%zb4eF}I?8z}{*%3+Up_c4$OQwHB zOj1UceAQ}5q<3Vpza?KxD)gIG?=WA%f?xt;F*MU@4Lp@#PJ=>-DkR*XD7Qscp#aE! zxl=K75F#2FtSj6giZ)8qdnBr$w@L1if7&Fb^xDsPR^)CMlh?SUJZWQ&v2o9HyQSM@ z=4zXaTH!X^HXy-2GQcY&z%MG*B`U_&FVHI{IwGCfU0Qrra&$^eL{fNUY+`m!L2P_- zN@~_bmq{T(5xyRN3DK50x6H4quJ7vUJ#g^g+I8#hy!&q6Msw%gi<6S$dADA2N-Kx5Ex4=T)`cav-BmDq zJ|xVaIWH-9T5A4`$)vQF7|0U~0(OOZc z3REDH%0GY=aACUa)cZ@o2Q)Z^FVBLfLQexIlir4Y7`2e_E;clN0o|X3Sj#2@B@mNdg2w zDWo&z0bojQNpg0vPpHKy#M33*Co(fBA|vs>rydJSO}25J;2s_xnU)=%l1XL_wxrUC z&CJ8XlQaC|QiGGynV@)vCj=*C`y@;W%$Va8RWdefx%16^vSfiLKCEb?sf5~e_Du; zVLnsr=B>7xzIJHwYLW1;b!eJF}ahuqTS4D00_`{B@!Ls^EA~LK_ttlh=rXwbBaLi9&^^*y)2F~MU!Ys5o)@Z8^7)w?$@`NNbaoO@6n?Xb{O|HaV4{w{|5gtSG#< zVfr1b9Nm-orts9+x0T#>`;-OqX56}X>dgyFZn-0C%B+lnnT6ADwWJjUMI?(+yy025{8b*z$#&8fxX6xF(2aahW zrJc7{g2o=ulRaou6|fRXAR_CkKjp9zw|%JPQ6c=tdQWk>wMXQ(TNQ5@T~u!!KWjp4 zyp5ZSS7cl~Z+eM~h)IcyNQw`Is2M5ZQ3XP`BSG< zE+{U_Hzdr}%P*K;@`oivC#EN5FssNZoO4_5t@q~KavvBbb%~^Qk<%^Gnnh~8$ZHm9 z)z+CcVGHVu9_hV*<;JAkJA~Q2VA`DAnKN^4o>@3+0XAda;5ovgFi^y6da@L7F__IMw=4V?Q zMDBXIXUbY>@DLcW{MFL(Fm@`&Lg`$dOsr8bDwH(+*n%qD=1AokF6hLE?F8&VpxhdLs0ryo}<_H3=cX2vJIeU!-?RZc=Po zbX-O(k8QI{a#9LX(+e|3dfJN7W_w?`P8O4r>Ju0d5}xQE9LtQ-Q8Uq_v35c9Dg3^lx*kY;vno?plA-Lz~>97kP#h&%N!z$+@U--6bGajPttp>B{pTfBor?#_0>jmV-v~mP>p=dEXm9=gck_A|*5;*Ucw_x3BOx zIXERODmzXLGducv+q!#)WEDoty>G&t$HdepL{XV2ZW2@4B#Q>27-Sa>QXJdt9+A^4 z^7)V3mkkZ1ybjizyiG=QSZD$U8PVI59CiDK$Dd-IAJ}#LOwRARwC3 zCNnxbF(D={B*-@^+Rs09f+dmg&4@~fi%(79xA}32e(7mGIoaNz$J4#ktn7s3Oi#a1 zz$v_`C@D9=DqytPb8Kv0W==^-DsSe>$l#azscG_+DO0E9WEV_MoN=$u^pz6}(0q}i zF>Dp-ts!jUdC|g^$)LXe*Txb)xWlHGdlPFcHr!lJx9L@i1^FU5n-;L78ZV-1AWH_`|?g4 zmb9ZL-;z1~!OUBi#mujCoLyy_&QIyOO+|eoo6-ut(dddb?JB%wK2j$58E@);rF!M2L8+NjYwF zTSP{eNQLk{Vp^kh*3u!Nx4TBpv=6n|2FBV3M6r-UzTmA~Q3+HwiJtLEzLu0gOR`Ty zOkzel57B)iynI635@W+kit>DY+&#RU6O+S}5_}S(?57tXP!Vwnkp)wySW+?rL!%~_ z6es6rkWq!Bjboq>6@GeNaX@ffViJ{4W?HJnk{Me(YjW1KX<^gPBzrMO*ocrqX zh0m`YJ!@<|Xsm4gt??P7a^p{H5B~V(M@DVi8DWYYWp8o!Pw@=3*tiD?r-m-Z?gb_>N)0!D}wbrClU) z#U3%EeRy&6u;k@-mIvID7K{liF?*((U88KhB0NJQ{UbyD!vox7BVD7zy^`Z5Mu&|L z^>GdKWXX)*VR$$U3-j|BW+jH2g~JH5yPb&k8=jxwQdG#3oG4yJ$rGihcngA+KXZC| z$rQJM0B7%j{KA`Vn!PY3wIDPiG2W6owPadSaa!?$IjM8*@+f&)m&S>zvvpf5qcE`lqAFk^A?BX?kQSr*R7vK5bc=dxD z`(HJldEO}Pyt1P6TIXJ4^RXLyPF#8EtPv55VDq-CV%N|qLwxgsrao!8qtB(JeRNKj z75!%c3$|LMllRt()b$c2;yy!RsA(pF>XhKHGqpn+xbY|UpsN}~-PYi1oKvXPsM5e0 zqyHX}-YZip!IBM7AguqSwtOT;02~b2U)XM+@B|nRbIPg!p7ueW0Vy%Qv7xLs;$w#qcCVj2 z`Q2AvzVYg->({QWShcb!E7fhZ@Ej#Vg2(f&uk`fzTW*^}p_@5%YX0omEWo(?_(nuq z3W{%|_g_btw^h(-0_;(lz)HE-+wgzamje;%m4B#{$n2-r~hv3I$`wg zF* zq^asK&ZR49Dp+I?^~mvXSco*~(rWxQmy$f0Jfw$ATy z$Y~psQ9C?w$;i0-$3)MwjViVc%NQMO8SUih;U6}^+uPO0n|CVn4dLmNZ#sMGJgaOM z`3EQbGY<8Oy8r(8$4f^~-gC!dn-OMSJju#HPElU=w5k4y30X5|#pM?YvxzS`0BL;Q zwL8)Ut6|E1!GgKkxo%9R2+FV_)&&1mnfGjcq54buSow`;4bs z{&jEZhpW22Xy5+*-c#2KX0HoQtBIW2I;p71xwzdXw@oCpikJ?O(J3`5wN+XMA7NL! zoaNxlluo(TAgAMawI>+{szw?F>ypO+COc_!9~=g-`k0Jva}LDAj~_qB1B0@_7zk4Wg17}iM)HGoo48~SxMP5~R! zXiDlD!Ti_KDdL)JsL+yXM9?FJ53HBJe);sut_y!0`kS%$bz{rPOV1p?(zWmR=B>Xp zZ1_)E_h)5YA2x0JbV7KULu`#5Z@OOmdi$$CJ^R{^FTDNRm%kV%E_@~? z_>2pW3d+um%FoNbX^vM+vW;6}T*1PasrQacxOGVU-Q%)Xj>&E?flgeD1Tdmmgtdt9 zRuR>vwKSnYU;v28h8ERoky2J_?78sA{tt~k zXRkkd`s%jVe&2oe`o6QqjuS@ru3yT#KU>mrere0uAaHYhN<_5?OSeeslVSw|;6t~m zokP-ltdhD+1PCs%bct9+4*-mBk!ER?#*u7so+g{#$yRbnqpcc}UE4>97 zxnD&D90M+GK&O#p3#uAJMnWU6$u<5_YY{zqVzNtNgNST2Q*32(Vy*N*63WcI^oT?b zRc)j@$$vB zuUx6w{rT22m*4p8(pQ&_-LIS<8X9dI76FF&b8h8_Cg~+lcv=?OMlbZ9yxg;>$%@i5 zqDzFX6|r4X#iVl@L_F%*C^4)T@lC?gEVnTYBDPU#9d1r-lUm39C2_bqAhE@q+-4QK z7T)^LZsMy4d(K|od-le@w~bwI8ks8s?ei zFr~(vgd{OG0+5lY5TGlBmtk-rSt^l88J_IchWanBOk^(|n^q=9%xK>D(tH2D_U3oj zcYI>3KW{AF@P5#}I~R6b*!rfi`p~b>ziAx#me)C5`RJF+Z9Dc0_e2qUi{I>}fwPw~ z9WW(VTBp|8q&8Y70!^a`Zx*3VBCbco_K28n5!ERzTIR#(8W9Ua8zp*C^&%2!ZI&bJ5O%d-r88-WM@*s}*%pc#}x#mKC53XlSMg3Da;hJ^&~gKD1TVVoMus z#I%#-G1`>Rq*MF)y$CD`?J^cH8uAnfuRue(;}wQfX);)V3j(8u1AnE#7ii+UMFPRX z>T&a!=!b=f819wsSXgVFLe0m)t7UJ5HU|JW!vI5V41=rFA=eG7gRY|s+s0?Kj}CY$ zWqR59Z{=^AYmfYpvE+d3ywyXB(3F}*b+2tX@yFqJjXfV-I{D?L&o0WZC#TG(+<4R> zt7cS6xri$l@l~co(pBodUGk-_4@uvvyeY~zTyUg7=Zv?be5eQ6x|@cOf7t~`I<*!c35jYo{NFIk~tPvGP<4hv&S6gJW))48Z_NJ@hVcoWykgNbN}istK)FhV(UdTy6dK*|X2mGH(i z4UO)e5Z)Y>*T7G*n|FV;u<`Xp&2L5Cxz+!cbvY01x#{WW@2NVv?uBoTer}xl{Q3t! zP|}~DkX~tHX%{|CrtlsSUE7aHc!LOO5<$%(h|b$Z2)Rtb7||gx+6=T(L{gg8OCgO` z76n$#l9s?oasWLV{0W4k8=aDSg~L5d*S>!03uFH~7x%nz{lGb6=W9mm&OcW5ec!O{ z=lZQbm9PK4Zp)9QtN*pC_xn|=KWp9bL;Ln0HXiu>*m)!E_UA-!wImfj)`>1oVTgk< z!d?2C1gL1E{iNGuOSr@V_)i{2F2aA^BBn*eDk%mB&gGQU9y9tzw#3;QZF-PAR4JFU zxRC5^@QSKWsg^yaL=a&0xN$`IUvUjQbeddelLQYrca7{M5mh1zREK&zdPt0lVn4cF z1g#eFJ%ob@?jG*bTrhw8b7yWm*!FJkOIMor{an5C`>sR3b{zQk>KA`#-Tl$ho>M)? zzIo#-W9!k+#H2+cs8oc~^Csbk*fmSd(%b{Rpf(ZMAp$yNBLud0N((1L@_T#{QLXf| zUMgygq92tH+<=M_NvuVHYD9yy$VTB`Y90ABWz`9OvHJG4m;MIpF7_V!wR+=kOS`^r z+kL5P|JBBwzqanaRI}-~$_>9(Z2VWp?qAj)xVZkgUp5}NI6k>WmU%L{DGW6$G$yeK zT8D^fRhTGPvout^;3eI`LiAwhs@z zbG2pLdt$`RV{=r8v9PO2grk#+Z(&^$tFUen*d;LxY!d;k|Ig4;G+1e=ENH+G*+k-S z)c}To33M96s3tM#(c6|BIP*{A_yyzH6W8~gG9GSt_r8X+YYrK0&)wMYlCkb3qiz2m zZF{e@JbSHWm(jBKdgpVO>ehYTu==w#yMG)VQ*RyDVNO{iQwpIkO@RY|I7Sv-+=sHk zhCU#Ql>rowEjX)#@wcUysShU0TF{_3oXVEAK@33;*at5pao{YbShAlXpiNCf z5Fzh*&EsOhFcJ)HGb=@GjZ8byee${#gp6FqTBjULM4JdDM^WZey?0o}D1W0|QMFR~ zoJ;Rrb&_xXuQ_?8Vb5%=^G)}jU)LS@y=(6e&3nGsdG_+=)0a0L`%m4*_pBnH zlxr;HfB$kT8X@ov7`sdn-R8(1sjeZNA_yKr^>*RkD*Uh(xuvE-cPV8^gLNVtFsW=% zPH-auDu3V-WL{I7(rDs6&D%ab$%}8!8JqTA+j7WQcj(HlH;m4GM%VMkrc=hYGse0T zM%N2BTAwo-cHF4lZB%Xf{m$iYK2-Wf+ve}Bf~rIaHPc$@32i`xOF$-CAtRv};2U6q zB!|H|{)*c$?LWPhdjX>NE#}bGz_u6~1k)tU%av5 zw6W&p8|??Lw(h-Nzy12-YcDoEYqV_rwR7u#s(U{dlS+rND2hK|jx_w&A^m|@@CQj+ z>YI`{Fab<_|3Cf=a+R`L!7iCe(4+PP#+YTLf?y)TDpis#u|aM_Kk&!6sJtS#rsy5s zDCb?0oXsM=c1ZC3d>3P+cZOqjwK=LrDp+W@h*a{#72z1?Vho#F5%dBYg>Sv^skaL1 z6|SWMb+xNYDct+g8^(^8Z!GQm{DF>tv>mv*=6Pe=QKPi`tEW0X-FU*-_^Pq#^p(A5 zjkaB1iZOo~72hX(dQG0~WnLPpj~15uVLr5}Md78$7Ho z7hyFbqF%rdze+&_gfSIqG6lCt3FRY7AJSzL(mpP}K{zk2So7-Ur68SX)c z5;BhPbGuhQ{k`v?(eUi$&VxqNL8Fny@9o#hwq2>)eWQ7Y(Xq?;OX zT!i2%7JhoQcvAA2k)Q}1*)ar4plpL~rU64VPiSb`Tnwm21Vl)qTqE^wRD_fmnnNXqL&K|t|3j@iE;Mfc+r}4vd;YX>_rqU5 zxa9L!-s4RTH#QtGT6bUUdBJEuWYq349%%dKp^k5w_FQYlCal?qU39|J`sS)8zLGb5Pn)IOH725vo4;^Z+ZAHtdbvj#XxDHtcbN(pNjTe+9>QJ6FpwW8-0-<-ke#aNzKp#xsXln=zP{?S0kQ zdiutWHw~xkT4A-w%Byq;vN@?yUP2qGPaCNZ{q$1YlO!B4-mX_Ag){^K217&xs}ugU z!n;O7in=m6;cV}E;r7IsxMh#Fyx6kq{Rit_$(eiL@l{{1-gzWb+^ zUB7lce}nY6;keQI+~v-_SC{pEK7Yw8<-MQodHH(h)^9p?{UE}qpvxo_7~YitlD~0D ztBE!Oh5IGJdK3v&j^aoOvXVadBhSJVqax6Y0jWeVY2#x|78&Y*|A(Ohkgh_NNn~W~ zNSxteRGldd4m5+|(11J5rf4y7vR!6{73;||DRnC(5h)N;;!h_G8vrp~VfeNPpC0Sb zF8{3Vy{B&QzOFrQ8k=4>R_^-ulCJ;EefsQ8j~&0i{9MnjKUQ^pwf(g5+}pORan?YQ6XNlG;c*e#8aEbP-!U`233l{YH7iB(gJFQ zZ?(kGw@hLSo?bv+!%HIKZtkeuaHe_ZyZg>u+_3Mbw)OvRUH9#lLq8n<+r?Aw8~e`~ zJ5L%cdsl7x;qIz;pJ@GL%S%T2hHuK(d^S8_MOo|nN6#2{FMriKvT79T20($~KfDMT z5PP=LD=Z8`iGlKE5I221TkZIMDFd!SKuB4CN>H-RB{XR2LQ1aH1X=kW_jC0@T9S&X z>O$&-FHcjOM*7{!vnS!2KRUHk)-<8*B9zLIYc<+t)@es0+PbNjykHg5lZMc1b_o4#j#Ywd~O559G6|M}}1U-{|z zcW#{h)F|dx&f`fp=%?Z#DG}#;17Ne1O)aE<)>42~T1ravtB@E5)rw&BzFzo2%X&%C z2t`ZEA=ntWY{9ZaE7zP{x#q;?V_zJ7`wCy6X%($!!OOa|AqAV`O5f!VP*$;`IYaK@dRy3P!zO zV@t8uzf-Y=ot%Pk45pQEuuT+jFeXbxbpS_litb9cK@8t>itd&+dvv!*Kvca63`s-@ zjl+HKFpCH=A$LUbDiKzp(p?utqfCZ$6|8e3RAGdCeYmL~L$4;Az+RJgL+*mzJ-feu z?$s-Y|7PqsW2`-Xz3ss7JI@+>&KdjOGM;LGuV?=+knp(+#)*%4SGKYH-OF1}{il1| zKUZ)2mvC4@Z6rg9tcz(3Wq@ccRhdvzQR}M05We}8i-1ZK0HUQ3FQ9IyoSvx#IMO5i z1=NdxW%pJcU$y>J)#g|Bzws?EHGJoDLhEHe zu?@q$7n($vaLO5xQYx3ST4yiRD-Nq%R1^~eWI@PBRJ`R!A!?`}Bq%c1v;m;Y%T`KR&hdzYK`ep11n5^Ke8I4O zXiSTlS${;8V7<<>MvAoO6L*#!UfOqj<=UegUOad5gYRGa_{XE?{(a=!?+4$!gqFVe z)^%PQzWJpq+fNwJ95wp(UToR??>j0kOupxE-Nt|2x8g0~vPyW@+9z!gp328)9Ztoa z03{*9A5Hxv0YC{X%p72p=x=&%I(i zbL7{`b)V$ixm$QG51qDgS@#Doylqgd&bs^H=zxm5mY=?>^yP;ApB(=Q`nBFDBGU8(%BN*YQ;W3Yvflsij~DfIbz%yIN8a zU1iP@S}CXe)Tlljw)F1GV^4Iw(ERM{eb2wX_x1PQ`TCcS{$rf};2JM`Kl;wqLuaoY zIwv1LJ@b;Wg#zrPtid`CUEcnhTnO*o^YhR^M4R->BCeVjYhvIA4VO&e19}Lm3QrTo zsuVz=R=TSFEh(y4%9L!7dm2pbQ6z{z(e0q8IT5%t?e$LGp^giB1BWms=BlQNYaH$c z55vWTys@bjBD_+91`h`@^dVmnBM66LJ{Kh)DjVV4C+zDZayJw$e(v$6w=33sa&P$? z9vR)NyWPFwjmK->DOs>*xNCV}Y~PB;PoHe~+ua=})|~mN?d12(hrT>~-njLlBf_a% z1a6TruJ$v$_zyHhN?S1EXdBCTaUwYTr{o0isuNhljlkT z?^mlA{i#FaDLtx^iT+4_(}^XZ*~GzM<p;nB5wzVF)c+0u?T@2`1z z*5jwzp1s(#<)_=9eyw=%fsEPfr!C%E-ud?S4=x`5!nkS0Ug37{@~)5V5*S{&nY8R$ zC*10VdxPB4o~YWMO(u^fft-RKFe0RG@)@wl3gNj*c$NvTGT~VvJjonFAvc@EpiJ)>x27ewKK;{M!Oi-w}07?AAtV?bIR*3@7o_v~z1=Wcm_jPak_Q*No z;CcC=_27rHK;8Vx<(;ozIr=x_$b~Bh-~O35Ains;jbmWAWM{&yOe~iQkEIeoAkYAM zfT4m>e?((-GGq&S?oB3^Y7~a6cvnQ$)^Ze_v^Bv(odxl!EURXc=1jeRI2 zwQ>8YUz>J)viGe&HlF<9xwkIvf9ulzGnbCMedF|}R}WseyzjiR^DU$MxKaPYjpidp z+i^;=|33e&G5x^RU)8F;7jzA@yO`oEOL~>O=GA5RFIlkVsWo^r6L@1Uv=+Clr?+L8_&FPW8+&_ zx4mOLdqKWeomcJgGKMp}@Z`%&$G*H)x95D!+}ej5PZuoSC45$j39GD_%6O_Nyu`3x zco1R@atkfdQt}}N3Ei87TN4<%Efem`h1&|@wo{vgvl zB&>d<=k3%qXsN`|kI7JjVB$xKs0u!lED_Zei4JM1bG^s4+$XhnJkKr0+|#k^%bjmt z-}3hLp4Tq6AHTl#6{Gcqi#;#?-goH7u6=PHhs7%S|l*xF8qR!lOolDKTs?1vFVx>(JJw zQPpkWf_sv&ikzI{Su0Kc6-KH21`RY~RCKzi10{?Dw0GI*#^vheU)^h^4gQG(CJkWd z)jTw!VU*WG-k~?bBi}xOI&1*LNnER1#u^^wa=Kd?8cg04q>N!3dn90;}Xe61h!Colr6~(HcJBLT*IPf=Y=0;7u8yR69e#PR zZaE_y9=@g@Lzxc=ABIOwqeZnzGSI13IMm3ZRLw2WOpPJ(Lhf?TeDs-Dzv9J8@}07mjSmdttzWOb^39FIpIv^1fBf|yW5)-- zZ~NO%&;R4{{*Qkzxo@|yf6VOFWFiwX5dTJ#Z;i<7sa7J%I*??hVxuG{DoUZC zwtUok*m4%o$%EM{1Cv2_;zB;kIaR%wSS?ZNCmU`cf~$ELBzJ-&rvHTR_3=teWx#r% zrFAMFh7EJewTmw^`&LNFa&H%4=*0>a6$UV>K+rKl51QB>wPM1Pc5$@@i+A|t)+{bP zeDDL~z$eD0ca5FrjN0e^J5l}?mB;Os!cvv<$o@$)JDsQ1WIgmuTZqZNzGPXEoQamEmd@da9J)~R!9sbjO8X62$CqO zd%4vl38`?a6cZ|Nj1>uU)L(?-;zi5%tUdCNqyM;g?2C&Rt{NBqFi!Haz^{$HA79*c z{+E|NF?tVt8&}dUhTb#Ox7O^#^R9MbN4%6;llmsqnjw|O#JyU$!Fh~^@(@UZ9;VUb zBW^=K*=oQg58;?X157lGI8ysnL+3(=fUE>lGmt&bkbeL`c7nM+iz8i|O_Ok5HASE) zu-e9rd>CTmnqwPNW?}&Z&*4`J2!e=^!HYx$UC{|WXbkx{u||gB=%@1+?907vXH3cJ z)h}LziYzR)j^)CoR*Y;PGOpQO?_B_- zMPdjK-RjN3wZlB-lMmtH*eF%Blg1@C(9C)h`IDNE&UODlIv5LbPd8n;#;pzDYsHSs zVyA5npS5#b=9;jZd!{_NUqn|5ua(XvTVwA(KDF|~3kP{5$)V{VKOrl8);8sRCB$ab~nQ*BvyH{Dc$6IXcwCqt6E-V_O}QAV;vU!b zdsn#@cj7jXp;W>oEHwinIRG7qVOlvgn4F>mozv+JC>Vfey$KG02AHr17xqI$KX@G< zu%ExeHzJ$aRGmD25LNooP_t(O8K!;+gYn=ITa(rJ`6l6Iaw!}hfh1Lk@%843Ku56f zu|_yT25xFV<#01oIBjs%qj5swy2xp}9QlIVxW|Og@{pOE!e-W`EnbuN=(D~HH;kLN zG3d!-X^rpASpUr(8@{-s`{PHuKZ`8fEUX?I>C-fn^#muv3f$;c%4UB<&+eV;O%of< zRHW*oNzD(Pn2o}~QVEnyfEu)NlM4k+nQ$tV26|FmD@d$H zJWZ}eBO)s#ZsY4su1v1EWn57soWKwzS3HrWhQbi4U=)qcOvT!qlKSMzozs)Td$~hK z`;eq1E>r757p!x;ZG-DwyTX>73M+jxy!_l_TfZyc^Gni#y<*s7HXhZ(8T0rWGvBZP zJ#D07ZF*)11A!NlY$R|b5ABx-V1$7Hh=G{ns(y1=B``h$FBrO05L8L-K^{OOJ-Swz zJZjCzAm&yx#H-#!q&inyPpY?>)MRq0Q^hZ_pyW=Yr=2I;N-zf*I9TE!r(g&lxC+M% zQc==R0Z0SWz6S({a^XbPg=ADJNd$bYlgt>D4Xj2>3?&s+HKRDJ2&`b7SZ#K#7mf`k z!WOOJM(pMa;c0f8Iwl&Ks02gd(kPYRt(;pH6BKBJ)dtW3DF!oTvXatZVw&Pl8t0iu zl{u<5Vd3VK`*z3P^{hFcFU__%EZR4%^2Q&io2w+>`c!jkex(HfV=4>W1vA zK8Y+DEcB^XYbNj~JPd$!!cnzBlHbNHl^8m%kj1C80Su`>ut5xoPEAFf#JC%s%FtEt z9A7cSquo5QSvb@x9YC!K>vAy;CWE%3qFb%m1CSXM^&t=`8siUwLIXmBSRlRdkv=i5 zg|lVtGJqauX)xthQCjNZKo4{ds+c@$V1|LxO0iWk`{x7neh%Yu)M^NqQ==Kh!My7g z552A2i^s-Po2f-LhG+^rWSrxfYb(Sw18L*k@jPPXc9ga==1FLB-H?bzYrg3eToX5I zbHTlbWE?szfkt|OL*UP*uQtQhk+51Yn^HJP1OSx>AS>Dw%ZJT0>T9XeG> zFdgw8`5cBb$wTkdoRF*thDa`W@)Gyu!f~mvUoOpIg>WDxLdbH79(WE&tDH1)b8H>p zDq2d=!>&Ojt7IA;*C0k$i!oJVOobSS>T<{27NiBST9ccqEdUV0IPh1LS;5FLx-0on zReCfaIXm$d#f{{)I+*<+*1x48%{-~z49*%DuLcYNKWIi+tA8U`2|MAe7CqDeOLh=wu@hGm<=s8sjJ8r5m6^3{nNHsqtO3JA?h6V{%H}I=uxC#)u#rP;) z@+Y#<)=0_|L6`{Q&Xi(M`qK>jFs20jD!0$yiDjjUjPYK}}<=FocIA zqX;Fu!SWUu4rr;Q_4>ujn27>cE1Ef#R&IA8}bZhRNT+$@`|W~x-N;4J?xk40vx0jPiO`XC^H!1 z51=MX<0?kQ!5(#zhf+(qLA12NWPdAlskM8F4PX6XvSkkqsPQ?Nx&YavXe2MF90e;J z6^xpP{dXj@y@}OS38Pw1;wli#mB+Bvtd^K2m0Rtun9$E#jlAZxW>KHi~HS!4!W{*abdjl|(SBzd@9dG{0na*PAwOnpe{<5p{;OwnPdF{d9O z)u`(5(JW;vM@X2U6e_ILjFII6S;zqkgW7Bwg zR|FKrsy2zC7`sf2frLwCqNR?JOw)YB_sRzG1XX(il)Ee!V@k!yGFg98!4SA(m6Yjl z!IugvoF@lJZ|om54TuDmepDU6kol`FIN+83$QIZ+m_sdS~EFg`+5W*Ay;*)q4`<7mz;6C+tT$I8T5g%1N)*+Y7lD{A!goyoSc z|Hmo{gsodR7kL3$OwrS>0OnnxMe;6fQ^zo&C=|sV5-F^ zdQcq#IAcZ&2vQyUIua${)Qt>o2X9T1a3DOTV)K3))41irR#9=(G69TZR|+!Wn3Yt) zz$iV6gi08d!Ax7|S1K_aQK|r}kN}PVmNGGHm9(KNr428Y2Y?b=-59Om9e`Tz1Zpnv zXCC%rsL08F=@p_@funB-S7G{I2hrv*_7Jb!y(;HaimsAlV+>y)$EokXe8O)w%5>0|F55mWiGg*>j57h~HDxz>Mo#;SdCm-casRY5T^?QIlH72bu z1R$n(*bm?m0fwWQB`U1OuCj8fFgcW&08R7Ic9nv6r5Le7i~{6U0!(m^M5$bigka^; zKoax@0c6kr095G7Q`BK&`C>qYiQ)=~B$1#Bi#mhCtElzoo9O4W8a45!T?LKh%?;kD zzE`!!wnl~+V;ioRk5dsk7nNtI*5!I5N?R)tG^>Dw+xtZlB8yXzA!B3c!_SXrOT$1dYb%75z4H zxfr@!j94josPT~yRhY*qeHeu^lxb9H)6jv=b~KFTuga-IiGm6f_d2f9L~fCzRxnB= z6?$^3_7666*y$~I!0@$h>%+8`a#?&mhBg6eB^k8AP)>%SC2ppzXb*H;t6w|R;C0HtwG34!J=Q-FRXeo| z0{Hk!u9vA*cBUiHSRxOG6*BdKp%xeVSIW|lqy~`75p?(sDnJ*V&V+f)GL!8x)3{~k zaVt&sYCbV)g&4Y23|}TjEEBY)f!lJqhyBBri;)UL&;ts-`7ye3s8hXZM7e2X1t#Nu zc$sOq!ix5gRl)|1<$?;sQ57b%;X}(3QRN<(lG-CE$XMeqC=22 z@~Bln3x`fA^6m#<9L`7p5P^`?k{1GVeTq)V04S}}G#bgR51TX7#iwl312yfRF&wp0E|q{S7u5hlc#I-a3dca^0tNAZylVkk diff --git a/src/pkg/image/testdata/video-001.tiff b/src/pkg/image/testdata/video-001.tiff deleted file mode 100644 index 0dd6cd9313321bc05f1c51c113e8bd20326dcd1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30810 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 diff --git a/src/pkg/image/tiff/Makefile b/src/pkg/image/tiff/Makefile deleted file mode 100644 index 67ef5c9ec6..0000000000 --- a/src/pkg/image/tiff/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -# Copyright 2011 The Go Authors. All rights reserved. -# Use of this source code is governed by a BSD-style -# license that can be found in the LICENSE file. - -include ../../../Make.inc - -TARG=image/tiff -GOFILES=\ - buffer.go\ - compress.go\ - consts.go\ - reader.go\ - -include ../../../Make.pkg diff --git a/src/pkg/image/tiff/buffer.go b/src/pkg/image/tiff/buffer.go deleted file mode 100644 index 27533c6047..0000000000 --- a/src/pkg/image/tiff/buffer.go +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package tiff - -import "io" - -// buffer buffers an io.Reader to satisfy io.ReaderAt. -type buffer struct { - r io.Reader - buf []byte -} - -func (b *buffer) ReadAt(p []byte, off int64) (int, error) { - o := int(off) - end := o + len(p) - if int64(end) != off+int64(len(p)) { - return 0, io.ErrUnexpectedEOF - } - - m := len(b.buf) - if end > m { - if end > cap(b.buf) { - newcap := 1024 - for newcap < end { - newcap *= 2 - } - newbuf := make([]byte, end, newcap) - copy(newbuf, b.buf) - b.buf = newbuf - } else { - b.buf = b.buf[:end] - } - if n, err := io.ReadFull(b.r, b.buf[m:end]); err != nil { - end = m + n - b.buf = b.buf[:end] - return copy(p, b.buf[o:end]), err - } - } - - return copy(p, b.buf[o:end]), nil -} - -// newReaderAt converts an io.Reader into an io.ReaderAt. -func newReaderAt(r io.Reader) io.ReaderAt { - if ra, ok := r.(io.ReaderAt); ok { - return ra - } - return &buffer{ - r: r, - buf: make([]byte, 0, 1024), - } -} diff --git a/src/pkg/image/tiff/buffer_test.go b/src/pkg/image/tiff/buffer_test.go deleted file mode 100644 index e13afb3619..0000000000 --- a/src/pkg/image/tiff/buffer_test.go +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package tiff - -import ( - "io" - "strings" - "testing" -) - -var readAtTests = []struct { - n int - off int64 - s string - err error -}{ - {2, 0, "ab", nil}, - {6, 0, "abcdef", nil}, - {3, 3, "def", nil}, - {3, 5, "f", io.EOF}, - {3, 6, "", io.EOF}, -} - -func TestReadAt(t *testing.T) { - r := newReaderAt(strings.NewReader("abcdef")) - b := make([]byte, 10) - for _, test := range readAtTests { - n, err := r.ReadAt(b[:test.n], test.off) - s := string(b[:n]) - if s != test.s || err != test.err { - t.Errorf("buffer.ReadAt(<%v bytes>, %v): got %v, %q; want %v, %q", test.n, test.off, err, s, test.err, test.s) - } - } -} diff --git a/src/pkg/image/tiff/compress.go b/src/pkg/image/tiff/compress.go deleted file mode 100644 index 40c7fd86c3..0000000000 --- a/src/pkg/image/tiff/compress.go +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package tiff - -import ( - "bufio" - "io" -) - -type byteReader interface { - io.Reader - io.ByteReader -} - -// unpackBits decodes the PackBits-compressed data in src and returns the -// uncompressed data. -// -// The PackBits compression format is described in section 9 (p. 42) -// of the TIFF spec. -func unpackBits(r io.Reader) ([]byte, error) { - buf := make([]byte, 128) - dst := make([]byte, 0, 1024) - br, ok := r.(byteReader) - if !ok { - br = bufio.NewReader(r) - } - - for { - b, err := br.ReadByte() - if err != nil { - if err == io.EOF { - return dst, nil - } - return nil, err - } - code := int(int8(b)) - switch { - case code >= 0: - n, err := io.ReadFull(br, buf[:code+1]) - if err != nil { - return nil, err - } - dst = append(dst, buf[:n]...) - case code == -128: - // No-op. - default: - if b, err = br.ReadByte(); err != nil { - return nil, err - } - for j := 0; j < 1-code; j++ { - buf[j] = b - } - dst = append(dst, buf[:1-code]...) - } - } - panic("unreachable") -} diff --git a/src/pkg/image/tiff/consts.go b/src/pkg/image/tiff/consts.go deleted file mode 100644 index 169ba27721..0000000000 --- a/src/pkg/image/tiff/consts.go +++ /dev/null @@ -1,103 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package tiff - -// A tiff image file contains one or more images. The metadata -// of each image is contained in an Image File Directory (IFD), -// which contains entries of 12 bytes each and is described -// on page 14-16 of the specification. An IFD entry consists of -// -// - a tag, which describes the signification of the entry, -// - the data type and length of the entry, -// - the data itself or a pointer to it if it is more than 4 bytes. -// -// The presence of a length means that each IFD is effectively an array. - -const ( - leHeader = "II\x2A\x00" // Header for little-endian files. - beHeader = "MM\x00\x2A" // Header for big-endian files. - - ifdLen = 12 // Length of an IFD entry in bytes. -) - -// Data types (p. 14-16 of the spec). -const ( - dtByte = 1 - dtASCII = 2 - dtShort = 3 - dtLong = 4 - dtRational = 5 -) - -// The length of one instance of each data type in bytes. -var lengths = [...]uint32{0, 1, 1, 2, 4, 8} - -// Tags (see p. 28-41 of the spec). -const ( - tImageWidth = 256 - tImageLength = 257 - tBitsPerSample = 258 - tCompression = 259 - tPhotometricInterpretation = 262 - - tStripOffsets = 273 - tSamplesPerPixel = 277 - tRowsPerStrip = 278 - tStripByteCounts = 279 - - tXResolution = 282 - tYResolution = 283 - tResolutionUnit = 296 - - tPredictor = 317 - tColorMap = 320 - tExtraSamples = 338 - tSampleFormat = 339 -) - -// Compression types (defined in various places in the spec and supplements). -const ( - cNone = 1 - cCCITT = 2 - cG3 = 3 // Group 3 Fax. - cG4 = 4 // Group 4 Fax. - cLZW = 5 - cJPEGOld = 6 // Superseded by cJPEG. - cJPEG = 7 - cDeflate = 8 // zlib compression. - cPackBits = 32773 - cDeflateOld = 32946 // Superseded by cDeflate. -) - -// Photometric interpretation values (see p. 37 of the spec). -const ( - pWhiteIsZero = 0 - pBlackIsZero = 1 - pRGB = 2 - pPaletted = 3 - pTransMask = 4 // transparency mask - pCMYK = 5 - pYCbCr = 6 - pCIELab = 8 -) - -// Values for the tPredictor tag (page 64-65 of the spec). -const ( - prNone = 1 - prHorizontal = 2 -) - -// imageMode represents the mode of the image. -type imageMode int - -const ( - mBilevel imageMode = iota - mPaletted - mGray - mGrayInvert - mRGB - mRGBA - mNRGBA -) diff --git a/src/pkg/image/tiff/reader.go b/src/pkg/image/tiff/reader.go deleted file mode 100644 index dc5a87a9fb..0000000000 --- a/src/pkg/image/tiff/reader.go +++ /dev/null @@ -1,430 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package tiff implements a TIFF image decoder. -// -// The TIFF specification is at http://partners.adobe.com/public/developer/en/tiff/TIFF6.pdf -package tiff - -import ( - "compress/lzw" - "compress/zlib" - "encoding/binary" - "image" - "image/color" - "io" - "io/ioutil" -) - -// A FormatError reports that the input is not a valid TIFF image. -type FormatError string - -func (e FormatError) Error() string { - return "tiff: invalid format: " + string(e) -} - -// An UnsupportedError reports that the input uses a valid but -// unimplemented feature. -type UnsupportedError string - -func (e UnsupportedError) Error() string { - return "tiff: unsupported feature: " + string(e) -} - -// An InternalError reports that an internal error was encountered. -type InternalError string - -func (e InternalError) Error() string { - return "tiff: internal error: " + string(e) -} - -type decoder struct { - r io.ReaderAt - byteOrder binary.ByteOrder - config image.Config - mode imageMode - features map[int][]uint - palette []color.Color - - buf []byte - off int // Current offset in buf. - v uint32 // Buffer value for reading with arbitrary bit depths. - nbits uint // Remaining number of bits in v. -} - -// firstVal returns the first uint of the features entry with the given tag, -// or 0 if the tag does not exist. -func (d *decoder) firstVal(tag int) uint { - f := d.features[tag] - if len(f) == 0 { - return 0 - } - return f[0] -} - -// ifdUint decodes the IFD entry in p, which must be of the Byte, Short -// or Long type, and returns the decoded uint values. -func (d *decoder) ifdUint(p []byte) (u []uint, err error) { - var raw []byte - datatype := d.byteOrder.Uint16(p[2:4]) - count := d.byteOrder.Uint32(p[4:8]) - if datalen := lengths[datatype] * count; datalen > 4 { - // The IFD contains a pointer to the real value. - raw = make([]byte, datalen) - _, err = d.r.ReadAt(raw, int64(d.byteOrder.Uint32(p[8:12]))) - } else { - raw = p[8 : 8+datalen] - } - if err != nil { - return nil, err - } - - u = make([]uint, count) - switch datatype { - case dtByte: - for i := uint32(0); i < count; i++ { - u[i] = uint(raw[i]) - } - case dtShort: - for i := uint32(0); i < count; i++ { - u[i] = uint(d.byteOrder.Uint16(raw[2*i : 2*(i+1)])) - } - case dtLong: - for i := uint32(0); i < count; i++ { - u[i] = uint(d.byteOrder.Uint32(raw[4*i : 4*(i+1)])) - } - default: - return nil, UnsupportedError("data type") - } - return u, nil -} - -// parseIFD decides whether the the IFD entry in p is "interesting" and -// stows away the data in the decoder. -func (d *decoder) parseIFD(p []byte) error { - tag := d.byteOrder.Uint16(p[0:2]) - switch tag { - case tBitsPerSample, - tExtraSamples, - tPhotometricInterpretation, - tCompression, - tPredictor, - tStripOffsets, - tStripByteCounts, - tRowsPerStrip, - tImageLength, - tImageWidth: - val, err := d.ifdUint(p) - if err != nil { - return err - } - d.features[int(tag)] = val - case tColorMap: - val, err := d.ifdUint(p) - if err != nil { - return err - } - numcolors := len(val) / 3 - if len(val)%3 != 0 || numcolors <= 0 || numcolors > 256 { - return FormatError("bad ColorMap length") - } - d.palette = make([]color.Color, numcolors) - for i := 0; i < numcolors; i++ { - d.palette[i] = color.RGBA64{ - uint16(val[i]), - uint16(val[i+numcolors]), - uint16(val[i+2*numcolors]), - 0xffff, - } - } - case tSampleFormat: - // Page 27 of the spec: If the SampleFormat is present and - // the value is not 1 [= unsigned integer data], a Baseline - // TIFF reader that cannot handle the SampleFormat value - // must terminate the import process gracefully. - val, err := d.ifdUint(p) - if err != nil { - return err - } - for _, v := range val { - if v != 1 { - return UnsupportedError("sample format") - } - } - } - return nil -} - -// readBits reads n bits from the internal buffer starting at the current offset. -func (d *decoder) readBits(n uint) uint32 { - for d.nbits < n { - d.v <<= 8 - d.v |= uint32(d.buf[d.off]) - d.off++ - d.nbits += 8 - } - d.nbits -= n - rv := d.v >> d.nbits - d.v &^= rv << d.nbits - return rv -} - -// flushBits discards the unread bits in the buffer used by readBits. -// It is used at the end of a line. -func (d *decoder) flushBits() { - d.v = 0 - d.nbits = 0 -} - -// decode decodes the raw data of an image. -// It reads from d.buf and writes the strip with ymin <= y < ymax into dst. -func (d *decoder) decode(dst image.Image, ymin, ymax int) error { - d.off = 0 - - // Apply horizontal predictor if necessary. - // In this case, p contains the color difference to the preceding pixel. - // See page 64-65 of the spec. - if d.firstVal(tPredictor) == prHorizontal && d.firstVal(tBitsPerSample) == 8 { - var off int - spp := len(d.features[tBitsPerSample]) // samples per pixel - for y := ymin; y < ymax; y++ { - off += spp - for x := 0; x < (dst.Bounds().Dx()-1)*spp; x++ { - d.buf[off] += d.buf[off-spp] - off++ - } - } - } - - switch d.mode { - case mGray, mGrayInvert: - img := dst.(*image.Gray) - bpp := d.firstVal(tBitsPerSample) - max := uint32((1 << bpp) - 1) - for y := ymin; y < ymax; y++ { - for x := img.Rect.Min.X; x < img.Rect.Max.X; x++ { - v := uint8(d.readBits(bpp) * 0xff / max) - if d.mode == mGrayInvert { - v = 0xff - v - } - img.SetGray(x, y, color.Gray{v}) - } - d.flushBits() - } - case mPaletted: - img := dst.(*image.Paletted) - bpp := d.firstVal(tBitsPerSample) - for y := ymin; y < ymax; y++ { - for x := img.Rect.Min.X; x < img.Rect.Max.X; x++ { - img.SetColorIndex(x, y, uint8(d.readBits(bpp))) - } - d.flushBits() - } - case mRGB: - img := dst.(*image.RGBA) - min := img.PixOffset(0, ymin) - max := img.PixOffset(0, ymax) - var off int - for i := min; i < max; i += 4 { - img.Pix[i+0] = d.buf[off+0] - img.Pix[i+1] = d.buf[off+1] - img.Pix[i+2] = d.buf[off+2] - img.Pix[i+3] = 0xff - off += 3 - } - case mNRGBA: - img := dst.(*image.NRGBA) - min := img.PixOffset(0, ymin) - max := img.PixOffset(0, ymax) - if len(d.buf) != max-min { - return FormatError("short data strip") - } - copy(img.Pix[min:max], d.buf) - case mRGBA: - img := dst.(*image.RGBA) - min := img.PixOffset(0, ymin) - max := img.PixOffset(0, ymax) - if len(d.buf) != max-min { - return FormatError("short data strip") - } - copy(img.Pix[min:max], d.buf) - } - - return nil -} - -func newDecoder(r io.Reader) (*decoder, error) { - d := &decoder{ - r: newReaderAt(r), - features: make(map[int][]uint), - } - - p := make([]byte, 8) - if _, err := d.r.ReadAt(p, 0); err != nil { - return nil, err - } - switch string(p[0:4]) { - case leHeader: - d.byteOrder = binary.LittleEndian - case beHeader: - d.byteOrder = binary.BigEndian - default: - return nil, FormatError("malformed header") - } - - ifdOffset := int64(d.byteOrder.Uint32(p[4:8])) - - // The first two bytes contain the number of entries (12 bytes each). - if _, err := d.r.ReadAt(p[0:2], ifdOffset); err != nil { - return nil, err - } - numItems := int(d.byteOrder.Uint16(p[0:2])) - - // All IFD entries are read in one chunk. - p = make([]byte, ifdLen*numItems) - if _, err := d.r.ReadAt(p, ifdOffset+2); err != nil { - return nil, err - } - - for i := 0; i < len(p); i += ifdLen { - if err := d.parseIFD(p[i : i+ifdLen]); err != nil { - return nil, err - } - } - - d.config.Width = int(d.firstVal(tImageWidth)) - d.config.Height = int(d.firstVal(tImageLength)) - - if _, ok := d.features[tBitsPerSample]; !ok { - return nil, FormatError("BitsPerSample tag missing") - } - - // Determine the image mode. - switch d.firstVal(tPhotometricInterpretation) { - case pRGB: - for _, b := range d.features[tBitsPerSample] { - if b != 8 { - return nil, UnsupportedError("non-8-bit RGB image") - } - } - d.config.ColorModel = color.RGBAModel - // RGB images normally have 3 samples per pixel. - // If there are more, ExtraSamples (p. 31-32 of the spec) - // gives their meaning (usually an alpha channel). - // - // This implementation does not support extra samples - // of an unspecified type. - switch len(d.features[tBitsPerSample]) { - case 3: - d.mode = mRGB - case 4: - switch d.firstVal(tExtraSamples) { - case 1: - d.mode = mRGBA - case 2: - d.mode = mNRGBA - d.config.ColorModel = color.NRGBAModel - default: - return nil, FormatError("wrong number of samples for RGB") - } - default: - return nil, FormatError("wrong number of samples for RGB") - } - case pPaletted: - d.mode = mPaletted - d.config.ColorModel = color.Palette(d.palette) - case pWhiteIsZero: - d.mode = mGrayInvert - d.config.ColorModel = color.GrayModel - case pBlackIsZero: - d.mode = mGray - d.config.ColorModel = color.GrayModel - default: - return nil, UnsupportedError("color model") - } - - return d, nil -} - -// DecodeConfig returns the color model and dimensions of a TIFF image without -// decoding the entire image. -func DecodeConfig(r io.Reader) (image.Config, error) { - d, err := newDecoder(r) - if err != nil { - return image.Config{}, err - } - return d.config, nil -} - -// Decode reads a TIFF image from r and returns it as an image.Image. -// The type of Image returned depends on the contents of the TIFF. -func Decode(r io.Reader) (img image.Image, err error) { - d, err := newDecoder(r) - if err != nil { - return - } - - // Check if we have the right number of strips, offsets and counts. - rps := int(d.firstVal(tRowsPerStrip)) - if rps == 0 { - // Assume only one strip. - rps = d.config.Height - } - numStrips := (d.config.Height + rps - 1) / rps - if rps == 0 || len(d.features[tStripOffsets]) < numStrips || len(d.features[tStripByteCounts]) < numStrips { - return nil, FormatError("inconsistent header") - } - - switch d.mode { - case mGray, mGrayInvert: - img = image.NewGray(image.Rect(0, 0, d.config.Width, d.config.Height)) - case mPaletted: - img = image.NewPaletted(image.Rect(0, 0, d.config.Width, d.config.Height), d.palette) - case mNRGBA: - img = image.NewNRGBA(image.Rect(0, 0, d.config.Width, d.config.Height)) - case mRGB, mRGBA: - img = image.NewRGBA(image.Rect(0, 0, d.config.Width, d.config.Height)) - } - - for i := 0; i < numStrips; i++ { - ymin := i * rps - // The last strip may be shorter. - if i == numStrips-1 && d.config.Height%rps != 0 { - rps = d.config.Height % rps - } - offset := int64(d.features[tStripOffsets][i]) - n := int64(d.features[tStripByteCounts][i]) - switch d.firstVal(tCompression) { - case cNone: - // TODO(bsiegert): Avoid copy if r is a tiff.buffer. - d.buf = make([]byte, n) - _, err = d.r.ReadAt(d.buf, offset) - case cLZW: - r := lzw.NewReader(io.NewSectionReader(d.r, offset, n), lzw.MSB, 8) - d.buf, err = ioutil.ReadAll(r) - r.Close() - case cDeflate, cDeflateOld: - r, err := zlib.NewReader(io.NewSectionReader(d.r, offset, n)) - if err != nil { - return nil, err - } - d.buf, err = ioutil.ReadAll(r) - r.Close() - case cPackBits: - d.buf, err = unpackBits(io.NewSectionReader(d.r, offset, n)) - default: - err = UnsupportedError("compression") - } - if err != nil { - return - } - err = d.decode(img, ymin, ymin+rps) - } - return -} - -func init() { - image.RegisterFormat("tiff", leHeader, Decode, DecodeConfig) - image.RegisterFormat("tiff", beHeader, Decode, DecodeConfig) -} diff --git a/src/pkg/image/tiff/reader_test.go b/src/pkg/image/tiff/reader_test.go deleted file mode 100644 index ee5dafd996..0000000000 --- a/src/pkg/image/tiff/reader_test.go +++ /dev/null @@ -1,119 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package tiff - -import ( - "image" - "io/ioutil" - "os" - "strings" - "testing" -) - -// Read makes *buffer implements io.Reader, so that we can pass one to Decode. -func (*buffer) Read([]byte) (int, error) { - panic("unimplemented") -} - -// TestNoRPS tries to decode an image that has no RowsPerStrip tag. -// The tag is mandatory according to the spec but some software omits -// it in the case of a single strip. -func TestNoRPS(t *testing.T) { - f, err := os.Open("testdata/no_rps.tiff") - if err != nil { - t.Fatal(err) - } - defer f.Close() - _, err = Decode(f) - if err != nil { - t.Fatal(err) - } -} - -// TestUnpackBits tests the decoding of PackBits-encoded data. -func TestUnpackBits(t *testing.T) { - var unpackBitsTests = []struct { - compressed string - uncompressed string - }{{ - // Example data from Wikipedia. - "\xfe\xaa\x02\x80\x00\x2a\xfd\xaa\x03\x80\x00\x2a\x22\xf7\xaa", - "\xaa\xaa\xaa\x80\x00\x2a\xaa\xaa\xaa\xaa\x80\x00\x2a\x22\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa", - }} - for _, u := range unpackBitsTests { - buf, err := unpackBits(strings.NewReader(u.compressed)) - if err != nil { - t.Fatal(err) - } - if string(buf) != u.uncompressed { - t.Fatalf("unpackBits: want %x, got %x", u.uncompressed, buf) - } - } -} - -// TestDecompress tests that decoding some TIFF images that use different -// compression formats result in the same pixel data. -func TestDecompress(t *testing.T) { - var decompressTests = []string{ - "bw-uncompressed.tiff", - "bw-deflate.tiff", - "bw-packbits.tiff", - } - var img0 image.Image - for _, name := range decompressTests { - f, err := os.Open("testdata/" + name) - if err != nil { - t.Fatal(err) - } - defer f.Close() - if img0 == nil { - img0, err = Decode(f) - if err != nil { - t.Fatalf("decoding %s: %v", name, err) - } - continue - } - - img1, err := Decode(f) - if err != nil { - t.Fatalf("decoding %s: %v", name, err) - } - b := img1.Bounds() - // Compare images. - if !b.Eq(img0.Bounds()) { - t.Fatalf("wrong image size: want %s, got %s", img0.Bounds(), b) - } - for y := b.Min.Y; y < b.Max.Y; y++ { - for x := b.Min.X; x < b.Max.X; x++ { - c0 := img0.At(x, y) - c1 := img1.At(x, y) - r0, g0, b0, a0 := c0.RGBA() - r1, g1, b1, a1 := c1.RGBA() - if r0 != r1 || g0 != g1 || b0 != b1 || a0 != a1 { - t.Fatalf("pixel at (%d, %d) has wrong color: want %v, got %v", x, y, c0, c1) - } - } - } - } -} - -const filename = "testdata/video-001-uncompressed.tiff" - -// BenchmarkDecode benchmarks the decoding of an image. -func BenchmarkDecode(b *testing.B) { - b.StopTimer() - contents, err := ioutil.ReadFile(filename) - if err != nil { - panic(err) - } - r := &buffer{buf: contents} - b.StartTimer() - for i := 0; i < b.N; i++ { - _, err := Decode(r) - if err != nil { - b.Fatal("Decode:", err) - } - } -} diff --git a/src/pkg/image/tiff/testdata/bw-deflate.tiff b/src/pkg/image/tiff/testdata/bw-deflate.tiff deleted file mode 100644 index 137a0c3ef1f669b7c51a5d437160e6784675e68c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 594 zcmebD)M7AVWMHV6(|g&_`>=xu`-lHenXWr!99h|Xqi61tvR4aKn&g)R*f&^MrdWtB zX_i08|41V0;QEOd4VyMUzuUTP`uC_8w?8R=|EI6dd10mdhDpm(rmeA?8Ea>2uzO;# z*Q3b2n>(gfEnZglM0=}ayvvnylf)f!YeI{5=Pl^0eSYRhgzn0dyAKMmZakXr?0aUv zR>~2hkByus*IsvFJUJEwf0W^A+gBJD?=CN^>PbCtR8D&br*AHk=SjZfZX5Zl&-<*4w08Mp?tVmV z3wOp=>W8TLww5 z29ymH1_S-j;?$yI{iNc|)b!M%5`CA{vecaXg47~?_k8{0qGbJo>~#Ii+{E-${gTYI lH2sp);*ylal0^Naa@~~Fw4B6}R6URc*f0+u3GyhI1^_H#vqAs> diff --git a/src/pkg/image/tiff/testdata/bw-packbits.tiff b/src/pkg/image/tiff/testdata/bw-packbits.tiff deleted file mode 100644 index d59fa4aeed32c855d74bec465904dd7474243fd0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 890 zcmY+C&ubGw6vw|av&n8CHfcdETI?Q!V7GeFgOUgZtw+I&rzYt(#3~KDi+admTS0p8 z9}xUQJccUxZ{+B4HLX9|X2&;gr!^f|zMt=#H*em|?E3mmJeR;v;O!I>NTr9l(dxlh z*4w)g>qB)X$03y1b3ZYt1NQ@i`$N5Fn5ziMuvC2~7#jD73{K-ghE&sf=X;as2qn>Q z_f3#cZO$#CRbclpvnV#cjo@=s_~J8Gxxg41>P$XbxM2u>4pf-xM749OGIvt;euQ$51ZW9BRYvqiR}@ zrvE)HPpJ)>_P7n5QX7SvTm-s>BC>E1d|-tm1oRA)$l;i)D~3?aAIS;JcZsEClcy|~QlM;^!nhS z+RHP1#d3>suG;*k61XNx+`|j1bKP=8yfm}6VVTl-1kd6yii1wv4|`#h1Z&~z@a4`R zjDklyK^%31!FDg`ziRiwAn9*y1xXkuo9(0>bl%(=w7c7#eiE;k8B^^sedeI7{{Y9_ B=bQil diff --git a/src/pkg/image/tiff/testdata/bw-uncompressed.tiff b/src/pkg/image/tiff/testdata/bw-uncompressed.tiff deleted file mode 100644 index 8390f11357f9c3b38464b17a08d4cdd111b7d5ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1396 zcmZvb&ubGw6vyA}v~CNrsRgyP#qKc(cB&UWSdv1a271(c(q;+|NDux4 zLjMqtp$h&RJ@%M_=T6^DXEw8Me6V@n`Me)Hc{AH?KZUmoKAL!VSdFkHToYD=Ymx4*6`(n3`f2J@`3Om$(EdJl4E1$Y*uk44Q==sI84nCGN#z zcv@&mfydU7aHW%5Wi6uEAn16kuFU=_OqmyhW_mWpEUGXU>v(w{BXc(W)?D0qtPNNK zu;b#+BWpSBd;+X++WB4JPL_U&9yvx9U|hzX;J*teOCN=wIYg~8T#BeDWhuB}t8jyF z(-*)P<3|6)1+)4k>d0!H$31<|YF&FDzwS-PsI5BKny>0 l2U6t2eqZD=%X{6tD~>-s>&gD8o68*?FwNfJul}RP-vZMgXo3I$ diff --git a/src/pkg/image/tiff/testdata/no_rps.tiff b/src/pkg/image/tiff/testdata/no_rps.tiff deleted file mode 100644 index 3280cf8e344b0ff0b6b98a1c3ca0029174eb82ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1294 zcmaKsYe23m2K>#59w9=WNVNi!@?5LL`+gI?HX&WjQwIQoCs%#Eqn) z%r0I^XGkXWA@Z`8Wu;J5Bz9FZsSjl&WFPt<1W(Ud8@yYWGoGFQd!GOAInOz~yed^9 zdBhL`06t;2+X;@+yzEUAdYxt=KR@q_G%@yLswDoCLZMjW@8>={9NmnBO=`bnv%qj) z3#I@X8trhraxa)mazU%rDY$;G*6a18ut-f-M~eEKLqpJV?kpTLs$tmWgwc^ZaR2&g z80$L)nVUA&mXv6STCMi!na}5CMT)|&)tQRn`@%PP{Nx#IOih8U>Fc4l`7pe3wZr=d z4k#&5P6?Ms@G~n@3g^7XDhsLw!z?) z2FOTHGwv=d^x^To0x?p`)j3~hA9lgS;05%z!hoX*p5AP6Yg%La-W9O!-vc3G0-N{j zboP!2VOaCCTjyb7s1?QsF2XCiFY1xr(=dp&C~vDSrGU>pdU>1$x*gfG)Au^vyt~Hj zHfV3Efit!v@Y>Y|9VeehRv(xFYyL+ZQjpx|Yc>j6iJD}&xAlm71yBEDmTOm zDe5Q=o50ah+$#fXyhKl)XPx%rKbDf;KZD7tB9)SQh$59OX! zMvXzAqcN204v6KfjFpO$4O>o~80ch876bVO`Vu8* diff --git a/src/pkg/image/tiff/testdata/video-001-uncompressed.tiff b/src/pkg/image/tiff/testdata/video-001-uncompressed.tiff deleted file mode 100644 index fad147107b25464111b7b34d7728e99f84fe522a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46674 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