PDFファイルの構造について
2021年06月07日
あんまり実りがなかったけど、備忘のために投稿。
専用アプリで作ったデータを更新日時順にPDF保存している。
元データを更新してPDF化すると、新旧のデータが存在してしまうので、
旧データを消したい。
ファイルの更新有無だったら、ハッシュ値!
PDFファイルからハッシュ値を出してって、ハッシュ値じゃファイルが一致していることを簡単に確認できるけど、更新は判断ができないので断念。
じゃあPDFファイルを直接比べたらどうか?ってことで調べてみた。
今まで知らなかったけど、PDFファイルってテキストエディタで開けるのね。
1.ヘッダ
2.本体
3.xref:相互参照テーブル(オブジェクトの位置を一覧化)
4.trailer:トレーラー(相互参照テーブルの位置が書いてある)
の構成になっている。
最初にヘッダ2行を読んで、次に最後のトレーラを読みに行くらしい。驚き。
トレーラーから相互参照テーブルの位置を割り出して、
本体の各オブジェクトに一発アクセスができる仕組みになっている。
参考サイト
https://techracho.bpsinc.jp/west/2018_12_07/65062
https://itchyny.hatenablog.com/entry/2015/09/16/100000
じゃあ、元ファイルの更新前後で専用アプリから作られるPDFファイルが
どう変化するか調べるべく、元データを覗いてみた。
。。。
図面データが全ページ差し替えって、そらどうにもならんわ!!!
今回はテキストエディタでPDFを開けるってのが大きな収穫。
本体部分は文字化けしててあんまり使えないけど、
そのほかの部分はGrep検索に使えるかも。
以下、適当なファイルのPDFソース
専用アプリで作ったデータを更新日時順にPDF保存している。
元データを更新してPDF化すると、新旧のデータが存在してしまうので、
旧データを消したい。
ファイルの更新有無だったら、ハッシュ値!
PDFファイルからハッシュ値を出してって、ハッシュ値じゃファイルが一致していることを簡単に確認できるけど、更新は判断ができないので断念。
じゃあPDFファイルを直接比べたらどうか?ってことで調べてみた。
今まで知らなかったけど、PDFファイルってテキストエディタで開けるのね。
1.ヘッダ
2.本体
3.xref:相互参照テーブル(オブジェクトの位置を一覧化)
4.trailer:トレーラー(相互参照テーブルの位置が書いてある)
の構成になっている。
最初にヘッダ2行を読んで、次に最後のトレーラを読みに行くらしい。驚き。
トレーラーから相互参照テーブルの位置を割り出して、
本体の各オブジェクトに一発アクセスができる仕組みになっている。
参考サイト
https://techracho.bpsinc.jp/west/2018_12_07/65062
https://itchyny.hatenablog.com/entry/2015/09/16/100000
じゃあ、元ファイルの更新前後で専用アプリから作られるPDFファイルが
どう変化するか調べるべく、元データを覗いてみた。
。。。
図面データが全ページ差し替えって、そらどうにもならんわ!!!
今回はテキストエディタでPDFを開けるってのが大きな収穫。
本体部分は文字化けしててあんまり使えないけど、
そのほかの部分はGrep検索に使えるかも。
以下、適当なファイルのPDFソース
%PDF-1.4
%粤マモ
1 0 obj<>/Metadata 130 0 R/Pages 2 0 R/Type/Catalog>>
endobj
2 0 obj<>
endobj
7 0 obj<>/Font<>/ProcSet[/PDF/Text]/ExtGState<>>>/Type/Page>>
endobj
12 0 obj<>
endobj
33 0 obj[/Separation/#83u#83#8B#81#5B/DeviceRGB<>]
endobj
34 0 obj<>
endobj
35 0 obj[36 0 R]
endobj
36 0 obj<>
endobj
37 0 obj<>
endobj
38 0 obj<>
endobj
39 0 obj<>
endobj
40 0 obj[41 0 R]
endobj
41 0 obj<>
endobj
42 0 obj<>
endobj
43 0 obj<>
endobj
44 0 obj<>
endobj
46 0 obj<>
endobj
56 0 obj<>stream
H仮W翫8~ぞダ`ヤ・゚4
カ・フqp0・c膨nfリルロsヌツ=・K*ヒq:ン7M:周ユ'ユW・R鰕4ミhッ匆ヲq・逶ヌ/サ6ソ・・ミ|ムメ・・ヨ<イサ・!゚~・「疊@・+"O汨kNHn蟄!・ワRK9シ疑$「V黄2frネ9ヲ0QォトTアス8F&j葺調Tい~BEqモt鰐Oエ.ェH。j[シチzメ#・ソP22QESFe*j虜jヒaヲI簗ィフE・WmY$ァ\併ィ]簗・!Jjメ<c・「#8Mコ4RKQヤ痲ェヌ・+ U・3Wェ+・鰍&・贐ンンOxヌョ;濵z聰鴉ホ・B滋鰉`ka・Er・ァawョ;げt・・・N゚w・倒B・lク}*・オO・XcAZ^・{0V碌>ソモホ・靏・~蜆・暴ロ・クセ;キソ註チエ早sゼ %`・#ンオRX汽 +"@"珱囘メ翦ミハホW㍑)マ跨UホクP:ハ・/BleedBox[0.0 0.0 595.276 841.89]/ArtBox[0.0 0.0 595.276 841.89]/MediaBox[0.0 0.0 595.276 841.89]/Thumb 128 0 R/TrimBox[0.0 0.0 595.276 841.89]/Resources<>/Font<>/ProcSet[/PDF/Text]/ExtGState<>>>/Type/Page>>
endobj
81 0 obj<>/A 83 0 R/H/N/Border[0 0 0]/Type/Annot>>
endobj
82 0 obj[81 0 R]
endobj
83 0 obj<>
endobj
85 0 obj[/Separation/#83#8C#83b#83h/DeviceRGB<>]
endobj
107 0 obj<>stream
H歌W・ワカ~・ス@鞦・・ゥ@|・8u共ア腿)R・/ZIヨ槢サF・「ネケq7<QG搓V(・`、ア{踝鉋ン餠zM]zンノョ{・・?u$t・・u゚aロマロ}u仼ッモ媽錥樵t・:ス・6テノAAw゙(A^woO侃・,3ソ弯沐BZケZ・1c「ワャメ6ツハオ,蝿n+ォ)ヤ$H9V(ス0ヒ裵.ィユュ 井f普ミィ!・・ォャU",・&クャフE-B0X=徭ヒD^cEソホE・ロ罧・カ瑛PツZ{Ycエホル&FI畫鰥ヒヲ:テ却drudモirB〝=kf・Oxマ・wァ・3・ツ鏞゚p闖O8衂゚=b?<・*ゥ;ホ:4・憺゚楡?IG*uヲ・Rト・鍾棣ヌ怦ャ・・痴ァ・・・エE[.レ テΜ・I%纖Tッ蜜~s+#&3・7#nV髏・ム_ォイjWTエ・QールJ」。)・%I=セケ槓z燮・戴 緤5?独Sテニ・楸・?oXィ9|Кムミャ=・a゙濔貉0$怕ソD゙u゚Lム・」`Ё$yャa棧|HaソNcシ'・ヒUy婦wホ>u晴y58izリ7⑨讃諏畏%\痿・&襲4ォ嬖糊Fq封1y・ァ"χVナ・ネD.hイAQL#・8タ蚪Ik)D、押a・)cケ]}0瀨釁]bッモォラソ|~ユ?1d?セo轌・UムテテC7見;0シ7 ic9ュモwリイ・キ(ロ楽ylK1!サ5ムO・@]
ィjュ・゙ミッネZoユ・昊tC霧嘲P?*・?ス・ ]zJィ9・"`ソ=鰉1コ・yU阯ワⅣ;雷ハ ァ・(8カサ$R_6・ e愎V歌A%ZW ョ6ケ石*Wソ撚「」セニ(|f~z淹ェ・*[~「リ揚備Y゙QヒEコャヌ/皛睹cー飾ル・ノ(・゚・銓=ネイUキシヘヲ・ン貊vT灌「[・<M}コヲォャuc*vOEHKウ悠婦履エアljc3リHカ。イェ・・キ⊥麗。ニケ・鑵:・溲1・籥般>[モハJ-l脾ス5Aオ異)躋}殍$・*rクルq(クェワb觸|g^z3sナ]ヘZh&ツ@リ=・フ}g;fセ・苳SJ[犒駆X&マ*・・貂Y設Hw豬
~榛fH!;8]ウワカ初8sk\%セFw眸朶.S
~擅マ5・コ
總・罅C⑯SKークチaワケタfウノ!ユ6!B*エ゚卩tルU、r3R゚R・8・P~{4椿_昕Tシ5gュL_ラrマロ`T轗シ茯o露ケ・ルaWマリ・ワ~ホハY!]T;テ寛・7
AXセ?9ナヨZユ憮桃ニ。・r「レヲメq・3Zミ・シVa摠ツレxセレヲチuマラrヤIuw^/「{カリ蔦懲・ラVscF・+ラ\」Hタ副p・・リYォZヤ9」 カイ羣CF便ヲ^ツ萠C⇒・護>md。モ虜rレ・・bス艦ヨレワ棊斤"クu勝Y・Xゥゥ0衢RK・・ノ・セユO娃~P7^シP4sォPK{ォhq機匚2@WKル"`ヨュ0。5J・Y$o`、・許8ムョレ盧蓐クェ*:「@・uリイツニ(4瑢ヒ
・V(オ&・Z>コ雇;Jメ~籾 スr・圸ミ・Z・K[・・・&ホPー
リ」rル樰ナ=ァAy曖琇チ0ノ
6ヒハ&!w 間X)叺「ゥ<e_Ⅹ槧フケ覩)・ヌ・ホ 「宦樊マ`lmメt哩&・・*湾}・・| ・dムャx・・俥U繖ワ/0「Oc・}・(AP・・ゥ・ホZエ?ゥFゥ悲オ筥<7ヒ・・/Fルツ/雖PW・0莢ッP#ナシ`@]Vサ"・|ィg箒pZ駻罩コBjv4S・#イイ府Fル・ヤ病9・Wリ4l・Oッ苺;゙オGE篏ホ∟ 均hヘルy・9=Dゥ]Qyュtトタ,ワypA+
>トVr・h、シ0属^・4B俉・s・フゥ3騰31エ[SラウロナU'・旭JRオ5フ襖埈ロ゙庚#.ァ﨣マスュェ贏・・TM・・・9ヨO殊 エヤ2オud・~擧ナj徼ヘクク荢巐ヒ.束ヲ 碎v1ョM1劒摠曠lV.V・ロ・s・>・ラ]Za*}aサナ益3_。兼1ヤ伍ラ=ィ槇鋤ミСホfィ・ Vェ膤丑・シ^ヲ段ー9F「逓ハQ~ШァオFァTォ$y訊タ・・・9C.゚ヲネf舟アM栽I・孀щ$!)・ノDイ・D・Bv#%Hr9間 uHr@・・-・・ケ・・。”(コユア\Xb・CーFフ・bキアgカホカ|[wロ4ロtロbロrロ渟[ニ6ーOレHサhサ*サi・'献・p・纜ヌr羣ケWケモワ+・・k'0!6ヘC 鄕~ネ .(J晤・h#4{ツ輙メm^ {v醐・・q・チ・S匏錚ツハチツlラアE・v・・クY・ソ:゙v・ス・4ソ濳gメ9゚,・=n<ァ2・ワ・{フ,z盪蜩g「s祇,yセエノ・・._・・}ミ内チ・・ZCャm・マD谿湃p1
宵塩ニクヌナ)羸ンネ・Oh・イ・4d・B~イシヌ嫖1ホ$アVnチ鮟ウ.・ウモイ菘uォgvVc~X・キョ愧拑g諛%輌ヒ7,pov・茗f~Xp/p@"・倣ウe疎?fL濮チマッ佐Pfイ\iV[仏ウZd}IェCキ8ン狼lセ%莇シ"ケFワ]璉>ユ榜゙№wンpッ・コ5・MGソハ・ミ檻ィ>Z_燕顫
ュ菴 Q・ヒR・. 茣}E穏Tjエ苣+
・X贄ホ*mq!L畄*シx・@・コ&cD/~ケ・=(テ;Hpォ・Dィ萃ゥ
鏨ェJ、ユ喀ュm0ォャHマ壁Mソ牘.&l
Zー~エフ~tYュ・。・*璋櫨・・囎mI゚ウ迥aン陦・$怎^p&K・н惘ェ砧チ ・ヨネェ妣pf9E+aワ!0P・。Nノb「h4筵Z}ハ・jカbG《。海>`f.
・B@ヒ茄|覘2ヒフゥpムUHL<⑤ウァテケ酬a・ハ碧ト a・」7、キJ2-q・n愍:6:b2b゙・ST鴾ュ。ムK「[メ・l簔ヲmゾ':ッ_・nカV綯K崧氓・。`.偐・ 録}d3臆B!Dn・=6\_)l渥フノノNヨI_l3ヤルDヘヌ秦詢・ラェoェSdリzgWォァ・體ケィ
TS樫・・g]・ラョセ梧,G・ソw左`・・|・MR婦エカチクフョツnLッB澀p繒フ・nヒDフヘア畯ンz"?・E匠@xoタr/゙鷹vェヘフj・槹=D4ヨ備*ェ琮カ髙・ロ゙c ホ<{NケdGg、Fヌヌ$、・髄ュリ1溌喧瞬ゐVm=%ヤ
v?・・^d摧ビ+@ソ)ャL・ヤレレクF◎鍬ス[xp@eQ・ノ5aコクツメイ・:Oゥォ矧・・Nタ4Y}ヒVsヨ"イg・庁ラノ・クZ~k=S{エヨa・m郵嬬I^ク;ゥ=モ呰&6+ヒ8D剣ュu Mリq・>p,スX*lッ・ターeD怩モハEレLョ8UhBツ*59B]K#遉ソ)ォ7m]]wケzk_rヌph姜゙湎ケk84[=f0姉祠VB+ニャユ・モG4I+ォ・NォアハZK・tヨFョ・F・Vフdェ橡h\ク慴オs
レウ$oケ{jsネ%糶M*d・ク9ヌヘY・・ハk畷ヤ谺畊゙ャ・^Z・ォノ・竫マUチ@メィ九机 6ア
M、オッュ「゙(3\vCXWNユlユ・・砦?<Wx呪マ~:・奧ラナァ゙W。4MAV・ヲキM泛ッ&「麦楫+ヘuv轌リs1。oオq_モッ俵キ襖Uコ国餧ホlGPK」iトチ「ホQ`-ソ;・ナm竓枢テb・ト
N/ィ6・\
刈~サeヘ鱶kL・ウエ鞭フ、z恙・
鸛・3・生S゚+T'J_ヘi禔㈱mbエt思・潴・xムZヒH・^「CR・aッレゥb、/U}ラ9.トア)メ・KッT・ーット`樋・Rテ}レ・RモΛ瀋ヨ・韶'ミ偆・ワ・dンウWg>・hjpェvxnナオG袞チGマ゙yNヲヌ忘オメ=<ォmVヲmヘ・・ネゥ貅イx#餾チウ橸Aセネ@ユYL宰2tIセt@=
逡x?⑩ヨ'トavオキ<ォ"[@オQ・湖セクFーzG-=ネ・2ュcナ/_)ュZ#;N9゙(枇ツe杵fP・=X立@ル:掵アMj學pZテ]女vカニ弸_C却、{奎d旬=イリPッニ・・_ナカセ・
fミエ-:・o)eクQ・・vXx・ヒォ/-鞣sッヒ歎*カ8vi゙「・~.泚:餬ン・`黨-゙背ヒm・9|ス「ス・-ヒ=WT#u9・${胃bC1ロ#a巳」wq}8%.I.JTbネm'hリ{4攴R,ァコ平
茵」ロtメロbN・Oッ霰
鏡ユ4<゙$sレV追cア}dョEヨ ハヤM鯔~U廩・%顴ヤ・兢riレ揶メ・KスHコDW{Pw7「サ・MzCno鈩g哄("J
UEG[Kォ身ツ3ハcHネBAQ$x船 gナヨR
*・禁・ロt3s゙攀ウ鉎oソ粧~セ゚・PセC・ュ・鶸・.ホ「側鏈m<ニヲDョf4ИヤトRlサY゚G;慷kミゥ・リ斑 &タエZー0テ・xp/。ミ聒)チ+\!@運e狛ヤzトィ`・┃
=ハ$i筧・Mモ8@・^E彪・・ェ聚j
C)イョbチ・ュゥY2w・Dj彬<Gヲb賜vRe$・ьト^チ・q<ョ}」、甯・m・スョテ彡ヌ瞽!クo4・^カ[.ヘホCン貎ル・モ P(洙][ヲェ!殻ヒツ仮類 クgレホヘ・ュfェ繻 ソ硎ネD'・ゥン堝タⅣスWy祭q・fカセツ@[&Tホ複ケイ韮!/モ#a・c゙,傔v仇]啖l・歐N逍癘螺)テ(E`7シ・」#p[・oシoy樒Piエ做'・1ュ画・^・ナ樌ン)ァ#>q?ハセnきQクアキニオ#ラW・ナm鷏レ干・ョカ夐サC wヘ、フ
ラ、H朗・vト'}iヘ效タ}Gfu.ォ'kケ・j"ヒ・<%]ZX"ォ(r・・オp#据ヌソ痊・・・z-HR
ゥk7Qヨ珮葈E゚。♪野Nuッ・テ・Cヲコスア9マX囂Sh6ZサF・カ]q舸<ヨ~゙比蛸チ#南諒+田<ホ4セ4嬾Hヒョ[l蒟?ュ.]ナl\o.゚/・ヒエヲxIxr・・tn!@ィヤ\s管A/橙Ig 撓5$1・ナBコty9]パ゙・Lb・8o・e
^}・P]・カO・ォ[・m'テ窒 86ケ.嚆(82+*яj~コrKt)g纂ョ嵓Tェ,fl・#・諷ロ>!拈砕渺ワ$ムォXl_?4ャ@ウ8・ムッ゙&・・・3ホ)譁P(セ綠モ「ン嘯qgIァD珒ァp甓p;1ハn=朶O`S无・鐱凞エ・・N・A・2ヤサク+'UトDb^a楨El r拿ェ/&コ・{t・マ勳恆gミoゥJ5?ノ東(果s%戰・lスンメ`+マカJn、ン叢・・n・凩?゙渼認]己ノ錆黒ノTチ
[セ。トャxr雉g$懌ゥ'ソ・ムミT[on<kWヤヲYマu、8テGアo湘ゃ飼3wJ㊥ラ?ヌ・{ニ澀、OHキマo6x㊧kヒ0搜Z=-ホ噐S'
・lz繪オ!カ喆3=コpHオa。イ・マ・@Bセ揖qー[Нノ(メ^.。・mqュユz$*=^。マ
モiー騰X%」oカ峵ッA
G托)玉ィョヒ・掵・nオFリc]Qgo%攷コ。チ_リ昨・ヨツfU・Hq\bI4恩@?・5ネ・6・樗ョ'、ワCサ。ヲゥ4チ・イモBムqaS蛾B」・ロヲVSァ7TW」溏ニマ5=シメ橆@d・鄰J莎4!Sル/sアx頃・繩VM・弓錦・レmラ・c]cL;~厩本do}bSq]チPァサ ェIメ旗ャ・P4^嫂煮套$甸イ├D、'互゙・<サ・ハ$諶kョkァ゚D&フナ?"沺ョsヨZャ6t{邇・/忞・ァ.「・ツ罵チロリタOウ限EH)Rクiヤ・・#ー<・・消ョ獰x ヤK]x畛・!;錐4ヘb<F寇贈ゥs93・、・・ミ睨墳ミNF諤kl・f暖ネ・yBワネ圧ラTヲエノヨ橄ー・Gレ[霄p・>
・M=ン^l恟A・ウXj3・ヨZラ-.枻1、0)/厮+j(ュヘtフ・餞Q瞋'イキ%7妍苡o幻O曙゚彑堯^ヤ・・R!XjxLリ゙!aaIヤ+ 6e奛堊s肭焏・ウ~握キ呟lカ#セl'o@゙|ム$kCロシNキ」mネッモ5Zム/ネ-浪・X`敬ュR-籤・)ホコタ"71ニxM・~フ弍eスeHハユゥ9「*皇・KエイサYロホ^nガ螳・後・/'ィd竍1=
v・拗ウ・ウウ狎?・d*・F坥γ[臑疸狄・Sム塵SEt;隙tワ
ス旨鶯hヤn・\F・幾
ヨ#スvZケ勢
i]v◎ネ0・4・8&垬
嘘テ・・レ-ノ>`)ヤZヤN・荊4vェ.??EC・d*y|uq>])'jカヤィ・ツラ`ィ.ォS3ュW・ケウ2D_・T,%蘭s慇シニX]Su拇拝廻⊂8テ・ゥワフb}コ<CQhHメサヨr|敷6sw・dフヤ7慷・lウヒ誥カ沛リ曹;0~hニヤツ葆・・2ケ鄧㌔カ葯・0・ャ・アォbc・ク7B蠧チbMオメ・,rヨsワ余$ッメ啝抒+X
$・帝tウN昱ァ昮ホ]麹譬攵C范Wユハ*IXミGxャム加ネXR市:o佼・解Tヒu奢驗ツミテ┿ス包。:\GUg_c5t・峪F矩オe軼モ}儁2ェレ ・?ロ鴬]・1驚・NE%{・轤lフLria・・g7ツ- &O・レB彑
キ・・Y@rE5ウォ血。ェ・・+a$y・宋8A4f゙ノカ時H=]ィ:橄(oェh.・ヌァGR・イャ曦サヘvク蹌珱90蝮・ゥo,・2^O骼・型j諒PM
痞妤ソGトセ闢U:6孝・Uヌ嶽メェチ、莊ybDメ(ヌ蠻・+ィ&@レ・・シFァ>
ヘヘEA・b聰'+k)Hねワル_腹ヒ#EシYルaw・ソi(・ze睆gIsY捺譏ァキkェ・犢$屠ワzA玄ー!ィjユ・鐡:n餌/チツ・g|0√K{崗
vG・鉉吉・rtキーオnフオ嗷カ・・ハR(蒿・・イl・+男ラM・
O46チ婬c1ヤ)mフヲ熙ォ:RSゥセセ・jー、+ロ檀ヒ"[ヘQア/礦・・・f關フ俑^鬧DMa!s・kタ)ケ`銭┨Rf沛洟C・x'享ウ1・oセ$゚薰樒㍑IYSゥ・nrウcリ・8呂^<・&痊ツ沂eマ X・^ナ附ラ泌jcs捉Eiャa精・jオロセ ^?狐2.カW、-+」%ヤ{X~9c*%・x瓰Z
・ ィ・ユワ?lkV∫・。j・ミ_ァ[zD0夊・=zァク・h秡g鶇「/ナ|ス「ェム5磐{+iT゙-・・ヘE了yLNgR・ W・\ョ0+セワっタルノ-豐Y・%耘ス1クヌWM燹ヲaミ蔔盗・禁oX・ムェ-トH.ヲイ;邪ラスラikw簿ワMヲIwンュvロaァSWナWw[5ツ#$A暸P巡・k6ソgハソワ1踵・セナ曩Nラ・4
甼回f)0・ウvA・・u・ウォヘレム@y3+篏ミラ、U4廏8l殄ヌ;*[jWv
D,スカ抃ハ訐・゚{
F・4タスコ9@準M・サLキ怛c`,チ!zモミUu
|オ<^cネ%クo セ侔・jウ$O1#ケwモW5ォ4I%ワvセz阯鑅・_ンQc`7ソvホヨyーq>,2リス・G・・a4vA)袂、釁ノT顆ィモメ綱介サリk耿キA9個ヒTW恬!カ&ネ[・Ou夘エ憎a<凬ソ・・ー'・Dカ6ユvオ ロT!ロU・Y藕ハ.$、チ・0・!!リ3・ns8`cNCク
a ・$・lz・TiォョVルヲロ?セA欖・ウノェy4z5鶴轗漿・K9、ホ5。・ソイ5マノ亞z削2・C熕_タ00d頡チ祢eネトlカヌ・・胥・^讐^e澡4&・酩懲?剔и愧.・ヤGン仇%/マKNz笨'FI(F.*束'"吠ッ^)-]<+ゥiャャ4ラュチ暄・ケタキP3ヌ;b・ケ{$)Oイ&~滉C卦ヨ皰ィネO躑痛G疊、?堅UホC駘ヌ愴
Gクセ@マ泱瑣mアm]カEエm・コ薦iv>伍Jhモ・ャ儕エュтア=U~.YtオャBM'+フu鈕オリz碁ク/L=mッiヌ、ヨU;]フオs-・R滔;「wA|・・Li・Zセ・zィィ゚カォ9ユゥ・"剖魑eF孅ー档ムn」;モハ:讌シ・疝・・゚~Q8Q$
gカ竍・イュテJチf鑚dFG77NCLル・・リ・ツナル鰓イ~1ス
㎜・・8+]コNチeエ-・・u躾・鞜ツ;$ゥソI・B・棏ツ{_祢Z侍ワAN6S圦%」咸ツ・]ヌb-ソ%痍mTヤ嗷<・、J2シ7レオ滬b温フ・./・・ニ.ェ騷縣テ拙jnャイo題モヒ.暴L_㊤8エユ-C鈍ホサ$rョ鶻・SオBV兎,・アO・暉ェレ「・w#スツ!ヌN漠ノDメッタッィ 5ロ`フ・FサテミK?I( ・>hヘッコlノ|クv脩]ルサ・ヒ丙ョ・ヌ欧牾サ・リ・タロヒSG燬妾Lケ毖゚エ レフル強ァュチ・_%a"C}s・七」セアスU^巖續ロ>aIタ゚w佑`ノ"⑳ュl%i・8[舞紡エラォL・傑ャ・・淼_w4_詑qツ3瑟ーオ-|VSテイ・ォユr雕Hv2-&・剛鈴4コナユ咤Z*Brミレル鑵薩7 ハ2Jr
茵Af・,ォ獻8F・&J*ォjホ・mャヒ・ワラン・。オ(*・イ・7@埇・C・( +?ァPxQM
・p続D J).rK ・ィ@舳n@p・ョ「+!\・m・Iェ*セ8`都ケ1・rマ樟・}膚・Nクネ:フ昶タ\タh・B腓キゥ・qー焦Mテ・」Vp\ナ
>キγMイmゥtA彦・幼ヤ凝マ・・琶z・W・ォBJJリ歡9蓋OヨDコ_n「ォyケォゥ蛻Rノロ・ャ6yw・/ッbコカ_6・uハ・閲0c杞L.・`3糴`リd昉}腕ky)冪b%fオQ&X"橢・蹲}2nヌ"ヨFケ・ウハ$d"・ア*ト.セtホ4・ハ簡ニ
堰ロ〆゚ワ・ュュ・テマ3HェマィO蟆・Lンスサ[遯kW]溟
E[楸(E$・ヒ4・・準aリスA&刧ス3・」極「ク8:)テo|aヤC`ホ5+語コイ繦yァウァJュ・・[鉄ロ諟1>1=・エ狆lΡ・腐濺クn桓ッ・(表q・谺カkレ勿Z鼻]ォh・オL@淆"・+訪9WB/崑eエ・2゚・」w・Bワ票・d"落ー」サcトムcCmーソ・惘マQ・>P敗<ォキ」G36皆n瓷0m Z蔓s)・ー~オ・」zl}みワァエ・寫ア」%,・・瀕・*ョ・F・郁ーR2e・`ァ^偵鄲2N拓4゚。)ヒ仍;邉ョ・'冐[ゥテ~イ:ヘ!iヒt范fサ ホw5・z{r・ D亰哇・ 0・Rzキソ、VSgK0Dvヤ嬖メKノ,梼ハ錂笊帋ソヒCw ヲ0jャ@Fニ、)4ハGTィs。ツe,iキ4>4カ2ヌ「/?_愽淦uy・3・Iv]|U・。、ニZZ・sI捍m)Mi揆o#悟抉ホ癈・∟!?aT齦ツサ}・・ン gロ*4ネRP巐・8・・挙旭A{ヲタム・_タ奉リ・LケcS蔵4mコ疉aフMフ・ア鬣fァpeNgt\-6*゙・俳PH・ズD迥フ;躯ヘ=・・サ.ィ_゙セ1~<・・・」jQFノ・T蒸0嚇膳P澄+H作サ-レS・ヨセソ・鍍R・LラflC代ナ[&]・6橡・ュ・Jイ「4Q0鑰Zコメ蔽慥ゥサ5゙・・賜・ケno\< 諶ク~坐Rレエ・、蹠タ〈時l躪^ィHaX癖セ=仁bhサ穎k霽L?3Sカ簸埣・穀ホ・+|ネw 1綿・・Lm∩ウヤt・}q・ヨ
悼-レQマWmル ~^゚゙GDロh帳ニfサ纓ヒi7c・ャニv0хaァ[Uu・櫛0/ラYyク・}・>ナンァ4$3.ャン・Kwc7oゥo9リ$ェィュャV兜并bcV4~d+劍kgノミホャ謁・・th堅・リ4Dオ・Z。@.=・煩萪・Dコ!・ァ`zXエY・・ーニ,タC却ヒBB%。8
n剏@
D泡@|&鵰ラUz mョル{)o鴇ヲヲFティ僻炻翁トTnT中v+ロネ・ヲヒv課ve、・ヒキヲモウ糒%/w>チ_シkモ^`*籃クッ・hヒ・・質・rセ0擢・メォ喚オ幗ロ姚|タアノユ^G・クfテ+v+<bヒホ・ヘlフ・ヤ゚嵐竒フj・ウ3腔PKヤ・ヘ・ィ<是衫ャfw7ツ「ッチ"薤iu・Q遁ヨミl・纉ョonVマ起ノK/fhIクワE゚マF・゚ィLヲ^a^烹GN.O.・oワ抻兒ス酵h]・ケ'鳩・亀D啖乂G S⑫・ェt、)yS1楹誅チソチラ@ノ.ユ・ハL9切Vム\aモ・A
RッュMタlキ・0羚X・%、`5・ワ>スリ、aG神桁?,Nセアア・]#・+Y"・・5・F寔B\伊モ9儉*・」fカ猊リTF-皚・'ュ・・ナセ・ナホ。垂。リ・hQL&・順・・スPュu・zコ・C・軫Krw、ノ|ゥヤT・レ軟ヾ棊Sス・・マ=ム#疑ケ'・サタケ・ヘスrマ・ヨaシbルB6{弯・vィZ)cf・髜・・サトム[欅bWM・(エl<スヲk莚(テ~.dXe聞?椎!証・・ケNz粤}Xシ・(・'?Bチ`<朞ラ)$・w・ャ]・ユモ・X・Ⅳv嘆、H・8・'蹼ス^・・gラ(ル1COエ兔ファタ、ユイ・早ナ・チノbt<・」戊m栖K;q,ミ・・テ ウ0シX&遜悽)ォヘ(] D沂5クツ譬ユー
コJAソh7サ鷲`V右ケ2$Q?d・擇・刊・I・セョV稔K:厂T・ホミトtユ6・ヲセ・N」Rモ}ノテ動g朎iS8ラMタユpユ4能Zラ_驎,L刔館#ウィFK・@Y ソ・9テOX jウpIx櫞RF・・臘汝荻。」チシ、@・ン%ホ
」肖ォsqイナ)エ・タユl]・ウuxカ靏l曵Bム0.陦ー・}rホハY}イ'ト0゚"v1僴%友Ⅸ`梳。ン・&ノB嶐hンoミヲォ「・ェュ・ワリ゚mIa嘯着・HB,K仗x~<キNチヲcァ・歃∋_F|$・oR鱧ツ糺
ロウ樟
tサu 'bノリEW._pvgi?ィ勧L?坊ーKu菎鋩v墳ヌョ゚u・エ持ニヌ鵰Pキコ6ⅴ儡WU鼎gf-)奮・チラマ!gCサU゙メj魘很wャ2ツVセナ・;iミ赳ユC:推ノ、Hセ゚ヨ)椥o顔ケ<メ繍(ヒナ兤・ リマリC迦・扉艙JIク・ムノHvーpアケfムh3ネ)Dユ嫐[/ト・・ネ>・Dz#wマ荢・ケ憤Dメ黙ャ8,・)河+-㎞ワヒВメミ・\エマSェC゙ラル都駁;1\・ヘUンサkf芬ョ・尢醢z]^・|ウ・眇・l~:~レIマ説Kウ'申Qx襁Zt冒_「・ヨ・3mm濬'Gミメ`烱Q畷+1YCYモoノ、ヲ・桀^ッiカチ 挾RjW惕\莱ネフE・鄙[リワZfユhE0w」゙[セH藐・2胯LQ颱ヘ-ンッ1・レO・。・Q>}h。4FF・2Dワ・Hソシエハ變h5;L>ヒu悠゚翅・ト・スゥe楢kネ2ャゥサSンA<・」l0・サスカ餒ユ$#]RQwnu・レル・ヲ&>勗・9 w鼾コi`:チj/H9x・・キテ・`O&Xケ
ー・ウpノ・p)・エ@・ヲタヲ1 fュヨ・コ劭・誨 ソ臘Ea.|k笶ユT*彪ァdヌ撩。リ搭ゥユT"^ソョ&ウ05;q[
・爻ー掎買クル・F・?・ー・ィA瑜マチユイ・y}mCチ?fイgイm"}オ^・フvォ#ト・rアWレタp┼メZャQ$袴W脳ィ!|・1/オW マ玲・+ヨ゚ル・;ェ爛スリw煖ヨーチbmニタZ5nT嗚講/`齠・侶ョ67・ル・;タ軏゙コveテロヘ詢・竫wユョカRkEナVP臧
!ワG !!*Uツ帑%苔p$ ┘・*クUカ﨔ヨ」SWラホNァO錣wキ;ウ=w゙繦滂・・9レイ2Lイ惓[N廈イ懶pースIkク!ユ m・評I7 KハB,n・ホE髪ヘ:゚@@)\B鯛・Jニセ|d゚・・・觀ユIWニ&Gn゙~筬!エ|ur
貎・!ュ戲カ^゙aD2.,Ag夂*VメI・維作ルG痼コ(Bホ
・[K・Gヒ煩ラ・・D~ノッ5Wユ5オタO xCWKカl^+x吋D洶猜゚1モ^゙痒+Ogd"・・・ヲ<ナ・ョウv3}否Z霙・蕓杁摯メ|jスdウソ蝣ア!vヘ・リ愾0!!C棲鋕奏H&・・Rーc・ス/W-譁>+pル6冝C・鏡カナキ懸・<.鎰闔・キ:ケ:岦eミ}テ`オE」ケRG・$・7駐Q阿DqBAワ|ハbツ]*p!ワ應4Eュοn「セ・ソカ。ワネ&・・"_リ◆ノbハモXヘ・
t@?(テb%・ナァユツツ・n・p#ワ・埜}ョ:ト・セ・・U、:;・ナx--匝>DAキ゚・ ~晟Qル<サ{キ・ワ鉱]gヨラ46・2・@ユg、儀Yミ_+ノモ。シ・6ヨIォレス釭。・Eケ・>ハ烏タユアフプvトマ.NュフF;フ{X=6・'ヨpg9 蒭@?ュb[YI撒ヘァvラ[X7"V・ルlォjツ8N・ヲ]ラ炸腋<Q麺Hナ<9・・ヲ
I・ヲS0Y<ケV+k謂|2%(鸛リ銑GN・?綏Ysカ・;・[ァマヤfタウ>n^・ク・&シヨ!・・)・アヌAkッ瀋・ケBュ・テネCフンィ・瀏イ・・襤額"純・sツヨH・Rmヤ。
イTXヨn咎EIケウノ楴・Wナ・鷁9Jbr麪~レwワ顥;i=魯ォ2ラ嵌・ェ冝オrユ・bdロJ箟謄$紀サラgfヘマ゙sイミヘX2ツd陋ヲロチ$・ウ<(チC~D^(・B・ユ・イ&浯`/Jォoナト、スコ_k・モm`ロ・ヘ:」Dvメホ,・Mヌエャヌフ揣
・ーPaf頷ハシwVィ・ヤ7Sqムシp禔:indd:eaa23c28-5242-11dc-9de5-9991cd1c7591
xmlns:xapGImg="http://ns.adobe.com/xap/1.0/g/img/">
endstream
endobj
xref
0 131
0000000003 00000 f
0000000016 00000 n
0000000113 00000 n
0000000004 00001 f
0000000005 00000 f
0000000006 00001 f
0000000008 00001 f
0000000178 00000 n
0000000009 00001 f
0000000010 00001 f
0000000011 00001 f
0000000013 00001 f
0000000550 00000 n
0000000014 00001 f
0000000015 00001 f
0000000016 00001 f
0000000017 00001 f
0000000018 00001 f
0000000019 00001 f
0000000020 00001 f
0000000021 00001 f
0000000022 00001 f
0000000023 00001 f
0000000024 00001 f
0000000025 00001 f
0000000026 00001 f
0000000027 00001 f
0000000028 00001 f
0000000029 00001 f
0000000030 00001 f
0000000031 00001 f
0000000032 00001 f
0000000045 00001 f
0000000662 00000 n
0000000818 00000 n
0000000954 00000 n
0000000978 00000 n
0000001130 00000 n
0000001406 00000 n
0000001472 00000 n
0000001608 00000 n
0000001632 00000 n
0000001940 00000 n
0000002215 00000 n
0000002281 00000 n
0000000047 00001 f
0000002391 00000 n
0000000048 00001 f
0000000049 00001 f
0000000050 00001 f
0000000051 00001 f
0000000052 00001 f
0000000053 00001 f
0000000054 00001 f
0000000055 00001 f
0000000058 00001 f
0000002502 00000 n
0000008106 00000 n
0000000059 00001 f
0000000060 00001 f
0000000061 00001 f
0000000062 00001 f
0000000063 00001 f
0000000064 00001 f
0000000065 00001 f
0000000066 00001 f
0000000067 00001 f
0000000068 00001 f
0000000069 00001 f
0000000070 00001 f
0000000071 00001 f
0000000072 00001 f
0000000073 00001 f
0000000074 00001 f
0000000075 00001 f
0000000076 00001 f
0000000077 00001 f
0000000078 00001 f
0000000079 00001 f
0000000080 00001 f
0000000084 00001 f
0000008494 00000 n
0000008630 00000 n
0000008654 00000 n
0000000086 00001 f
0000008722 00000 n
0000000087 00001 f
0000000088 00001 f
0000000089 00001 f
0000000090 00001 f
0000000091 00001 f
0000000092 00001 f
0000000093 00001 f
0000000094 00001 f
0000000095 00001 f
0000000096 00001 f
0000000097 00001 f
0000000098 00001 f
0000000099 00001 f
0000000100 00001 f
0000000101 00001 f
0000000102 00001 f
0000000103 00001 f
0000000104 00001 f
0000000105 00001 f
0000000106 00001 f
0000000109 00001 f
0000008876 00000 n
0000012491 00000 n
0000000110 00001 f
0000000111 00001 f
0000000112 00001 f
0000000113 00001 f
0000000114 00001 f
0000000115 00001 f
0000000116 00001 f
0000000117 00001 f
0000000118 00001 f
0000000000 00001 f
0000012866 00000 n
0000015761 00000 n
0000015939 00000 n
0000036354 00000 n
0000037146 00000 n
0000141534 00000 n
0000144201 00000 n
0000144250 00000 n
0000144763 00000 n
0000145552 00000 n
0000145966 00000 n
0000146612 00000 n
trailer
<<00211a1c8c7d11e382700016cba92e88>]>>
startxref
164065
%%EOF
PR
Comment