pax_global_header00006660000000000000000000000064143317717720014526gustar00rootroot0000000000000052 comment=21fca280a144fbf34ab1a58efa39acb495a46764 xq-1.0.0/000077500000000000000000000000001433177177200121545ustar00rootroot00000000000000xq-1.0.0/.github/000077500000000000000000000000001433177177200135145ustar00rootroot00000000000000xq-1.0.0/.github/workflows/000077500000000000000000000000001433177177200155515ustar00rootroot00000000000000xq-1.0.0/.github/workflows/build.yml000066400000000000000000000005121433177177200173710ustar00rootroot00000000000000name: build on: [push, pull_request] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Set up Go uses: actions/setup-go@v2 with: go-version: ^1.19 - name: Build run: go build -v ./... - name: Test run: go test -v ./... xq-1.0.0/.gitignore000066400000000000000000000000201433177177200141340ustar00rootroot00000000000000/xq /.env /dist/xq-1.0.0/.goreleaser.yml000066400000000000000000000006241433177177200151070ustar00rootroot00000000000000project_name: xq builds: - env: - CGO_ENABLED=0 goos: - linux - darwin goamd64: - '' hooks: post: - cmd: scripts/build-hook.sh env: - HOOK_TARGET={{ .Target }} - HOOK_PATH={{ .Path }} checksum: name_template: 'checksums.txt' snapshot: name_template: "{{ .Tag }}" changelog: filters: exclude: - '^TECH' xq-1.0.0/LICENSE000066400000000000000000000020601433177177200131570ustar00rootroot00000000000000MIT License Copyright (c) 2021 Alexei Yuzhakov Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. xq-1.0.0/README.md000066400000000000000000000031731433177177200134370ustar00rootroot00000000000000# xq [![build](https://github.com/sibprogrammer/xq/workflows/build/badge.svg)](https://github.com/sibprogrammer/xq/actions) [![Homebrew](https://img.shields.io/badge/dynamic/json.svg?url=https://formulae.brew.sh/api/formula/xq.json&query=$.versions.stable&label=homebrew)](https://formulae.brew.sh/formula/xq) Command-line XML and HTML beautifier and content extractor. ![xq](./assets/images/screenshot.png?raw=true) # Features * Syntax highlighting * Automatic indentation and formatting * Automatic pagination * Node content extraction # Usage Format an XML file and highlight the syntax: ``` xq test/data/xml/unformatted.xml ``` `xq` also accepts input through `stdin`: ``` curl -s https://www.w3schools.com/xml/note.xml | xq ``` HTML content can be formatted and highlighted as well (using `-m` flag): ``` xq -m test/data/html/formatted.html ``` It is possible to extract the content using XPath query language. `-x` parameter accepts XPath expression. Extract the text content of all nodes with `city` name: ``` cat test/data/xml/unformatted.xml | xq -x //city ``` Extract the value of attribute named `status` and belonging to `user`: ``` cat test/data/xml/unformatted.xml | xq -x /user/@status ``` See https://en.wikipedia.org/wiki/XPath for details. # Installation The preferable ways to install the utility are described below. For macOS: ``` brew install xq ``` For Linux: ``` curl -sSL https://bit.ly/install-xq | sudo bash ``` For Fedora via package manager: ``` dnf install xq ``` If you have Go toolchain installed, you can use the following command to install `xq`: ``` go install github.com/sibprogrammer/xq@latest ``` xq-1.0.0/assets/000077500000000000000000000000001433177177200134565ustar00rootroot00000000000000xq-1.0.0/assets/images/000077500000000000000000000000001433177177200147235ustar00rootroot00000000000000xq-1.0.0/assets/images/screenshot.png000066400000000000000000004314751433177177200176240ustar00rootroot00000000000000PNG  IHDRy}n ?iCCPICC ProfileHWXS[EJMEJ-t*ZP ]Qp-Ql`e],ؕ7)̹s@8O"C5J‚X)i,c@t@Z/cc,kZEK ,B!(C|/@S %r +Б!^$YJ\%JWaǁ5*'yV? j v Db4XO@-@,N'oC<^VEQԂE<޴3}XJ͖ v#wRS!gD@ {@a1Jɖ'*Q#~ 0!v#!68T32E\ A CHX,6dJ9l'U'Md_e *}^ 1b"QR4t r#U69у6RY<~K >V) Sٗ ۜ-Fpe~V>O? !u)QsCsǞ ʼn* 8X"ɋU¼09o[AQj,TRϔ&(ċsxx p@0``^x < Y@UdE^A1"!("bWG-R! Cޒ#Ȉ+ƛ7 (#$Pnx{ރfOxL$< \%tnN͓hCU>5tǃp?q&nq7臍@gfPّ(YHq$ݞ>"Qƚ1oPϏ9e_-E~ ;cÚ 9Z]k["\#'+dssge_p|IiRQVv! BWwrqvq@}Qn_!BBh1@L+qA$BT$BĈ Gʐrd=A~E!'H'r (RQFG^(Dh:-FKѵh5m@Oѫh1138X ebRlVU`X e >DpGDOgKNo/>+F0"8|\B !0PB l'$R7-Hdm]L%7ljć~d@r bH^Io_ kXi5&hkTh׸ѫIִh4giVjҼٯDkY$mkm'20331N1u:6:\2=::}ںnISu+uv115c.cc^c~3c ]{?L?P___U `A]CpÍ { V:l߰[FQtFMÌ%O0MMrLV51eLW3}eYyVVYlY'sDyw-(^,Z,,M-G[ΰeEʶZcf:zuS}MM[mdj+vD;/\ v}}EAs8apl"ZNL(yNN/FXHbDۈyۜo1r摯\]..W\i]\_9 6pgv_CQiYyK+kowl|<| }(QQF=3mgo 0 T<n|¶cw_9Ipfrca!!!CfֆM;N _~ksk}3#Z##DGIG#F}'*Zb1+cNm qL1F͈kgO6!(aYDDYbKFҸw])#RfO5L6ҒҶ zl8q%㮍?u &17q:!=9}Wg^ ןͨskU\$/WOFJ  u'"ʢS쟪5U<4i=)-e:>?eٌ3d2 1e927w{3?y~s<)zB߅D.^k\sYE%%~ڟf.m_lrrk+V,*/.rʆUUެl[Ŧ555]k6\|VUWU-zAu7mYƖ- [[>ޖ_jn/exGθ555v-Eke=αnK=l/+_ײkUKi }ٍ]MM"46W=(肣NJ=uaĖ'SN^i~*ԙӡOێ;sC58p?pbSwGsΣ.|Wv^Kv]77̻VѭO!)yѽ?:r?n??|i+>ypOhOdzϺK-SϪ/ׅҗ6xۛ{o~zW^>&|ig_4zg `@“hf&v@K!(c?EAgV +ψ@lzԆ>!Cu8W 6͕]?@~l<|eXIfMM*>F(iNx֠ASCIIScreenshotG% pHYs%%IR$iTXtXML:com.adobe.xmp 712 1238 Screenshot kbiDOTd(ddT0]i@IDATx]`>=$@h! *bAw>{޻ر QQ ^͝ܝ&xdgέٽ)A䣜r)#p]( QP<_,     sWɜUsVՔj YRR̙3k E]]\\<;1J*jVs_yDA@A@A@A@}@1`LQp0P вࠠz;**_|ӾzDvZTdd5Uה/)-RcFOUUUyڞA@A@A@A@9֘/"""/,<<3$8񒒢YN6HuYGTTVTRRVXXHTVVPr^A@A@A@A@h1S\\0)4$7|sN}pKykׯV&ӂfVrNA@A@A@Ae#M$l'sI$3<,<򵢢3lD    5j۶-DG[VVz1CASm5oL9*    .:t@qqo,Zb3θ+/7օFA@A@A@A@S|{3;kSNk9d_A@A@A@A@!R&>ȷ~{=v@;s"srVn۶-M     8ҥ6}_Xڔ)ݺ3c@     P4Hr̙?X(Q[vݮnIA@A@A@A@ Ю]q1%Xk'O>{WUU B     `%> E?ٻt_A@A@A@A@AmgAӦMYacvYYY#    6YHgjZRJe/1eh:yL uMv}?|1]CpmU?irh~!}kmvRxUϚ-3a=/ɯ)'A@ւ &(SdΜ9\38&H7|:n-;X ^tE.ɺukC,,l~&==\7OWAp_Eܹsi۶m0p- T& LAA`+2 Zprѐ)(^=W^ʬر.JOJ3;yК0믿(&& 6|iȑ1v`vסCXXe#F.afH 9c[:S21_`* _|RX,#*oȦv6zY(" 3aeJ ' j#C jzcNcȝ# hb4ǽfm׹5'|rJA 'GqA{nSaW-X?&pԷo_/(_kMځ&ḫg6\5KtZKhhtAJC&G%\Bڵg1ZeqA@GnV0_kvE,tSUDH0b`~z{Xԩ{I^,Xƒ%AG\ϵw'%)W9+0UO3a5f &ת酭\;5.OJZY+wbM)α=E^5ڎN' T[ jd>NZϑUL4G4B!@E^xC;L=5QL ~kaB+--M'+r%>Hv@L\Is!㎳w}gˎ4&k%5 FkQFYp5IV.:/oF-hAh` ?:qg j7d/ `%a.$6XV}>ծցF']yW ic"c3s >n܆Rۅ2WV۾j54T2x6?`l[3ٔ㜀\ OkKlEh-gzR=F#Xki\9QlDA@4)xۆlv;w*1{2ShGX,(up'F$_G0 ƍǿ+k6m8DƗPG5s7, "oܸ ,LGvZݼ)%,MJaAtQW [N8E3CT+h y\;vD B{aMwsO,H!&Q/~Ub͇yE3Lqm)ЮuOHHP >P?\7W>,D CvAP7NfO`0pҌsAyYDxaY8{F7#^k,0vUMZaoQ CA_yk>`#0N*A@^Au>fG`xٲeN `fMXXĴ% 񧑫RhBr")S j*f75ZkV5L \/r\wb<0*I1 e1P5v P$:Dt^gOF@No)Iv GH;zUg$2_s]YP@g.Aߎ?x›1wo)sKre9O/ETA_yE<+ .@4 H E;V!?"<(O4I*dzKFGu&SC8|A] ȉɓ'CELX:uY/YDc|NR~1>3; @$1 `@ L@矄ȕZkF= C_hyꩧ@_`v |"ty_3 6'NCKn3gT9Z@bNo9lݍA8]=[ o6[3P;Tf~ >DZ/v/q/ >9#> q^6)ʺ.+[A@^wZk E^K5xZ~6lDyR~%'y'Z1g@lb^](.4Dz&ypGl-zHiIb lFa>G }6ZY.S(5ݾCK͡RkǾ"j)bW}e+W9BŖr;%"(d51Ku~nh _ѓʒ*|&m.3ReWA+]?дN8-y|`&)RMCy`h! A 3<4L2wQa'U?,r%Xx -{C/"SZE1s" IଳrKunw,D{'Ěq[oQ~3&O<*kX4rwq~ƌ&*s5CX;cB OZSy͹c; λ'8io"ʀE>?к!`^!ίz⪾k s M; +xnjd;6:k  Ł"/]Y x3r^^oI=/Q#Bk/!K]pƺ[q)z1_dr?@kYNu%)N 2 OvݭuLJmXCTURH3nˢ d0ul,]t4T/A"֐s|RKmkJ9msزu>=)g9`A yQT^meXMWMbReg|CYK '@)SX9 iiiNx`&6V%AW;UŢoV$ꄶAFxgU`x-3h_kvRE׃YLN[Aއ/hjXZzzb~Wbk0+8󕹞zN`簐Y6ŮqL-k kanxN>]tyzgZub bnX]` i'\k ~@kM,4(?s+{}f9+ANT |x_yySJq3'I諯F)_h_pu@ hZ- 0v~2k 2i /LGmU8\C7n2ֳ#Z=)A@Z8x!3bw k( 2-3|"^N>\v3xXߘ,ԏv]llXDv.gT<''7`ePPj arJEAjyt׺f^=--2IM@ }ue~@yQȃ RLQu C5n>LT}7wPz5wќctytjp3Khk 3EA@Acj,t?W|@QxY/6} %L(5L:"$C>YfnB3y g}67QRZTĀbؤYLA])0CU$;9UL/ZlzJioA [,45UP|˙cƌQt&qj` e]G4s s݂ FAЂ`^]wy7PoAz꩔K,Ӗ;b ܵ^D69S04sy xrR_siPC}G|W;2|>Ch0cmzD}UҴiӬ:-W&qz1 4p3a}Nuk@AD֋֩x pИ^JCS.B&^ԝ s kvD?,6gcNeAb1!ӒS#yQ, bMmEet HYfܐL*@;yڑ6o!9+GU1#dѴG#zґ"ڇ9bTg4UwSe`'OGj#Ҭ ZsGvA@SK=:Bd)1#` wO56f34L Q:n8Yh"}pDс0dk/?,0!94j X`k sUQio64-O9 pmD;yMA횥ꪫ<:>NIk LXM2h}kxh ]hAkצzkH;餓>B`zf! >2-XCBť4Oxy $w^f~ٌ5İbV4u>wmTúƮKX|>L1`뾷#7 BiDZd>PxZk_>bZ}羽;"ē"C3tjVRurQ5U;S+P 4D_5~5jj6[NUcxT]VEnަKVAC`Oh5V`v᧟~_\sSՅ3qU ҜzTZ4l_vRԖu@ - ḺtŬ>b4OEY ]0h15h{_}"t^lD@b/InZ[SB "#_{{ \-u~s A?68yɥI,Tz!<kvRBAA3"AgSڡcb-!@YjQ0|{֗TVYQU4-(48<t[,*B.k'Ifb-<&TyGc1n_eT0T=<"8PS7Ph?'Ty_@&a1_Y^Moڪɇ eω'4 0k?.haX~ 7M1eŁ] Ą6 LOOW6u=X3MSV;bj:ĚFpm9Bċ]D(s0^ZB .ߴSc vHk`*+ބxƽEoؓo>6vEH!R|O@cnmZ#sv c[, suEk  zQeFƚZ L2Rی Y;R /&^ЃFS^hfFAt:pݒ;R(yjZSԵ]HMܔiR5$)}da"Ki~g5\s[wWдGjWysK' oh_&kspkV^uq (8K2tA@ @ 7nM섃_w*04XЖN.h7?I$>/ 7.0 Mz3WL_:?4'|RaṿMϮ -#Shم̇8|ל4r}Mf0mD `>NL y|U~ޕ %2Cʙs>2}|nhųWXCGSLS~o{>5Du9O{^څ *1LBݞϮhVkisCuG웙@eqN5!A"$y%^x w@zzk=cx9ML5Xgú!60ݑ uASMD07c ! ^̚7A9xAH!=~MPB|"sռm6Ȃ/RSpTFj辡0TUT*|9[Eh޲綣6ؠj_3~_>4>SxYgs?2A_0{?8A )Uh-43xU"H!Tq >X`h(K~/k-^z)\~7JTC4[77vjǶt~d(X~rR./Pg| ;6?3qJ 䖢P We;k|LK~bTr!3Π< ӱQ 5jn|ůuT#)eBc_5hө}nVE#垪^oOkr2?),/6y\AZM ';Arp #*wgԩ6(>}:DfC; xiń@[<ؚ ql'U\EFm~]C$ZrrrTee=XC0wIsM9~{$K@9ӕI@MͰsw%?b7Mt?$hA&uC` 7ZqqBt^/B`fP7Dѩմ67"MԆ\f;E o!'Hi xuA@t:pI3nhڳsw6-q {0AIy'Р1?e -A,nE ކ#se„ K EDy֯3`S TU85ݓkz ! @ ]Np#k@ADv5WL0MZ&sP*̋};qj5 `T"VbxôwpFRTҗғwrIm脑Sc5[i X#5]BI`:DIphfU}9><^V= 8j=I' 1cƌQf>&ڧp 5xw coD5oВ |ğF /4`Ia͋5y`m 籆ß)7#ǛۇaKXCE5R(5* )N9G%( 0[RCX<(oΠeu/U܋|urJMUM:o"QF6wA8nO[QL2 bӰE`>G[s2EҬ ^6nm5("!>o4L/;fC{}Y*Ғ hdOJSk' &M ~CS tX;:ekH[Thj3QxJZsO`NF-sw& TL>b ux-Ok֍|?0 k 5$tXc%B' R['A@ zkz05unfI @Cw/ 4w!^]b 9.9.I@Yc'`pVqDb53/lɤ/c~|LMOlC!K bw/P gf'ћEG'%Ppv~rC8pv~CtA@ Gě3f8e+  !M6S+ iqdb f .LRy]i 2u|Q-ڂ8vN6 qN"鼾nO>d'# hX53n85,! _pm:~Id&A!+rhjfK/ڲ^-ƚNC݈@j'000YcǾi)8v% \y|_Ѿ1y6Pޠ4Yеk.\if0 hE]Zs e}foBid+ "0b U1uNfr AH ħOc| 6_pM5{QCb)"9W>w)a 8nR\YF (Tc*ǂ 4%kaJf:wU?f@@{ *YsUWYU(vXW -0dE}Y+z_cl~K k>ƵC(68D?ULsV^(~ڛG?ds$TkâhHD':$& JǿK%PbGP1fX4G ƍ 5g0WQ\Ey(gQ!wP;r^A ؉|Oyh@s0sG/2h4gq"J!LDFn }g@anCS.=={z-{B56R @k@Q5 L($[HAƌPfim)-ՅɴźHn0&v Ծ ;`c~-36U[iɆ2Z%0A \tIQ])c(%(b,Y6~6V_<վR~!1  " Z-'    xkC%A@A@A@A@ZXBA@A@A@A@bc$     PkXȞ     1By dA@A@A@A@jb A@A@A@A@&EA@A@A@A@!d    > 16b" `">0PFAkzRA@A@A@gXsCFE@FW*A@5   4 B5 Ҋ bM&BS ZS,m   ETP1" r7QUEȄ0jnNC@wMeD   <y]W}A}qb*Uj!4nֱ>Xk}TF$  !֚u^R:N]h ֤p7Ɩ'"   иָJ@;̤ݞX B5ͻ3w67NJA@A@A@h/te"<ڦMZg5OUԶolcuC>>4)  G@} Rb1VըxBciYi9]?Ry"먺qYJZA@A@A Z3f77&Ui(ǘd!07"I `?.4.ֱ|CZKU墺f($$֮]K-o-Ѵ~iΝu[KBdd$uܙbb%5++ _3=o5T*@xb-8k ťDmzm`-'PuE) w4et{ٚ{d_ԡR((Gm&xTt~W0>m+@ cQ.ͻ}5UZ+dGqu֍,YB}3g"=;J~atO믿:(SO?4Nirhu5+'=A@-X+/Ȣf]Ew*js'֖>>5_Y3)C&Ǽ5^e?Zp<kggwk]r Rei|woj*ZO?߲ +Cwڇ_D!45@`DDDM7D6m XYY@| A;3$hAy*y:{>p1>تfԩNki|jvnv0aТEh˖-̼yԱ=rĴ1'Owu5-IA@h~hbmwҎ6}Ss?m~أ?<ȖaZ;6_)kMͭG>7RHXXzI*ea͔C[zx6GVj1(bm (W5޻޴Js+Z'5B#C蛋Rκ3?H>֬Y@/s9,Xmc>0j|ތ.f=Oȑ#"֚BCC駟~`ꪫh…ar1'OO i[OA`#b|VYC.Mk{X[w%گ{XfJ{$rE S]WPTp:ჺ>z2҃ ˗]so\AŻϷ_SO!\#f42.Re 5שuép 9k׮PEET?ZIi__d?=v$ @@k;~|u ŦͭfY~URhL[6 2#(<.N3|SvP޺\Gj7"Y/ݳ wYY^J)8,:o߁icUY] ln^dS8s5s-,}|*Jrx?`sِhL8e(ɣʢVӇ(pұЅ8郢T{-$ OL.m}׽0J g\IeY!U8H+,do)2;S"\ qhNJwEdަ&JQEYE%SR^Q@IcMürB_RXJr7)'4*l\HƾaE}WL%{˕^LJ>윯uyajm}uʹ!45:9Ny}qʋ*)gC2?nN=c(21fH@IDATLv-f*0 v/Żh\5ƶb)}γ%+0HbBج6S}m)u4HfQ"ǵ,ʺABP]}cҮM]69e"_Ē{Oӆ ~ 333ux(##C9߻Uovޝ@&mۖrssUY+~~J+.<-޽{ SQhUVVRC:tP&۷"Uf}(k@ϛႹSvvYڇY-L-! D5P&%% mܸQիo `_1<< 9 hE^^YgyӿJMM%sժU..C=])ʢh!R.)+{Bɶ5S 4Z$VUQFKGLt% 8˟= F'=äR Ny:x)u[Rg G*".mғpZ銼*a('$w=ͳҰK'?CmLqJkfJ{mC öoK;yd9?x|5u=n&\?P2&M=20ħ(hGi׷nmS⬵BǩPbc'[L~tp] 6J톝53l5oNiG}6|tXB=B;CnmHX\ wMM0\=9|5SsuT7[cusJl}/L CHd06Ҏo<&>j?<.M\{Rs+ۡڲٙ~L:ܕU+[iL|QS:Q媟ïIwq"?ܟظEYeR^ S Ԇ]ڍ[ chގ#hE.֊JZFE,К{G>2?}|-/Mo-fWAy "̅oƏ.}iе\jib-m*^OIOخ+ͬ݋f 2j㔗\^ M{?e-zب4"|hͧ#ϧcUu1~{YLɊLYʓ:!xЕusZng?WDH+-vMv=q3eҖK`k٥4wxf,kmg %8S^B}UcAWU_[dYJj;:q]CJ[ԁT"Q|X#n(U1+n=Y g4mujkտϥ6Vm[gE;~z+vK-hM4*pyFXCCsϵu|X}2ڳ*0X  ^R4_(aAJkDŽTDoq]"i›~]U)o,<4j]TTK)(&%:U(n=iZ a;~˱YNU#8C{Z m6wM!k_2~T;mGT2@ת|m;Km?oH*.S[=&̺/)W> G>ÚWVPAkPZ¡t@ ]k:N4Txbo+{(G4Ni V'RޓY×7}u:ئ44o@>fH<\~7g+;Ҥщvҷo_ƒW_}E[n;H6m/B7x.R m;vP~m=z(G 5>S?*1v&NHv9 / H"sٲej,111Dxp@6BC 0A~h O%K{]\0GZu:,uu=^x/=\KKktC$Ohr|ϩs4j(SOUCy2>MtJ801A"}J $/S?xi Ə4gΜifS-^JV B "@{P&֞|Iu˗ ͵C{~O___|@HK|A@ط4C1E%H XG_5KU&O~OsY&p2ǩ苭|9kկ1QhuSTr/L#|۬O+b8sťҶ|uy:ENЖ2MM}wm^5ULԚY;D(")}}KYjYvZp&rיQډ־sY:D9 7\JwS9}ܵ?ЪW&0KBCnXV\&{]n=()KbrԷT}y~/MA!4_HoÊt& ZQ0]@8BOyl* )PB#jWoXxҟLV0Nǿ5M : օ)T(51|6ez)n c RhD"T}^w;Lg3Z3@bȘ 3RlZTQ[$O"*v|6m)lZ`_7tzS&,Drs)_ M&S1@!ZEk;oIݘ V15mc q"5J& 4i4UiY''4gkpm۶) -m6q@ 魷Rd4]ˈ#ЈCΝ;)!u:a; Ц֭Ҏ!J4[n4@~K@D?Is \{A?N8A!.ތ/}OqA^Cz҈;~iEӔXc "*d:O"<Z_WbKwyV"5̋c9Jꫯ*$l}iӦ)" DIhBNr"uXC {D7KZĚ//ӛA[o}綷f?oc &!2xUC~93= M,{YnϲOi[Sx.4nM5J 쾴4qд㧛M}}^BLGՙ3 N桨]q0?՚`uIhX/%V[qH6ʘcc/- utV!v"mjƯkKmuGCQTw2NdeO1kO~ڏ8Ǫ;>Fl>y>=˿3&hPp1uu;EY/O"kk%:h`OvOk&54邂?\27Q85w}Zεe_OlR~&1eJXIyT1֏: Պm,~n3fAq4 gy4"X/4riע<Ⱦ??HFeur}) o]Dșu5Wb (Rf&W^I h9͛N^my`W Bvɓ'[!x/SQu5ר$;fsɣnϟ*W DOCvOpқoEsΝ;f̘H1~:j$YmsWék_b >h 1g=}˙y)*h\56%,,L]좉50ANymx2?}=-Yc~Oq2[g_A@ZNl@{VxM+7PbQ>/ v~.5=}0nR''䬷^w]WօaO&$j;4yk:-ZCK}3TWVw$(}A~Qt<ޚZH);vzu2 }>VkcK)7cmI&I?Ac. U'fKۢ4Fԝ*l?x?sNo癧Ě֎i!LQ0FY]T!L;d`n|q䴈c໹f"0q7D֛ԁ*]s߈thAs 4nC_[nQlMg]Is%ִ4p` N9?aZ?Tp>kD><}`vU&t@h̞S>5)tIhCz}zZi;m9_k{' sB $h&X[M\uU'G&m>hAYrk_b >`iM Sb$t\>De *fMAg}~𴜯g{wZn. мhtbm+;Cea7)4Sc؟Ni]~dŴ!7.__0˃aYS)&ֺ_|x݅EWf){짝ii8#ͳ L[Nρ]y~C1l:% e-Edj\Wi-wܥ{C!`gaSJUXlK c+,畻f;=I[Y%AcNUsa~{6Wfa4+Ytow5_[om՛RLH ]MV]ߕLO3a6AUp?Jag_FBNT¦ٻ 66BVQ#|y eQ6} ]<%ִvcmekN뤜>L\k|>)ws5Du' o2]n\&~Z 9@"@iZmc *f[1gQ&rМsg#GO|Cڼs?饧ۋZb`N=؇!"4+L51ſ[IA d.X@By3>/w ^⮜Sb >?|YMEAkdMAi9_uR?_'A@=Neٗbv]k48Bc5%?~|Hg@$HoG_ib_Mڻ+9ɻhqwNXf)l.Zdq0 \@ []fAѠ]"4Y sNcon2$"N_34@ʾYF]"-T o5TSYV~*țZâinzueߴ~b];ϡa?qb[.{af2"LͥUiqeY砥4ʁu¶)-ND15 &(6A48Bh=fCsg/zH[Z. eg2w0 VQ6{EbS;)sYԉ]Is%[ &0I`CM&hiADy䑔R;WJJJ?V~ݛz[ % ~ LWAk Ěv֎+daRz!O\U<[9(|ѹM`g'd+Ks=4n8'-6uXf|kh $]I!40Jt̵kתlϣG}T7~̟ __[ Gщ5 ѝ4 }{*U1%iIh}nOf",ZX&ֺyuwkY͠ 3/bi454좉IOR.v:֦6X3L[u-_ 6}]n"26~rGMe=g6.+47Ϻu46#8ĚYsu#ȥE; 0yf6k sX1w$q8>Jc-4W itt b.3%ּ_CƇȷ?սXӦX;C,3k3sȵ_Ue5V{B϶Q  {XoE((c%=_06ɳwq$9%L֪*imfMEj󳢤|Q ץS'=mWbm10&-yuH`ܫnX3 k-wv,_{ue&׍G=?zPȥ?^mH.N4'b GJӈkSb=g>*7/SNj$G XkB^e\&!+f3sX!𷅀0'tn 'A@ZXt+^ a9kuk&Bc~gYNe ~RM|!֪*hѽUQ PYZYk<рkXC%a %fK(bS\F+%RO)Mx} L^8NUrQQxb2 lCKs'^+;ocERei˨{QAOUX ZǤڍcӟoYmiũ~}Xu&ebyܻV>z+SP~yõ+; )35.d֙!ϷQL ߺJusJ&BA{׫4aǞ)z˃յ)*~t2@j)kǡiIRWuNሮ4b۞4_XXL{/B],ҴXܜ2e wn[_Ƈ:/$l}IC >{D Ed֘)5A[O}fagRr9z+ -Am #Jhb ` P-9:z ͡72QXXCGK5hA+ M(ۆ5_@a8;:ʩbڽ~ Ci{VrT1nStp 9VdЊ\h*ڱDeo b-"fus3]kΕhvEv@A_= hT`&@Ӧ,؉5wY#MIHMG4XWYg;͌$:L&Pp;iӛ)]7a+(-߳&+ $TyAv@:DaF)F% @ J chߟo[E;~%q/ #}/u',{UccւV h mIz+-_)kDD:L Q!pN?;֭ M?Q榛n"] ?2 V{TOZ߾}--'w0MA{Eg8H}Ě=_p2dN:>tm.8G -$0?0Op=0GMu{z&NHv ߐ8vx_kE@;AA`uV/|`DA R4}~֛r~=ZKqʾ @DkeW9tBNҚX_ &nzRMxe}k=p]4b D"ex!} aDO5D\IB|աWIBpJ&:rpԣ6gMleJ@PJw{? nfm+u?Ҫnaq)lV6y @۾I{)< 2n.nSdHs>u//bmQ*zgh7.mYv>?*P1Yw?Oe31!w,$QA#S޷29x0:ǎ+Wf$N?vYWb o7 +j;~۫ȫrPNVZvE h\HEZKEYltjhep^D&:`~9^N`:*)0,^Eo1e,PmN稟:̏}MZ_P:|zJMU$5%(<6zF+3EOobrVP8"Ai-b-ø*Z,@yn}aw 1o+)-{m 驧R޽lB$Pfp@?zhE矴qFE|2 @Diu( vpn >9III* /3MO$#z>J+}D hxl$Pv AuM@8Gy3>_u=A3֦Me !H 53Ё&hi8hiԗn\>L!''ϟ"⚬YFEzԩ>XC?1^u#//ORIСC}tW_}u)544;k9_|XkIlA@Z6Hh7q=Q>ȩ[8N}SZIRYLk08|QFyK"kвGj+wv?Ej0'>ev @`ILbկ&d<k9HnhЭyE(::]Dߚ7Nf"7 p ^S^!DYm j+_~0q<XGfΏP5v#hv=M$zr#mfBCY5FSiXe-'oܦH7SCy 8E0w.̡U`a%T̚'|E?{g?Ek 6`b+ 6bwwN usqvvfw~w|~'oo͜=K ޻jDY|Iu9R͆gRV⃭zmͿ٬n {f(c3pxTar=\vGU(7'U7 ~$Xwq*d’j5K[>rFd !*G7h$uY*Ek~a)r-NEyZp9Ydwꩧױ$^,-X^!\b+)ik`ͷ}F? u3`{  &Ԃ59}>Zpuv ֺYIפO0j+mi2L2S4Q3x`wUͳElIiv^H:v@S/|7:c( ,{,?~&.\E<oP!N;".[WZO>E|ʂ0eݖzւ5$`TK$ g?7Xa;2_\;K_g~!_:8ԉY?{/ Cݧ/" Kk_vX[O_RqBs-c9|nȑ6ҐsN^@#A#Pk lĚgyT KlM'K,'SD` uKPY7`smС<}6C޳gȳ8 eeHHH @S FFԈ%ˉ7ǧ{=*X} /BhΖ9{MՄo{rVOZǙv3<[?h9Yyޕmo:[rvDB!^?gh7LI`SSX )nw.|l$@$@$@$M-Xė6%4d9ek_Žed9q}.Kͳy^%X۝\P^9wiqܘk %^s0g M1fi44.Ydi\{45 ZUk^,TK73Y 8ɤb#AɶG!Xa]9GvkX`tMCq#     (@]<sKl5/|fo;bk5sXYeTS捙"     @ C C/` e';_\\黥p-ʧ)Xdޯ)ɛ~>wL{/jC/HHH(}-**C$@$(XkJ`&3l"fmԨQn*}W\1Hemu={tHrP6$LV]uU;X >,8/`Yfq\rm* ܠA* ZWHHHHHHH  f}vO>#e^` ܔSN3p@QCZ6TSi{b+oeYr!nonꩧznf׭[7+n]vtO9UoZ'$@$@$@$@$@$@$?sΥ^;6#8/^|Œ\biDm6k|ߎEo,kT]V=!d/BV[mUyY\|4ݬ"z衒M+{rKu[VY92'sfjuXn\ǎS_zE]$\xUXNM^opbON:4p4߰rÆ 7VO5ؘ{_2`oQ6lt~wυ/CiPRK-{=W_s=s9F?i<>?+zG}=PIN\O>[hT3 >TiVd"ႯFӴ Cڭުl?OHծm;RHk "9HX>ɍHHHHHHZ@Ⴕ[mᆮ*,;k}u9G뭷^|Gyġ @3(D6 3u]WmAk :{'<!1 2=,UspnSm@/;` ֠ OX ^w}66>rKKb_O[bL묳NWTvqG@(blAثW/ n#Fp:p .B}<q@smWO&d^Zq >S" ̂wnipyWM-ěnAZxhG_^Bze`B#Y Blv^kOOABj :E".mx}u HHHHHHHY TU&KJ" +=s}(1^O%6,;,=L|^ ҲEm!,M v)c5| EEmNYƚA8 /W_>]~{k׮eD+$7~R"0"HQ;Z"+v]tE`U> 4sχ=-‰>hR`+,W .``MZkUvOJzO4JL3Mpx>&lmrE_5fq[TH0;h|U>Yл$چ%U)"U+ӍDNlllllllllllŵk ’DxAԅs?{43̈́tuש48 ]8sAXX)]&%]/4ְlg[(wKa kHo}um y oдꪫ4ͮlA3L$NPc1f]{W75,Rґ#GV<wvjj>XMkZIkƃ2tsh塮6X7vitV{1{ ɴic \=5vжP,7'˵m7޲w6nV&6h=[zHHHHHHH iHfϡI%h'4dX Z-ݻ4h EȤiCCʹdil8X}kz0vYg5hs}5֠(iYŇ{w\YL{L %Cs86HrXڀ^ج&Xpqjiu=HKu@*i%i@`>}…hzjPTY=SZf]ezMz (4ReUA(˻pNVd66666666666 d{gQ;믿*x|7Zm<<{t 78U_< F79YDxA"ll]4=eFOuư7\ѣG;o>z<3Ra_u?z9QҞkXBo &e6Zܿ 91JC@IDAT4 En%]2dHE֭-Mwx8ճgO=l9lq#      f "yvώ<l7&J{GU"S-jbM A /1Aigk"dв!tys.F5q Qr=h X>]4wj[!Ճ8(_DmFy1Ȉmmmmmmmmmmm6?B,5k&G1QaPЮC']H횥U`lOEmyYZE<%8l0?&(Ygub V`}fio-g`-oCO( G&Znݺ'` Cm 47hUO6666666666016VM>좍;y^+91Nd9n'pv gv`(kHP<%:iڰk6n8=}oEmW\1j-p#F"rQoaÆ98 1Z9>R~]vY8g&B>nʽ/Zz饝h{iDȽ+ei졅79Jso[|I= k։J}FBs/իw)8 ohWYm7mWI 6ؖ?w"d`/k E(dYvpw`v`o/~"^]ȑ#3&.hki; >s`eСC&g-nt\#7       (XΌ!HHHHHHHHHQF@$@$@$@$@$@$@$@$@(X $@$@$@$@$@$@$@$@$@ x` kl$@$@$@$@$@$@$@$@$A5h B$@$@$@$@$@$@$@$@  <1 P6@$@$@$@$@$@$@$@$@(X $@$@$@$@$@$@$@$@$@ x` kl$@$@$@$@$@$@$@$@$A5h B$@$@$@$@$@$@$@$@  <1 P6@$@$@$@$@$@$@$@$@(X L3䦘b c~]/tR)=zpM69rߛ8c=426>3j(_犵g\Z%qyE`iuK.dE F]qHHHH!@Z1K݂ .vo6lk{~裏dvs|ASUawzrcƌq<@SD޽ݲ.)qܠA4̹?|w뭷f'p3hq*;/;* u9;:/ Cb8i,xja⋺ս@@+ tC3 Z>?pF{huIcrp@h ֚C@ ~8Tpv&-+evm]Ϟ=k @]PV駟vSO=qݧ~Z^ $ @'o=@S Yh2@ӪVpk/5hӧ)NT^n_ꢱ֌\h|K\$@$@$@$Qka!SzK?C5}@Gxe e)^_(׈|UK<ִ?i6RdOj6l5}n-\l4uǥ4ngD6cޙ/ꦱ6tӹ;sDa)t?߄{63!uذ?o9眮K.~p0&G;y=#gn;wE~ ՗Zj)5p%__}UlXߋiˇmoͣ> :.yӭ[7]"ҵkW-l >_eq'TWS* ϸlAm_uS 'd\CD|Yf~ml|ap|I\ Ϣh\k:|.|B -k.7l0Ƕ5}Zlv}O̧f~=|\$dY^e|-_5r~ᙧN˾f{ar @ [l1.y睚W4s0t/|>se!L;#b]Av':,Qnk[o&t6<;r-K/Mý%Xy_wz~dX$yg{.yﳖwT魻eB[NB 93w^ڢyO{#A>| m[l;  oW]uUqa#4G>Ce#4V_}u+tg[YkjXk} s>pfyf駟ܳ>^IѶkyW<_6tS  iI5ѾYg7~ -A/?z뮻_#OІŘs}[63ӌg)X@?E.0^CePh[>g4ݬ筐Ozԩ馛4{ݍn6D=y],Lq5`ͷ? EϛD$@$@Y xYzK'tRI4ԎP|%DU_wMJ+[fe|D(VvO ZsQq]mko$"(GD+Ch/ª|W-Ң.H-_8,6m$Kb +hN#|%FֻG;L&e_"n)Z!Oukh_1Ҵ}z0^81 hh}ʖ|A%BDb,jm9#xc)X0ΣZemB4LSv/igg\Y5c>mZ쳏֑K"\+]wUaNexe¼KḒIqw,|f,ɦ^-3E͛m]ONllllMU^~V&xJ(Aa}_6xcMG%GaCpxAǹb 4zq8}/N2&H)Jz?CT!GJec^}y LKAagI4Wt kpXp@*G7ye[#wl'Z K8ahK=aS $6,-8&H{ .<ؚSh^CFa]e82r^ٸzk#e) u6;j"fzK@:i)( 7ܠK,vl;h*~Xm2"ŕgc%hذSNqڍϢ}.y уj'\t<%0yx,n"Хg0TҴ"jyHsinz޽#lQۜПPqy\qJ23,Ey׬KA}m<_Rfj͛*?%  V'IcO{l&Fb`jGذ8/v6رc×Զh4P/c|K˂0GFQpb[g7z5zr>uGze9K=%F pm|TvFA, ljD/Z Ϣj ~h.n-:w/߯NS|{-`/vM/i>43.,ך16fe]Vpۥq,չBQG㶼R\q|ݸx\3 ~l^w,|*Xyy_vQijoZyN7k}  X d}Ѫ݅ ^oz ċtX%g!.m5X2,A0TpnNl1cƸ믿.'ak^jihg-_4,2faNB6l &Ykdf}yvinUV{Ygy2K=%F p;찃{,Rp_ڭ"ɻA5h!6htm.x cyǝ9>Y4ϐW M?yV8_w3B s&0Цĸ^wd=^g,|*X6O,ga}%ּIHHn@HױcG#ت[]`+vb<'ޏ:/ u]/eʋCiL-ax.Mȇu篚W8meGxp~-,w_#3`/_ԸzjybZv/K=X^j K/ǚn4QÊ]E|f9 |M}0W>*;eS{x 2q^44Zg8q3ָWNvD#\DIKI<^;Y־mpY"d6XO'Lm e/0^.‹{Qapw.x3j}0RaqB.K?gy _ĵE6 ,@sG eeyF @1mzFҒXqliƛwkY!.,/\ʲdM10[Do5]WR|싆WPW]uU Mqgϒ^`-?s_| ‰ 9b#Lq).K=ą"0A >._[<ƶ"_\~=AENq8ӌg'V?_~V=#XjeO<}!GkyZq׺w,|(X ͵Zeݗg\Y/hbʡ.իW9t+1~!F{>Zh6D߿m[ԃ #:ñxSR,%p }M94Q0ugKϢ%V?oVZg޺IӏO.ɅF969眳c^=qQYڵ#_y]t.{8XdĎF<,lwWQVyӸq_y'@sL 2So 7m"R#tPK/f͉-$'tnGNhhW^y% }gx 7l0o>*'B=unpeʼn@;$PCIF+y\-_8)袋_ƏvVݻwWN0.:깰,5\q'%\DJ7tCv)N;/~ze^N#!-'Z*r?cpORRs;@eJv^M㶼/.ΤkhܢY4-B&Bi_Fis+_-g."Tѱ$YbZ%6 g@"T1Ai`NJJĖe\JƍO> $Ac%Js=שS'A$<%!Xwq4Ŵ!w+[yyBxq7 믿?<ix7Dԉ}%=^m՜?AQkm&xB(X |gQg*!%ڲ<jmiǥZ$;&[{AqA>81 p 7Z叻{Vok5c= @1*XC!HgyT+RktAEE2_^vܹVRW_#G`/mz?|Y'Ʃ]=姟~he'mUi"xB h}y4᛽5 (fċ@OLJV' LhBִ}^pEWRYV)_[Yy& @^ 0Ó @3`jy        h9\1$@$@$@$@$@$@$@$@@fHHHHHHHHPrU 4 ֚        #@ZU3L$@$@$@$@$@$@$@$ (XkZ`HHHHHHHHZk-We0 @3`jy        h9\1$@$@$@$@$@$@$@$@@fHHHHHHHHPrU 4 ֚        #@ZU3L$@$@$@$@$@$@$@$ (XkZ`HHHHHHHHZk-We0 @3`jy        h9m.Xz:tFƎ[d=dMF~& ԓOFz&Tq6UuLviݒK.YQ!C8%HU#fkO /~|g_M7\ @h3|[s5\|n*=yGUn> z$V\qE7ǒ{7|{/s=ם[oi_}];||&6 0n"s9qy@uY5\nfr}8kWlQҼ~~x Ue]G}(R'IHڔ@ ֎9z~ͽ[n jTbZ-ݴ7TS;}i Xrvr|IܭךC&s$@Nwv9h$mƕ67۶ۺ={fq~j6|s7fs[o{Y_f+E$V|dڪLHH ;i蟼Ж^|/\Zfe2-j}ݷԭ[aQ֧~Z&SMF0h4c$&u6 V/!n喅hv{AU~q=wh[lͪ,+燶G[mtYg6xh{r-om'KLQy}D[tYp3Z~660Ws܊fW*(ˋp+=OQVMI4(/^/ߖklIm>u믿~X7$f_콤x}=Dֲ+~~[~Td2pEq ԯ m)tM:vquyToܙg~;kpT?Ν;)҅MZs_}UY;{\.]?K#!^,mmРAZVؐ:t]=Ҋ/{ raYB -6c >lDOLuUyc`lYfq,r@:Pj U`,amhTF(A9lDޤc[V}%=%OX~{T+wܵZԚW9۳N am󃵌l;}z1]O?qCdUm:J4<ѼH@Ⴕ[mzE;Sj/| 07|scry^Xb SOUg^´#8"l'x{饗aJ]wXaR0q'%l_Fm0BQGUri^!nntg8؀ owC8 b 7餓N;ףQ"Ɠ6Oմ:8hyÏ-s2?*s 6ؠbnDGy˗%R^ʳ!+o'?,oF={xӶcǺ}]{5pH{%k=XYc>oyH@!fA`U0APrǻ'|Rq^AZk;g /~m;<6tڀSLIvjg}v$:b&DbB4QQF9+G1A/o*|dз~\~1^^ Yve!,^{muBmwԗ!h} 606Ji5(Gr/8M w| 3OW6턹ŷ|Ƴ<-벴O.hFL֔d)w0>FE} g/O= -y'\=Iɐ  o"aWA ^!h% l!2Aw,/i>g/`F֙ Q={V܏>>7hie!,6$ZnsP`O=^ N8;oe]{qbkP&>2&X_|B(iyhG TCڲo=+\KG4/^q{lceCz+|mQ:z]qO7΋~06yǏ6vky2Z<׾o8+cQIɐ  o#|L*/j R1m.K"SQl2fT,m)X;ce/ b;>ʂINd g Ɵ,򇵘V/X `uYz̈́h4p_ch4,T-*?n/FVK=f,5W\8\&X %i/ȲfMSl+e/Y'\Qiy8?Jc >bchn#|Z3 턹wv_uUuLó6[0fk,^M{%<.\F;>oqp ɐm6ƚHtm><[{6/js vnb6ϲ8/=j& 13| !:FmYG[!y o]3Y5b&Dm7\E~VWԃ<.\|4 @$Xs0$ 8GsQi|0J*W,!}s~)=" ^ #$sE*0֤Ab[}z^ĞZ L0 FϽDr!N4n̘1gmn[o=m0\ K>&X8E#3Om}a۾6a"W\qEPZ췵վS=ۢ58@q~hULEGr8F}[1~8 X-,X kiW_cqh\<' f",ޱc C&--`+-RaqɀaHslpuŲjayˋ4+Rp.- v 5sMPsc=!P.bI&Q# z8c3/ŷ>gz@?ؿC~Fʗf~?&agok+ھ9/ii1)c| ,^kFK}g|Ay_yN[|w}l?88^ .4w~z|1y7Iɐ  obR9#h Dc=: hpM, H _8çg}}^doͿyccxb}5%f"/ƁxMVx:#z `k#|/v/c{v x+S7{g׿UVpIc1kk8Nl߾<-=Ei~xiT4uTgtU}g|ϧW>턹ŧ|3v6mbz`< 8@EgC8X4lRzGywS2$C@vЇ=7b%vV@ M.So׉>׋|?~Ûj5RH^+h#ň yi5.8_)$nذaN4k< ^(R 'Y8;L(iWļbu*wٳwpաCׯ_?wzkv^Rf^yFZO8F7{ h&X-=[->wW:e:QaGPD۬,.#/e7bNIB.]qzocBdݩS' Iwz@kZU/&ƍӴ TӳIڣ/!x ox9miC&N\=x5So=@ſD@UPG!1?[oV^ye'O-`</8hH>ъ󊕑_3iVg跖އQ6(+iU@A>#{p{Zo8'$@$ `b҄1MK 駟u.~ #G?d! mTCqIy%nС&ٖC@9k/ev6m}6'cΪsۨv&ؙtFqD-%>Wo<\VHp9v|1pJçIHPzu@&Мrj,r&n$@$@$<HHH`j?WʰC{e~F,iIzobÑԏJ췕LxHH&QMæv1T8haH`Ό!`;Ό!H ߶u 0}  h;{q2셅=zE@$@^o1PFlgqhMP   <%       hmv1$@$@$@$@$@$@$@$@mD6dIHHHHHHHZk]= @`3Y        &@ZksO$@$@$@$@$@$@$@$F(Xk#LHHHHHHHH Pܓ  <%       hmv1$@$@$@$@$@$@$@$@mD6dIHHHu2@IDATHHHHZk]= @`3Y        &@ZksO$@$@$@$@$@$@$@$F(Xk#Lz&l27rHGo<^X~g_@19N;n%`Ȑ!no8 _>M7\j8C;Oku^? @s`Yve^0=,[qsfyf_Çz f}vpxuY]N7|£~}.n6niqK}}%p?>2+aw^RK~=#q~zn>(sŁvjcǎՏ׏>oe'p:tp첋C뽭{wqofc-H/'_aÆ/~ oᆊ(9wwT\ ,|4OpE81~"Ԋq5\|ipy@K3 ($](^j*wa^\QdIܪva 94z~  –n]tEZߝqT 7xc{W^9.L7\@`VOLCunm4>l/{'fou_}K7 wzjv9h5j(2Yj3Y{rOZb/;܈#bg #m{j |Y:EԻo>}QiLS,y,Qγ<.6h/ M$@h)O?uO?-F؈-2Cqs5G`Ke/?j38` +=\wݨQܫZN}ݻRI']qꫯ .]A)BE ߔSN{o2L@;y'SM5!3fea_SҵkW?h bKcG,1 7{=t;{饗|1Na|F'koV.aڃ>h!cmGhB~M .ӧ`-ohNJE g}$/ 3T}>NcX:ҋ/XcYk:tMeDeFۈֽ8K"H?|ImME^5 .`] N"ִ_|Ոq-n{//f613-آ~ys imY}1O|˓`d -ܡM6NlE5Mgw7j4~{beY|ͧ}\Z|x"q@ yѮ6 [_Ǖ=#|$m1VTF…ZM,# 8g\l8 /4'7n85 3 #pHEc% 6,|0>Kc8٘w\8 Km[zp}=Ny!G\a\}yw~11܇v~\pyi&^+>0{-IOx +-pgYK#!Z& 4/I$kmS;UW[wyg7ixۉ'˧,vZu L ! yםh>GEg^{K;Rr.}^`η|BQc'`-, yU&?]uUh0)9x>Xc W/0 ^X ޢW֖[n9m nІ8,KD%yםz-k[t=}ϲBzhy:bp㵥Wm_t{ F8}%ڬ\,_dAX0p@׫W/XAgaO Q^xz [K>j>7x`N}6aBD^(N!] (fqM4! P7|H\l'X?S)j[0Z`+ ahnip eGh6芶~^[Ӂ kdN8[* ʲY'(=!>} ra f6.dtEW_+ҖҢ.+ƕy0%/t-p>3x+ɒ [ne e [XkA%XyƁ,(͒|DXU7䑥6eJ힉&W^5J\KJ3u&3ia ǰ{bkAyqanԉBnvy ?'Z ?ml'sE|tPP>R7y"\(Z}ٽ]wUÁs4^_qPM!;+#!y ʑTWx>xf6e#3s`.:~ֻ ,ˠ+ۀ5MgOϊ}-ۼ(/Oa'0>"maE=al|1o".t{UϕVZěw<^0Wȇ| d |$2O2cD+Qo>O_ Y>,,  !Ы%Q.8X,]vYp7\8^iSI#AT Ѵ<`&0Z Pb{$l{{6Vok?6sqiI5㘴>4E;N ={}yXaY+aI C逑ؤ+KK~- }t xv=h[1T^EkYLJ4n{8VQF}]4A&Z4Y,Yxr4/iZEӑ,JXf,Ǐܴty)jDI 0[ 2kYSX>^zzK9O-@Zo8+_a^5`͇Kxfi/l"&n+RK$<(W$|lCV&CAմg06@Ҹy_G c?۟,{ ^M(h{YXŸg ?ƐKH,{Z޽mp^b$J<$K.M.$+R-2W4X>~>oQp0В,,Oi9i1YfL}ըq! lqkky3KBD<3= 4l q<~i9ꬳΊf=y0+_1/1FA wּF'Ab>A勚7i=OƚȀ9LI㾅gwQC~ed|kzh<;X#,=7kZu[,矿s2@j_;6qvi➷k,}"(iq,f.ŲM[x)DR3 +_ޖ` ۋ2Uۧ_fqGQv,$pT`φ*M.jK|UyJ{^ ^p"\N=SDzq[. k6Ps7|`,{y1 Fx)(;a,BD߅pi9V9}Pp~=pUh_ḣYRPѸpmc&(jD"xiIjLY \p/k#z/O=#udkd=4z3[;kw5\7 Z`* 2-<㙥XC8,͟DN-+ &0TL {GMGa0rB@=6qʣy PQNXop8N[>ρ1LVwN|@EmD gu!pz0؄hpYx؀ǽ?!_v?фWmG&ZuKBG8@ݴGl RhF }_ 8p>gRMC5vr A_3a,|ض;LyfW3΅^4aHV:YaKz@i?ҿ׫=O17;\> woj/c+|K,\,K{)>O?֑Y5Y(B/yM7 Q,_A,%àˀ:񩧞j,$1shF}@NT.F\pAPby;Rw1&I1R(vJL i$X;[E;} xz]))jQV>t= Lx1~u0@]b|xiB3CYX3܃Qk {8>gZ|`8}whgiOhv۳اc[h1|ybl1 a~p7ؽ<`lt,=!yzG\Yi WT=XOӏ]EC[yF}>|kEck׮x%4:pAzydz,Px/GVd6yd,&`4QGd=[z饝"FEʽ+iYy1_>|x`G0}<nذa޿#݉d1 Җ@}7xH@ApqؐxXaOl0_mAo3/p9aP?N`X[hT'p:ݓ ^A->y^Fnw#ɋhY.X8 '/u[oGR Bq]ʲ1EyA4T2zpF */MFFe!eGV6똃$dׯX q:we:2dH&8?~5j tw<+:ނ1/@]۷,wD߃ -p#s OҨ\yoy9[o=ڍ7N&e w YD[Lp!tPD[tY%\`~;~"N0lEC{|wpuST{AJ_R^4d< Bx3Wt2@ÊLZ&/: Z> e/t"^ U {a&TQVS4,Qw}7z+kA OC)q9x 46Qꪫ:.Ң'|Ƌh7Pln8/Oăxv ?c'Ϝ,|U/]#A AExm,EEW񏢯*% J l6`lĺ~g{۞\^Ǐ\!6vmܭ*S' {P>u?xlYB0½$,G mؑ?ϻrITsL!ÑE/E`}Ŋ%ún |y$BEH!_PQǭBINNb0QM[;N5k9:~[TmHط:4ſXlz]}kz9(!=T*N>֮]+㏽\l}zh&,FaX/ע"/*z_@%!##CxmP-8OOE " ,ZKWbgQV'"%}7s $WSNJV{PhK.}I4OSRY~I m֔éow^nk=scv>G/ {X{,.Nuf|sY[ f4{.Ax|-kk |Ǐ?@۸bMX\`-T9"ł7;p{ [p#K4&Д9?m:4Z\I`$š3rL 0&J"EFFʞeڴiTVV#@#_ۻJ{72b8phOǎ3ZvxyyQN׷暝ZfMuЁ';v'h.Zvo8;c΢s WSAT]QJ}|;Z5]w-)rq-qOX;,Y+$څ\ImܚKC%l .gLΣhھ};mٲ1\Rr ޽z-D[8z~qqq`fx oM[xC\`phܹ_O'Yz>lzWiݺu裏ZZcL 0hZyA6m{J('2AX.xk|)7,$^5^wO]1rq+t8Ϻk댿.#-mUVzP`ïCsh0{W>}< +p:% {:9* sAő9jAAA?:ř_5?Kb|=\۲wBȑ#fZ%{4?mbsoo6 :.a͍~wrqq6m -M[[93m9/š5\& Xa4_ZUP;VP@_i[hJa_wwC0y#kݜ6h6{]@ޡ4='ҍ" 5$S kۄ5`?|o: #g~ ﵗK=w_tB| UTT\UKKKJjw1WI^QY1Oڹy:C?¤~GmQ_*;Jyֈ6M}dorq֎= Rzn N*CbLfr%T|\|u]=|ȫCOQ%yTYtZ2\'~xu] $*9󏓛OyG_u]“TUZ `gTREAhae\JNQmUs !Šqny^gCmlaTUUw/×ck+O+$ÏwD܃ERqv Q׿`߰\NZ+7ܓBzv׺Jk ?ct4.NyQ%(>aK^e`T)yOR|o˕slǏ|Ü{+L}!uunM"[boSnޡ♫kYBՕI7O7U}_ZW.\]e"]"%U+ O)ʢ*≉LjxٵkWо}{͕u̸GSW_-vIwq:zA+\EaWYYI }a.aaaTTT$­u#gM{c-//'Oip% `y_NDD%$$ȸtiiix ٳAw\{7? s𠂂) iE^^iGM޽)**0ϔ^CC`0sLY.S`;Qא(">y AIay5F{5σGD;־l}O>-YϒyqowoW,Ssr!> gFzJ%5?N|>(K>&Z )UU\]ݯB\l}ůE Y.ELjUsN9)Kf2*W%pe\,PRXz *C7ZX%RE)1d:E_'uPNJ%=tGd_}K\ ZK_1A} [jhnš.SZ҅$+W:%v.T^pф5 -G\ݧKw 5vb/Evj0¯;{j%}qDU}($OvB{cgRQRI+o' UH.c)xO ]\+T: 58Cʲ `m$:Z(/~Ak:<[#*D^ׯ(a J}/1N^T|Ln&Y,۶vnq K]aWVPANkP$5D=T#;t~E)3Jn>5&TZ n "cz5[Z+X4CZY/gyV \.[N:ʼy% k,/K,t$p#<%#@uѣGe)X[n2P=DQg8Ft+&L'|RZ\s#E"s׮]r.Exp8+(Al'0({~ǒ=?կ.GM& 7 jo"z[6glͅs:,5k&M$߸X3?G-s! /,~iOsΕb]KUQVX!3/b՗bf0{*.`h"O>b%D &z)A +@X^vejS k87f;4a͖ӚAKk>S 8]oϟsT;[XC?gi ëO҆ʮ;1sPey5"3VaN3ͪIQr^2,>Øw0&9FֲDYtE=o^$b~%>}S~_Mu:*a#( fR\Bc&w!q) >c2 P$\(RrW)TYt5j_ۗS@Q&M1\B_CAJ{<qbv| ~݅ڮ-xh; Ӈ+p>zߧ!7ibg\qqF㧒~ }-v.)j0.K7nBhG,myJXӋJ"N.Cɔ-©8tQֹwQ&my6DjhDWoȎ k"U?D{h:mC(a B81^X5u座y6%XһY}'vįH Or/ݰ(nzK5{w` 8$PK/JjifǏɓ5LD7- 7b ,xXXӟgn]G?0_)V f?n լ}gR\;5khRKO?NK%>EVXœrY k^a 1aŨ/R=% [N-`]R<Yp]^`E k g܇%ϻl}9=aI?YW-K; Å%_-Bo"}؆߳ӁS/qUdwP%"QQqcGR;W% {_L=n0C!H-trۗa͒U֔X;7O),ΤUit{E|7_\8sth2B65z[#=wl>j,rٿ-MS %jx]mYJ;/>uXVS'TWVOIצ8ڕQxܳQ ^XsqJ1Qm|&FĐ@:^MK%33" nѶJS"ɘ7{, ,X! Ap@aGRױaZf[xw#sZ{Y*)8|`%>rkT!E\07nC95gjZ' 1j\\M"k̀_Nf+>XN"(F{_u\iš:\=a?Z8Tub.:eiK0kJ :hxf|ѣe)XMzʸtQh5|aGv)6B,lapyLf &2 b?NіJ/ #`k,sb-*Y:?{5` qQm|Xn[*sس>+]Pѯ)+a ֤<+~ޟ>ֳ}D}:Ҟ0x/⭉02t>1P7iIԏ?\YVS+aXXSTx@K%ta-]?z&uy4Ι"1(uPD0.5[x,^WR%uY4Љ*cq͸(ȳ^4>l\K gKyڗIEc" @H_L֐Lյ#),P Q`+յa %\)k?LX T]1Ϛoغ9tr,d\53ǹ{W w Mԝgl}_JXsq7Z齹1ֵO kY"XJ-ԹȖkrW0#L)JXf?BΡsfgS寝© @P8!@!Cw$xiݻd3Q {Q̹"fQ}[jRaMYǩz -雁"m&Z k,l]%-Dja Be*L{aC @Dc.W k b.w+F.\'kOOX%}.b}Rf18P cz˥4>) k2&-8BD2&S:@Ke/t,8_ kB6͡ iEz͆ysݩ˨oqVZCkqX "K+;JwY͕*!\$N ,` %]ϧ{{+?n[K0bD ıB \W!+  k*X;_%CU"* \~̙?k*aYx⣭Eg(a bv $s=e_s=MEXf~ k "qqdH}5sEeܻwQo!Josq[Z= =_[[gP1>~t;}p!-P?y((և5spx`-Ӆ5Ш+n~q-U E(M _!0oJjBĪ(aOSs095{:?qQZ%s(|Ƈ k& }QX\[Չd +`%ϸ""T!i|d[ ku4;k9Bd4.kŠ2}"+[E\ #兄kCf2+48#L>L N$ة;bꦧ }YOm[Hj%jp&b*Q,uM]A ~T_Kk vsQu}bUUӦpkmL5wRTs8Q3P;VTҎO)x`M`,E_{[ !!Ęo&q{AaM_YY9xg"❵kϴ,mW W >e2=&sw]tܹukNR Z-.!ӺR^z1-SEt٭;L Kl.u~xG%\[7pI9ZcIoɀ@<-|1G5䈂x[H(w1c٤7fpBR_{,4$߿_} ",4,#~>JHBoVVVVwaVaFߟZ7NR<b b4c5oXEqi a'm`S='#TyfKu5 XxQÂefн?f{E80A ?*>G-1,|`͛@ k)p%>%>$̢570~?͠b!WYQ aa$Jl*Tj,kHXC"@u#0:׵H|{ C$>e5ؿ}fo*z# ^[K!+x qR0hʖ%n!(vH+_#+_N,OT>P [_|YCO%-YA7Oj{6N{V`dM3[5=%e~l kfR_0`}(\AcЯgGMKvB" LmbK}h4sUVPA[W^XIæw ;ujE\Ҝw:lc?'JNPرhأݨPW- Ŀ{mc5J$55UUa۟\ďC /X,bP~2$YSő)Sb>e~h~Ȧ/ľ a|Zqd EfV__:?{KuZZZ 5>,]K5fm a".Q+\߉nBGJHynf8qEL T-BXK[d#9JX1%T";~.TFXC "]v/ U'NeC*!vݡ&"?jA[Utb7 x•u_XNEmP~ Od^BqWfP:gNZ#b,D_Cr]Ӛ'BfI"J.۪1{vi1o}Q%UZfЊ\X*:]šo2Nn!ڵ_O$ն+-Re贫qʶ kЊ쒭!:,T8m*ɂC\aAOUK$!p_?dFBGq~%^6ƹ kgOCd /#̢ `UHuEO<%%%)c (N⎩ s9u`'<!S>  }za->>^rBr+h Rf.iSH:k.G?'Tq Q=c՟Z2 &ГO>)c"8=oͶO>r)5 "` pLOO{pFbXCԸ4flWKk>=ƇZKzuZi?IBc$̮n.ZۻP;$s7z _ kaLhZY~ΊID>52b5&2Q%ATMv܃B:[#I%п Bz+C: 1g)5A7;N8Ar CPn@?b)m޼Ҥ $7 nM e `7,@ !+d}s8qȄp4-)"| 0F$"gA`>za @\tt 8'Y3?[KPP1w-00PFbőڃh߾5`5`1P[懶qM-Z$琓CׯlqMRSSe׎;6Ɖh2F^^Dy9z饗hɒ%8ݤ4Nm?y3[jk-SwLa3qX*~=i;iaO}Ȼ7?P$ղ]4d@ % ;ޘɰWp"1QYC롥E kGeyGEfҙ‚&P;WaȨHY+!k:;A #{g+Kq`DXS AWQhߘuX.WLdOcqc(j+۱n랜ԕt7PW ejLDm:$*8evA(!˸X{a%UBdːѓS{b8L29۔C)_1JTvNV1tUF]$29/]V"c)鍭pNS k`+>ĪsV5{H#e`c[ri8թR;w>5ZY7yc@Wu!y",Q Ў.C o^Cu:U{~/Nޚ 2B\@iݺuf- 9vhRRRd0xF0ݻkk/T8 <RXz4dȪ RqX$Κ5K //>\ EPQTev~y$$$/,_K2^B(}є X!rשXš-}g PTXkiϟK kQi.~pu^Aey/NuqGQ/5ikH7iϪL 0&of^h a BWK^wJҢ†,RiEp=4ei7L2`>B<2̠vmsaTSvr)|^w !:MR?vpO JiEV_츢LO?^P׮-Dedd# c(եK)^@ wd#P:u*!0-Xݺunp9 NϒcMb8#8f氺0͵@hijkmܟa־0f[ay N8i|VpDq ,947@hQa)B8\ds\m caͪMx2,RM#bs׽Gϡp3ݖeGXXSk: II9HզoMk K%&`"0bG5%ݻ7]}Մl_|Cvfc.d8jL6`N'šsL@hayFXca 7.6p`L 0&hXXk| [>u'eiMhۼ|5fcψ 0&`L 0& / h aE~&`L 0&c X k"š@r3L 0&`L 0X,5fL 0&`L 0&`m kmrd`L 0&`L 0&E5Gv`L 0&`L 0&2&`L 0&`L 8 k"0&`L 0&`L ),͓eL 0&`L 0&pEaL 0&`L 0&hSXXkS'`L 0&`L 0&(,9$`L 0&`L 0&Цft}||hF{Oǎ3;'CA7Ќjxw'Ww<]Mns>u1xL 0&`L 0&4ַO=*:w!t\;vяRyyӫqqq` oз~kwXO`@v%%%Y@3q})Ѳ[wh#KES:'mJ혹-ZyJs+̝f>`w22BW;Lʧ-#lί?f';`L 0&`L XHф7z}f_JhvhGԻS2k'#Gj]{K,iH^aa_2*z_Ӊj\ݾriێZ ѳ{_I;H{4oRw &`L 0&`Vh4aSG/a'5~9v䓏^8!<<\ͧiV?Vi4tPHjlUx H.5Vj%*' aM &`L 0&` p/\?D@4xPVyޥoL{nH&P^^N'OxyyQPPܝY,-P'""hݔ&޽;={Ȥm귝)oߞ)//vPN:Eee`pH {ӧOa"=  AQEEܹLEP4ԵkWҥ aO2/"Q cz~@ \ǺkQ޽)**JKIIOֱVTYVMfQ-ŋ({qv>AUK>=h0peMŽwS)q[5`fg?aZ۷ 0&`L 0&@"pa@i}6ftzG-7E ᨌOS;W^Rv;dV\\\ޣҥKiƌoIÇL"ÁW^y:t c^xY3{&MD 溧nݺ.ŮK!LhԩtWks1/lm4sLڴiRRmC\{iѢEj0fsYS! g!]iնZ64^}UZrjJ[Ξ=FAo8qz)'hPxT7tLa3ȍ.~'S9&YM_k5?ARfH:^De+Saaâ]^gL 0&`L 0&"Ѹ4QsD9TVVӳ3vӪ c6Op`zcf^N%K cnA6m=znePko[nLW^y֦35[0.HZo?y0 :K,tqQ``IXQڜ9s hk?P1ϟ/p- ƥJ+2H1 u Op=p-ݱ&Đ!C", vE%y4T, z]w_/>pU~e*a >sTu xBfqqXp\f -X@bpa駟 )aM/*}ԧOwޡK0X5+ ]wu,͛'#Xb`Mmۦh{wmZQ26$]z裏ҡC誫RشlHX5޲e Q!Cõoq(a 1`ͨ/p]z5a 6*ޠc4L~]WkELa-PXU +o<hӅv||wEH9hm5bj]e5;1?/&˲*Z غԝՖqq&`L 0&`e/]n?ם]QoP},e;g%Tj "SpHg}l=!J;.>F5k'ߴ}1b]k/sX-1/!c<~ c5օ8(ǺK.J(B2hu={ZT&BvD2c,B<58.5/D:y|СfV}ouӡc.۽!׈'d_}o,_о;kwUˮ>ݵE#;o7ZstX}zffČ{{{"blR"9|A\DR"QB*aMUƨOO>(yB4A\1W " WN)WliD*S2C')ćC}|EG﷥k3gΤ~&:w,J_=z!= Ր& D ²Lƍtj|A-EAkk ճk~:qY)u p$mЏ18t6?d-{h{{a6Nr EE2#b2NaA 0&`L 0&=/ ]c%Ld["2f)џC ̬(1[zwuwО={ j8RX4rH裏HBȍ>*!9/"Gp~dLNN6 Q!!ѣ Ol+雄ɓe1c]oHXhpBYwĉm / ,Γ *>b͞_{ kGPܤp;iק3"% "?7ACV+`z٢&a}SذyiP!E!oVyh1uUUv 2&`L 0&q|]/Y!~ n[̢믗qUWlS$}B\/5yLj WPOXj# q Tj9m4yq,/uQKuS3g9KXic#V.9ͭkqk!Ƌh"f5c msx,H V٧&_y&Ўk><},M2X19Bg=ߣ1 +?x"cB`vs59n,.=iqqjwK8.|=|=|=@#ޣ_#v^꺂"E D1)W;՚Q@͑9#@γ:ˠ} WW9G*aVgW\q<Y.e0aBu]›xNO?59f|.hfnoYx.]#cHy:X"7պx?M4f>Oxߑ,}ޑwg}1q[}3O|=|=mT@L&L1Vlq5h7~@1>Z.>VUBߪ)9hԝjS[ 5xwN$x^Wu$bW>/ȡANm{CTejظbś[`L 0&`L&7rKhC @6l0ht}%I 2w- >\nۛVQt]wڄPQ Em6A{Tj*Hdy bW_}EIIIǰavgȌ\]kF/ WPK[t1͛7O q IM' Ғ5$M ksvBZvc5NHwæN. 3Ry[hKw;L 0&`L 0&@kM6VqHHuU~*Ƞ XĸVdV >asCfMf[c1N'S ؂ω 0&`L 0&XX WgL 0&`L 0&hXXkםg`L 0&`L 0&`'ՙ`L 0&`L 0&&uY3&`L 0&`L I5;ru&`L 0&`L 0IyyL 0&`L 0&`v`aN\ 0&`L 0&`Lm`am^w5`L 0&`L 0&XX WgL 0&`L 0&hXXkםg`L 0&`L 0&`'ՙ`L 0&`L 0&&uY3&`L 0&`L I5;ru&`L 0&`L 0IyyL 0&`L 0&`v`aN\ 0&`L 0&`Lm`am^w5`L 0&`L 0&XX WgL 0&`L 0&hXXkםg`L 0&`L 0&`'[BUUT|\+DڡM\ ReiUO[< 0&`L 0&l"šMظRk#p})Ѳ[whKES:'mJXK_l`w_E'w4, `L 0&`L&,لyUZ`yzzң>Jt?OHt% {:[5q&`L 0&`XX327V^M^^^t7Rjj'9}B(]dyҲ;vPξ"13z3(Ψ38pL 0&`L 0&22Sllw:{5sh3-:87`L 0&`-ӄ5ύ+@Ķ)(@A"xk;/2P.>ԾSff Nɧ* .+RLe{'.Ǜ[AE5qBEQEy5Lʣ,ށk׮b~]ڋeݻ 'CZ_}t}衇~deep0***Ç4=aTPP {ͽU ݕu7o5e)զ-K{0 !Pw(KlHB{? H ҦͧP8[ Kٺ14mƌau]Gw}]ʸq)Çu}j^{5Z|%7{l1b[_ 싊ӧڵk [Š:"rh#J G]VAvӛith C6´}j%@m~H⯌;z?LB aAt+&J^0X6!Җg_7tѼ2ꏗoZE< v+"EQocG&£-aʑt8H>VBSqy'`L 0&`L 0; 8DX tqc#h`iorVaSg@GiӖJg՗F*ź.v{(]AKbqS`;$=.9>?JX3w:>ʄXƺS+"Sgpw_C}&8V\19Rl*1v}abe%-AZ%1orphpNtӴ=Z.wP&C'$OyAe[ KJ+;gOh<`L 0&`Li HX=*܅JZZ!4Ȣ'k]lֆ 9obS[s-UD ӌ#n7Ew+cA6XsI:S"%pg}d!?{2̙#WAȎ3 $PS6YZlTZZ*E5:,5ktٜ4it4>gf + lnh iU%+uȰ %JeoB9R 9?GѨ*ZAL""h {ZKu~t|\~0kpDvmBaCChuV{w"!-]] TUe7*SI|2LԊquN#i,U394ebE$|" C|#虽8{x P fAQJkw)_ ayLG k=Zg [ CB{F<9@r&#a>:r&bKL{VZl>Wd{G|\F`F`F`kOZ*N5H sezYikip ubT܃/ՖA3R4ԓAb)( Zj4G&~uZ7faaabXmm-Bqq ٴ1"0w\ j&hug?KE{]y0"UPc񗾃[I@ _ʭtH0c6ۻX#E o,F9~88RܗDՠi>D`8g{kZSEMb{{+x*-Hԁ_VU1fF`F`F`0X{fy{;kF)TO^]Jۗ٠)^>ن}OVV%P:|<w8ީwAi2"*~YT3a0i$m-.۷oWO4 (ѣ#֭o@j/رcRbwF*O O"jK !%J+> 8zn1A7Yrt CQA[; ^ 71I'%u$OC M|XI(T2SCI>!ߒR%x#0#0#0퉀YA)D  r#) yFk߲!7%*gҷ@N_j8{,4ϟ5{*\ߑ+(`sW(~N:tR\zQS]^^^Jڲe*[nEq\zSpI|jѐu.FN%FHs{7oU􅺸ԷXѐ{̈Xsލ ~IML >Xu^=Ё"͓>}Rozc]N^{S Hv j]}F`F`F`n'&ִ wۤ B("+#ٴ:>ۄq^qSlRmF>=۬tLhYx̜nɭ$Q0WLꗷ`ܤ|{x4h`.ۙc˜={x=+AazҾc)mT_wl#mz BNX;S)a02Gv]F(U=Ϊ~;[+dx.bmرaj֭Ԗ-[T}2t:fbڵk%kkkcCCC|j vڥE''' ϽhuvvPAOu.D$&FB5M +'zq4Kl鯑lP ^ZM㌝!PT $ry}-(W!ڶ%u*&aDﵱvw(c˜={x={c{CуC]0ULV$˗!00: ʮA **j4T %RRRt-,$`C f%~E08ԃUk*tMw.X.\W-wވK4>HKK#G(7W^yE@ee%466+WCk]_~F% CLL # f*9 ;;?wW/C~~>P)(++ʤF t9P&)N]~5X 5x;jњ/Gx /u`dnż~u|tԣZf/|+j4v08S*_GWZ?*BA&P+͑O/>{3=Q(l l׉o~dxwM hֿG{R#0#0#0#tfA"5Hى&Ib+R YoF K_  H44Y$.:lx; !.TӁ)cӵ(xQZ-:w>Ν˰)/AUbՅ.^̤3锝]n~~~I&c5SQttVBBeeeSժUs瞞&qFqT)|B=(eO*d߶yQ`q'fPFR>($T&ڇ\\(Mq6r+G @ P\($9@ @ /ZF8 @ @f  @ @ ΀ @ @kf$H @ @@o3 @ @ `&  @ @ k @ @  fF@ @ /ZF8 @ @f  @ @ ΀ @ @kf$H @ @@o3 @ @ `&  @ @ k @ @  fF@ @ /ZF8 @ @f!˻,\;Ii t\(8eg\RY(9<<Bd[\'k@ @pn;&U^ h@7RTԮ\T)3eݼN{wL>*WL׎};'lGϟA?Em#gZRY* CқVDw}m@ @pn;&ITt_TԮneqV0?z,*V@`yOhRyEPҕEs+Ecӎk 4l@ @(QE${Eu0u͓=.nt<+FXk rwE7']әvJJ=./].t{ @ JSOH@/k6T 8kPXsg@ @pD<|_e,N^ZZzȎ\]=(|#*SxNR[quu'O2f23YcxrКT6|QFr.!VPOo0229@)$tA־y|o1Q~biM0rY {-ϹʹrI_݀B*]C S/(S6uRFˣnpd!tJ a-OIgA_u3ϛ"@at|#M_7J×єva#cK!adL ?OG1;VЄ.iêZO*z흮&ɠf6P&*Z(b׆7uEX3lgz<Hz~7}o9HlzaG}y*] wtlM)m @@(5oV1Qq*/DN-Z :vdA`-E}N<[{)00+ ntptx18j0TK^gZ``{hfSʵt:|aeVKNeHqiZ( t9xRw_weT{%銯"j:N Ǻim^y fmߡKvcw^jȠUHX]ci rj`f˺1_NSJdk2@5ѐnfБD]Q@_yӿǖ򅽌UX笁5G[G=U\{4~?a޲8 |̟vqO @(%*V]TCN.:~!:z@`-F ޚ_jf5=&SNHc.U;gdZ`bT{dS )/Mv\t94k;4{IH4-_ƭ^ g_ 9T;hQsqP_OTծt_NJaI8fxqJI}i?6C#9'6-zW%<ҹG.ŏ҉Kz9k`QO+{22/^?<Ŗp'94;  @%Ik<CLo:Tk< 4DHpFs?/'Ryܟyo Ӟg cgx1 |T.P˟=1Xʆt@ @:Ɠ7ꅼR_ [fyjy8[irx.r t%_C̑|ze:fo`mhf6ɶx8S~PxD#=y:'~]3=8l/kƾ3S *9{x*gѷVھ'LE7W`e W a:'rjt2,U[Q0Ykdw{TTw_jsѣ1yWhq2A @w$2wub?,WxV$΋K [CH["s~.s51l-X3^Faָ\بūr(S@`z)1I~-:NLMK/ [k|⬧X9CMK豦%'?4;Xz5l>J]E uܒu1Xtlu Q lZ~\) V,yE/Ulmu5?#z+gmK."PT pSM/k^z)ՍY)݁5uI~N'm>8ixQ5f3Wڷ}ʋ!ޏ?<~ꙙtTiW.K= @(%2f BQM1LWHk['og:t=a1%~YkQU [E M\T{@4F"{֊a1ԴdosPX PI"f}[n.>]ZLC\(z9VXc̿\eZY!uC ϿL5@R)gD 19)m7[ ňY<_Yih؈=@9ΙހR}+H[BSoXs}pSV࿿X{.%iż ,y9@ XS}DO`Ucx{7X[;FKU?yٙS(3vB߸ԸreW>9X "*E'J2ضlsk9fFK-="l-WU3i94Z{ &+E v8's3YNa,$ѭR(/8O:D@\ӟ{\ Y3WU]\D}?]Niy=[G*4ew^ KێŁO܇#.7sŨd@lH 6{먧z$8nK @ &.kBtx%ȍY߾y,@JOCm kۦwĤ鿪I.)t903y8W\)\ϻV?8T57 @ wL`͹C鯝gĒv=_ĿNw% ǽCk9ג.]vϠx@勻)GלWE/.1Q<*yAksrJ]8I >mu @ ' @ @ k0 @ @XSA @ @@`-  @ @kz*H @ @@> @ @@`MOi @ @G|p @ @z  @ @ C @ @@O5=A @ @ a@ @  4@ @ #Z>@8 @ @ =T@ @ |X!@ @ ' @ @ k0 @ @+UC~nܹ tKn.x&23stl@)00Ξ=K/_.߶ώm0 @ Xck qtOp#SѬىFi;+2o:paCڴiCժUӕXx1]rE~)hт&NHsε7Ӝ߱CEU{i, E @ 'ckoO[!t߸ {>k3kD^^4td4; ouM DG=fobiyТˍ AǎZd{k @ @  _Kw$E?dp\gL~oMn4pNJ8z8.kp8-lٲԫW/"7Ah+ `` @REF?5y3e,]!|υ6{lY1򞏯-ZL~r(hQ-؃ @ (5ww'^?ep3/Pbi)-=6pLSJIɖ>r70Lq#n2L1 OOWJIIQvBE ުRd/󓓳 :t:} {UOՋ{լ@E}OLG[)E11~)]xǽuK1FٲىWܤoS+P:ok\/WޠcǍװ0Ċs|L:*z%]2֌t@ @&XW <>&}y,:+oӏkS!"p/^вE0}2Y^[/25D'$!%ja M(-YzNM435l)YbU5aTmt̃IS='~X&z#K=wkW͛PlUT;] .jiل:H(rPX ͻ( ZWO U?|칉4Fۈ _|&+V]TZ߶BBBwߥ J}^(w k*({nz37h>` ?,zѨWohQۙi>[S}ﭾR!@ TDʔq]"qo$pϧ=Dk^qΝQVV~6mBv'&Q*~ЃFM/&|J)t:1BC=~ Z gSRt=Nw^x\6C/6qU`~$z `tSKizsGqej$-Yчt.'{qJؿ rqKuqoeN?IӾW˧yv5kpn!_SŊԬi0:FBLi@D, Y^|Q&C}䘼kF|?R:ٻ_`-((f͚EgyZf 5hЀZj%/ ۸q#5k֌6mD "8I]t,Y"suv4a-z7G/z֥R; ixos)ޞVk؀ @ `+7 R{amevO3+{Q=@zE+X3j_+~mLRQ0S Қ4o\\b(*aZW1ǚ,ZV95y v):=D/Xe1d(MK!2ߺխvQE`MPYK[LddAs&ji8oNS%()'ct|qڵ 7SFu3ummVkxo nK|mmmmmmmmmm 8/ R6hpagsFoޯeS\bZ==]Wս/5@ִIY| (͚U왍bRkM5 ar{ѩA4Êpz[EeV,&!q-i=jaQ-Z`-**J8p&-뭷ޒ3 {a2_ӦM;?or>RѨ^jf5ֶV"0D@@@@@@@(mXIy2^ͷ:@O'7 rb!EzIμ]>wz2L:u:rW^|CV>+.Wwtuz^|bڽ'*ȲL!__7P(*A!nXĉTΫ֪H4S7'MWfrǎD`7o.f8}\ӓ֭Ke˖%>|جT___IDJ!1dT.fP~}^{l2"@&Wg.|Fc{ŸfKcS?%bxoM@ @0JM`=?s:$M_uW~Xk"X%̨,F| ڸQN&eIL/V"sjYzlWzymIszPp2U;W5 D:*v!2CE0RӲE*9[(N˖-f͚hhΝF;\3f }yi.\@cǎ;vhiꆣ2G׵14_eڲ ۛWle"sAyJV-mc  @@Z??7#zyQZ-:w>Ν( B=):ڗnQG~,'z^g);p *Qbb9iܓڝ$V=.vV:ƽ,hNݴgoJ_m{[45G @&ڝq(b9éK.⫡x@ @@`]i'ikE;S FLs 3t<3Uk! @ @`ouʜҚkt" eA" @ @`iEVf.(V)MI)] p ཽn @pz֜ @ @(3>  @ @XsG B @ 8kTP'@ @ @`*@ @ 9SA @ @^5D  @ @3 Ou @ @pz֜ @ @(3>  @ @XsG B @ 8kTP'@ @ @`*@ @ 9SA @ @^|}ݨa px*;anhrssD,pفtY|r]-LM@ @E-PjkUh>(_x, `@{Tre $ڶmܹ^+W!CЁ xO?-Zĉiܹ.tFQ}id586 @ @Z`;i=?r+z<#0|pz]'O>}+D{k3gŋF%IUpZP-ߌܨߠtXVw6 @ @֡M:F滑7LoE(裏҈#(;;Oڲe ڵ¨jժԣGp[Q}ϟO.\2֭śH Vw!4h`mz^jZA@ @pEԡ?Е)*k`([nU~]{aÆn:WV-z+Ҿ3dxosiZl"8@ @ Zea4c`@o,=CU"6nB\uQEFИtW#MNɢw߮jyת[}HuWxA~hذay6vjt5^7ސH2vMQo[?.炟QxqkEcxosTp @ "P"keʸS.]Ը8ֻhK@ؿ pϭtxP\?u.SiktԆbUI?d:myMΓƓWGmZ`bQ? Q>UI7tޘ6_s(с͗sn+ C]:#77c9qQkYY94C*8sfB-rL] 5#>Ο[-,ݗKLmkֲh^zٖ.]*"5kL)0 ˹z!-#[T EVZis0{X^ /--o 5qFYM6y"##K.⹻ђ%K裏>ʷe5^5^KvX*(m.[f@ @N%F YŅ9g*ax={o/[oi> ڀh΍,RX888380{^^45$zz>lg`mz 8&׮sQk_7w?ib].rrê<_M{|7<5mwWC=Ɣ~I8=ٔmY5֮];ԩSeގ;ji&Mi-2PӧkR]E7Edu1:^X_9,L"Cmj` sJ # mmmmmmmmmt *z99 m۞D.;/f,os?:5C?(_?iiOIW<<*r{ex#~y 51 S#pZ!es%b4⥽[bCAHEM.5jX^6oGuzݴkw2g(33x'QƟoQ 4Zg 0tI#O&!v||i1%ОZsuATLiرC(Տ:t}{0ɓ'SFW^͛7S?cjݺ5=쳴k.5ٷ ,ͱfAX 8P4=n;w.M8a4bڶmL+o7  Ĝ{g̮o)m [O Zj;H @ PNXy2^ͷ;W50{~+䪠' 3/ MCQ=@f0w)"v36y15;j"Vѯ 'E ==lR_#m?x&+x5T^HH4nK;[:89?Q]IUCKgO?M{쑗TX>ڷoOz-[&ӊ#ƁYfՁnBѣiÆ xa<_#^g?)==oR$Q[]@ @E.ԁSǎarJĽ~[~֭d׏sVb'cd/%Xҵ,oɾ}")$-[Sp(;>gdܢ3Nٜ) :wy!K5G\gwiA jB{h߹5AbѠQtB͘uZ0qX MjnbI8zƋ^n)^R%D .$5&S{ʴ &{9ڹsLn ΰ<`WqָL?zz&~RG.P1i'M/mum.X{k{ka  @ By#qb?M`ewx7_W54b$B%@IDAT+Rt˲tNX{s'`9,*(<]F(7q<jXSիiWĢ2յkW28h/nZS= =ʵz%N>÷޴>Z\5 m'xo]Ua6666666666p;ۀS/^ `lꡁVWTV, J TN΋%ݗB$STejl'! t|QFATN,dU/ӟ]xO|˗3tʭכoBM^X#]̫Bv;B'N7X^V@ p?9!r4;vŋ_2GFF}]v$+39Jt51c񊠙jԨAӧOʲ1uT6m)M6~QTTh/!u&K^k{fh Wl"ʦ{x`4! @ @=a+n Go@<.E]h"w\FKT? x1ϤSvmĞk)S"""(,,L<4:{yn S֝z.\9vӞFh{[4ۢ=J @ k @q9*b(uێ8 @ PX+Yϋi'ikE&##zzӅV<̒~.ےQ@ @8mX5ԡAZCy (ۂ!7 @ g@`Yzլ`DJiJJ*Q@(ʃ @ 9s@- @ @Jk%쁡 @ @!s< @ @ V @ @ 9s@- @ @Jk%쁡 @ @!s< @ @ V @ @ 9s@- @ @Jk%쁡 @ @!s< @ @ V @ @ 9s@- @ @Jk%쁡 @ @!ϡVrssܠs; D@ @ b@`N+Z; ~o:t͹gp" @ @@ f'2GY=@ @ PL h|vVC @ kvB; s4 @ @$PjkNeѕ ? [tX*:Nn)FPjT%ڏOEd  OOWJIΖxRFAо)tbi5徯Qt/IGޠkY&VH_ IN΢3q9`kxw$% @ @J@ի[z_nFEezj/]ΤgCOmhqGELG xQ;胱(.6 M(-YzN~*D(s?칉4H35lfѾSݱi֫Zaoۈ fU(5UD& @ @DDʔq]"q/-p=Dk^WAGCtb:q쉃U;N?IӾWUfr՗^b6_47s{ h>j`Ǩb:p0E;4ԓ K`to4"`MV\疏zȺ_rhtھwEUMP?ZyP͗|K~U*_>7PSh>j`dY_AaՂRTOPt6|00qFc,1?6^V/CM#HmF8h &1RH>W5 n]#mgDؖ@))yZ%@ @JxnNTG^W_5gɂ._{e>ڼ%wcTe3,n;pEzaxbngMv'B}{3ю|x`Orq[&\̏0-[~A+>x]/z~*Tsd WklLcDO9k㡞<5CIiG--uI#Ow~yr{9/-^{u|&|䴘h^ a^NlA @ pO~s{jo}Pi+߽Q"媠8AO\UyY5mea`|Pk3gQ3o§G'1@ @ NX{}L Oʟljxp{4h@]A3f6f(Vf\Sp9q?lJm ?MǎR; <dF=|II7kf*Gܟr70 9x)UOwڨ͟fX#ۯK=XQ.gEXCgۊ9vMʒ77В5yhs%p" @ @(fXSm|jt ={H.VC%{]j~5a5^`dh賻tSrF=5ŷh^sћϝ=˖ba|Ԁ]vvﴉxR[>EܸM+nPX-@ @ %2f(yh{oNwSFO O>Ca^a`{u=vF/O;;Vjr}mKZAJ q{UFK&:9n9 o[xٖ?P4uIw  H>^|X*zY{2o\Py|C @ (Pk9训~9:Ԭi\`(K>ԢyBqo7ZL/}=>xi$u-T\4h>x8q(C5wD*\ٗj w)pTQ4dp\iW=N5b!T!jzjZ6mzhԛXW堢:癚qS^? @ @M)d+P&AYYyuѪU蘘f|w^pU#WW-L9(REibU^ܹ gTv @ @@)(Rp  @ @N(>T  @ @XsgB @ 8kNPP%@ @ @`j@ @ 9CA @ @_5F! @ @ U @ @p~֜ @ @N(>T  @ @XsgB @ 8kNPP%@ @ @`j@ @ 9CA @ @_5F! @ @ U @ @p~֜ @ @N(>T  @ @XsgBTDGG%&&Rfff'gZjIۣGRzzT  @ PX+ξf͚trJvN:ԦMT˗ԩSl2PŊq`|DW\˗?Rb߾}LJ~t 4jժOԨQ#L+V0;0?00 B(" T:.]sѡC(##踳^hE]ώ(/ޓL;Nu=P> @ -"*J3kD^^4tdZc)sqqӀ(>>^s}cA,}8?ӤIϟ?__hܸq(f={QFɢn޼Iڵ+֮^z~aF=z0رcl5裏,Vի4c my~ *X E󛑷K-;,' vV @ R!=u&oo78x'%D5+5i҄^y\48ۖk܋>7n evaSlٲԽ{wjݺ駟Ҽy0~':{,_SRRծ][iذ!ҷ~KӧO7gBs!\qy3ݻs8EXj|opV۵aXTwww Ϗ{ gʔ)4sUM[Ci(ڲ ⸿#F([nUDO1GUD5ibȣ豦Oow>e]V(sĜaF}Yo͚5Eg.z)T%Ɨ"#})$ē :th|%__71画8Ǧr(ˣë.^4=DO#WJIΦ[PqF(;K}R}ďd(_:!S AIײN5J5_͟$8cOdϣ_dϵs98#/d<ډ'v~f%ȽRRR=j֬)ܛR^ `cZ~VJ?L=z4mذAqqqr8vz8#|AvUJ GA{YLQѧw%\Uڷ?z&96̕ @@ fqea4c`YH35l)YbU5aTmt̃^S&գhھ#>[b M(-YzN+݅~*FHvu&yfM)_?ֹ3|m4Y.Pjq xHhAk\w̯diӦz3gΘ͞=[GC:u qp>|8m߾]xG7f͛ӰaD6֬$h>-[O>쐵 xm-;𨪭 BH @Hz* bED~DQV.`džr)*i *4EJHZ $99ӒaB wZ Gy!9gU&$X"TN2Eٴ~I M.RxJ -v<>̥}i}hw/ߑGјq;hZ߃ߟ{l     VY7EXP.DxzinZKzhCqqAluEm:e[zAԽ[?y?}cD%\՗--R+LzдqhUf_%ԇ֬=MǚNr[#xW~L۶Wia[n!Xm={T"#cE2T̖|͢lرJ۷o kӦM#?qߧOJ&l kw=CJLܵk%%%)lb%,Ăjƌh"_ԓdnCa_Dt]f XNիܒ%K :wXCIZZhѢEW^y,ZDcl1'*OvUqPuSΊ7vءHPY'b9ԑ3m{QܸFlAl4f,߃@@@@@Tna /71KwSHov;=wGڷ SeVzfMѲcͲ]|ՙjc„ v}&>i馛L,V)o?7śz,(g,,>؊LO3gg=k& 'Kx㍪_Kk,X8믿1{cd6U^mLɘ8Ά@>W)ϮOj>F_U+^y-A1Z_6tP%ZpP[O56G@-4ib]&-maMk_+N_|Eշ=aMhcjl^Yg5j[ǩ1 cfo_{Faw&fb C[ا0btf}eIY8Dl_J$;ʷ,o|366V%I0cyy;|Ka3>*B}Yؑ=8=hir|Z=8 ʻIB@,(0цwN/S+g_:{/OM+~쵆/~ijwWՕ8CzP${i4cQR6k֌>cuQޮׯ*+G9::qFzܹsfU#gV}hr\|j⨟hԨQn:baQPm\rt_?rSQXs5jXY|I#lQgل::IݰaU3 ƣ!mB͛7O gK/wlQ=z |I xdHu)g}̘֚&y}j=h{Pwf`*NGD|]Nc;4cZj8Dxt.%سr`V҄9_Y:Z߭)55\gف+lC=iOzwY I.W5T1g5k*E*iV҈6֤I&)?`yS+uIDU jN.g>H0lO7YtZֱn־{A.*,-̚o" 7j뒀L?]A1@@@@@} X>7;$?/h~Kb} bLjM3lh,]߳:E(t/y#tBV.MX{#.\\ԪqN@ ˂A6"V 3+zf+3!eГJKWQw`,?"EFF*Q-**Kȅ bEd?YJ|P

]ٳX,Ă?T%"&4H9}ת-{8#pe_--a*+>CUXtȐ!tQRQ4 khS2|UU6[D/(]4igidw|Ѿ?-A]A1@@@@@|p6-8tۭLs>md/<ԶM>4v&qv^zq\abi}]6WnX؇mȳ+ QA#4w+Wt3B[`aM?Hh/UW_}$ ,;[}QO?T*ed^9[>X`T֮]k@jXo㌏5f=x8h3_+c2ȀgE믿nWğMX<ߑ#G2AKs߮ڒ@Z[ƻʗ1YX3.ϝ|v%_G=h=ZZ ````````8ӸgR+1PͧW?NE3[>KѨQk@#b,8su~E}ioW1˸g_(S@b3ZPPI$ 8˷Z{"piu'Nh;w?y==%Vk|Q 62V[ȖRLEM"b#dE3f*O2iš+gY>{O=ooc%={;yw~6w`V6؀b#20t [{#Sʏ^7V7+gMZkwkl[H]-);w]ŚXCWCk8܇,y8:v4(&9<^cFѡ85???'|X`wc;< O(%R5x1RYISš2e#CWӵ0_UU0´f՞}Z?ڝPw(a["GE]߃߃=========P*{TWQOFq˻ϳ[jn]AkOLPB -Xh`ڄ}؆3šԻڪ%;E-y4e\glE'SZzclgG5JȞDf2:h_9JNMbd_Nv 0eUƲ'aqƺ`cyAKFּ$M6mj(C9ҫ>n҅qΣGVy}@{)<5 8}֟oaM+w{g7?nl߃?.<[7L{{{{{{{{R0=W.ꭢfJ/SE%h,b`Ԯm@&5fIoOʡ#IY촾0 /@ ^֤dmkoқͨsjjL7C2H6BLL 5Mo=}Z3*O*ZiRR $GK.t)lei^,}hN(l|4+Acx(=ĶKpqTk%?JM?Dל.Jԡ}Ubg"W5洶_GgXGtVXӺ4bxU%{Ffghd+ҦNVϙ?!K{W1 kՑ<$DdhJ`+BԩSi֭Yv˛hԨQ>fP*Bҋ/HNE u^Ӆ(у^{55CE\;v,]{*)))~hƍWyJl"E={ mÆ ݻwtuiZ?m߃j{P w%a|Nt[QfV>%Ȧl72^ HPvGeQ^^V[һ7ӒXծ]j,zhU~FH_̤{%ZW~-W&;x [8K)u"U`, zђEx/{C#i4%{dF(     P1@XY[ȇѶi4DF@@@@@@VQWԍ cޔr2[!B3     J̘$ @Xs7Q        P)@XˌI5wE{        J̘$ @Xs7Q        P)@XˌI5wE{        J̘$ @Xs7Q        P)@XˌI5wE{        J̘$ @Xs7Q        P)@XˌI5wE{        rqqAGeQNNA9aR`` ijdt-zZ}wˋ=cIWj=U@@@@@@ Z i jϪL:q:tKI9sX5;… ҵWiq_biΝ6tuֳ9˘H ĭiiRIE 4       `Fš9%??ON2$xb%rbdz~zz())rf0ս{w=Cu֥5WaqZ r[aa>ŽEn2ֶ3      CZpVe̋.:F)'m 4vOߋK7f]gxVZԣG RСCI,}}ԡC5~]gَ3b,RRR8]РJЈq4XZ4z!(RA@@@@@ W0LW_mj \# k&HSW_}ZnqVؗ, >n6w;LzΌ͝eLlIyUZKwV[gkHܻ`;ʕ+$ě!~AA^TnRVv>>I>myYGV|ҋ}qyvPGAGNq- C$hU%p!22Q`{pFcҪU1k_}ĐXM8QK6K;#Lo}ٳg{a,֪UƜ|ZEEE9srssJ`]{HOOu>Z9󥬃e[{I#wFcOwу'jvE 7$̖-Pkҵ=")hZ?ZnS,]^H&cqY^[^ȇYл:.GKC7Gf8e}:Zؓ[鯍跟ӑLZ46-KDIYfZ=}L&/iԩ% P)iCի)kUٺGY}uNO>@CzA4ZzZQl iWXk:v q[H3g,Y)3)::|فD?[5q%kT3_=g9/6m7U? kb5l0'U&;VחMF7f!/-[|լYzMUT5kѣ =Z?GY'馛B8 %26p@x߾}\yܵ2IG?G:ܸFE6 h@(Wxf<چ&/ݕo'cLmVRUnL5k[hjbA*rΚ/ !%x2kZb&M'X&>j-tj_|iʔ)ꏭL˗/Wy'O6hª>3P ,0U^,?224U-mF,rcmɒ%ŎcѢE*gϞfs0Q{ԴijuJ{~Xg?GAy_W{M5_4!.ybWx>7ZEPYk짟O?]/ύӧ3ڪl)њKhぅ5 kfY5x}uz&fiZ{jybF4?IY^[թo(j(DeoNbۼ^h'kҥ* EGjCCCo!#Ж-[ }Q4h%&&?l%Ś1rH'/WK[)g+WT"pmذA=`&XΝ)--x ڳgo߾=%䨧]˃͗v3(ъ2Zv/maM*̙3t@IDATլ,k5;3~?~n kå|,̘֚&y [g      CUeg'ْELrlә?x4JX_|X}A͡5fhL4\#UWPK7wd#|筷ު֯_]c|.җsp 8X4}*cǎzql(p)##%ﻘFx<Zcvbwv=7I~^jKb:oUytՑ;lq44-d ,U>鿞u*4VA4GI>6[U*A$^ڹ낙ŚD\jUZ?Xr-|/FAK=Ϟ=۪ekSk^kǐ!CqTcmG}DgΜo ?NyXsu.s$wS44}?Z;>֟?      vZpo*?8Ls>m[`c7eնM]*;Ƕ-֤_>bۯo!QEpІ b&+Wt3BY]G,LLkٲ߿xb*.,,XiݺuիWBB O:c|v^hh: vZk"'"9;Nms:hjwG>G/`\Ck co``````````@&IޔW)[R|`x6m>GePH75ƍB:|F>\On]'mrΟ2VkچчTNБ,տ$np!O+jvOhB3Fep ~ KLզezI,ʕ+UlW,ǎx'<==iҤIԹsgƍt!⣡C,1ZөYf*599222Գ)w9[WRJJJߍ4rHcl޼?DÃԪ:Rϝk[~}hNǏޡµ2ֱϟ=2H(-Lۃ ;o樘^z&x>r( $^ÌYOо*qP j|-T>qd"qβsQ\\-_BLc}IFaPVV%,V*amѷt@ozDڒfz)QLDGR^mK=֊iKu`ozhd"mvi17( u,u@-bq,ewo,c@ K9m{x$QKw|*bb     JƩwjNaa>hl<@HAAޔr2wa : (ryWGd5հ$@“Oo\ ` @4 Wt6=ke( b8> G,cB PYWYV, UnWwd̏ƌAל*۩c8|.bI{iŏ'$yPzTz*yt+}6֓N~ؒZ x\m."|!14⁺tX|l1Hnύ}v'Z}Jڷ $c>!|1󣸮!zUjfkVEA@@@@@@@ʐ@ćX Ӣk(4XJP2G.x)d;7%ZSӄP4o1l"DIp_7O= 2zqM6)bj7%U?-J6 k3 k~?EcRK<9)>wjGIO={2:^ۮE+Z(zbjM$'}^ںZ$,'p?r-{%Q-_xy~Y l$eekнQQA{ubZQ7[UfV^ҍšhڜ/~Ԍ[ԢO50&ZxVgΘֆ4Qum"YOn8{v4QW70O='&ؠŵ<p@֞ۈz$?/e]%Gşگ(NskgiYVXsΞHAAwס:;{o ?<. r>66%a*xQXsMX{#.\l?"@ "، #jZÆƪQ5 }I^vv>-8}61]z툨ׇ4䣡dA. QwrHexW kaM&쥎IЂx)W=JU6m.VJҬ(|3_"{Z^A"֢hDmB",Swn\g@D\zyDNc9y߯&c'v=Ů9h csPW&)gEp^lAػW ݂P={b#@@@@@@@{a8+'":ؒ2"Ox w/Ivכс4VXdfšV\oU: 5W;pFXS?l~?؞+O?OokoXp٫ط^^Qԡ}UmJM<-YL?<ŢBAp%i 䨖7\_]Y`5nTK^EZ1_-q҉9z>kآKsܯk^k`J+_pRh\GkbNlMٲ$qi]^^~ IRG.{_ڙ«&h9pAm GE(Wf$#7T2sb?4-%̼2#fF錶5늎6wnN~*(If=v>zZ A>(]J=5aM~[mzx:C>7[]>٧Qxֵe8M^@\i(+$hXG=WJ9j@@@@@@@.#+^XIPo=ex-߉mzнC7ZZ ^myJܚF1ԹS5S` p!fGAqVCII_g)(Лt Sr)vpj)ZOšgf35mduel@jJ!!4{%Tj4|X*@f?k6jp ikԘǟg*J=#$e(o*f Vni%X{ Q3"/?Ћ&5֭T$J`"ZS Sӂ/;PP7 {`}WI' k$qT#ZzFf_?jfօHDP5gZI7m!ZOsVw(*&VeK{hd"mݖ4_I"PݗN/:7L: j^s}[IJ^ PhGe#-(ȋpDЈj~Y%xDrr\g^@@@@@@@@Auh(gx$P@@@@@@@@* )29vr2[VQ (*V>b        @Vjh0@E&a".        Pj Z4         P @Xȫk Td*bn        FZE        @Vjh0@E&a".        Pj Z4         P @Xȫk Td*bn        FZE        @z^I156m>Wcn        @|ϋHdT@E&P.h}ni5fGE捹T]X uz?(haiT`&xSp7%'g;ԧ;ʆr;GVUprsMVPn թHժRZE:q"v@͙/>>bDJۗNg]4+c{>-2Uv۶m]4ިa07ݲ \.lQ\IN9@>n-ߑGјq;hVe}uTޟZp*/S =xju M0zi/{<C%<=Qe2˯OQ~mo-u0zk^kYzmbSj5Ayy&>Z4~;ITLB!N/rK-Z*ԻWcAMi/v'߷w=7:AlYUaϓ>ц,k9gbW^uĺoX2^4mjkj(zQաCbhu9=F>U?)dalvgwҪէƬ kr8}]f}3OFֱC8an.a)t|UHćX Ӣk\G?|R jv_phV"ƽjSJIɦwn{Uam-5įtH&u_)4ԛY؉ط#&Җ4zGAqV&G>JonN}D)k9I-V"6o9g*A@@@@@@@.$> L᯳ݲ4cZkjJ|ͷsUX1ޛ\5ݴ-J4+uS|%uծOϰ߶|k [D+@S4z3lAzP}U${i6kϙQ@@@@@@@@=پ./e_`L`$ee骰&,gLkCM(Rr,5Es 8{:j8L߭)5&pc6 {Q :ɞbAhI        D)agHbK-:*)~-Xqr\a>lwW5iDaCc˨z#$Xkq4tH::$-}962 kpυGD(g؇%䣡,A. Fwr쨭@@@@@@@@JSš"8KQj`Y,.*U شx_` ڒ[ZZZek% kZdgA>m @];s(1ȵ2qzIcgl?tg4aMDG-jlV RE帩k@P+@@@@@@@@ 8-^]u_Dj[YFܔ /7\~c%K]#;}_7OӬ¿/O?OoVvt k"[UaiH|~4`1kt+:J^^Dv%K駕',fXp3Kִr,7*i&yL"[Qq:('r&>uG4}A&Y9MDg5^^hkH"x%x_/woϖl?@匰^08Azz-go"?l(        P",,7T2s?4-% 2s_ܸF* 'HozԴib)uZu歾>1:R-o&oMO=O'SswZ4T>M67g5  z%rr-j62'nִIPo=jfx-߉C7сYedq'RŇΝHkן&O>ڮ]ݛNuV+/SBDM:EǬ]0 L4j3ڐ]NzuTM> HMB7{%Ug:t$)˲ \JMX#Ґ117 &$PD&G7E{]4!e *r4U])޴h$qTߣZ݌e" oJ9\|1cDL s!a @@@@@@@@\ ah        ְ@@@@@@@@@\*         a {@@@@@@@@\ ah         k-K$PCKlAdBn,~zZܹKP @@@@@ ke%0JAZX>Ik} 0JBZ%YhL|V>֡ZE_a@@@@@V^V.O&ta>᫿V3( u*(!}{Hщ6&~$VC#a)f     P> @X+QUPa>џ )rَϏՅeE7ۊ`<@hT-vjZ.W ||LaL0rHZ9\ ŽKEJk֎ kS5 {.zQ)o3kaq%@ a\,Q VPwDXwQ!::4^ckb阮AXf     +^X;u>enT%(Z#S^5{O բ| "&y. k oj_S[{Ž89V?7gt Z Khabz*my!P XK[.m{=[dQ! (F2W/xE5KniOX;c*ZY6c:RG~^8A9T)|2]8.^H!pCŭŌTǗٺs3(/P*>}2o!z|ϓX+B ~ULQM"ni3[@ᾔCwSx Rx$ )#R/L%xxR K;w((EeTÏ;󵾘G9ݷU9Fgy -|:w0γXXݗU-=3#P ,dʥ-ij՚SPgݔq"I -HHa /jBYjp| oz՚ڃҏAuo¢6JY?ͬL.Sl߷:][&sPkiw+Joţ?דD}\o&Tote;Υګ~/)xp8%J^2qkv1qޟ b`RHlgt|;Zv6cu|5+uZ<Ҋ4P96v%uOOH>VHxh%4䓬k:G]h=Hk,s.~~/ZwP5.z2'R;fRDAZvݽ|RoK59fxbc5E{8lT]dhc:>S,mJ;i^ɺw}Qy-OYL띃1Y=xxթ{q՗P- ۰j.r_,3hςd}ZnI-G=!p;8=QjBk_K{<35-v#ּ8r%Ha_ӡEQ@64aͯZ}9}[Nu*ˬS S~.ELons]5a-딺y.qHYWgk8~[K;O1_Ul{m)/#UYUk>#tnrU&[TۣVnC);k>F-Dc[UD{?"rMs\UتI;J\V|˿ UmڏUY^DǨnQUs{~Л9#VZ뻭,{>[I|aNRh|kEygxλo)IʟށGĚwU_y~ڕx:lא=-hɝؚ oڟ塇]LO)3aM}N\ گM#ڏ3{sT<=-Q|ڙV~~<[o!gv_SbU8$_tS}$+/;~|hFP'-|鎮=CmG7 Ubvsz3{%c{FXYIeTkIgf%7D?+R;"E0zMX_w|zrUkOYsVouj5Ȯ w=g|_$965g<@E!Pfm o`֤/պ)`h*(mRG _lw64aM2O5:˝=rB-J 4aES{٘DmT(բcܱz*nM4R"J0slYZY~1Jo=W1Xzӊkyvrpeaxq9GiG)x7ئXpVb+ ){GMX`"v}٘sx-Ċ,Y1tܜaj     P&gژY7k Q@czWQ[V,]%eޙоwohj9fݣC"fY҄39]cYWo ?2MkL>BPi /VOqrT߄5%FC_VPh:X:~tztwrFXK73,ms+.)u*[Bzz yb,غ?͹C&zxfQS@fr$aM|m}wOj.~ Ѧmӄ5Yu~>bP~Nn9ODĸ6ڝu[r6}" 8訰&"һ~)`Q hUd57lB}`.JMX!7W,.O_R6wz(֜F     @kr]rZ8~Ʀ*/oʃT5/[T}yK|q屣}bӲkG)F&V k;=Huoad7,nwJE.)_\jp||c8+:<xj%E?A]% k;ogLG(!Gٿ[{ĺҧTPOl7bӝҿ?E'Ylgf:Z[IѮ|]CZEw}Y{i;-{jZS~mx!LšG.Ո QXc?eQwԮ~J?^?^WkletׄkjLQ_<"Zy2 b?Gż2Ԫ/K %~|DYruSl[wW8QaMWG5WPvn|y2%uavת}QN.9*ތGd5G( @$&Nmo*%s㿾E7B{Q-veVTp\lTZae&X8o=voGI5a-cUNm%mfVQsDlwh8_=ovAB9Bߛշ|)IX@ ,y²V[j),W{٭S\3š 9*>JYhm\BvU"X )yeOgFtgTX)j6[U1Qgj=_/}WlNHj>:UL!&>}Q%55]֮}٪{(y9&Z^: !kcx$Dٴw Fi&iLHT!T-!cil먰YjVZZ3s?,b]僅Gc \3etj֜…     @kbR9*X;ٗv]ttKYqFËl74FY'v{; "ԺvչE|c&YWʜݽ#@d.O8%wMXcQ|\+!?$dlrI_ͩlK4RֺiݻD+մw]t W"ڭTL3š4k::r9vyX3ՑqTRqBbE16?K`,p95/!tÆPQT5(XQw<՜X`Jr/) kMn[5?QI|tMꌙιlQeT*JLq|Cm̆&Gw9F9A\=Oՠk"lzֶ8Bw\ Mg\ID15>8jkS. !A8!#t NkWxٺ*I1}_C,hWx[)~\+cl֙jj>,bwiZ/P략*i\ ;VlayiZ-F,޵⏭DX3m Y,7x4[%ۼ$s&?}4- lFƐD k҇.Q$g5c٧Y0z#f&\w2ӟ]wqXcDVa.hM/Ś %7ϥݟAL/[IzM^ZkV볠C5l& d@{T c|A ljp $kp1UѸ=RN(}8LOG^g^\;]9x\fzczuwuŜmeX +UZph!Vgv:[eT~eo?0^0$2&=Em}ک/j(vh8/oÿ V5}_r? w6g3;c7`s_XJȉ2w:&Υ;9¿%ϐMg3'|IXQTVG5G>?'YAk/.as|+( 0geZMւǿY}KǛJ!ʜd={vڷ]%ٍҜBW[⬩&%Κ&VH殡0ҁf.-d`=GlROaM^ ʸW\F]Y$M.)#yɞA7?G,gBwJ(w'Xu9gU٭vAe8 L8laU}Pvh)%S+H϶qt3f3t jdvOg/r-38jrҜ9&lr75a%Y|ҫUšHb?" o"g?D:bu63[^XKλ6FRzhumN0Y'gExd:ҏ%*lI+)tv\2ZEҹ0QJUJ({d1m}gRR)&8 JJ F|)֖(MFS1­ZdNJ@\KW2̧>K4*>;Ґ9f-HTJ-g;ԽHߙ9"\CI ("9q^nkKw/-Vqrmk@@@@@hi35a.!UpFTٖp*9/z@2ű~ }- ˙ݹ'[۝ZTJzş,GˑfӯJ{FmtكC@9\\Ik 9η4aMLivxCXk*Tj NRɇS=OFLc̞Wdu{ww k1)SBƫ,+rRz9i4L=+l]AXsY      ROf)[Vv.,Rzq)`@ =ٮUqCXM'% Y75kn86vp8wkA@@@@|r ka|P,4~'e5_FcWT6WRQ$J4EWCAja->u#,!yO>5tdCcvx8ɡ*!5|=Oif|MXW iN%AN,{fnxš~1%fu X!y3     }8ܮb"<kh[k lAqY+(:SpNk@[v(Ra3X k_Å}p@VtntOPsua4!ع;cG_ šGqa     !?7<7'Px5 8okG;57x㺋go@- kr:[h5N$@nk6aE      `T{<]ܟ]9T;-\J;"<8\b %ln k:s;O16b% >6x6i+y<')6I 8 { return "", errors.New("intend should be between 1-8 spaces") } indent := strings.Repeat(" ", indentWidth) if tabIndent, err = flags.GetBool("tab"); err != nil { return "", err } if tabIndent { indent = "\t" } return indent, nil } func initViper() error { viper.SetConfigName(".xq") viper.SetConfigType("env") viper.AddConfigPath("$HOME") viper.AddConfigPath(".") viper.SetDefault("indent", 2) viper.SetDefault("tab", false) viper.SetDefault("no-color", false) viper.SetDefault("color", false) if err := viper.ReadInConfig(); err != nil { if _, ok := err.(viper.ConfigFileNotFoundError); !ok { return err } } return nil } func getXpathQuery(flags *pflag.FlagSet) (query string, single bool) { if query, _ = flags.GetString("xpath"); query != "" { return query, false } query, _ = flags.GetString("extract") return query, true } func getColorMode(flags *pflag.FlagSet) int { colors := utils.ColorsDefault disableColors, _ := flags.GetBool("no-color") if disableColors { colors = utils.ColorsDisabled } forcedColors, _ := flags.GetBool("color") if forcedColors { colors = utils.ColorsForced } return colors } xq-1.0.0/docs/000077500000000000000000000000001433177177200131045ustar00rootroot00000000000000xq-1.0.0/docs/xq.man000066400000000000000000000030661433177177200142360ustar00rootroot00000000000000.\" Manpage for xq utility .TH XQ 1 "06 Nov 2022" "0.0.8" "xq man page" .SH NAME xq - command-line XML and HTML beautifier and content extractor .SH SYNOPSIS xq [\fIoptions...\fR] [\fIfile\fR] .SH DESCRIPTION Formats the provided \fIfile\fR and outputs it in the colorful mode. The file can be provided as an argument or via stdin. .SH OPTIONS .PP \fB--version\fR | \fB-v\fR .RS 4 Prints versions information and exits. .RE .PP \fB--help\fR | \fB-h\fR .RS 4 Prints the synopsis and a list of options and exits. .RE .PP \fB--indent\fR \fIint\fR .RS 4 Uses the given number of spaces for indentation (default 2). .RE .PP \fB--no-color\fR .RS 4 Disables colorful output (only formatting). .RE .PP \fB--tab\fR .RS 4 Uses tabs instead of spaces for indentation. .RE .PP \fB--xpath\fR | \fB-x\fR \fIstring\fR .RS 4 Extracts the node(s) from XML using provided XPath query. .RE .PP \fB--extract\fR | \fB-e\fR \fIstring\fR .RS 4 Extracts a single node from XML using provided XPath query. .RE .PP \fB--html\fR | \fB-m\fR .RS 4 Uses HTML formatter instead of XML. .RE .SH EXAMPLES .PP Format an XML file and highlight the syntax: .RS 4 $ xq test/data/xml/unformatted.xml .RE .PP Utility also accepts input through stdin: .RS 4 $ curl -s https://www.w3schools.com/xml/note.xml | xq .RE .PP HTML content can be formatted and highlighted using -m flag: .RS 4 $ xq -m test/data/html/formatted.html .RE .PP Extract the text content of all nodes with city name: .RS 4 $ cat test/data/xml/unformatted.xml | xq -x //city .RE .SH SEE ALSO .PP \fBhttps://github.com/sibprogrammer/xq\fR - official website xq-1.0.0/go.mod000066400000000000000000000025221433177177200132630ustar00rootroot00000000000000module github.com/sibprogrammer/xq go 1.19 require ( github.com/antchfx/xmlquery v1.3.8 github.com/fatih/color v1.13.0 github.com/spf13/cobra v1.2.1 github.com/spf13/pflag v1.0.5 github.com/spf13/viper v1.9.0 github.com/stretchr/testify v1.7.0 golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2 golang.org/x/text v0.3.7 ) require ( github.com/antchfx/xpath v1.2.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/fsnotify/fsnotify v1.5.1 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/inconshreveable/mousetrap v1.0.0 // indirect github.com/magiconair/properties v1.8.5 // indirect github.com/mattn/go-colorable v0.1.11 // indirect github.com/mattn/go-isatty v0.0.14 // indirect github.com/mitchellh/mapstructure v1.4.2 // indirect github.com/pelletier/go-toml v1.9.4 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/spf13/afero v1.6.0 // indirect github.com/spf13/cast v1.4.1 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/subosito/gotenv v1.2.0 // indirect golang.org/x/sys v0.0.0-20211117180635-dee7805ff2e1 // indirect gopkg.in/ini.v1 v1.64.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect ) xq-1.0.0/go.sum000066400000000000000000002110101433177177200133020ustar00rootroot00000000000000cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= cloud.google.com/go/firestore v1.6.0/go.mod h1:afJwI0vaXwAG54kI7A//lP/lSPDkQORQuMkv56TxEPU= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/antchfx/xmlquery v1.3.8 h1:dRnBQM3Vk5BVJFvFwsHOLAox+mEiNw5ZusaUNCrEdoU= github.com/antchfx/xmlquery v1.3.8/go.mod h1:wojC/BxjEkjJt6dPiAqUzoXO5nIMWtxHS8PD8TmN4ks= github.com/antchfx/xpath v1.2.0 h1:mbwv7co+x0RwgeGAOHdrKy89GvHaGvxxBtPK0uF9Zr8= github.com/antchfx/xpath v1.2.0/go.mod h1:i54GszH55fYfBmoZXapTHN8T8tkcHfRgLyVwwqzXNcs= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.5.1 h1:mZcQUHVQUQWoPXXtuf9yuEXKudkV2sx1E06UadKWpgI= github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= github.com/hashicorp/consul/api v1.10.1/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M= github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= github.com/hashicorp/mdns v1.0.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg2DmyNY= github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= github.com/hashicorp/memberlist v0.2.2/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/hashicorp/serf v0.9.5/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.0 h1:s5hAObm+yFO5uHYt5dYjxi2rXrsnmRpJx4OYvIWUaQs= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/magiconair/properties v1.8.5 h1:b6kJs+EmPFMYGkow9GiUyCyOvIwYetYJ3fSaWak/Gls= github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.11 h1:nQ+aFkoE2TMGc0b68U2OKSexC+eq46+XwZzWXHRmPYs= github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.4.2 h1:6h7AQ0yhTcIsmFmnAwQls75jp2Gzs4iB8W7pjMO+rqo= github.com/mitchellh/mapstructure v1.4.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/pelletier/go-toml v1.9.4 h1:tjENF6MfZAg8e4ZmZTeWaWiT2vXtsoO6+iuOjFhECwM= github.com/pelletier/go-toml v1.9.4/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/sagikazarmark/crypt v0.1.0/go.mod h1:B/mN0msZuINBtQ1zZLEQcegFJJf9vnYIR88KRMEuODE= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.6.0 h1:xoax2sJ2DT8S8xA2paPFjDCScCNeWsg75VG0DLRreiY= github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.4.1 h1:s0hze+J0196ZfEMTs80N7UlFt0BDuQ7Q+JDnHiMWKdA= github.com/spf13/cast v1.4.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cobra v1.2.1 h1:+KmjbUw1hriSNMF55oPrkZcb27aECyrj8V2ytv7kWDw= github.com/spf13/cobra v1.2.1/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t68Nk= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= github.com/spf13/viper v1.9.0 h1:yR6EXjTp0y0cLN8OZg1CRZmOBdI88UcGkhgyJhu6nZk= github.com/spf13/viper v1.9.0/go.mod h1:+i6ajR7OX2XaiBkrcZJFK21htRk7eDeLg7+O6bhUPP4= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2 h1:CIJ76btIcR3eFI5EgSo6k1qKw9KJexJuRLI9G7Hp5wE= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211117180635-dee7805ff2e1 h1:kwrAHlwJ0DUBZwQ238v+Uod/3eZ8B2K5rYsUHBQvzmI= golang.org/x/sys v0.0.0-20211117180635-dee7805ff2e1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= google.golang.org/api v0.44.0/go.mod h1:EBOGZqzyhtvMDoxwS97ctnh0zUmYY6CxqXsc1AvkYD8= google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.63.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.64.0 h1:Mj2zXEXcNb5joEiSA0zc3HZpTst/iyjNiR4CN8tDzOg= gopkg.in/ini.v1 v1.64.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= xq-1.0.0/internal/000077500000000000000000000000001433177177200137705ustar00rootroot00000000000000xq-1.0.0/internal/utils/000077500000000000000000000000001433177177200151305ustar00rootroot00000000000000xq-1.0.0/internal/utils/utils.go000066400000000000000000000164001433177177200166200ustar00rootroot00000000000000package utils import ( "encoding/xml" "fmt" "github.com/antchfx/xmlquery" "github.com/fatih/color" "golang.org/x/net/html" "golang.org/x/text/encoding/ianaindex" "golang.org/x/text/transform" "io" "os" "os/exec" "strings" ) const ( ColorsDefault = iota ColorsForced ColorsDisabled ) func FormatXml(reader io.Reader, writer io.Writer, indent string, colors int) error { decoder := xml.NewDecoder(reader) decoder.CharsetReader = func(charset string, input io.Reader) (io.Reader, error) { e, err := ianaindex.MIME.Encoding(charset) if err != nil { return nil, err } return transform.NewReader(input, e.NewDecoder()), nil } level := 0 hasContent := false nsAliases := map[string]string{} lastTagName := "" startTagClosed := true if ColorsDefault != colors { color.NoColor = colors == ColorsDisabled } tagColor := color.New(color.FgYellow).SprintFunc() attrColor := color.New(color.FgGreen).SprintFunc() commentColor := color.New(color.FgHiBlue).SprintFunc() for { token, err := decoder.Token() if err == io.EOF { break } if err != nil { return err } switch typedToken := token.(type) { case xml.ProcInst: _, _ = fmt.Fprintf(writer, "%s%s", tagColor("")) case xml.StartElement: if !startTagClosed { _, _ = fmt.Fprint(writer, tagColor(">")) startTagClosed = true } if level > 0 { _, _ = fmt.Fprint(writer, "\n", strings.Repeat(indent, level)) } var attrs []string for _, attr := range typedToken.Attr { if attr.Name.Space == "xmlns" { nsAliases[attr.Value] = attr.Name.Local } if attr.Name.Local == "xmlns" { nsAliases[attr.Value] = "" } attrs = append(attrs, getTokenFullName(attr.Name, nsAliases)+attrColor("=\""+attr.Value+"\"")) } attrsStr := strings.Join(attrs, " ") if attrsStr != "" { attrsStr = " " + attrsStr } currentTagName := getTokenFullName(typedToken.Name, nsAliases) _, _ = fmt.Fprint(writer, tagColor("<"+currentTagName)+attrsStr) lastTagName = currentTagName startTagClosed = false level++ case xml.CharData: str := string(typedToken) str = strings.TrimSpace(str) hasContent = str != "" if hasContent && !startTagClosed { _, _ = fmt.Fprint(writer, tagColor(">")) startTagClosed = true } _, _ = fmt.Fprint(writer, str) case xml.Comment: if !startTagClosed { _, _ = fmt.Fprint(writer, tagColor(">")) startTagClosed = true } if !hasContent && level > 0 { _, _ = fmt.Fprint(writer, "\n", strings.Repeat(indent, level)) } _, _ = fmt.Fprint(writer, commentColor("")) if level == 0 { _, _ = fmt.Fprint(writer, "\n") } case xml.EndElement: level-- currentTagName := getTokenFullName(typedToken.Name, nsAliases) if !hasContent { if lastTagName != currentTagName { if !startTagClosed { _, _ = fmt.Fprint(writer, tagColor(">")) startTagClosed = true } _, _ = fmt.Fprint(writer, "\n", strings.Repeat(indent, level), tagColor("")) } else { _, _ = fmt.Fprint(writer, tagColor("/>")) startTagClosed = true } } else { _, _ = fmt.Fprint(writer, tagColor("")) } hasContent = false lastTagName = currentTagName default: } } _, _ = fmt.Fprint(writer, "\n") return nil } func XPathQuery(reader io.Reader, writer io.Writer, query string, singleNode bool) error { doc, err := xmlquery.Parse(reader) if err != nil { return err } if singleNode { if n := xmlquery.FindOne(doc, query); n != nil { _, _ = fmt.Fprintf(writer, "%s\n", n.InnerText()) } } else { for _, n := range xmlquery.Find(doc, query) { _, _ = fmt.Fprintf(writer, "%s\n", n.InnerText()) } } return nil } func FormatHtml(reader io.Reader, writer io.Writer, indent string, colors int) error { tokenizer := html.NewTokenizer(reader) if ColorsDefault != colors { color.NoColor = colors == ColorsDisabled } tagColor := color.New(color.FgYellow).SprintFunc() attrColor := color.New(color.FgGreen).SprintFunc() commentColor := color.New(color.FgHiBlue).SprintFunc() level := 0 hasContent := false selfClosingTags := getSelfClosingTags() for { token := tokenizer.Next() if token == html.ErrorToken { err := tokenizer.Err() if err == io.EOF { break } return err } switch token { case html.TextToken: str := string(tokenizer.Text()) str = strings.TrimSpace(str) hasContent = str != "" _, _ = fmt.Fprint(writer, str) case html.StartTagToken, html.SelfClosingTagToken: if level > 0 { _, _ = fmt.Fprint(writer, "\n", strings.Repeat(indent, level)) } tagName, hasAttr := tokenizer.TagName() selfClosingTag := token == html.SelfClosingTagToken if !selfClosingTag && selfClosingTags[string(tagName)] { selfClosingTag = true } var attrs []string attrsStr := "" if hasAttr { for { attrKey, attrValue, moreAttr := tokenizer.TagAttr() attrs = append(attrs, string(attrKey)+attrColor("=\""+string(attrValue)+"\"")) if !moreAttr { break } } attrsStr = " " + strings.Join(attrs, " ") } _, _ = fmt.Fprint(writer, tagColor("<"+string(tagName))+attrsStr) if selfClosingTag { _, _ = fmt.Fprint(writer, tagColor("/>")) } else { level++ _, _ = fmt.Fprint(writer, tagColor(">")) } case html.EndTagToken: level-- tagName, _ := tokenizer.TagName() if !hasContent { _, _ = fmt.Fprint(writer, "\n", strings.Repeat(indent, level)) } _, _ = fmt.Fprint(writer, tagColor("")) hasContent = false case html.DoctypeToken: docType := tokenizer.Text() _, _ = fmt.Fprintf(writer, "%s%s%s\n", tagColor("")) case html.CommentToken: comment := tokenizer.Text() if !hasContent && level > 0 { _, _ = fmt.Fprint(writer, "\n", strings.Repeat(indent, level)) } _, _ = fmt.Fprint(writer, commentColor("")) if level == 0 { _, _ = fmt.Fprint(writer, "\n") } } } _, _ = fmt.Fprint(writer, "\n") return nil } func PagerPrint(reader io.Reader) error { pager := os.Getenv("PAGER") if pager != "less" { _, err := io.Copy(os.Stdout, reader) return err } cmd := exec.Command(pager, "--quit-if-one-screen", "--no-init", "--RAW-CONTROL-CHARS") cmd.Stdin = reader cmd.Stdout = os.Stdout return cmd.Run() } func getTokenFullName(name xml.Name, nsAliases map[string]string) string { result := name.Local if name.Space != "" { space := name.Space if alias, ok := nsAliases[space]; ok { space = alias } if space != "" { result = space + ":" + name.Local } } return result } func getSelfClosingTags() map[string]bool { return map[string]bool{ "area": true, "base": true, "br": true, "col": true, "embed": true, "hr": true, "img": true, "input": true, "keygen": true, "link": true, "meta": true, "param": true, "source": true, "track": true, "wbr": true, } } xq-1.0.0/internal/utils/utils_test.go000066400000000000000000000031731433177177200176620ustar00rootroot00000000000000package utils import ( "github.com/stretchr/testify/assert" "io" "os" "path" "strings" "testing" ) func TestFormatXml(t *testing.T) { files := map[string]string{ "unformatted.xml": "formatted.xml", "unformatted2.xml": "formatted2.xml", "unformatted3.xml": "formatted3.xml", "unformatted4.xml": "formatted4.xml", "unformatted5.xml": "formatted5.xml", } for unformattedFile, expectedFile := range files { unformattedXmlReader := getFileReader(path.Join("..", "..", "test", "data", "xml", unformattedFile)) bytes, readErr := os.ReadFile(path.Join("..", "..", "test", "data", "xml", expectedFile)) assert.Nil(t, readErr) expectedXml := string(bytes) output := new(strings.Builder) formatErr := FormatXml(unformattedXmlReader, output, " ", ColorsDisabled) assert.Nil(t, formatErr) assert.Equal(t, expectedXml, output.String()) } } func TestFormatHtml(t *testing.T) { files := map[string]string{ "unformatted.html": "formatted.html", "unformatted2.html": "formatted2.html", } for unformattedFile, expectedFile := range files { unformattedHtmlReader := getFileReader(path.Join("..", "..", "test", "data", "html", unformattedFile)) bytes, readErr := os.ReadFile(path.Join("..", "..", "test", "data", "html", expectedFile)) assert.Nil(t, readErr) expectedHtml := string(bytes) output := new(strings.Builder) formatErr := FormatHtml(unformattedHtmlReader, output, " ", ColorsDisabled) assert.Nil(t, formatErr) assert.Equal(t, expectedHtml, output.String()) } } func getFileReader(filename string) io.Reader { reader, err := os.Open(filename) if err != nil { panic(err) } return reader } xq-1.0.0/main.go000066400000000000000000000003511433177177200134260ustar00rootroot00000000000000package main import ( "fmt" "github.com/sibprogrammer/xq/cmd" ) var ( commit = "000000" date = "unknown" version = "0.0.0" ) func main() { cmd.Version = fmt.Sprintf("%s (%s, %s)", version, date, commit) cmd.Execute() } xq-1.0.0/scripts/000077500000000000000000000000001433177177200136435ustar00rootroot00000000000000xq-1.0.0/scripts/build-hook.sh000077500000000000000000000001461433177177200162400ustar00rootroot00000000000000#!/bin/bash -xv set -e [ "$HOOK_TARGET" != "darwin_arm64" ] && upx --best --lzma $HOOK_PATH exit 0 xq-1.0.0/scripts/install.sh000077500000000000000000000012121433177177200156440ustar00rootroot00000000000000#!/bin/bash set -e URL_PREFIX="https://github.com/sibprogrammer/xq" INSTALL_DIR=/usr/local/bin/ BINARY=xq LATEST_VERSION=$(curl -L -s -H 'Accept: application/json' $URL_PREFIX/releases/latest | sed -e 's/.*"tag_name":"v\([^"]*\)".*/\1/') PLATFORM=$(uname -s | tr A-Z a-z) [ "$(uname -m)" = "x86_64" ] && ARCH=amd64 || ARCH=arm64 ARCHIVE="${BINARY}_${LATEST_VERSION}_${PLATFORM}_${ARCH}.tar.gz" URL="$URL_PREFIX/releases/download/v${LATEST_VERSION}/$ARCHIVE" echo "Installation of $BINARY" rm -f $INSTALL_DIR$BINARY curl -sSL "$URL" | tar xz -C $INSTALL_DIR $BINARY chmod +x $INSTALL_DIR$BINARY echo "Successfully installed at $INSTALL_DIR$BINARY" xq-1.0.0/test/000077500000000000000000000000001433177177200131335ustar00rootroot00000000000000xq-1.0.0/test/data/000077500000000000000000000000001433177177200140445ustar00rootroot00000000000000xq-1.0.0/test/data/html/000077500000000000000000000000001433177177200150105ustar00rootroot00000000000000xq-1.0.0/test/data/html/formatted.html000066400000000000000000000001351433177177200176620ustar00rootroot00000000000000 Test

text

xq-1.0.0/test/data/html/formatted2.html000066400000000000000000000005651433177177200177530ustar00rootroot00000000000000 HTML 5 Boilerplate
link here xq-1.0.0/test/data/html/unformatted.html000066400000000000000000000001251433177177200202240ustar00rootroot00000000000000 Test

text

xq-1.0.0/test/data/html/unformatted2.html000066400000000000000000000005451433177177200203140ustar00rootroot00000000000000 HTML 5 Boilerplate link here xq-1.0.0/test/data/xml/000077500000000000000000000000001433177177200146445ustar00rootroot00000000000000xq-1.0.0/test/data/xml/formatted.xml000066400000000000000000000003601433177177200173520ustar00rootroot00000000000000 John Smith
1234 Main Road Bellville
xq-1.0.0/test/data/xml/formatted2.xml000066400000000000000000000003741433177177200174410ustar00rootroot00000000000000 xq-1.0.0/test/data/xml/formatted3.xml000066400000000000000000000010701433177177200174340ustar00rootroot00000000000000 http://site1.ru/page1.html 1.1.1.1 site2.ru 2.2.2.2 3.3.3.3 xq-1.0.0/test/data/xml/formatted4.xml000066400000000000000000000002511433177177200174350ustar00rootroot00000000000000 xq-1.0.0/test/data/xml/formatted5.xml000066400000000000000000000000101433177177200174270ustar00rootroot00000000000000 xq-1.0.0/test/data/xml/unformatted.xml000066400000000000000000000003301433177177200177120ustar00rootroot00000000000000 JohnSmith
1234 Main RoadBellville
xq-1.0.0/test/data/xml/unformatted2.xml000066400000000000000000000003731433177177200200030ustar00rootroot00000000000000 xq-1.0.0/test/data/xml/unformatted3.xml000066400000000000000000000012251433177177200200010ustar00rootroot00000000000000 1.1.1.1 2.2.2.2 3.3.3.3 xq-1.0.0/test/data/xml/unformatted4.xml000066400000000000000000000002721433177177200200030ustar00rootroot00000000000000 xq-1.0.0/test/data/xml/unformatted5.xml000066400000000000000000000000161433177177200200000ustar00rootroot00000000000000