commit aba43b9e9bd403228f57d63a38fc72727e04906b Author: mchmch11 <2681595122@qq.com> Date: Tue Jun 23 15:26:53 2026 +0800 Initial commit: 开题报告 LaTeX 源码 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c490da0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,37 @@ +# LaTeX build artifacts +*.aux +*.log +*.out +*.toc +*.bbl +*.blg +*.synctex.gz +*.thm +*.fls +*.fdb_latexmk +*.fdb_latexmk-main +*.nav +*.snm +*.vrb +*.run.xml +*.bcf +*.idx +*.ind +*.ilg +*.lof +*.lot +*.loe +*.lol +*.lot +*.glg +*.glo +*.gls +*.ist + +# OS / editor +.DS_Store +Thumbs.db +*~ +*.swp +*.swo +*.bak diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..b52193d --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,24 @@ +{ + "editor.wordWrap": "on", + "latex-workshop.latex.tools": [ + { + "name": "xelatex", + "command": "xelatex", + "args": [ + "-synctex=1", + "-interaction=nonstopmode", + "-file-line-error", + "%DOC%" + ] + } + ], + "latex-workshop.latex.recipes": [ + { + "name": "xelatex", + "tools": [ + "xelatex" + ] + } + ], + +} diff --git a/figure/A3.png b/figure/A3.png new file mode 100644 index 0000000..1795f49 Binary files /dev/null and b/figure/A3.png differ diff --git a/figure/lstmgate.png b/figure/lstmgate.png new file mode 100644 index 0000000..ed78d6b Binary files /dev/null and b/figure/lstmgate.png differ diff --git a/figure/ns3agent-overview-zh.pdf b/figure/ns3agent-overview-zh.pdf new file mode 100644 index 0000000..d4e9551 Binary files /dev/null and b/figure/ns3agent-overview-zh.pdf differ diff --git a/figure/ns3agent-overview.pdf b/figure/ns3agent-overview.pdf new file mode 100644 index 0000000..8e667cf Binary files /dev/null and b/figure/ns3agent-overview.pdf differ diff --git a/figure/time_syn.pdf b/figure/time_syn.pdf new file mode 100644 index 0000000..f2bec91 Binary files /dev/null and b/figure/time_syn.pdf differ diff --git a/figure/地铁场景.png b/figure/地铁场景.png new file mode 100644 index 0000000..6359f65 Binary files /dev/null and b/figure/地铁场景.png differ diff --git a/figure/毕业论文-系统场景.pdf b/figure/毕业论文-系统场景.pdf new file mode 100644 index 0000000..41529dc Binary files /dev/null and b/figure/毕业论文-系统场景.pdf differ diff --git a/figure/相关工作.png b/figure/相关工作.png new file mode 100644 index 0000000..1ace5ad Binary files /dev/null and b/figure/相关工作.png differ diff --git a/figure/系统架构图.png b/figure/系统架构图.png new file mode 100644 index 0000000..c852efa Binary files /dev/null and b/figure/系统架构图.png differ diff --git a/figure/详细定位场景.png b/figure/详细定位场景.png new file mode 100644 index 0000000..cd2e2d2 Binary files /dev/null and b/figure/详细定位场景.png differ diff --git a/font/DroidSans-Regular.ttf b/font/DroidSans-Regular.ttf new file mode 100644 index 0000000..e69de29 diff --git a/font/STZhongsong.ttf b/font/STZhongsong.ttf new file mode 100644 index 0000000..0f167cb Binary files /dev/null and b/font/STZhongsong.ttf differ diff --git a/font/SimFang.ttf b/font/SimFang.ttf new file mode 100644 index 0000000..2b59eae Binary files /dev/null and b/font/SimFang.ttf differ diff --git a/font/SimHei.ttf b/font/SimHei.ttf new file mode 100644 index 0000000..b824a2c Binary files /dev/null and b/font/SimHei.ttf differ diff --git a/font/SimKai.ttf b/font/SimKai.ttf new file mode 100644 index 0000000..1aa018b Binary files /dev/null and b/font/SimKai.ttf differ diff --git a/font/SimSun.ttc b/font/SimSun.ttc new file mode 100644 index 0000000..e64e92e Binary files /dev/null and b/font/SimSun.ttc differ diff --git a/font/SimSun.ttf b/font/SimSun.ttf new file mode 100644 index 0000000..925db15 Binary files /dev/null and b/font/SimSun.ttf differ diff --git a/hust-title.eps b/hust-title.eps new file mode 100644 index 0000000..e101968 --- /dev/null +++ b/hust-title.eps @@ -0,0 +1,5273 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Title: (\(C:\\Documents and Settings\\Administrator\\Desktop\\hust-flash-eps.eps\)) +%%Version: 1 3 +%%Creator: Adobe Acrobat 6.0 +%%CreationDate: 20:27:11 01/02/06 +%%DocumentData: Clean7Bit +%%BoundingBox: 0 0 176 37 +%%HiResBoundingBox: 0.0 0.0 176.0 37.0 +%%Pages: 0 +%%DocumentProcessColors: +%%DocumentSuppliedResources: +%%+ procset (Adobe Acrobat - PDF operators) 1.2 0 +%%EndComments +%%BeginProlog +%%EndProlog +%%BeginSetup +%ADOPrintSettings: L1 W0 VM op crd os scsa T h ef bg ucr sf ef r b fa pr SEPS ttf hb Printer/PostScript Color Management 0 + %%BeginResource: procset Adobe_CoolType_Utility_MAKEOCF 1.18 0 +%%Copyright: Copyright 1987-2003 Adobe Systems Incorporated. +%%Version: 1.18 0 +systemdict /languagelevel known dup + { currentglobal false setglobal } + { false } +ifelse +exch +userdict /Adobe_CoolType_Utility 2 copy known + { 2 copy get dup maxlength 25 add dict copy } + { 25 dict } +ifelse put +Adobe_CoolType_Utility + begin + /ct_Level2? exch def + /ct_Clone? 1183615869 internaldict dup + /CCRun known not + exch /eCCRun known not + ct_Level2? and or def +ct_Level2? + { globaldict begin currentglobal true setglobal } +if + /ct_AddStdCIDMap + ct_Level2? + { { + ((Hex) 57 StartData + 0615 1e27 2c39 1c60 d8a8 cc31 fe2b f6e0 + 7aa3 e541 e21c 60d8 a8c9 c3d0 6d9e 1c60 + d8a8 c9c2 02d7 9a1c 60d8 a849 1c60 d8a8 + cc36 74f4 1144 b13b 77) 0 () /SubFileDecode filter cvx exec + } } + { { + eexec + } } + ifelse bind def +userdict /cid_extensions known + { + cid_extensions + begin + /cid_GetCIDSystemInfo + { + 1 index type /stringtype eq + { exch cvn exch } + if + cid_extensions + begin + dup load 2 index known + { + 2 copy + cid_GetStatusInfo + dup null ne + { + 1 index load + 3 index get + dup null eq + { pop pop cid_UpdateDB } + { + exch + 1 index /Created get eq + { exch pop exch pop } + { pop cid_UpdateDB } + ifelse + } + ifelse + } + { pop cid_UpdateDB } + ifelse + } + { cid_UpdateDB } + ifelse + end + } bind def + end + } +if +ct_Level2? + { end setglobal } +if + /ct_UseNativeCapability? systemdict /composefont known def + /ct_MakeOCF 35 dict def + /ct_Vars 25 dict def + /ct_GlyphDirProcs 6 dict def + /ct_BuildCharDict 15 dict dup + begin + /charcode 2 string def + /dst_string 1500 string def + /nullstring () def + /usewidths? true def + end def + ct_Level2? { setglobal } { pop } ifelse + ct_GlyphDirProcs + begin + /GetGlyphDirectory + { + systemdict /languagelevel known + { pop /CIDFont findresource /GlyphDirectory get } + { + 1 index /CIDFont findresource /GlyphDirectory + get dup type /dicttype eq + { + dup dup maxlength exch length sub 2 index lt + { + dup length 2 index add dict copy 2 index + /CIDFont findresource/GlyphDirectory 2 index put + } + if + } + if + exch pop exch pop + } + ifelse + + + } def + /+ + { + systemdict /languagelevel known + { + currentglobal false setglobal + 3 dict begin + /vm exch def + } + { 1 dict begin } + ifelse + /$ exch def + systemdict /languagelevel known + { + vm setglobal + /gvm currentglobal def + $ gcheck setglobal + } + if + ? { $ begin } if + } def + /? { $ type /dicttype eq } def + /| { + userdict /Adobe_CoolType_Data known + { + Adobe_CoolType_Data /AddWidths? known + { + currentdict Adobe_CoolType_Data + begin + begin + AddWidths? + { + Adobe_CoolType_Data /CC 3 index put + ? { def } { $ 3 1 roll put } ifelse + CC charcode exch 1 index 0 2 index 256 idiv put + 1 index exch 1 exch 256 mod put + stringwidth 2 array astore + currentfont /Widths get exch CC exch put + } + { ? { def } { $ 3 1 roll put } ifelse } + ifelse + end + end + } + { ? { def } { $ 3 1 roll put } ifelse } ifelse + } + { ? { def } { $ 3 1 roll put } ifelse } + ifelse + } def + /! + { + ? { end } if + systemdict /languagelevel known + { gvm setglobal } + if + end + } def + /: { string currentfile exch readstring pop } executeonly def + end + ct_MakeOCF + begin + /ct_cHexEncoding + [/c00/c01/c02/c03/c04/c05/c06/c07/c08/c09/c0A/c0B/c0C/c0D/c0E/c0F/c10/c11/c12 + /c13/c14/c15/c16/c17/c18/c19/c1A/c1B/c1C/c1D/c1E/c1F/c20/c21/c22/c23/c24/c25 + /c26/c27/c28/c29/c2A/c2B/c2C/c2D/c2E/c2F/c30/c31/c32/c33/c34/c35/c36/c37/c38 + /c39/c3A/c3B/c3C/c3D/c3E/c3F/c40/c41/c42/c43/c44/c45/c46/c47/c48/c49/c4A/c4B + /c4C/c4D/c4E/c4F/c50/c51/c52/c53/c54/c55/c56/c57/c58/c59/c5A/c5B/c5C/c5D/c5E + /c5F/c60/c61/c62/c63/c64/c65/c66/c67/c68/c69/c6A/c6B/c6C/c6D/c6E/c6F/c70/c71 + /c72/c73/c74/c75/c76/c77/c78/c79/c7A/c7B/c7C/c7D/c7E/c7F/c80/c81/c82/c83/c84 + /c85/c86/c87/c88/c89/c8A/c8B/c8C/c8D/c8E/c8F/c90/c91/c92/c93/c94/c95/c96/c97 + /c98/c99/c9A/c9B/c9C/c9D/c9E/c9F/cA0/cA1/cA2/cA3/cA4/cA5/cA6/cA7/cA8/cA9/cAA + /cAB/cAC/cAD/cAE/cAF/cB0/cB1/cB2/cB3/cB4/cB5/cB6/cB7/cB8/cB9/cBA/cBB/cBC/cBD + /cBE/cBF/cC0/cC1/cC2/cC3/cC4/cC5/cC6/cC7/cC8/cC9/cCA/cCB/cCC/cCD/cCE/cCF/cD0 + /cD1/cD2/cD3/cD4/cD5/cD6/cD7/cD8/cD9/cDA/cDB/cDC/cDD/cDE/cDF/cE0/cE1/cE2/cE3 + /cE4/cE5/cE6/cE7/cE8/cE9/cEA/cEB/cEC/cED/cEE/cEF/cF0/cF1/cF2/cF3/cF4/cF5/cF6 + /cF7/cF8/cF9/cFA/cFB/cFC/cFD/cFE/cFF] def + /ct_CID_STR_SIZE 8000 def + /ct_mkocfStr100 100 string def + /ct_defaultFontMtx [.001 0 0 .001 0 0] def + /ct_1000Mtx [1000 0 0 1000 0 0] def + /ct_raise {exch cvx exch errordict exch get exec stop} bind def + /ct_reraise + { cvx $error /errorname get (Error: ) print dup ( ) cvs print + errordict exch get exec stop + } bind def + /ct_cvnsi + { + 1 index add 1 sub 1 exch 0 4 1 roll + { + 2 index exch get + exch 8 bitshift + add + } + for + exch pop + } bind def + /ct_GetInterval + { + Adobe_CoolType_Utility /ct_BuildCharDict get + begin + /dst_index 0 def + dup dst_string length gt + { dup string /dst_string exch def } + if + 1 index ct_CID_STR_SIZE idiv + /arrayIndex exch def + 2 index arrayIndex get + 2 index + arrayIndex ct_CID_STR_SIZE mul + sub + { + dup 3 index add 2 index length le + { + 2 index getinterval + dst_string dst_index 2 index putinterval + length dst_index add /dst_index exch def + exit + } + { + 1 index length 1 index sub + dup 4 1 roll + getinterval + dst_string dst_index 2 index putinterval + pop dup dst_index add /dst_index exch def + sub + /arrayIndex arrayIndex 1 add def + 2 index dup length arrayIndex gt + { arrayIndex get } + { + pop + exit + } + ifelse + 0 + } + ifelse + } + loop + pop pop pop + dst_string 0 dst_index getinterval + end + } bind def + ct_Level2? + { + /ct_resourcestatus + currentglobal mark true setglobal + { /unknowninstancename /Category resourcestatus } + stopped + { cleartomark setglobal true } + { cleartomark currentglobal not exch setglobal } + ifelse + { + { + mark 3 1 roll /Category findresource + begin + ct_Vars /vm currentglobal put + ({ResourceStatus} stopped) 0 () /SubFileDecode filter cvx exec + { cleartomark false } + { { 3 2 roll pop true } { cleartomark false } ifelse } + ifelse + ct_Vars /vm get setglobal + end + } + } + { { resourcestatus } } + ifelse bind def + /CIDFont /Category ct_resourcestatus + { pop pop } + { + currentglobal true setglobal + /Generic /Category findresource + dup length dict copy + dup /InstanceType /dicttype put + /CIDFont exch /Category defineresource pop + setglobal + } + ifelse + ct_UseNativeCapability? + { + /CIDInit /ProcSet findresource begin + 12 dict begin + begincmap + /CIDSystemInfo 3 dict dup begin + /Registry (Adobe) def + /Ordering (Identity) def + /Supplement 0 def + end def + /CMapName /Identity-H def + /CMapVersion 1.000 def + /CMapType 1 def + 1 begincodespacerange + <0000> + endcodespacerange + 1 begincidrange + <0000> 0 + endcidrange + endcmap + CMapName currentdict /CMap defineresource pop + end + end + } + if + } + { + /ct_Category 2 dict begin + /CIDFont 10 dict def + /ProcSet 2 dict def + currentdict + end + def + /defineresource + { + ct_Category 1 index 2 copy known + { + get + dup dup maxlength exch length eq + { + dup length 10 add dict copy + ct_Category 2 index 2 index put + } + if + 3 index 3 index put + pop exch pop + } + { pop pop /defineresource /undefined ct_raise } + ifelse + } bind def + /findresource + { + ct_Category 1 index 2 copy known + { + get + 2 index 2 copy known + { get 3 1 roll pop pop} + { pop pop /findresource /undefinedresource ct_raise } + ifelse + } + { pop pop /findresource /undefined ct_raise } + ifelse + } bind def + /resourcestatus + { + ct_Category 1 index 2 copy known + { + get + 2 index known + exch pop exch pop + { + 0 -1 true + } + { + false + } + ifelse + } + { pop pop /findresource /undefined ct_raise } + ifelse + } bind def + /ct_resourcestatus /resourcestatus load def + } + ifelse + /ct_CIDInit 2 dict + begin + /ct_cidfont_stream_init + { + { + dup (Binary) eq + { + pop + null + currentfile + ct_Level2? + { + { cid_BYTE_COUNT () /SubFileDecode filter } + stopped + { pop pop pop } + if + } + if + /readstring load + exit + } + if + dup (Hex) eq + { + pop + currentfile + ct_Level2? + { + { null exch /ASCIIHexDecode filter /readstring } + stopped + { pop exch pop (>) exch /readhexstring } + if + } + { (>) exch /readhexstring } + ifelse + load + exit + } + if + /StartData /typecheck ct_raise + } + loop + cid_BYTE_COUNT ct_CID_STR_SIZE le + { + 2 copy cid_BYTE_COUNT string exch exec + pop + 1 array dup + 3 -1 roll + 0 exch put + } + { + cid_BYTE_COUNT ct_CID_STR_SIZE div ceiling cvi + dup array exch 2 sub 0 exch 1 exch + { + 2 copy + 5 index + ct_CID_STR_SIZE + string + 6 index exec + pop + put + pop + } + for + 2 index + cid_BYTE_COUNT ct_CID_STR_SIZE mod string + 3 index exec + pop + 1 index exch + 1 index length 1 sub + exch put + } + ifelse + cid_CIDFONT exch /GlyphData exch put + 2 index null eq + { + pop pop pop + } + { + pop /readstring load + 1 string exch + { + 3 copy exec + pop + dup length 0 eq + { + pop pop pop pop pop + true exit + } + if + 4 index + eq + { + pop pop pop pop + false exit + } + if + } + loop + pop + } + ifelse + } bind def + /StartData + { + mark + { + currentdict + dup /FDArray get 0 get /FontMatrix get + 0 get 0.001 eq + { + dup /CDevProc known not + { + /CDevProc 1183615869 internaldict /stdCDevProc 2 copy known + { get } + { + pop pop + { pop pop pop pop pop 0 -1000 7 index 2 div 880 } + } + ifelse + def + } + if + } + { + /CDevProc + { + pop pop pop pop pop + 0 + 1 cid_temp /cid_CIDFONT get + /FDArray get 0 get + /FontMatrix get 0 get div + 7 index 2 div + 1 index 0.88 mul + } def + } + ifelse + /cid_temp 15 dict def + cid_temp + begin + /cid_CIDFONT exch def + 3 copy pop + dup /cid_BYTE_COUNT exch def 0 gt + { + ct_cidfont_stream_init + FDArray + { + /Private get + dup /SubrMapOffset known + { + begin + /Subrs SubrCount array def + Subrs + SubrMapOffset + SubrCount + SDBytes + ct_Level2? + { + currentdict dup /SubrMapOffset undef + dup /SubrCount undef + /SDBytes undef + } + if + end + /cid_SD_BYTES exch def + /cid_SUBR_COUNT exch def + /cid_SUBR_MAP_OFFSET exch def + /cid_SUBRS exch def + cid_SUBR_COUNT 0 gt + { + GlyphData cid_SUBR_MAP_OFFSET cid_SD_BYTES ct_GetInterval + 0 cid_SD_BYTES ct_cvnsi + 0 1 cid_SUBR_COUNT 1 sub + { + exch 1 index + 1 add + cid_SD_BYTES mul cid_SUBR_MAP_OFFSET add + GlyphData exch cid_SD_BYTES ct_GetInterval + 0 cid_SD_BYTES ct_cvnsi + cid_SUBRS 4 2 roll + GlyphData exch + 4 index + 1 index + sub + ct_GetInterval + dup length string copy put + } + for + pop + } + if + } + { pop } + ifelse + } + forall + } + if + cleartomark pop pop + end + CIDFontName currentdict /CIDFont defineresource pop + end end + } + stopped + { cleartomark /StartData ct_reraise } + if + } bind def + currentdict + end def + /ct_saveCIDInit + { + /CIDInit /ProcSet ct_resourcestatus + { true } + { /CIDInitC /ProcSet ct_resourcestatus } + ifelse + { + pop pop + /CIDInit /ProcSet findresource + ct_UseNativeCapability? + { pop null } + { /CIDInit ct_CIDInit /ProcSet defineresource pop } + ifelse + } + { /CIDInit ct_CIDInit /ProcSet defineresource pop null } + ifelse + ct_Vars exch /ct_oldCIDInit exch put + } bind def + /ct_restoreCIDInit + { + ct_Vars /ct_oldCIDInit get dup null ne + { /CIDInit exch /ProcSet defineresource pop } + { pop } + ifelse + } bind def + /ct_BuildCharSetUp + { + 1 index + begin + CIDFont + begin + Adobe_CoolType_Utility /ct_BuildCharDict get + begin + /ct_dfCharCode exch def + /ct_dfDict exch def + CIDFirstByte ct_dfCharCode add + dup CIDCount ge + { pop 0 } + if + /cid exch def + { + GlyphDirectory cid 2 copy known + { get } + { pop pop nullstring } + ifelse + dup length FDBytes sub 0 gt + { + dup + FDBytes 0 ne + { 0 FDBytes ct_cvnsi } + { pop 0 } + ifelse + /fdIndex exch def + dup length FDBytes sub FDBytes exch getinterval + /charstring exch def + exit + } + { + pop + cid 0 eq + { /charstring nullstring def exit } + if + /cid 0 def + } + ifelse + } + loop + } def + /ct_SetCacheDevice + { + 0 0 moveto + dup stringwidth + 3 -1 roll + true charpath + pathbbox + 0 -1000 + 7 index 2 div 880 + setcachedevice2 + 0 0 moveto + } def + /ct_CloneSetCacheProc + { + 1 eq + { + stringwidth + pop -2 div -880 + 0 -1000 setcharwidth + moveto + } + { + usewidths? + { + currentfont /Widths get cid + 2 copy known + { get exch pop aload pop } + { pop pop stringwidth } + ifelse + } + { stringwidth } + ifelse + setcharwidth + 0 0 moveto + } + ifelse + } def + /ct_Type3ShowCharString + { + ct_FDDict fdIndex 2 copy known + { get } + { + currentglobal 3 1 roll + 1 index gcheck setglobal + ct_Type1FontTemplate dup maxlength dict copy + begin + FDArray fdIndex get + dup /FontMatrix 2 copy known + { get } + { pop pop ct_defaultFontMtx } + ifelse + /FontMatrix exch dup length array copy def + /Private get + /Private exch def + /Widths rootfont /Widths get def + /CharStrings 1 dict dup /.notdef + dup length string copy put def + currentdict + end + /ct_Type1Font exch definefont + dup 5 1 roll put + setglobal + } + ifelse + dup /CharStrings get 1 index /Encoding get + ct_dfCharCode get charstring put + rootfont /WMode 2 copy known + { get } + { pop pop 0 } + ifelse + exch + 1000 scalefont setfont + ct_str1 0 ct_dfCharCode put + ct_str1 exch ct_dfSetCacheProc + ct_SyntheticBold + { + currentpoint + ct_str1 show + newpath + moveto + ct_str1 true charpath + ct_StrokeWidth setlinewidth + stroke + } + { ct_str1 show } + ifelse + } def + /ct_Type4ShowCharString + { + ct_dfDict ct_dfCharCode charstring + FDArray fdIndex get + dup /FontMatrix get dup ct_defaultFontMtx ct_matrixeq not + { ct_1000Mtx matrix concatmatrix concat } + { pop } + ifelse + /Private get + Adobe_CoolType_Utility /ct_Level2? get not + { + ct_dfDict /Private + 3 -1 roll + { put } + 1183615869 internaldict /superexec get exec + } + if + 1183615869 internaldict + Adobe_CoolType_Utility /ct_Level2? get + { 1 index } + { 3 index /Private get mark 6 1 roll } + ifelse + dup /RunInt known + { /RunInt get } + { pop /CCRun } + ifelse + get exec + Adobe_CoolType_Utility /ct_Level2? get not + { cleartomark } + if + } bind def + /ct_BuildCharIncremental + { + { + Adobe_CoolType_Utility /ct_MakeOCF get begin + ct_BuildCharSetUp + ct_ShowCharString + } + stopped + { stop } + if + end + end + end + end + } bind def + /BaseFontNameStr (BF00) def + /ct_Type1FontTemplate 14 dict + begin + /FontType 1 def + /FontMatrix [0.001 0 0 0.001 0 0] def + /FontBBox [-250 -250 1250 1250] def + /Encoding ct_cHexEncoding def + /PaintType 0 def + currentdict + end def + /BaseFontTemplate 11 dict + begin + /FontMatrix [0.001 0 0 0.001 0 0] def + /FontBBox [-250 -250 1250 1250] def + /Encoding ct_cHexEncoding def + /BuildChar /ct_BuildCharIncremental load def + ct_Clone? + { + /FontType 3 def + /ct_ShowCharString /ct_Type3ShowCharString load def + /ct_dfSetCacheProc /ct_CloneSetCacheProc load def + /ct_SyntheticBold false def + /ct_StrokeWidth 1 def + } + { + /FontType 4 def + /Private 1 dict dup /lenIV 4 put def + /CharStrings 1 dict dup /.notdef put def + /PaintType 0 def + /ct_ShowCharString /ct_Type4ShowCharString load def + } + ifelse + /ct_str1 1 string def + currentdict + end def + /BaseFontDictSize BaseFontTemplate length 5 add def + /ct_matrixeq + { + true 0 1 5 + { + dup 4 index exch get exch 3 index exch get eq and + dup not + { exit } + if + } + for + exch pop exch pop + } bind def + /ct_makeocf + { + 15 dict + begin + exch /WMode exch def + exch /FontName exch def + /FontType 0 def + /FMapType 2 def + dup /FontMatrix known + { dup /FontMatrix get /FontMatrix exch def } + { /FontMatrix matrix def } + ifelse + /bfCount 1 index /CIDCount get 256 idiv 1 add + dup 256 gt { pop 256} if def + /Encoding + 256 array 0 1 bfCount 1 sub { 2 copy dup put pop } for + bfCount 1 255 { 2 copy bfCount put pop } for + def + /FDepVector bfCount dup 256 lt { 1 add } if array def + BaseFontTemplate BaseFontDictSize dict copy + begin + /CIDFont exch def + CIDFont /FontBBox known + { CIDFont /FontBBox get /FontBBox exch def } + if + CIDFont /CDevProc known + { CIDFont /CDevProc get /CDevProc exch def } + if + currentdict + end + BaseFontNameStr 3 (0) putinterval + 0 1 bfCount dup 256 eq { 1 sub } if + { + FDepVector exch + 2 index BaseFontDictSize dict copy + begin + dup /CIDFirstByte exch 256 mul def + FontType 3 eq + { /ct_FDDict 2 dict def } + if + currentdict + end + 1 index 16 + BaseFontNameStr 2 2 getinterval cvrs pop + BaseFontNameStr exch definefont + put + } + for + ct_Clone? + { /Widths 1 index /CIDFont get /GlyphDirectory get length dict def } + if + FontName + currentdict + end + definefont + ct_Clone? + { + gsave + dup 1000 scalefont setfont + ct_BuildCharDict + begin + /usewidths? false def + currentfont /Widths get + begin + exch /CIDFont get /GlyphDirectory get + { + pop + dup charcode exch 1 index 0 2 index 256 idiv put + 1 index exch 1 exch 256 mod put + stringwidth 2 array astore def + } + forall + end + /usewidths? true def + end + grestore + } + { exch pop } + ifelse + } bind def + /ct_ComposeFont + { + ct_UseNativeCapability? + { + 2 index /CMap ct_resourcestatus + { pop pop exch pop } + { + /CIDInit /ProcSet findresource + begin + 12 dict + begin + begincmap + /CMapName 3 index def + /CMapVersion 1.000 def + /CMapType 1 def + exch /WMode exch def + /CIDSystemInfo 3 dict dup + begin + /Registry (Adobe) def + /Ordering + CMapName ct_mkocfStr100 cvs + (Adobe-) search + { + pop pop + (-) search + { + dup length string copy + exch pop exch pop + } + { pop (Identity)} + ifelse + } + { pop (Identity) } + ifelse + def + /Supplement 0 def + end def + 1 begincodespacerange + <0000> + endcodespacerange + 1 begincidrange + <0000> 0 + endcidrange + endcmap + CMapName currentdict /CMap defineresource pop + end + end + } + ifelse + composefont + } + { + 3 2 roll pop + 0 get /CIDFont findresource + ct_makeocf + } + ifelse + } bind def + /ct_MakeIdentity + { + ct_UseNativeCapability? + { + 1 index /CMap ct_resourcestatus + { pop pop } + { + /CIDInit /ProcSet findresource begin + 12 dict begin + begincmap + /CMapName 2 index def + /CMapVersion 1.000 def + /CMapType 1 def + /CIDSystemInfo 3 dict dup + begin + /Registry (Adobe) def + /Ordering + CMapName ct_mkocfStr100 cvs + (Adobe-) search + { + pop pop + (-) search + { dup length string copy exch pop exch pop } + { pop (Identity) } + ifelse + } + { pop (Identity) } + ifelse + def + /Supplement 0 def + end def + 1 begincodespacerange + <0000> + endcodespacerange + 1 begincidrange + <0000> 0 + endcidrange + endcmap + CMapName currentdict /CMap defineresource pop + end + end + } + ifelse + composefont + } + { + exch pop + 0 get /CIDFont findresource + ct_makeocf + } + ifelse + } bind def + currentdict readonly pop + end + end +%%EndResource +/currentpacking where{pop currentpacking true setpacking}if +%%BeginResource: procset pdfvars 6.0 1 +%%Copyright: Copyright 1987-2002 Adobe Systems Incorporated. All Rights Reserved. +%%Title: definition of dictionary of variables used by PDF & PDFText procsets +userdict /PDF 162 dict put +userdict /PDFVars 89 dict dup begin put +/docSetupDone false def +/InitAll 0 def +/TermAll 0 def +/DocInitAll 0 def +/DocTermAll 0 def +/_pdfEncodings 2 array def +/_pdf_str1 1 string def +/_pdf_i 0 def +/_pdf_na 0 def +/_pdf_showproc 0 def +/_italMtx [1 0 .212557 1 0 0] def +/_italMtx_WMode1 [1 -.212557 0 1 0 0] def +/_italMtxType0 [1 0 .1062785 1 0 0] def +/_italMtx_WMode1Type0 [1 -.1062785 0 1 0 0] def +/_basefont 0 def +/_basefonto 0 def +/_pdf_oldCIDInit null def +/_pdf_FontDirectory 30 dict def +/_categories 10 dict def +/_sa? true def +/_ColorSep5044? false def +/nulldict 0 dict def +/_processColors 0 def +/overprintstack null def +/_defaulttransfer currenttransfer def +/_defaultflatness currentflat def +/_defaulthalftone null def +/_defaultcolortransfer null def +/_defaultblackgeneration null def +/_defaultundercolorremoval null def +/_defaultcolortransfer null def +PDF begin +[/c/cs/cm/d/d0/f/h/i/j/J/l/m/M/n/q/Q/re/ri/S/sc/sh/Tf/w/W +/applyInterpFunc/applystitchFunc/domainClip/encodeInput +/initgs/int/limit/rangeClip +/defineRes/undefineRes/findRes/setSA/pl +/? /! /| /: /+ /GetGlyphDirectory +/pdf_flushFilters /pdf_readstring /pdf_dictOp /pdf_image /pdf_maskedImage +/pdf_shfill /pdf_sethalftone +] {null def} bind forall +end +end +%%EndResource +PDFVars begin PDF begin +%%BeginResource: procset pdfutil 6.0 1 +%%Copyright: Copyright 1993-2001 Adobe Systems Incorporated. All Rights Reserved. +%%Title: Basic utilities used by other PDF procsets +/bd {bind def} bind def +/ld {load def} bd +/bld { +dup length dict begin +{ null def } forall +bind +end +def +} bd +/dd { PDFVars 3 1 roll put } bd +/xdd { exch dd } bd +/Level2? +systemdict /languagelevel known +{ systemdict /languagelevel get 2 ge } { false } ifelse +def +/Level1? Level2? not def +/Level3? +systemdict /languagelevel known +{systemdict /languagelevel get 3 eq } { false } ifelse +def +/getifknown { +2 copy known { get true } { pop pop false } ifelse +} bd +/here { +currentdict exch getifknown +} bd +/isdefined? { where { pop true } { false } ifelse } bd +%%EndResource +%%BeginResource: procset l2compat 6.0 1 +%%Copyright: Copyright 1987-2003 Adobe Systems Incorporated. All Rights Reserved. +%%Title: Level 1 emulation of level 2 operators +/setcmykcolor isdefined? not +{ +/setcmykcolor { +1 sub 4 1 roll +3 { +3 index add neg dup 0 lt { pop 0 } if +3 1 roll +} repeat +setrgbcolor +pop +} bd +} if +/rectclip isdefined? not +{ +/rectclip { newpath re clip newpath } bd +} if +/rectfill isdefined? not +{ +/rectfill { gsave newpath re fill grestore } bd +} if +/sethalftone isdefined? not +{ +/sethalftone { +begin +HalftoneType 1 eq +{ Frequency Angle /SpotFunction load setscreen } +if +end +} bd +} if +Level1? +{ +/pdf_show {show} bd +/xshow +{ +PDFVars /_pdf_showproc /pdf_show load put +pdf_xshow +} bd +/yshow +{ +PDFVars /_pdf_showproc /pdf_show load put +pdf_yshow +} bd +/xyshow +{ +PDFVars /_pdf_showproc /pdf_show load put +pdf_xyshow +} bd +} if +/getrampcolor { +cvi +/indx exch def +[ +0 1 NumComp 1 sub { +dup +Samples exch get +dup type /stringtype eq { indx get } if +exch +Scaling exch get aload pop +3 1 roll +mul add +} for +] +L1setcolor +} bd +/sssetbackground { L1setcolor } bd +%%EndResource +%%BeginResource: procset pdf 6.0 1 +%%Copyright: Copyright 1998-2003 Adobe Systems Incorporated. All Rights Reserved. +%%Title: General operators for PDF, common to all Language Levels. +/cm { matrix astore concat } bd +/d /setdash ld +/f /fill ld +/h /closepath ld +/i {dup 0 eq {pop _defaultflatness} if setflat} bd +/j /setlinejoin ld +/J /setlinecap ld +/M /setmiterlimit ld +/n /newpath ld +/S /stroke ld +/w /setlinewidth ld +/W /clip ld +/sg /setgray ld +/initgs { +0 setgray +[] 0 d +0 j +0 J +10 M +1 w +false setSA +/_defaulttransfer load settransfer +0 i +/RelativeColorimetric ri +newpath +} bd +/int { +dup 2 index sub 3 index 5 index sub div 6 -2 roll sub mul +exch pop add exch pop +} bd +/limit { +dup 2 index le { exch } if pop +dup 2 index ge { exch } if pop +} bd +/domainClip { +Domain aload pop 3 2 roll +limit +} [/Domain] bld +/applyInterpFunc { +0 1 DimOut 1 sub +{ +dup C0 exch get exch +dup C1 exch get exch +3 1 roll +1 index sub +3 index +N exp mul add +exch +currentdict /Range_lo known +{ +dup Range_lo exch get exch +Range_hi exch get +3 2 roll limit +} +{ +pop +} +ifelse +exch +} for +pop +} [/DimOut /C0 /C1 /N /Range_lo /Range_hi] bld +/encodeInput { +NumParts 1 sub +0 1 2 index +{ +dup Bounds exch get +2 index gt +{ exit } +{ dup +3 index eq +{ exit } +{ pop } ifelse +} ifelse +} for +3 2 roll pop +dup Bounds exch get exch +dup 1 add Bounds exch get exch +2 mul +dup Encode exch get exch +1 add Encode exch get +int +} [/NumParts /Bounds /Encode] bld +/rangeClip { +exch dup Range_lo exch get +exch Range_hi exch get +3 2 roll +limit +} [/Range_lo /Range_hi] bld +/applyStitchFunc { +Functions exch get exec +currentdict /Range_lo known { +0 1 DimOut 1 sub { +DimOut 1 add -1 roll +rangeClip +} for +} if +} [/Functions /Range_lo /DimOut] bld +/pdf_flushfilters +{ +aload length +{ dup status +1 index currentfile ne and +{ dup flushfile closefile } +{ pop } +ifelse +} repeat +} bd +/pdf_readstring +{ +1 index dup length 1 sub get +exch readstring pop +exch pdf_flushfilters +} bind def +/pdf_dictOp +{ +3 2 roll +10 dict copy +begin +_Filters dup length 1 sub get def +currentdict exch exec +_Filters pdf_flushfilters +end +} [/_Filters] bld +/pdf_image {{image} /DataSource pdf_dictOp} bd +/pdf_imagemask {{imagemask} /DataSource pdf_dictOp} bd +/pdf_shfill {{sh} /DataSource pdf_dictOp} bd +/pdf_sethalftone {{sethalftone} /Thresholds pdf_dictOp} bd +/pdf_maskedImage +{ +10 dict copy begin +/miDict currentdict def +/DataDict DataDict 10 dict copy def +DataDict begin +/DataSource +_Filters dup length 1 sub get +def +miDict image +_Filters pdf_flushfilters +end +end +} [/miDict /DataDict /_Filters] bld +/RadialShade { +40 dict begin +/background exch def +/ext1 exch def +/ext0 exch def +/BBox exch def +/r2 exch def +/c2y exch def +/c2x exch def +/r1 exch def +/c1y exch def +/c1x exch def +/rampdict exch def +gsave +BBox length 0 gt { +newpath +BBox 0 get BBox 1 get moveto +BBox 2 get BBox 0 get sub 0 rlineto +0 BBox 3 get BBox 1 get sub rlineto +BBox 2 get BBox 0 get sub neg 0 rlineto +closepath +clip +newpath +} if +c1x c2x eq +{ +c1y c2y lt {/theta 90 def}{/theta 270 def} ifelse +} +{ +/slope c2y c1y sub c2x c1x sub div def +/theta slope 1 atan def +c2x c1x lt c2y c1y ge and { /theta theta 180 sub def} if +c2x c1x lt c2y c1y lt and { /theta theta 180 add def} if +} +ifelse +gsave +clippath +c1x c1y translate +theta rotate +-90 rotate +{ pathbbox } stopped +{ 0 0 0 0 } if +/yMax exch def +/xMax exch def +/yMin exch def +/xMin exch def +grestore +xMax xMin eq yMax yMin eq or +{ +grestore +end +} +{ +/max { 2 copy gt { pop } {exch pop} ifelse } bind def +/min { 2 copy lt { pop } {exch pop} ifelse } bind def +rampdict begin +40 dict begin +background length 0 gt { background sssetbackground gsave clippath fill grestore } if +gsave +c1x c1y translate +theta rotate +-90 rotate +/c2y c1x c2x sub dup mul c1y c2y sub dup mul add sqrt def +/c1y 0 def +/c1x 0 def +/c2x 0 def +ext0 { +0 getrampcolor +c2y r2 add r1 sub 0.0001 lt +{ +c1x c1y r1 360 0 arcn +pathbbox +/aymax exch def +/axmax exch def +/aymin exch def +/axmin exch def +/bxMin xMin axmin min def +/byMin yMin aymin min def +/bxMax xMax axmax max def +/byMax yMax aymax max def +bxMin byMin moveto +bxMax byMin lineto +bxMax byMax lineto +bxMin byMax lineto +bxMin byMin lineto +eofill +} +{ +c2y r1 add r2 le +{ +c1x c1y r1 0 360 arc +fill +} +{ +c2x c2y r2 0 360 arc fill +r1 r2 eq +{ +/p1x r1 neg def +/p1y c1y def +/p2x r1 def +/p2y c1y def +p1x p1y moveto p2x p2y lineto p2x yMin lineto p1x yMin lineto +fill +} +{ +/AA r2 r1 sub c2y div def +AA -1 eq +{ /theta 89.99 def} +{ /theta AA 1 AA dup mul sub sqrt div 1 atan def} +ifelse +/SS1 90 theta add dup sin exch cos div def +/p1x r1 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def +/p1y p1x SS1 div neg def +/SS2 90 theta sub dup sin exch cos div def +/p2x r1 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def +/p2y p2x SS2 div neg def +r1 r2 gt +{ +/L1maxX p1x yMin p1y sub SS1 div add def +/L2maxX p2x yMin p2y sub SS2 div add def +} +{ +/L1maxX 0 def +/L2maxX 0 def +}ifelse +p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto +L1maxX L1maxX p1x sub SS1 mul p1y add lineto +fill +} +ifelse +} +ifelse +} ifelse +} if +c1x c2x sub dup mul +c1y c2y sub dup mul +add 0.5 exp +0 dtransform +dup mul exch dup mul add 0.5 exp 72 div +0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt +72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt +1 index 1 index lt { exch } if pop +/hires exch def +hires mul +/numpix exch def +/numsteps NumSamples def +/rampIndxInc 1 def +/subsampling false def +numpix 0 ne +{ +NumSamples numpix div 0.5 gt +{ +/numsteps numpix 2 div round cvi dup 1 le { pop 2 } if def +/rampIndxInc NumSamples 1 sub numsteps div def +/subsampling true def +} if +} if +/xInc c2x c1x sub numsteps div def +/yInc c2y c1y sub numsteps div def +/rInc r2 r1 sub numsteps div def +/cx c1x def +/cy c1y def +/radius r1 def +newpath +xInc 0 eq yInc 0 eq rInc 0 eq and and +{ +0 getrampcolor +cx cy radius 0 360 arc +stroke +NumSamples 1 sub getrampcolor +cx cy radius 72 hires div add 0 360 arc +0 setlinewidth +stroke +} +{ +0 +numsteps +{ +dup +subsampling { round } if +getrampcolor +cx cy radius 0 360 arc +/cx cx xInc add def +/cy cy yInc add def +/radius radius rInc add def +cx cy radius 360 0 arcn +eofill +rampIndxInc add +} +repeat +pop +} ifelse +ext1 { +c2y r2 add r1 lt +{ +c2x c2y r2 0 360 arc +fill +} +{ +c2y r1 add r2 sub 0.0001 le +{ +c2x c2y r2 360 0 arcn +pathbbox +/aymax exch def +/axmax exch def +/aymin exch def +/axmin exch def +/bxMin xMin axmin min def +/byMin yMin aymin min def +/bxMax xMax axmax max def +/byMax yMax aymax max def +bxMin byMin moveto +bxMax byMin lineto +bxMax byMax lineto +bxMin byMax lineto +bxMin byMin lineto +eofill +} +{ +c2x c2y r2 0 360 arc fill +r1 r2 eq +{ +/p1x r2 neg def +/p1y c2y def +/p2x r2 def +/p2y c2y def +p1x p1y moveto p2x p2y lineto p2x yMax lineto p1x yMax lineto +fill +} +{ +/AA r2 r1 sub c2y div def +AA -1 eq +{ /theta 89.99 def} +{ /theta AA 1 AA dup mul sub sqrt div 1 atan def} +ifelse +/SS1 90 theta add dup sin exch cos div def +/p1x r2 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def +/p1y c2y p1x SS1 div sub def +/SS2 90 theta sub dup sin exch cos div def +/p2x r2 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def +/p2y c2y p2x SS2 div sub def +r1 r2 lt +{ +/L1maxX p1x yMax p1y sub SS1 div add def +/L2maxX p2x yMax p2y sub SS2 div add def +} +{ +/L1maxX 0 def +/L2maxX 0 def +}ifelse +p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto +L1maxX L1maxX p1x sub SS1 mul p1y add lineto +fill +} +ifelse +} +ifelse +} ifelse +} if +grestore +grestore +end +end +end +} ifelse +} bd +/GenStrips { +40 dict begin +/background exch def +/ext1 exch def +/ext0 exch def +/BBox exch def +/y2 exch def +/x2 exch def +/y1 exch def +/x1 exch def +/rampdict exch def +gsave +BBox length 0 gt { +newpath +BBox 0 get BBox 1 get moveto +BBox 2 get BBox 0 get sub 0 rlineto +0 BBox 3 get BBox 1 get sub rlineto +BBox 2 get BBox 0 get sub neg 0 rlineto +closepath +clip +newpath +} if +x1 x2 eq +{ +y1 y2 lt {/theta 90 def}{/theta 270 def} ifelse +} +{ +/slope y2 y1 sub x2 x1 sub div def +/theta slope 1 atan def +x2 x1 lt y2 y1 ge and { /theta theta 180 sub def} if +x2 x1 lt y2 y1 lt and { /theta theta 180 add def} if +} +ifelse +gsave +clippath +x1 y1 translate +theta rotate +{ pathbbox } stopped +{ 0 0 0 0 } if +/yMax exch def +/xMax exch def +/yMin exch def +/xMin exch def +grestore +xMax xMin eq yMax yMin eq or +{ +grestore +end +} +{ +rampdict begin +20 dict begin +background length 0 gt { background sssetbackground gsave clippath fill grestore } if +gsave +x1 y1 translate +theta rotate +/xStart 0 def +/xEnd x2 x1 sub dup mul y2 y1 sub dup mul add 0.5 exp def +/ySpan yMax yMin sub def +/numsteps NumSamples def +/rampIndxInc 1 def +/subsampling false def +xStart 0 transform +xEnd 0 transform +3 -1 roll +sub dup mul +3 1 roll +sub dup mul +add 0.5 exp 72 div +0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt +72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt +1 index 1 index lt { exch } if pop +mul +/numpix exch def +numpix 0 ne +{ +NumSamples numpix div 0.5 gt +{ +/numsteps numpix 2 div round cvi dup 1 le { pop 2 } if def +/rampIndxInc NumSamples 1 sub numsteps div def +/subsampling true def +} if +} if +ext0 { +0 getrampcolor +xMin xStart lt +{ xMin yMin xMin neg ySpan rectfill } if +} if +/xInc xEnd xStart sub numsteps div def +/x xStart def +0 +numsteps +{ +dup +subsampling { round } if +getrampcolor +x yMin xInc ySpan rectfill +/x x xInc add def +rampIndxInc add +} +repeat +pop +ext1 { +xMax xEnd gt +{ xEnd yMin xMax xEnd sub ySpan rectfill } if +} if +grestore +grestore +end +end +end +} ifelse +} bd +/currentdistillerparams where { pop currentdistillerparams /CoreDistVersion get 5000 lt}{true}ifelse +{ +/PDFMark5 {cleartomark} bd +} +{ +/PDFMark5 {pdfmark} bd +}ifelse +/ReadByPDFMark5 +{ +2 dict begin +/makerString exch def string /tmpString exch def +{ +currentfile tmpString readline pop +makerString anchorsearch +{ +pop pop cleartomark exit +} +{ +3 copy /PUT PDFMark5 pop 2 copy (\n) /PUT PDFMark5 +} ifelse +}loop +end +}bd +%%EndResource +%%BeginResource: procset sep_ops 6.0 1 +%%Copyright: Copyright 1987-2001 Adobe Systems Incorporated. All Rights Reserved. +%%Title: Support for Separations in Level 1, following the conventions of Tech Note 5044 +userdict /sep_ops 50 dict dup begin put +/bdef {bind def} bind def +/xdef {exch def} bdef +/colorimagebuffer { +0 1 2 index length 1 sub { +dup 2 index exch get 255 exch sub 2 index 3 1 roll put +} for +} bdef +/addprocs { +[ 3 1 roll +/exec load +dup 3 1 roll +] cvx +} bdef +/L1? { +systemdict /languagelevel known { +systemdict /languagelevel get 2 lt +}{ +true +} ifelse +} bdef +/colorexists { +statusdict /processcolors known { +statusdict /processcolors get exec +}{ +/deviceinfo where { +pop deviceinfo /Colors known { +deviceinfo /Colors get +statusdict /processcolors { +deviceinfo /Colors known { +deviceinfo /Colors get +}{ +1 +} ifelse +} put +}{ +1 +} ifelse +}{ +1 +} ifelse +} ifelse +1 gt +} bdef +/colorplate colorexists { 0 } { 5 } ifelse def +/negativecolorplate false def +/setcmykcolor where { +pop +gsave +1 0 0 0 setcmykcolor systemdict /currentgray get exec 1 exch sub +0 1 0 0 setcmykcolor systemdict /currentgray get exec 1 exch sub +0 0 1 0 setcmykcolor systemdict /currentgray get exec 1 exch sub +0 0 0 1 setcmykcolor systemdict /currentgray get exec 1 exch sub +4 {4 copy} repeat +grestore +1 dict begin +/foureq { +4 index eq 8 1 roll +4 index eq 8 1 roll +4 index eq 8 1 roll +4 index eq 8 1 roll +pop pop pop pop and and and +} def +1 0 0 0 foureq {/colorplate 1 store} if +0 1 0 0 foureq {/colorplate 2 store} if +0 0 1 0 foureq {/colorplate 3 store} if +0 0 0 1 foureq {/colorplate 4 store} if +0 0 0 0 foureq {/colorplate 6 store} if +end +} if +0 systemdict /currenttransfer get exec exec +1 systemdict /currenttransfer get exec exec +2 copy +eq +{ +/colorplate 6 store +pop +/negativecolorplate exch 0.5 lt store +} +{ +gt /negativecolorplate exch store +} +ifelse +/findcmykcustomcolor where { pop } +{ +/findcmykcustomcolor { +[ 6 1 roll ] readonly +} bdef +} ifelse +/setoverprint where { +pop +}{ +/setoverprint { +pop +} bdef +} ifelse +/currentoverprint where { +pop +}{ +/currentoverprint { +false +} bdef +} ifelse +/setcustomcolor where { +pop +}{ +L1? { +/setcustomcolor { +exch +aload pop pop +4 { 4 index mul 4 1 roll } repeat +5 -1 roll pop +setcmykcolor +} bdef +}{ +/setcustomcolor { +exch +[ exch /Separation exch dup 4 get exch /DeviceCMYK exch +0 4 getinterval +[ exch /dup load exch cvx {mul exch dup} +/forall load /pop load dup] cvx +] setcolorspace setcolor +} bdef +} ifelse +} ifelse +/ik 0 def +/iy 0 def +/im 0 def +/ic 0 def +/imagetint { +ic .3 mul +im .59 mul +iy .11 mul +ik add add add dup +1 gt {pop 1} if +} bdef +/setcmykcolor where { +pop +}{ +/setcmykcolor { +/ik xdef /iy xdef /im xdef /ic xdef +imagetint +1 exch sub setgray +} bdef +} ifelse +/customcolorimage where { +pop +}{ +L1? { +/customcolorimage{ +gsave +colorexists { +aload pop pop +/ik xdef /iy xdef /im xdef /ic xdef +currentcolortransfer +{ik mul ik sub 1 add} addprocs +4 1 roll {iy mul iy sub 1 add} addprocs +4 1 roll {im mul im sub 1 add} addprocs +4 1 roll {ic mul ic sub 1 add} addprocs +4 1 roll setcolortransfer +/magentabuf 0 string def +/yellowbuf 0 string def +/blackbuf 0 string def +{ +colorimagebuffer dup length magentabuf length ne +{ +dup length dup dup +/magentabuf exch string def +/yellowbuf exch string def +/blackbuf exch string def +} if +dup magentabuf copy yellowbuf copy +blackbuf copy pop +} addprocs +{magentabuf}{yellowbuf}{blackbuf} true 4 colorimage +}{ +aload pop pop /ik xdef /iy xdef /im xdef /ic xdef /tint +imagetint def +currenttransfer +{tint mul 1 tint sub add} addprocs settransfer image +} ifelse +grestore +} bdef +}{ +/customcolorimage { +gsave +[ exch /Separation exch dup 4 get exch /DeviceCMYK exch +0 4 getinterval +[ exch /dup load exch cvx {mul exch dup} +/forall load /pop load dup] cvx +] setcolorspace +10 dict begin +/ImageType 1 def +/DataSource exch def +/ImageMatrix exch def +/BitsPerComponent exch def +/Height exch def +/Width exch def +/Decode [1 0] def +currentdict end +image +grestore +} bdef +} ifelse +} ifelse +/setseparationgray where { +pop +}{ +L1? { +/setseparationgray { 1 exch sub dup dup dup setcmykcolor } bdef +}{ +/setseparationgray { +[/Separation /All /DeviceCMYK {dup dup dup}] setcolorspace +1 exch sub setcolor +} bdef +} ifelse +} ifelse +/separationimage where { pop } +{ +/separationimage { +gsave +1 1 1 1 (All) +findcmykcustomcolor customcolorimage +grestore +} bdef +} ifelse +currentdict readonly pop end +%%EndResource +%%BeginResource: procset pdflev15044 6.0 1 +%%Copyright: Copyright 1987-2002 Adobe Systems Incorporated. All Rights Reserved. +%%Title: PDF operators, Level 1, with emulated separations (TN 5044) +/_ColorSep5044? true dd +/docinitialize { +PDF begin +/_defaulthalftone +/currenthalftone where +{ pop currenthalftone } +{ 4 dict dup begin +currentscreen +/SpotFunction exch def +/Angle exch def +/Frequency exch def +/HalftoneType 1 def +end } +ifelse +dd +/currentcolortransfer where +{ pop /_defaultcolortransfer [ currentcolortransfer ] dd } +{ /_defaultcolortransfer [currenttransfer dup dup dup] dd } +ifelse +end +} bd +/initialize { +/overprintstack null dd +sep_ops begin +50 dict begin +_defaulthalftone sethalftone +} bd +/terminate { +end end +} bd +/currentcolortransfer where +{ pop } +{ +/setcolortransfer +{ +settransfer pop pop pop +} bd +} ifelse +/pl { +transform +0.25 sub round 0.25 add exch +0.25 sub round 0.25 add exch +itransform +} bd +/m { _sa? { pl } if moveto } bd +/l { _sa? { pl } if lineto } bd +/c +{ +_sa? {3 {pl 6 2 roll} repeat} if +curveto +} bd +/ri/pop ld +/setSA { /_sa? xdd } bd +/re +{ +_sa? +{ +8 dict begin +/:h exch def +/:w exch def +/:y exch def +/:x exch def +:x :y pl +/:ymin exch def /:xmin exch def +:x :w add :y :h add pl +/:ymax exch def /:xmax exch def +:xmin :ymin moveto +:xmax :ymin lineto +:xmax :ymax lineto +:xmin :ymax lineto +closepath +end +} +{ +4 2 roll moveto +1 index 0 rlineto +0 exch rlineto +neg 0 rlineto +closepath +} ifelse +} bd +/q +{ +gsave +[currentoverprint overprintstack] /overprintstack xdd +} +[/overprintstack] bld +/Q +{ +overprintstack aload pop /overprintstack xdd setoverprint +grestore +} +[/overprintstack] bld +/AlmostFull? +{ dup maxlength exch length sub 2 le +} bd +/Expand +{ 1 index maxlength mul cvi dict +dup begin exch { def } forall end +} bd +/xput +{ 3 2 roll +dup 3 index known not +{ dup AlmostFull? { 1.5 Expand } if +} if +dup 4 2 roll put +} bd +/defineRes +{ _categories 1 index known not +{ /_categories _categories 2 index 10 dict xput store +} if +_categories exch 2 copy get 5 -1 roll 4 index xput put +} bd +/undefineRes { +null exch +defineRes +} bd +/findRes { +_categories exch get exch get +} bd +/L1setcolor { +aload length +dup 0 eq +{ pop .5 setgray } +{ dup 1 eq +{ pop setgray } +{ 3 eq +{ setrgbcolor } +{ setcmykcolor } +ifelse } +ifelse } +ifelse +} bind dd +/concattransferfuncs { +[ 3 1 roll /exec load exch /exec load ] cvx +} bd +/concatandsettransfer { +/_defaulttransfer load concattransferfuncs settransfer +} bd +/concatandsetcolortransfer { +colorplate 0 eq +{ +_defaultcolortransfer aload pop +8 -1 roll 5 -1 roll concattransferfuncs 7 1 roll +6 -1 roll 4 -1 roll concattransferfuncs 5 1 roll +4 -1 roll 3 -1 roll concattransferfuncs 3 1 roll +concattransferfuncs +setcolortransfer +} if +colorplate 1 ge colorplate 4 le and +{ +4 colorplate sub index 4 { exch pop } repeat +concatandsettransfer +} if +colorplate 5 ge +{ +0 index 4 { exch pop } repeat +concatandsettransfer +} if +} bd +/tn5044sethalftone +{ +begin +HalftoneType 5 eq +{ [/Default /Cyan /Magenta /Yellow /Black /Default /Default /Default] +colorplate get +here not { +/Default here not { currentdict } if +} if +} +{ currentdict } +ifelse +end +begin +/TransferFunction here +{ +concatandsettransfer +currentdict dup length dict +begin +{ +1 index /TransferFunction ne { def } { pop pop } ifelse +} forall +currentdict +end +} +{ +currentdict +} ifelse +end +sethalftone +} bd +/paintimage +{ +colorplate 0 eq +{ +{ {currentfile cyanstr readstring pop} +{currentfile magentastr readstring pop} +{currentfile yellowstr readstring pop} +{currentfile blackstr readstring pop +currentfile graystr readstring pop pop} +} +{ {currentfile cyanstr readhexstring pop} +{currentfile magentastr readhexstring pop} +{currentfile yellowstr readhexstring pop} +{currentfile blackstr readhexstring pop +currentfile graystr readhexstring pop pop} +} ifelse +true 4 colorimage +} +{ +3 dict begin +/binaryOK exch def +[ +1 1 5 { +dup +/currentfile cvx +[ /cyanstr /magentastr /yellowstr /blackstr /graystr ] +3 -1 roll 1 sub get cvx +binaryOK { /readstring } { /readhexstring } ifelse cvx +/pop cvx +5 -1 roll +colorplate dup 5 gt { pop 5 } if +eq not { /pop cvx } if +} for +] cvx bind +end +[ +colorplate 6 eq { +/pop cvx +negativecolorplate { 0 } { 1 } ifelse +} if +colorplate 4 le +{ +1 /exch cvx /sub cvx +} if +colorplate 6 ne +{ +systemdict /currenttransfer get exec +aload pop +} if +] cvx +gsave +systemdict /settransfer get exec +systemdict /image get exec +grestore +} ifelse +} bd +%%EndResource +%%BeginResource: procset pdftext 6.0 1 +%%Copyright: Copyright 1987-2001 Adobe Systems Incorporated. All Rights Reserved. +%%Title: Text operators for PDF +PDF /PDFText 78 dict dup begin put +/docinitialize +{ +/resourcestatus where { +pop +/CIDParams /ProcSet resourcestatus { +pop pop +false /CIDParams /ProcSet findresource /SetBuildCompatible get exec +} if +} if +PDF begin +PDFText /_pdfDefineIdentity-H known +{ PDFText /_pdfDefineIdentity-H get exec} +if +end +} bd +/initialize { +PDFText begin +} bd +/terminate { end } bd +Level2? +{ +/_safeput +{ +3 -1 roll load 3 1 roll put +} +bd +} +{ +/_safeput +{ +2 index load dup dup length exch maxlength ge +{ dup length 5 add dict copy +3 index xdd +} +{ pop } +ifelse +3 -1 roll load 3 1 roll put +} +bd +} +ifelse +/pdf_has_composefont? systemdict /composefont known def +/CopyFont { +{ +1 index /FID ne 2 index /UniqueID ne and +{ def } { pop pop } ifelse +} forall +} bd +/Type0CopyFont +{ +exch +dup length dict +begin +CopyFont +[ +exch +FDepVector +{ +dup /FontType get 0 eq +{ +1 index Type0CopyFont +/_pdfType0 exch definefont +} +{ +/_pdfBaseFont exch +2 index exec +} +ifelse +exch +} +forall +pop +] +/FDepVector exch def +currentdict +end +} bd +Level2? {currentglobal true setglobal} if +/cHexEncoding +[/c00/c01/c02/c03/c04/c05/c06/c07/c08/c09/c0A/c0B/c0C/c0D/c0E/c0F/c10/c11/c12 +/c13/c14/c15/c16/c17/c18/c19/c1A/c1B/c1C/c1D/c1E/c1F/c20/c21/c22/c23/c24/c25 +/c26/c27/c28/c29/c2A/c2B/c2C/c2D/c2E/c2F/c30/c31/c32/c33/c34/c35/c36/c37/c38 +/c39/c3A/c3B/c3C/c3D/c3E/c3F/c40/c41/c42/c43/c44/c45/c46/c47/c48/c49/c4A/c4B +/c4C/c4D/c4E/c4F/c50/c51/c52/c53/c54/c55/c56/c57/c58/c59/c5A/c5B/c5C/c5D/c5E +/c5F/c60/c61/c62/c63/c64/c65/c66/c67/c68/c69/c6A/c6B/c6C/c6D/c6E/c6F/c70/c71 +/c72/c73/c74/c75/c76/c77/c78/c79/c7A/c7B/c7C/c7D/c7E/c7F/c80/c81/c82/c83/c84 +/c85/c86/c87/c88/c89/c8A/c8B/c8C/c8D/c8E/c8F/c90/c91/c92/c93/c94/c95/c96/c97 +/c98/c99/c9A/c9B/c9C/c9D/c9E/c9F/cA0/cA1/cA2/cA3/cA4/cA5/cA6/cA7/cA8/cA9/cAA +/cAB/cAC/cAD/cAE/cAF/cB0/cB1/cB2/cB3/cB4/cB5/cB6/cB7/cB8/cB9/cBA/cBB/cBC/cBD +/cBE/cBF/cC0/cC1/cC2/cC3/cC4/cC5/cC6/cC7/cC8/cC9/cCA/cCB/cCC/cCD/cCE/cCF/cD0 +/cD1/cD2/cD3/cD4/cD5/cD6/cD7/cD8/cD9/cDA/cDB/cDC/cDD/cDE/cDF/cE0/cE1/cE2/cE3 +/cE4/cE5/cE6/cE7/cE8/cE9/cEA/cEB/cEC/cED/cEE/cEF/cF0/cF1/cF2/cF3/cF4/cF5/cF6 +/cF7/cF8/cF9/cFA/cFB/cFC/cFD/cFE/cFF] def +Level2? {setglobal} if +/modEnc { +/_enc xdd +/_icode 0 dd +counttomark 1 sub -1 0 +{ +index +dup type /nametype eq +{ +_enc _icode 3 -1 roll put +_icode 1 add +} +if +/_icode xdd +} for +cleartomark +_enc +} bd +/trEnc { +/_enc xdd +255 -1 0 { +exch dup -1 eq +{ pop /.notdef } +{ Encoding exch get } +ifelse +_enc 3 1 roll put +} for +pop +_enc +} bd +/TE { +/_i xdd +StandardEncoding 256 array copy modEnc +_pdfEncodings exch _i exch put +} bd +Level2? +{ +/pdfPatchCStrings +{ +currentdict /CharStrings known currentdict /FontType known and +{ +FontType 1 eq CharStrings type /dicttype eq and +{ +CharStrings /mu known CharStrings /mu1 known not and CharStrings wcheck and +{ +CharStrings /mu get +type /stringtype eq +{ +currentglobal +CharStrings /mu1 +CharStrings /mu get +dup gcheck setglobal +dup length string copy +put +setglobal +} if +} if +} if +} if +} bd +} +{ /pdfPatchCStrings {} bd } +ifelse +/TZ +{ +/_usePDFEncoding xdd +findfont +dup length 6 add dict +begin +{ +1 index /FID ne { def } { pop pop } ifelse +} forall +pdfPatchCStrings +/pdf_origFontName FontName def +/FontName exch def +currentdict /PaintType known +{ PaintType 2 eq {/PaintType 0 def} if } +if +_usePDFEncoding 0 ge +{ +/Encoding _pdfEncodings _usePDFEncoding get def +pop +} +{ +_usePDFEncoding -1 eq +{ +counttomark 0 eq +{ pop } +{ +Encoding 256 array copy +modEnc /Encoding exch def +} +ifelse +} +{ +256 array +trEnc /Encoding exch def +} +ifelse +} +ifelse +pdf_EuroProcSet pdf_origFontName known +{ +pdf_origFontName pdf_AddEuroGlyphProc +} if +Level2? +{ +currentdict /pdf_origFontName undef +} if +FontName currentdict +end +definefont pop +} +bd +Level2? +{ +/TZG +{ +currentglobal true setglobal +2 index _pdfFontStatus +{ +2 index findfont +false setglobal +3 index findfont +true setglobal +ne +{ +2 index findfont dup rcheck +{ +dup length dict begin +{ +1 index /FID ne { def } { pop pop } ifelse +} forall +pdfPatchCStrings +currentdict end +} +if +3 index exch definefont pop +} +if +} if +setglobal +TZ +} bd +} +{ +/TZG {TZ} bd +} ifelse +Level2? +{ +currentglobal false setglobal +userdict /pdftext_data 5 dict put +pdftext_data +begin +/saveStacks +{ +pdftext_data +begin +/vmmode currentglobal def +false setglobal +count array astore /os exch def +end +countdictstack array dictstack pdftext_data exch /ds exch put +cleardictstack pdftext_data /dscount countdictstack put +pdftext_data /vmmode get setglobal +} bind def +/restoreStacks +{ +pdftext_data /vmmode currentglobal put false setglobal +clear cleardictstack +pdftext_data /ds get dup +pdftext_data /dscount get 1 2 index length 1 sub +{ get begin dup } for +pop pop +pdftext_data /os get aload pop +pdftext_data /vmmode get setglobal +} bind def +/testForClonePrinterBug +{ +currentglobal true setglobal +/undefinedCategory /Generic /Category findresource +dup length dict copy /Category defineresource pop +setglobal +pdftext_data /saveStacks get exec +pdftext_data /vmmode currentglobal put false setglobal +/undefined /undefinedCategory { resourcestatus } stopped +pdftext_data exch /bugFound exch put +pdftext_data /vmmode get setglobal +pdftext_data /restoreStacks get exec +pdftext_data /bugFound get +} bind def +end +setglobal +/pdf_resourcestatus +pdftext_data /testForClonePrinterBug get exec +{ +{ +pdftext_data /saveStacks get exec +pdftext_data /os get dup dup length 1 sub +dup 1 sub dup 0 lt { pop 0 } if +exch 1 exch { get exch dup } for +pop pop +{ resourcestatus } +stopped +{ +clear cleardictstack pdftext_data /restoreStacks get exec +{ pop pop } stopped pop false +} +{ +count array astore pdftext_data exch /results exch put +pdftext_data /restoreStacks get exec pop pop +pdftext_data /results get aload pop +} +ifelse +} +} +{ { resourcestatus } } +ifelse +bd +} +if +Level2? +{ +/_pdfUndefineResource +{ +currentglobal 3 1 roll +_pdf_FontDirectory 2 index 2 copy known +{undef} +{pop pop} +ifelse +1 index (pdf) exch _pdfConcatNames 1 index +1 index 1 _pdfConcatNames 1 index +5 index 1 _pdfConcatNames 1 index +4 +{ +2 copy pdf_resourcestatus +{ +pop 2 lt +{2 copy findresource gcheck setglobal undefineresource} +{pop pop} +ifelse +} +{ pop pop} +ifelse +} repeat +setglobal +} bd +} +{ +/_pdfUndefineResource { pop pop} bd +} +ifelse +Level2? +{ +/_pdfFontStatus +{ +currentglobal exch +/Font pdf_resourcestatus +{pop pop true} +{false} +ifelse +exch setglobal +} bd +} +{ +/_pdfFontStatusString 50 string def +_pdfFontStatusString 0 (fonts/) putinterval +/_pdfFontStatus +{ +FontDirectory 1 index known +{ pop true } +{ +_pdfFontStatusString 6 42 getinterval +cvs length 6 add +_pdfFontStatusString exch 0 exch getinterval +{ status } stopped +{pop false} +{ +{ pop pop pop pop true} +{ false } +ifelse +} +ifelse +} +ifelse +} bd +} +ifelse +Level2? +{ +/_pdfCIDFontStatus +{ +/CIDFont /Category pdf_resourcestatus +{ +pop pop +/CIDFont pdf_resourcestatus +{pop pop true} +{false} +ifelse +} +{ pop false } +ifelse +} bd +} +if +/_pdfString100 100 string def +/_pdfComposeFontName +{ +dup length 1 eq +{ +0 get +1 index +type /nametype eq +{ +_pdfString100 cvs +length dup dup _pdfString100 exch (-) putinterval +_pdfString100 exch 1 add dup _pdfString100 length exch sub getinterval +2 index exch cvs length +add 1 add _pdfString100 exch 0 exch getinterval +exch pop +true +} +{ +pop pop +false +} +ifelse +} +{ +false +} +ifelse +dup {exch cvn exch} if +} bd +/_pdfConcatNames +{ +exch +_pdfString100 cvs +length dup dup _pdfString100 exch (-) putinterval +_pdfString100 exch 1 add dup _pdfString100 length exch sub getinterval +3 -1 roll exch cvs length +add 1 add _pdfString100 exch 0 exch getinterval +cvn +} bind def +/_pdfTextTempString 50 string def +/_pdfRegOrderingArray [(Adobe-Japan1) (Adobe-CNS1) (Adobe-Korea1) (Adobe-GB1)] def +/_pdf_CheckCIDSystemInfo +{ +1 index _pdfTextTempString cvs +(Identity) anchorsearch +{ +pop pop pop pop true +} +{ +false +_pdfRegOrderingArray +{ +2 index exch +anchorsearch +{ pop pop pop true exit} +{ pop } +ifelse +} +forall +exch pop +exch /CIDFont findresource +/CIDSystemInfo get +3 -1 roll /CMap findresource +/CIDSystemInfo get +exch +3 -1 roll +{ +2 copy +/Supplement get +exch +dup type /dicttype eq +{/Supplement get} +{pop 0 } +ifelse +ge +} +{ true } +ifelse +{ +dup /Registry get +2 index /Registry get eq +{ +/Ordering get +exch /Ordering get +dup type /arraytype eq +{ +1 index type /arraytype eq +{ +true +1 index length 1 sub -1 0 +{ +dup 2 index exch get exch 3 index exch get ne +{ pop false exit} +if +} for +exch pop exch pop +} +{ pop pop false } +ifelse +} +{ +eq +} +ifelse +} +{ pop pop false } +ifelse +} +{ pop pop false } +ifelse +} +ifelse +} bind def +pdf_has_composefont? +{ +/_pdfComposeFont +{ +2 copy _pdfComposeFontName not +{ +2 index +} +if +(pdf) exch _pdfConcatNames +dup _pdfFontStatus +{ dup findfont 5 2 roll pop pop pop true} +{ +4 1 roll +1 index /CMap pdf_resourcestatus +{ +pop pop +true +} +{false} +ifelse +1 index true exch +{ +_pdfCIDFontStatus not +{pop false exit} +if +} +forall +and +{ +1 index 1 index 0 get _pdf_CheckCIDSystemInfo +{ +3 -1 roll pop +2 index 3 1 roll +composefont true +} +{ +pop pop exch pop false +} +ifelse +} +{ +_pdfComposeFontName +{ +dup _pdfFontStatus +{ +exch pop +1 index exch +findfont definefont true +} +{ +pop exch pop +false +} +ifelse +} +{ +exch pop +false +} +ifelse +} +ifelse +{ true } +{ +dup _pdfFontStatus +{ dup findfont true } +{ pop false } +ifelse +} +ifelse +} +ifelse +} bd +} +{ +/_pdfComposeFont +{ +_pdfComposeFontName not +{ +dup +} +if +dup +_pdfFontStatus +{exch pop dup findfont true} +{ +1 index +dup type /nametype eq +{pop} +{cvn} +ifelse +eq +{pop false} +{ +dup _pdfFontStatus +{dup findfont true} +{pop false} +ifelse +} +ifelse +} +ifelse +} bd +} +ifelse +/_pdfStyleDicts 4 dict dup begin +/Adobe-Japan1 4 dict dup begin +Level2? +{ +/Serif +/HeiseiMin-W3-83pv-RKSJ-H _pdfFontStatus +{/HeiseiMin-W3} +{ +/HeiseiMin-W3 _pdfCIDFontStatus +{/HeiseiMin-W3} +{/Ryumin-Light} +ifelse +} +ifelse +def +/SansSerif +/HeiseiKakuGo-W5-83pv-RKSJ-H _pdfFontStatus +{/HeiseiKakuGo-W5} +{ +/HeiseiKakuGo-W5 _pdfCIDFontStatus +{/HeiseiKakuGo-W5} +{/GothicBBB-Medium} +ifelse +} +ifelse +def +/HeiseiMaruGo-W4-83pv-RKSJ-H _pdfFontStatus +{/HeiseiMaruGo-W4} +{ +/HeiseiMaruGo-W4 _pdfCIDFontStatus +{/HeiseiMaruGo-W4} +{ +/Jun101-Light-RKSJ-H _pdfFontStatus +{ /Jun101-Light } +{ SansSerif } +ifelse +} +ifelse +} +ifelse +/RoundSansSerif exch def +/Default Serif def +} +{ +/Serif /Ryumin-Light def +/SansSerif /GothicBBB-Medium def +{ +(fonts/Jun101-Light-83pv-RKSJ-H) status +}stopped +{pop}{ +{ pop pop pop pop /Jun101-Light } +{ SansSerif } +ifelse +/RoundSansSerif exch def +}ifelse +/Default Serif def +} +ifelse +end +def +/Adobe-Korea1 4 dict dup begin +/Serif /HYSMyeongJo-Medium def +/SansSerif /HYGoThic-Medium def +/RoundSansSerif SansSerif def +/Default Serif def +end +def +/Adobe-GB1 4 dict dup begin +/Serif /STSong-Light def +/SansSerif /STHeiti-Regular def +/RoundSansSerif SansSerif def +/Default Serif def +end +def +/Adobe-CNS1 4 dict dup begin +/Serif /MKai-Medium def +/SansSerif /MHei-Medium def +/RoundSansSerif SansSerif def +/Default Serif def +end +def +end +def +/TZzero +{ +/_wmode xdd +/_styleArr xdd +/_regOrdering xdd +3 copy +_pdfComposeFont +{ +5 2 roll pop pop pop +} +{ +[ +0 1 _styleArr length 1 sub +{ +_styleArr exch get +_pdfStyleDicts _regOrdering 2 copy known +{ +get +exch 2 copy known not +{ pop /Default } +if +get +} +{ +pop pop pop /Unknown +} +ifelse +} +for +] +exch pop +2 index 3 1 roll +_pdfComposeFont +{3 -1 roll pop} +{ +findfont dup /FontName get exch +} +ifelse +} +ifelse +dup /WMode 2 copy known +{ get _wmode ne } +{ pop pop _wmode 1 eq} +ifelse +{ +exch _wmode _pdfConcatNames +dup _pdfFontStatus +{ exch pop dup findfont false} +{ exch true } +ifelse +} +{ +dup /FontType get 0 ne +} +ifelse +{ +dup /FontType get 3 eq _wmode 1 eq and +{ +_pdfVerticalRomanT3Font dup length 10 add dict copy +begin +/_basefont exch +dup length 3 add dict +begin +{1 index /FID ne {def}{pop pop} ifelse } +forall +/Encoding Encoding dup length array copy +dup 16#27 /quotesingle put +dup 16#60 /grave put +_regOrdering /Adobe-Japan1 eq +{dup 16#5c /yen put dup 16#a5 /yen put dup 16#b4 /yen put} +if +def +FontName +currentdict +end +definefont +def +/Encoding _basefont /Encoding get def +/_fauxfont true def +} +{ +dup length 3 add dict +begin +{1 index /FID ne {def}{pop pop} ifelse } +forall +FontType 0 ne +{ +/Encoding Encoding dup length array copy +dup 16#27 /quotesingle put +dup 16#60 /grave put +_regOrdering /Adobe-Japan1 eq +{dup 16#5c /yen put} +if +def +/_fauxfont true def +} if +} ifelse +/WMode _wmode def +dup dup /FontName exch def +currentdict +end +definefont pop +} +{ +pop +} +ifelse +/_pdf_FontDirectory 3 1 roll _safeput +} +bd +Level2? +{ +/Tf { +_pdf_FontDirectory 2 index 2 copy known +{get exch 3 -1 roll pop} +{pop pop} +ifelse +selectfont +} bd +} +{ +/Tf { +_pdf_FontDirectory 2 index 2 copy known +{get exch 3 -1 roll pop} +{pop pop} +ifelse +exch findfont exch +dup type /arraytype eq +{makefont} +{scalefont} +ifelse +setfont +} bd +} +ifelse +/cshow where +{ +pop /pdf_cshow /cshow load dd +/pdf_remove2 {pop pop} dd +} +{ +/pdf_cshow {exch forall} dd +/pdf_remove2 {} dd +} ifelse +/pdf_xshow +{ +/_pdf_na xdd +/_pdf_i 0 dd +currentpoint +/_pdf_y xdd +/_pdf_x xdd +{ +pdf_remove2 +_pdf_str1 exch 0 exch put +_pdf_str1 /_pdf_showproc load exec +{_pdf_na _pdf_i get} stopped +{ pop pop } +{ +_pdf_x _pdf_y moveto +0 +rmoveto +} +ifelse +_pdf_i 1 add /_pdf_i xdd +currentpoint +/_pdf_y xdd +/_pdf_x xdd +} +exch +pdf_cshow +} bd +/pdf_yshow +{ +/_pdf_na xdd +/_pdf_i 0 dd +currentpoint +/_pdf_y xdd +/_pdf_x xdd +{ +pdf_remove2 +_pdf_str1 exch 0 exch put +_pdf_str1 /_pdf_showproc load exec +{_pdf_na _pdf_i get} stopped +{ pop pop } +{ +_pdf_x _pdf_y moveto +0 exch +rmoveto +} +ifelse +_pdf_i 1 add /_pdf_i xdd +currentpoint +/_pdf_y xdd +/_pdf_x xdd +} +exch +pdf_cshow +} bd +/pdf_xyshow +{ +/_pdf_na xdd +/_pdf_i 0 dd +currentpoint +/_pdf_y xdd +/_pdf_x xdd +{ +pdf_remove2 +_pdf_str1 exch 0 exch put +_pdf_str1 /_pdf_showproc load exec +{_pdf_na _pdf_i get} stopped +{ pop pop } +{ +{_pdf_na _pdf_i 1 add get} stopped +{ pop pop pop} +{ +_pdf_x _pdf_y moveto +rmoveto +} +ifelse +} +ifelse +_pdf_i 2 add /_pdf_i xdd +currentpoint +/_pdf_y xdd +/_pdf_x xdd +} +exch +pdf_cshow +} bd +/pdfl1xs {/_pdf_showproc /show load dd pdf_xshow} bd +/pdfl1ys {/_pdf_showproc /show load dd pdf_yshow} bd +/pdfl1xys {/_pdf_showproc /show load dd pdf_xyshow} bd +Level2? _ColorSep5044? not and +{ +/pdfxs {{xshow} stopped {pdfl1xs} if} bd +/pdfys {{yshow} stopped {pdfl1ys} if} bd +/pdfxys {{xyshow} stopped {pdfl1xys} if} bd +} +{ +/pdfxs /pdfl1xs load dd +/pdfys /pdfl1ys load dd +/pdfxys /pdfl1xys load dd +} ifelse +/pdf_charpath {false charpath} bd +/pdf_xcharpath {/_pdf_showproc /pdf_charpath load dd pdf_xshow} bd +/pdf_ycharpath {/_pdf_showproc /pdf_charpath load dd pdf_yshow} bd +/pdf_xycharpath {/_pdf_showproc /pdf_charpath load dd pdf_xyshow} bd +/pdf_strokepath +{ +{ +pdf_remove2 +_pdf_str1 exch 0 exch put +_pdf_str1 false charpath +currentpoint S moveto +} bind +exch pdf_cshow +} bd +/pdf_xstrokepath {/_pdf_showproc {pdf_charpath S} dd pdf_xshow} bd +/pdf_ystrokepath {/_pdf_showproc {pdf_charpath S} dd pdf_yshow} bd +/pdf_xystrokepath {/_pdf_showproc {pdf_charpath S} dd pdf_xyshow} bd +Level2? {currentglobal true setglobal} if +/d0/setcharwidth ld +/nND {{/.notdef} repeat} bd +/T3Defs { +/BuildChar +{ +1 index /Encoding get exch get +1 index /BuildGlyph get exec +} +def +/BuildGlyph { +exch begin +GlyphProcs exch get exec +end +} def +/_pdfT3Font true def +} bd +/_pdfBoldRomanWidthProc +{ +stringwidth 1 index 0 ne { exch .03 add exch }if setcharwidth +0 0 +} bd +/_pdfType0WidthProc +{ +dup stringwidth 0 0 moveto +2 index true charpath pathbbox +0 -1 +7 index 2 div .88 +setcachedevice2 +pop +0 0 +} bd +/_pdfType0WMode1WidthProc +{ +dup stringwidth +pop 2 div neg -0.88 +2 copy +moveto +0 -1 +5 -1 roll true charpath pathbbox +setcachedevice +} bd +/_pdfBoldBaseFont +11 dict begin +/FontType 3 def +/FontMatrix[1 0 0 1 0 0]def +/FontBBox[0 0 1 1]def +/Encoding cHexEncoding def +/_setwidthProc /_pdfBoldRomanWidthProc load def +/_bcstr1 1 string def +/BuildChar +{ +exch begin +_basefont setfont +_bcstr1 dup 0 4 -1 roll put +dup +_setwidthProc +3 copy +moveto +show +_basefonto setfont +moveto +show +end +}bd +currentdict +end +def +pdf_has_composefont? +{ +/_pdfBoldBaseCIDFont +11 dict begin +/CIDFontType 1 def +/CIDFontName /_pdfBoldBaseCIDFont def +/FontMatrix[1 0 0 1 0 0]def +/FontBBox[0 0 1 1]def +/_setwidthProc /_pdfType0WidthProc load def +/_bcstr2 2 string def +/BuildGlyph +{ +exch begin +_basefont setfont +_bcstr2 1 2 index 256 mod put +_bcstr2 0 3 -1 roll 256 idiv put +_bcstr2 dup _setwidthProc +3 copy +moveto +show +_basefonto setfont +moveto +show +end +}bd +currentdict +end +def +/_pdfDefineIdentity-H +{ +/Identity-H /CMap PDFText /pdf_resourcestatus get exec +{ +pop pop +} +{ +/CIDInit/ProcSet findresource begin 12 dict begin +begincmap +/CIDSystemInfo +3 dict begin +/Registry (Adobe) def +/Ordering (Identity) def +/Supplement 0 def +currentdict +end +def +/CMapName /Identity-H def +/CMapVersion 1 def +/CMapType 1 def +1 begincodespacerange +<0000> +endcodespacerange +1 begincidrange +<0000> 0 +endcidrange +endcmap +CMapName currentdict/CMap defineresource pop +end +end +} ifelse +} def +} if +/_pdfVerticalRomanT3Font +10 dict begin +/FontType 3 def +/FontMatrix[1 0 0 1 0 0]def +/FontBBox[0 0 1 1]def +/_bcstr1 1 string def +/BuildChar +{ +exch begin +_basefont setfont +_bcstr1 dup 0 4 -1 roll put +dup +_pdfType0WidthProc +moveto +show +end +}bd +currentdict +end +def +Level2? {setglobal} if +/MakeBoldFont +{ +dup /ct_SyntheticBold known +{ +dup length 3 add dict begin +CopyFont +/ct_StrokeWidth .03 0 FontMatrix idtransform pop def +/ct_SyntheticBold true def +currentdict +end +definefont +} +{ +dup dup length 3 add dict +begin +CopyFont +/PaintType 2 def +/StrokeWidth .03 0 FontMatrix idtransform pop def +/dummybold currentdict +end +definefont +dup /FontType get dup 9 ge exch 11 le and +{ +_pdfBoldBaseCIDFont +dup length 3 add dict copy begin +dup /CIDSystemInfo get /CIDSystemInfo exch def +/_Type0Identity /Identity-H 3 -1 roll [ exch ] composefont +/_basefont exch def +/_Type0Identity /Identity-H 3 -1 roll [ exch ] composefont +/_basefonto exch def +currentdict +end +/CIDFont defineresource +} +{ +_pdfBoldBaseFont +dup length 3 add dict copy begin +/_basefont exch def +/_basefonto exch def +currentdict +end +definefont +} +ifelse +} +ifelse +} bd +/MakeBold { +1 index +_pdf_FontDirectory 2 index 2 copy known +{get} +{exch pop} +ifelse +findfont +dup +/FontType get 0 eq +{ +dup /WMode known {dup /WMode get 1 eq }{false} ifelse +version length 4 ge +and +{version 0 4 getinterval cvi 2015 ge } +{true} +ifelse +{/_pdfType0WidthProc} +{/_pdfType0WMode1WidthProc} +ifelse +_pdfBoldBaseFont /_setwidthProc 3 -1 roll load put +{MakeBoldFont} Type0CopyFont definefont +} +{ +dup /_fauxfont known not 1 index /SubstMaster known not and +{ +_pdfBoldBaseFont /_setwidthProc /_pdfBoldRomanWidthProc load put +MakeBoldFont +} +{ +2 index 2 index eq +{ exch pop } +{ +dup length dict begin +CopyFont +currentdict +end +definefont +} +ifelse +} +ifelse +} +ifelse +pop pop +dup /dummybold ne +{/_pdf_FontDirectory exch dup _safeput } +{ pop } +ifelse +}bd +/MakeItalic { +_pdf_FontDirectory exch 2 copy known +{get} +{exch pop} +ifelse +dup findfont +dup /FontInfo 2 copy known +{ +get +/ItalicAngle 2 copy known +{get 0 eq } +{ pop pop true} +ifelse +} +{ pop pop true} +ifelse +{ +exch pop +dup /FontType get 0 eq Level2? not and +{ dup /FMapType get 6 eq } +{ false } +ifelse +{ +dup /WMode 2 copy known +{ +get 1 eq +{ _italMtx_WMode1Type0 } +{ _italMtxType0 } +ifelse +} +{ pop pop _italMtxType0 } +ifelse +} +{ +dup /WMode 2 copy known +{ +get 1 eq +{ _italMtx_WMode1 } +{ _italMtx } +ifelse +} +{ pop pop _italMtx } +ifelse +} +ifelse +makefont +dup /FontType get 42 eq Level2? not or +{ +dup length dict begin +CopyFont +currentdict +end +} +if +1 index exch +definefont pop +/_pdf_FontDirectory exch dup _safeput +} +{ +pop +2 copy ne +{ +/_pdf_FontDirectory 3 1 roll _safeput +} +{ pop pop } +ifelse +} +ifelse +}bd +/MakeBoldItalic { +/dummybold exch +MakeBold +/dummybold +MakeItalic +}bd +Level2? +{ +/pdf_CopyDict +{1 index length add dict copy} +def +} +{ +/pdf_CopyDict +{ +1 index length add dict +1 index wcheck +{ copy } +{ begin +{def} forall +currentdict +end +} +ifelse +} +def +} +ifelse +/pdf_AddEuroGlyphProc +{ +currentdict /CharStrings known +{ +CharStrings /Euro known not +{ +dup +/CharStrings +CharStrings 1 pdf_CopyDict +begin +/Euro pdf_EuroProcSet 4 -1 roll get def +currentdict +end +def +/pdf_PSBuildGlyph /pdf_PSBuildGlyph load def +/pdf_PathOps /pdf_PathOps load def +/Symbol eq Encoding 160 get /.notdef eq and +{ +/Encoding Encoding dup length array copy +dup 160 /Euro put def +} +if +} +{ pop +} +ifelse +} +{ pop +} +ifelse +} +def +Level2? {currentglobal true setglobal} if +/pdf_PathOps 4 dict dup begin +/m {moveto} def +/l {lineto} def +/c {curveto} def +/cp {closepath} def +end +def +/pdf_PSBuildGlyph +{ +gsave +8 -1 roll pop +7 1 roll +currentdict /PaintType 2 copy known {get 2 eq}{pop pop false} ifelse +dup 9 1 roll +{ +currentdict /StrokeWidth 2 copy known +{ +get 2 div +5 1 roll +4 -1 roll 4 index sub +4 1 roll +3 -1 roll 4 index sub +3 1 roll +exch 4 index add exch +4 index add +5 -1 roll pop +} +{ +pop pop +} +ifelse +} +if +setcachedevice +pdf_PathOps begin +exec +end +{ +currentdict /StrokeWidth 2 copy known +{ get } +{ pop pop 0 } +ifelse +setlinewidth stroke +} +{ +fill +} +ifelse +grestore +} def +/pdf_EuroProcSet 13 dict def +pdf_EuroProcSet +begin +/Courier-Bold +{ +600 0 6 -12 585 612 +{ +385 274 m +180 274 l +179 283 179 293 179 303 c +179 310 179 316 180 323 c +398 323 l +423 404 l +197 404 l +219 477 273 520 357 520 c +409 520 466 490 487 454 c +487 389 l +579 389 l +579 612 l +487 612 l +487 560 l +449 595 394 612 349 612 c +222 612 130 529 98 404 c +31 404 l +6 323 l +86 323 l +86 304 l +86 294 86 284 87 274 c +31 274 l +6 193 l +99 193 l +129 77 211 -12 359 -12 c +398 -12 509 8 585 77 c +529 145 l +497 123 436 80 356 80 c +285 80 227 122 198 193 c +360 193 l +cp +600 0 m +} +pdf_PSBuildGlyph +} def +/Courier-BoldOblique /Courier-Bold load def +/Courier +{ +600 0 17 -12 578 584 +{ +17 204 m +97 204 l +126 81 214 -12 361 -12 c +440 -12 517 17 578 62 c +554 109 l +501 70 434 43 366 43 c +266 43 184 101 154 204 c +380 204 l +400 259 l +144 259 l +144 270 143 281 143 292 c +143 299 143 307 144 314 c +418 314 l +438 369 l +153 369 l +177 464 249 529 345 529 c +415 529 484 503 522 463 c +522 391 l +576 391 l +576 584 l +522 584 l +522 531 l +473 566 420 584 348 584 c +216 584 122 490 95 369 c +37 369 l +17 314 l +87 314 l +87 297 l +87 284 88 272 89 259 c +37 259 l +cp +600 0 m +} +pdf_PSBuildGlyph +} def +/Courier-Oblique /Courier load def +/Helvetica +{ +556 0 24 -19 541 703 +{ +541 628 m +510 669 442 703 354 703 c +201 703 117 607 101 444 c +50 444 l +25 372 l +97 372 l +97 301 l +49 301 l +24 229 l +103 229 l +124 67 209 -19 350 -19 c +435 -19 501 25 509 32 c +509 131 l +492 105 417 60 343 60 c +267 60 204 127 197 229 c +406 229 l +430 301 l +191 301 l +191 372 l +455 372 l +479 444 l +194 444 l +201 531 245 624 348 624 c +433 624 484 583 509 534 c +cp +556 0 m +} +pdf_PSBuildGlyph +} def +/Helvetica-Oblique /Helvetica load def +/Helvetica-Bold +{ +556 0 12 -19 563 710 +{ +563 621 m +537 659 463 710 363 710 c +216 710 125 620 101 462 c +51 462 l +12 367 l +92 367 l +92 346 l +92 337 93 328 93 319 c +52 319 l +12 224 l +102 224 l +131 58 228 -19 363 -19 c +417 -19 471 -12 517 18 c +517 146 l +481 115 426 93 363 93 c +283 93 254 166 246 224 c +398 224 l +438 319 l +236 319 l +236 367 l +457 367 l +497 462 l +244 462 l +259 552 298 598 363 598 c +425 598 464 570 486 547 c +507 526 513 517 517 509 c +cp +556 0 m +} +pdf_PSBuildGlyph +} def +/Helvetica-BoldOblique /Helvetica-Bold load def +/Symbol +{ +750 0 20 -12 714 685 +{ +714 581 m +650 645 560 685 465 685 c +304 685 165 580 128 432 c +50 432 l +20 369 l +116 369 l +115 356 115 347 115 337 c +115 328 115 319 116 306 c +50 306 l +20 243 l +128 243 l +165 97 300 -12 465 -12 c +560 -12 635 25 685 65 c +685 155 l +633 91 551 51 465 51 c +340 51 238 131 199 243 c +555 243 l +585 306 l +184 306 l +183 317 182 326 182 336 c +182 346 183 356 184 369 c +614 369 l 644 432 l +199 432 l +233 540 340 622 465 622 c +555 622 636 580 685 520 c +cp +750 0 m +} +pdf_PSBuildGlyph +} def +/Times-Bold +{ +500 0 16 -14 478 700 +{ +367 308 m +224 308 l +224 368 l +375 368 l +380 414 l +225 414 l +230 589 257 653 315 653 c +402 653 431 521 444 457 c +473 457 l +473 698 l +444 697 l +441 679 437 662 418 662 c +393 662 365 700 310 700 c +211 700 97 597 73 414 c +21 414 l +16 368 l +69 368 l +69 359 68 350 68 341 c +68 330 68 319 69 308 c +21 308 l +16 262 l +73 262 l +91 119 161 -14 301 -14 c +380 -14 443 50 478 116 c +448 136 l +415 84 382 40 323 40 c +262 40 231 77 225 262 c +362 262 l +cp +500 0 m +} +pdf_PSBuildGlyph +} def +/Times-BoldItalic +{ +500 0 9 -20 542 686 +{ +542 686 m +518 686 l +513 673 507 660 495 660 c +475 660 457 683 384 683 c +285 683 170 584 122 430 c +58 430 l +34 369 l +105 369 l +101 354 92 328 90 312 c +34 312 l +9 251 l +86 251 l +85 238 84 223 84 207 c +84 112 117 -14 272 -14 c +326 -14 349 9 381 9 c +393 9 393 -10 394 -20 c +420 -20 l +461 148 l +429 148 l +416 109 362 15 292 15 c +227 15 197 55 197 128 c +197 162 204 203 216 251 c +378 251 l +402 312 l +227 312 l +229 325 236 356 241 369 c +425 369 l +450 430 l +255 430 l +257 435 264 458 274 488 c +298 561 337 654 394 654 c +437 654 484 621 484 530 c +484 516 l +516 516 l +cp +500 0 m +} +pdf_PSBuildGlyph +} def +/Times-Italic +{ +500 0 23 -10 595 692 +{ +399 317 m +196 317 l +199 340 203 363 209 386 c +429 386 l +444 424 l +219 424 l +246 514 307 648 418 648 c +448 648 471 638 492 616 c +529 576 524 529 527 479 c +549 475 l +595 687 l +570 687 l +562 674 558 664 542 664 c +518 664 474 692 423 692 c +275 692 162 551 116 424 c +67 424 l +53 386 l +104 386 l +98 363 93 340 90 317 c +37 317 l +23 279 l +86 279 l +85 266 85 253 85 240 c +85 118 137 -10 277 -10 c +370 -10 436 58 488 128 c +466 149 l +424 101 375 48 307 48 c +212 48 190 160 190 234 c +190 249 191 264 192 279 c +384 279 l +cp +500 0 m +} +pdf_PSBuildGlyph +} def +/Times-Roman +{ +500 0 10 -12 484 692 +{ +347 298 m +171 298 l +170 310 170 322 170 335 c +170 362 l +362 362 l +374 403 l +172 403 l +184 580 244 642 308 642 c +380 642 434 574 457 457 c +481 462 l +474 691 l +449 691 l +433 670 429 657 410 657 c +394 657 360 692 299 692 c +204 692 94 604 73 403 c +22 403 l +10 362 l +70 362 l +69 352 69 341 69 330 c +69 319 69 308 70 298 c +22 298 l +10 257 l +73 257 l +97 57 216 -12 295 -12 c +364 -12 427 25 484 123 c +458 142 l +425 101 384 37 316 37 c +256 37 189 84 173 257 c +335 257 l +cp +500 0 m +} +pdf_PSBuildGlyph +} def +end +Level2? {setglobal} if +currentdict readonly pop end +%%EndResource +PDFText begin +[39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis +/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute +/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde +/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex +/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls +/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash +/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef +/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash +/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef +/guillemotleft/guillemotright/ellipsis/space/Agrave/Atilde/Otilde/OE/oe +/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide +/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright +/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand +/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex +/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex +/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla +/hungarumlaut/ogonek/caron +0 TE +[1/dotlessi/caron 39/quotesingle 96/grave +127/bullet/Euro/bullet/quotesinglbase/florin/quotedblbase/ellipsis +/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE +/bullet/Zcaron/bullet/bullet/quoteleft/quoteright/quotedblleft +/quotedblright/bullet/endash/emdash/tilde/trademark/scaron +/guilsinglright/oe/bullet/zcaron/Ydieresis/space/exclamdown/cent/sterling +/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine +/guillemotleft/logicalnot/hyphen/registered/macron/degree/plusminus +/twosuperior/threesuperior/acute/mu/paragraph/periodcentered/cedilla +/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters +/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla +/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis +/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash +/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave +/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute +/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde +/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute +/ucircumflex/udieresis/yacute/thorn/ydieresis +1 TE +end +%%BeginResource: procset pdfasc.prc 6.0 1 +%%Copyright: Copyright 1992-2003 Adobe Systems Incorporated. All Rights Reserved. +/ASR { +13 dict begin +/mirV? exch def +/mirH? exch def +/center? exch def +/autorotate? exch def +/angle exch def +/shrink exch def +/Pury exch def +/Purx exch def +/Plly exch def +/Pllx exch def +/Dury exch def +/Durx exch def +/Dlly exch def +/Dllx exch def +Dury 0 eq Durx 0 eq and Dlly 0 eq Dllx 0 eq and and +{ shrink 0 gt { GClipBBox } { GPageBBox } ifelse } +{ ITransDBBox } +ifelse +/PHt Pury Plly sub def +/PW Purx Pllx sub def +/DHt Dury Dlly sub def +/DW Durx Dllx sub def +angle 90 eq angle 270 eq or +{ +PHt /PHt PW def /PW exch def +} if +autorotate? PHt PW ne and DHt DW ne and +{ +DHt DW ge +PHt PW ge +ne +{ /angle angle 90 add def +PHt /PHt PW def /PW exch def +} +if +} if +angle 0 ne +{ +/angle angle 360 mod def +angle rotate +angle 90 eq +{ 0 DW neg translate } +if +angle 180 eq +{ DW neg DHt neg translate } +if +angle 270 eq +{ DHt neg 0 translate } +if +} if +center? +{ +ITransBBox +Durx Dllx add 2 div Dury Dlly add 2 div +Purx Pllx add -2 div Pury Plly add -2 div +3 -1 roll add exch +3 -1 roll add exch +translate +} +{ +ITransBBox +angle 0 eq +{Dllx Pllx sub Dury Pury sub} +if +angle 90 eq +{Durx Purx sub Dury Pury sub} +if +angle 180 eq +{Durx Purx sub Dlly Plly sub} +if +angle 270 eq +{Dllx Pllx sub Dlly Plly sub} +if +translate +} +ifelse +mirH? mirV? or +{ +ITransBBox +mirH? +{ +-1 1 scale +Durx Dllx add neg 0 translate +} if +mirV? +{ +1 -1 scale +0 Dury Dlly add neg translate +} if +} if +shrink 0 ne +{ +ITransBBox +Dury Dlly sub Pury Plly sub div +Durx Dllx sub Purx Pllx sub div +2 copy gt { exch } if pop +shrink 1 eq +{ +Durx Dllx add 2 div Dury Dlly add 2 div translate +dup scale +Purx Pllx add -2 div Pury Plly add -2 div translate +} +{ +shrink 2 eq 1 index 1.0 lt and +{ +Durx Dllx add 2 div Dury Dlly add 2 div translate +dup scale +Purx Pllx add -2 div Pury Plly add -2 div translate +} +{ pop } +ifelse +} +ifelse +} if +end +} [/autorotate? /shrink? /mirH? /mirV? /angle /Pury /Purx /Plly /Pllx /Durx /Dury /Dllx /Dlly /PW /PHt /DW /DHt +/Devurx /Devury /Devllx /Devlly /pdfHt /pdfW] +bld +/GClipBBox +{ +gsave newpath clippath pathbbox newpath grestore +/Dury exch def +/Durx exch def +/Dlly exch def +/Dllx exch def +ITransDBBox +} [/Durx /Dury /Dllx /Dlly] +bld +/GPageBBox +{ +{ +currentpagedevice /PageSize get aload pop +/Devury exch def /Devurx exch def +/Devllx 0 def /Devlly 0 def +ITransBBox +} +stopped +{ GClipBBox } +if +} [/Devurx /Devury /Devllx /Devlly ] +bld +/ITransDBBox +{ +Durx Dury transform matrix defaultmatrix itransform +/Devury exch def +/Devurx exch def +Dllx Dlly transform matrix defaultmatrix itransform +/Devlly exch def +/Devllx exch def +Devury Devlly lt {/Devlly Devury /Devury Devlly def def} if +Devurx Devllx lt {/Devllx Devurx /Devurx Devllx def def} if +} [/Durx /Dury /Dllx /Dlly /Devurx /Devury /Devllx /Devlly ] +bld +/ITransBBox +{ +/um matrix currentmatrix matrix defaultmatrix matrix invertmatrix matrix concatmatrix def +Devllx Devlly um itransform +Devurx Devury um itransform +/Dury exch def +/Durx exch def +/Dlly exch def +/Dllx exch def +Dury Dlly lt {/Dlly Dury /Dury Dlly def def} if +Durx Dllx lt {/Dllx Durx /Durx Dllx def def} if +} [ /um /Durx /Dury /Dllx /Dlly /Devurx /Devury /Devllx /Devlly ] +bld +%%EndResource +currentdict readonly pop +end end +/currentpacking where {pop setpacking}if +PDFVars/DocInitAll{[PDF PDFText]{/docinitialize get exec}forall }put +PDFVars/InitAll{[PDF PDFText]{/initialize get exec}forall initgs}put +PDFVars/TermAll{[PDFText PDF]{/terminate get exec}forall}put +PDFVars begin PDF begin +PDFVars/DocInitAll get exec PDFVars/InitAll get exec + +[/NamespacePush PDFMark5 +[/_objdef {Metadata_In_EPS} /type /stream /OBJ PDFMark5 +[{Metadata_In_EPS} 1162 (% &end XMP packet& %) ReadByPDFMark5 + + + + + + + +(C:\Documents and Settings\Administrator\Desktop\hust-flash-eps.eps) + + + + + + + + + + + + + + + + + + + + + +% &end XMP packet& % + +[{Metadata_In_EPS} 2 dict begin /Type /Metadata def /Subtype /XML def currentdict end /PUT PDFMark5 +[/Document 1 dict begin /Metadata {Metadata_In_EPS} def currentdict end /BDC PDFMark5 +[/NamespacePop PDFMark5 + +PDFVars/TermAll get exec end end + +%%EndSetup +PDFVars begin PDF begin PDFVars/InitAll get exec +0 0 176 37 rectclip +/N4 <0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +> 15 dict begin +/Sample exch def +currentdict end +[exch {begin +/_x0 exch def +/_tmp0 _x0 +dup 1.0 ge {pop 255.0} +{dup 0.0 le {pop 0.0} +{255.0 mul +} ifelse +} ifelse +def +/min0 _tmp0 cvi def +/max0 _tmp0 ceiling cvi def +/f0 +min0 max0 eq +{{min0 f1}} +{{ +[min0 f1 max0 f1 +0 1 0 {dup 3 index exch get exch 2 index exch get +_tmp0 min0 max0 5 3 roll int +3 1 roll} for pop pop] +}} ifelse +def +/f1 +{/prm0 exch def [ + 0 255 prm0 limit 8 mul -3 bitshift Sample exch get ]} def +/rnd {256 mul 0.5 add floor 256 div} def +f0 aload pop +dup 255.0 ge {pop 1.0} +{dup 0.0 le {pop 0.0} +{255.0 div +} ifelse +} ifelse +0.0 1.0 3 2 roll limit rnd +end +} bind aload pop] cvx readonly +/Function defineRes pop + +/N5 <8080808080808080808080808080808080808080808080808080808080808080 +8080808080808080808080808080808080808080808080808080808080808080 +8080808080808080808080808080808080808080808080808080808080808080 +8080808080808080808080808080808080808080808080808080808080808080 +8080808080808080808080808080808080808080808080808080808080808080 +8080808080808080808080808080808080808080808080808080808080808080 +8080808080808080808080808080808080808080808080808080808080808080 +8080808080808080808080808080808080808080808080808080808080808080 +> 15 dict begin +/Sample exch def +currentdict end +[exch {begin +/_x0 exch def +/_tmp0 _x0 +dup 1.0 ge {pop 255.0} +{dup 0.0 le {pop 0.0} +{255.0 mul +} ifelse +} ifelse +def +/min0 _tmp0 cvi def +/max0 _tmp0 ceiling cvi def +/f0 +min0 max0 eq +{{min0 f1}} +{{ +[min0 f1 max0 f1 +0 1 0 {dup 3 index exch get exch 2 index exch get +_tmp0 min0 max0 5 3 roll int +3 1 roll} for pop pop] +}} ifelse +def +/f1 +{/prm0 exch def [ + 0 255 prm0 limit 8 mul -3 bitshift Sample exch get ]} def +/rnd {256 mul 0.5 add floor 256 div} def +f0 aload pop +dup 255.0 ge {pop 1.0} +{dup 0.0 le {pop -1.0} +{2.0 255.0 div mul 1.0 sub +} ifelse +} ifelse +-1.0 1.0 3 2 roll limit rnd +end +} bind aload pop] cvx readonly +/Function defineRes pop + +0.0 0.0 176.0 37.0 re +W +n +q +0.1 0.0 0.0 0.1 0.0 0.0 cm +q +n +344.114014 241.776016 m +338.616028 235.278015 l +323.622009 169.805008 l +323.622009 169.305008 323.622009 168.305008 324.122009 167.306015 c +333.118011 150.813004 347.113007 144.315002 365.605011 147.814011 c +367.105011 148.813004 368.604004 150.313004 369.604004 151.812012 c +378.600006 165.306015 389.096008 177.802002 401.091034 189.797012 c +403.089996 155.311005 401.591034 120.824005 396.593018 86.338097 c +395.094025 77.841599 394.594025 68.8452 394.594025 59.8489 c +394.594025 46.854198 399.09201 35.358898 408.088013 24.863001 c +415.085022 17.366199 423.082031 15.866699 431.57901 20.365002 c +436.077026 29.861099 438.576019 39.857201 439.076019 49.353298 c +439.575012 63.847397 439.575012 78.341599 438.076019 91.836197 c +435.577026 118.325005 435.577026 144.315002 438.076019 170.305008 c +461.567017 169.805008 480.059021 179.30101 493.054016 199.293015 c +492.554016 200.292007 492.554016 201.292007 492.554016 201.792007 c +490.055023 207.789017 485.057037 212.287003 478.559998 214.786011 c +478.559998 219.784012 481.559021 224.782013 487.05603 229.281006 c +496.552032 236.278015 507.048035 242.775009 517.544006 248.27301 c +526.041016 252.771011 530.539001 259.268005 531.539001 268.265015 c +520.04303 284.758026 l +488.55603 288.256012 l +441.575012 258.768005 l +448.572021 301.251007 l +447.073029 303.75 445.573029 305.749023 444.074036 307.749023 c +434.078033 320.743011 421.083008 327.241028 405.589996 326.741028 c +404.589996 326.241028 403.591034 325.241028 403.091034 324.242004 c +399.093018 320.743011 395.594025 316.745026 392.595032 312.247009 c +389.097015 306.749023 388.097015 301.751007 389.596008 296.753021 c +398.093018 274.262024 402.091034 250.772018 402.091034 225.782013 c +374.103027 200.792007 l +372.603027 208.78801 371.104004 215.786011 368.605011 222.283005 c +365.106018 233.778015 358.109009 240.775009 348.613007 243.274017 c +344.115021 241.775009 l +h +451.071014 213.787003 m +450.072021 211.78801 449.072021 209.789017 448.572021 207.789017 c +448.073029 207.289993 l +444.574036 203.791016 441.575012 201.792007 438.576019 200.292007 c +437.577026 203.291016 437.077026 206.289993 437.577026 209.789017 c +438.077026 210.78801 438.077026 211.78801 438.077026 212.287003 c +438.077026 215.786011 438.576019 219.784012 440.076019 223.783005 c +444.574036 229.779999 450.571014 235.278015 459.068024 240.276016 c +457.569031 230.779999 455.069977 222.283005 451.571014 214.786011 c +451.571014 214.786011 451.571014 214.786011 451.571014 214.286011 c +451.071014 213.787003 l +f +n +1751.049927 313.747009 m +1750.549927 314.247009 1750.549927 314.247009 1750.549927 314.247009 c +1750.549927 314.746002 1750.549927 315.246002 1750.549927 315.746002 c +1742.549927 335.238007 1728.559937 344.734009 1708.069946 343.735016 c +1707.069946 343.735016 1706.569946 343.735016 1706.069946 343.235016 c +1660.589966 318.745026 l +1662.089966 322.243011 1662.589966 325.242004 1662.589966 328.741028 c +1662.589966 329.23999 1662.589966 329.73999 1662.589966 330.23999 c +1656.589966 347.733002 1645.589966 357.229004 1630.099976 358.729004 c +1628.599976 358.729004 1627.599976 358.229004 1626.599976 357.729004 c +1625.599976 356.729004 1625.099976 355.72998 1624.599976 354.22998 c +1621.599976 336.738007 1616.609985 327.741028 1609.609985 326.742004 c +1608.109985 326.742004 1606.609985 326.742004 1605.109985 327.241028 c +1588.119995 332.739014 1578.619995 332.239014 1576.619995 325.742004 c +1577.119995 326.242004 l +1573.619995 320.744019 1574.119995 315.746002 1578.119995 311.248016 c +1578.619995 310.748016 l +1581.119995 307.25 1585.619995 304.251007 1593.109985 301.752014 c +1594.609985 299.753021 1595.109985 297.754028 1594.609985 295.754028 c +1592.119995 293.256012 1586.619995 290.257019 1578.619995 287.258026 c +1569.119995 300.752014 1561.130005 311.248016 1554.630005 318.745026 c +1546.130005 327.741028 1538.640015 332.73999 1533.140015 334.239014 c +1525.140015 336.738007 1519.640015 333.739014 1516.150024 325.742004 c +1515.650024 324.743011 1515.650024 323.743011 1515.650024 322.743011 c +1516.150024 322.244019 1516.650024 321.244019 1517.150024 320.245026 c +1519.140015 317.746002 1521.140015 315.247009 1523.140015 312.748016 c +1523.640015 312.248016 l +1533.140015 300.753021 1540.640015 290.757019 1545.630005 281.259979 c +1532.140015 291.756012 1523.140015 294.755005 1517.650024 290.257019 c +1515.150024 290.257019 1514.150024 289.257019 1513.650024 286.758026 c +1512.650024 285.759003 1512.650024 284.259979 1513.650024 281.759979 c +1514.150024 280.261017 1515.650024 277.762024 1518.140015 274.264008 c +1519.640015 271.765015 1521.640015 269.266022 1524.640015 265.766998 c +1526.140015 264.268005 1527.640015 262.269012 1529.140015 260.269989 c +1529.640015 259.769989 1529.640015 258.769989 1530.140015 257.771027 c +1530.140015 257.271027 1530.140015 257.271027 1530.140015 256.771027 c +1531.140015 255.272018 1532.140015 253.27301 1532.640015 251.274017 c +1532.640015 250.774017 1532.640015 250.774017 1532.640015 250.274017 c +1533.140015 249.275009 1534.140015 247.775009 1534.640015 246.276016 c +1535.140015 244.777008 1536.140015 242.777008 1536.640015 241.278015 c +1541.630005 228.283005 1545.630005 218.787018 1549.130005 213.289017 c +1551.130005 209.791016 1553.130005 207.792007 1554.630005 206.792007 c +1556.130005 205.293015 1558.130005 204.793015 1559.630005 204.793015 c +1560.630005 204.793015 1561.630005 205.293015 1562.630005 205.792007 c +1567.619995 206.792007 1570.619995 210.291016 1572.119995 216.78801 c +1572.619995 219.287018 1572.619995 221.786011 1572.619995 225.284012 c +1575.119995 221.786011 1578.119995 219.287018 1581.619995 217.78801 c +1587.619995 214.789017 1593.609985 215.789017 1599.609985 220.786011 c +1600.109985 221.286011 1600.109985 221.786011 1600.609985 222.286011 c +1603.609985 227.283005 1604.109985 233.781006 1602.109985 241.278015 c +1602.109985 241.778015 l +1601.609985 242.777008 1601.609985 243.777008 1601.109985 244.776016 c +1600.609985 244.776016 1600.609985 244.776016 1600.609985 245.276016 c +1591.109985 268.766998 l +1591.109985 268.766998 1591.109985 268.766998 1591.609985 269.266022 c +1593.109985 270.266022 1594.109985 271.265015 1595.609985 271.765015 c +1599.609985 274.764008 1603.109985 277.263 1606.109985 278.762024 c +1605.609985 278.262024 1605.609985 278.262024 1605.609985 277.763 c +1605.109985 277.263 1605.109985 276.763 1605.109985 276.263 c +1603.609985 273.265015 1602.109985 269.266022 1600.109985 264.768005 c +1599.609985 264.268005 1599.609985 264.268005 1599.609985 263.769012 c +1599.109985 261.769989 1599.109985 259.271027 1599.609985 255.772018 c +1600.109985 252.77301 1600.609985 249.275009 1601.609985 245.276016 c +1601.609985 244.777008 l +1601.609985 244.277008 1601.609985 244.277008 1601.609985 243.777008 c +1602.109985 242.278015 1602.609985 240.279007 1603.609985 237.779999 c +1603.609985 237.279999 1604.109985 236.279999 1604.609985 235.781006 c +1605.109985 235.281006 1605.609985 235.281006 1606.109985 234.781006 c +1615.099976 230.283005 1623.099976 228.284012 1630.099976 227.784012 c +1564.119995 194.797012 l +1563.119995 194.298004 1562.619995 193.798004 1562.130005 192.798004 c +1561.630005 192.299011 1561.130005 191.299011 1561.130005 190.300003 c +1559.630005 187.80101 1560.130005 185.302002 1562.619995 182.803009 c +1605.109985 182.803009 l +1646.089966 208.292007 l +1645.589966 205.294006 1643.589966 200.296005 1640.089966 193.299011 c +1638.589966 190.300003 1636.589966 186.80101 1634.599976 182.803009 c +1706.569946 182.803009 l +1700.569946 188.80101 1691.069946 191.799011 1678.579956 192.299011 c +1705.569946 215.789993 l +1706.569946 216.789017 1707.069946 217.789017 1707.069946 219.28801 c +1708.069946 230.783005 1702.069946 239.779999 1689.569946 246.277008 c +1689.569946 246.277008 1689.569946 246.277008 1689.069946 246.277008 c +1689.069946 246.777008 l +1689.569946 246.277008 l +1693.069946 249.776016 1696.569946 253.274017 1700.069946 255.77301 c +1700.069946 256.27301 l +1705.069946 261.271027 1710.069946 265.269012 1715.059937 268.268005 c +1719.559937 271.766998 1724.559937 274.266022 1729.559937 275.765015 c +1729.059937 275.765015 l +1732.559937 276.764008 1735.549927 277.764008 1738.049927 279.263 c +1738.549927 279.763 1738.549927 279.763 1739.049927 279.763 c +1752.549927 287.259979 1756.549927 298.256012 1751.049927 313.75 c +h +1693.069946 302.751007 m +1693.069946 302.251007 1693.069946 301.252014 1693.069946 300.252014 c +1663.589966 250.272018 l +1664.589966 252.771011 1665.579956 254.771011 1666.079956 256.769989 c +1666.079956 257.269989 l +1667.079956 262.766998 1666.579956 269.265015 1665.089966 275.762024 c +1664.589966 276.262024 1664.589966 276.761017 1664.589966 276.761017 c +1664.089966 278.261017 1663.589966 279.259979 1663.589966 279.759979 c +1663.089966 280.259979 1663.089966 280.259979 1663.089966 280.759979 c +1661.589966 284.258026 1660.089966 288.257019 1657.589966 291.755005 c +1658.589966 292.255005 1659.589966 292.755005 1660.089966 293.254028 c +1660.589966 293.254028 l +1673.579956 299.752014 1683.079956 303.25 1689.579956 303.75 c +1691.069946 303.75 1692.069946 303.25 1693.069946 302.75 c +h +1633.099976 270.264008 m +1633.599976 270.264008 1633.599976 270.264008 1634.099976 270.264008 c +1634.599976 270.764008 1635.599976 270.764008 1637.099976 270.264008 c +1639.599976 265.266998 1640.589966 261.268005 1640.099976 258.769012 c +1640.099976 258.269012 l +1636.599976 258.769012 1633.599976 259.269012 1632.099976 260.768005 c +1630.599976 262.266998 1630.099976 264.766022 1630.599976 267.265015 c +1630.599976 267.765015 l +1630.599976 269.264008 1631.599976 270.264008 1633.099976 270.264008 c +h +1659.089966 243.775009 m +1659.589966 244.774017 1660.589966 245.774017 1661.089966 246.774017 c +1658.089966 241.776016 l +1654.589966 239.777008 l +1655.089966 240.277008 l +1656.089966 241.276016 1657.089966 242.276016 1658.589966 243.775009 c +1659.089966 243.775009 l +f +n +1706.569946 182.799011 m +1634.599976 182.799011 l +1632.599976 179.80101 1630.599976 176.802002 1629.099976 173.803009 c +1626.599976 172.304001 1623.599976 170.804001 1621.099976 168.805008 c +1621.599976 169.305008 l +1616.109985 166.806015 1611.609985 164.307007 1607.109985 161.308014 c +1607.109985 161.808014 l +1596.609985 156.311005 1587.119995 150.813004 1577.619995 145.815002 c +1557.130005 134.819 1537.640015 124.823006 1519.140015 116.327003 c +1510.650024 112.828003 1503.150024 108.829994 1495.650024 105.331001 c +1494.650024 104.832008 1493.650024 103.832008 1493.159912 102.833008 c +1492.659912 102.333008 1492.659912 101.333008 1492.659912 99.833694 c +1492.659912 98.834198 1493.159912 97.834694 1494.150024 97.335007 c +1498.650024 92.836899 1503.150024 88.3386 1507.650024 84.340302 c +1507.650024 84.340302 1507.650024 84.340302 1508.150024 83.840599 c +1508.650024 83.340797 1509.650024 82.841095 1510.150024 82.341301 c +1510.650024 81.841599 l +1519.640015 74.344696 1527.140015 69.846397 1533.140015 67.847198 c +1533.640015 67.847198 l +1538.640015 66.3479 1543.130005 66.847702 1546.630005 68.846695 c +1547.130005 69.346397 1547.130005 69.346397 1547.630005 69.846199 c +1548.130005 70.345901 1548.130005 70.345901 1548.630005 70.345901 c +1549.130005 70.845695 1549.630005 70.845695 1550.130005 71.345497 c +1555.130005 77.343002 1560.130005 82.340797 1565.130005 86.839096 c +1565.130005 87.338898 l +1572.619995 95.335396 1580.119995 102.333008 1586.619995 107.831009 c +1586.619995 108.329994 l +1600.109985 121.825005 1610.609985 130.320999 1618.099976 134.819992 c +1618.599976 135.319 l +1620.099976 136.319 1621.099976 136.819 1622.099976 137.318008 c +1622.599976 128.822006 1622.599976 119.825005 1623.099976 111.329002 c +1623.599976 105.831001 1623.599976 99.833496 1623.599976 93.835899 c +1623.599976 88.338394 1623.599976 83.340302 1623.099976 77.842499 c +1622.599976 70.845497 1622.099976 64.348099 1621.599976 57.850597 c +1621.099976 56.351299 1621.099976 54.851799 1621.099976 53.352497 c +1619.599976 46.355499 1605.109985 43.356697 1577.119995 43.8564 c +1576.619995 43.8564 1575.619995 43.8564 1575.119995 43.356697 c +1572.619995 41.857399 1571.119995 40.357899 1571.119995 38.358898 c +1570.619995 36.8596 1571.619995 34.860397 1573.619995 32.861298 c +1574.619995 31.861799 1577.119995 30.362499 1581.119995 28.363298 c +1587.619995 24.8647 1598.109985 20.866499 1613.609985 15.3687 c +1621.099976 13.369599 1629.099976 10.8706 1638.599976 7.37207 c +1639.089966 7.37207 1639.089966 7.37207 1639.089966 7.37207 c +1648.089966 4.87329 1654.589966 9.37109 1658.589966 19.866899 c +1658.589966 20.366699 l +1661.089966 28.363298 1661.589966 40.858398 1660.589966 58.351299 c +1660.089966 64.848595 1659.589966 72.345695 1658.589966 79.842499 c +1658.089966 81.841599 1658.089966 83.840797 1658.089966 85.340096 c +1658.089966 85.839798 l +1657.589966 89.338394 1657.589966 92.337196 1657.089966 95.335899 c +1656.589966 101.333008 1656.589966 106.831001 1656.589966 111.829002 c +1656.089966 121.825005 1655.589966 130.322006 1656.089966 137.319 c +1656.589966 144.81601 1657.089966 151.313004 1658.089966 156.311005 c +1660.089966 157.809998 1662.089966 158.309998 1663.579956 158.809998 c +1663.089966 147.314011 1664.579956 139.818008 1668.579956 135.819 c +1669.079956 135.319 1670.079956 134.819992 1671.579956 134.319992 c +1672.579956 134.319992 1673.579956 134.319992 1674.579956 134.819992 c +1700.069946 148.814011 l +1714.559937 155.311005 1721.059937 161.809006 1719.559937 168.306015 c +1719.559937 168.806015 1719.559937 168.806015 1719.559937 168.806015 c +1719.059937 172.804001 1715.559937 176.303009 1709.569946 178.802002 c +1708.569946 180.30101 1707.569946 181.80101 1706.569946 182.800003 c +f +n +1605.109985 182.799011 m +1562.630005 182.799011 l +1564.130005 181.300003 1566.130005 179.80101 1569.619995 178.80101 c +1574.119995 177.302002 1581.119995 175.802002 1591.109985 175.302002 c +1592.109985 175.302002 1593.109985 175.302002 1594.109985 175.802002 c +1605.109985 182.799011 l +f +n +1408.189941 232.779007 m +1408.689941 232.779007 l +1392.189941 240.776016 1380.200073 238.277008 1372.700073 225.782013 c +1358.709961 216.786011 l +1359.209961 222.283005 1359.709961 229.281006 1361.209961 238.777008 c +1361.709961 239.277008 1361.709961 240.276016 1361.709961 241.276016 c +1361.709961 242.775009 1361.709961 243.774017 1362.209961 244.274017 c +1362.209961 244.774017 1362.209961 244.774017 1362.209961 245.274017 c +1362.709961 248.772018 1363.209961 252.271011 1364.209961 256.269012 c +1364.209961 256.769012 1364.209961 256.769012 1364.209961 257.269012 c +1364.700073 260.268005 1365.200073 263.266022 1365.700073 266.265015 c +1368.200073 267.764008 1369.200073 270.263 1369.200073 273.262024 c +1369.200073 275.761017 1367.700073 279.259979 1364.700073 283.258026 c +1359.709961 290.255005 1349.209961 300.251007 1332.719971 312.746002 c +1331.219971 314.245026 1329.219971 315.745026 1327.719971 317.244019 c +1326.719971 317.744019 1325.719971 318.244019 1324.719971 318.244019 c +1320.719971 318.244019 1317.719971 316.744019 1315.719971 314.245026 c +1315.22998 314.245026 l +1311.72998 311.747009 1310.72998 307.248016 1312.22998 299.751007 c +1312.72998 294.753021 1313.22998 288.756012 1313.72998 282.258026 c +1314.22998 275.261017 1314.72998 267.764008 1314.72998 259.766998 c +1314.72998 258.268005 1314.72998 256.769012 1314.72998 255.269012 c +1314.72998 250.771011 1314.72998 246.77301 1314.72998 242.275009 c +1314.72998 241.775009 l +1314.22998 240.276016 1314.22998 238.776016 1314.72998 237.277008 c +1314.22998 229.779999 1314.22998 221.283005 1313.72998 212.787003 c +1313.22998 206.289993 1312.72998 199.292007 1312.22998 191.795013 c +1295.72998 180.300003 1280.23999 170.804001 1266.73999 164.307007 c +1259.25 160.808014 1252.25 158.309006 1245.75 156.309998 c +1237.26001 154.311005 1229.76001 153.311005 1222.76001 153.311005 c +1221.26001 153.311005 1220.26001 152.812012 1219.76001 151.812012 c +1213.77002 147.314011 1213.77002 141.31601 1219.26001 133.819 c +1223.76001 128.322006 1232.76001 121.324005 1247.25 113.328003 c +1256.75 103.832008 1271.23999 108.829994 1290.73999 128.322006 c +1293.22998 130.819992 1296.22998 133.819 1299.72998 137.318008 c +1299.22998 135.819 1298.72998 134.319 1297.72998 132.319992 c +1298.22998 132.819992 l +1295.22998 128.322006 1290.73999 122.324005 1284.23999 115.327003 c +1284.23999 114.827003 l +1280.73999 111.329002 1276.73999 107.829994 1272.23999 103.832008 c +1272.73999 103.832008 l +1272.23999 103.832008 l +1258.75 92.336395 1246.75 83.839798 1235.26001 78.342003 c +1228.76001 75.3433 1222.26001 73.3442 1216.77002 72.344498 c +1215.27002 71.844696 1213.77002 71.345001 1213.27002 70.345497 c +1212.27002 69.345901 1211.77002 67.846695 1212.27002 66.347198 c +1212.77002 64.8479 1213.27002 63.8484 1214.27002 63.3484 c +1221.76001 57.8508 l +1222.26001 57.351097 1223.26001 56.851299 1223.76001 56.851299 c +1243.25 53.352798 1265.25 57.8508 1288.73999 70.345695 c +1288.73999 70.345695 1288.73999 70.345695 1289.23999 70.345695 c +1290.23999 70.845497 1291.22998 71.845001 1292.22998 72.344696 c +1292.22998 72.844498 l +1300.22998 79.341797 1308.22998 86.838898 1316.219971 95.335396 c +1316.219971 95.835197 l +1318.719971 99.333694 1321.219971 103.832008 1324.719971 109.329994 c +1324.719971 109.829002 l +1326.719971 114.327003 1329.219971 119.825005 1331.719971 125.823006 c +1332.219971 125.823006 l +1334.719971 132.819992 1337.219971 140.317001 1340.709961 148.813004 c +1340.709961 149.313004 l +1341.709961 152.312012 1342.709961 155.311005 1343.709961 158.809006 c +1343.709961 158.309998 l +1343.709961 158.809006 1343.709961 159.309006 1343.709961 159.309006 c +1343.709961 156.809998 1344.709961 153.312012 1346.709961 148.813004 c +1346.709961 149.313004 l +1348.709961 142.81601 1352.709961 133.819992 1358.209961 121.324005 c +1358.709961 120.825005 1359.209961 119.825005 1359.709961 118.826004 c +1361.209961 115.827003 1362.709961 112.828003 1364.200073 109.829002 c +1364.200073 109.329994 1364.200073 109.329994 1364.700073 109.329994 c +1371.200073 95.835197 1375.200073 85.839096 1376.700073 80.341301 c +1376.700073 79.841599 1376.700073 79.341797 1377.200073 78.842003 c +1379.700073 71.3452 1386.700073 66.347198 1397.189941 64.3479 c +1398.689941 64.3479 1399.689941 64.3479 1400.689941 64.847702 c +1407.689941 68.845901 1419.679932 73.844002 1437.179932 79.841599 c +1443.169922 82.340302 1449.669922 84.3396 1457.169922 86.8386 c +1457.669922 87.338394 1457.669922 87.338394 1458.169922 87.338394 c +1458.669922 87.838097 1459.169922 87.838097 1459.669922 88.337898 c +1463.159912 91.3367 1464.659912 94.335396 1463.659912 96.834496 c +1463.659912 99.333298 1461.669922 101.832008 1457.169922 103.832008 c +1456.669922 104.331001 1455.669922 104.331001 1455.169922 104.331001 c +1439.669922 103.832008 1424.679932 107.829994 1411.189941 115.827003 c +1397.189941 124.323006 1384.200073 136.818008 1372.700073 152.812012 c +1372.200073 153.312012 l +1371.700073 154.311005 1370.700073 155.311005 1370.200073 155.809998 c +1368.200073 159.309006 1366.700073 161.808014 1365.200073 163.307007 c +1365.200073 163.307007 1365.200073 163.307007 1365.200073 163.807007 c +1361.209961 168.305008 1357.709961 169.804001 1354.209961 169.304001 c +1350.709961 169.804001 1347.709961 167.805008 1345.209961 162.807007 c +1346.209961 165.806015 1347.209961 168.805008 1348.209961 172.303009 c +1353.709961 176.302002 1359.209961 179.800003 1364.709961 183.299011 c +1371.200073 187.797012 1377.200073 191.295013 1383.200073 194.794006 c +1390.689941 199.292007 1398.189941 202.791016 1404.689941 204.789993 c +1415.179932 208.78801 1420.179932 213.286011 1420.679932 217.784012 c +1422.179932 223.282013 1418.179932 228.279999 1408.189941 232.778015 c +f +n +222.662018 343.235016 m +222.16301 343.235016 222.16301 343.235016 222.16301 343.235016 c +215.665009 345.734009 209.168015 341.736023 202.669998 331.73999 c +198.672012 326.742004 194.674011 319.245026 190.675003 309.249023 c +190.675003 308.749023 190.675003 308.749023 190.675003 308.749023 c +190.17601 307.75 190.17601 306.75 189.67601 305.75 c +188.177002 302.751007 187.177002 299.253021 186.177002 295.255005 c +186.177002 295.754028 l +185.677002 294.255005 184.678009 292.256012 184.178009 290.757019 c +179.179993 290.757019 l +180.179993 294.255005 180.679993 298.753021 181.179016 303.751007 c +181.179016 304.251007 l +181.179016 305.25 181.179016 306.25 181.179016 307.25 c +180.679993 312.248016 180.179993 317.745026 179.679993 323.243011 c +179.679993 323.743011 179.679993 324.742004 179.179993 325.242004 c +176.182007 329.73999 173.183014 333.239014 169.684006 336.738007 c +163.187012 343.235016 155.690002 347.233002 147.693008 348.733002 c +140.197006 350.732025 135.198013 350.732025 132.199997 348.733002 c +127.702003 347.233002 125.702003 342.735016 127.202003 335.738007 c +127.202003 334.739014 127.702003 333.739014 128.201004 332.739014 c +145.195007 308.749023 l +145.694 307.75 145.694 306.75 146.194 306.25 c +146.694 305.251007 146.694 304.251007 147.194 303.251007 c +147.194 302.752014 l +149.692001 296.754028 152.19101 291.756012 154.690002 288.258026 c +140.195999 286.758026 123.203003 286.259003 102.711006 285.759003 c +101.212006 286.259003 100.213005 286.259003 99.212898 285.759003 c +94.714798 286.259003 89.716797 286.259003 85.218498 286.259003 c +83.7192 286.259003 82.719696 285.759003 81.720001 284.759003 c +80.220695 283.259979 79.720901 281.759979 79.221199 280.261017 c +76.722397 275.763 78.221695 269.766022 82.719696 263.268005 c +194.675003 263.268005 l +197.174011 266.266998 l +218.165009 273.264008 l +214.167007 270.265015 l +213.667007 269.765015 213.167007 269.266022 212.667007 268.766022 c +212.168015 268.266022 211.668015 267.266998 211.668015 266.266998 c +211.668015 263.268005 l +239.157013 263.268005 l +235.158005 266.766998 231.659988 270.265015 228.661011 274.264008 c +228.161011 275.263 227.662018 275.763 227.162018 276.263 c +235.658005 278.761017 l +236.158005 278.761017 l +247.154007 283.259979 253.151016 290.757019 253.651016 302.252014 c +253.651016 302.752014 253.651016 303.251007 253.651016 303.751007 c +253.651016 304.251007 253.651016 304.751007 253.651016 305.25 c +253.151016 305.75 253.151016 306.25 253.151016 306.75 c +253.151016 307.749023 253.151016 308.749023 253.151016 309.749023 c +253.151016 310.248016 253.151016 310.748016 253.151016 311.248016 c +250.153015 319.244019 246.154007 325.742004 240.656006 330.73999 c +241.156006 330.73999 l +240.656006 330.73999 l +235.659012 336.238007 229.661011 340.236023 222.664017 343.235016 c +h +218.164017 301.252014 m +218.164017 301.752014 218.164017 301.752014 218.664017 302.251007 c +218.664017 302.751007 219.164017 303.751007 219.664017 304.75 c +220.16301 305.25 220.16301 305.75 220.66301 306.25 c +221.16301 305.75 222.162018 304.75 222.662018 304.25 c +222.662018 303.751007 l +222.162018 303.751007 l +221.66301 303.751007 221.66301 303.751007 221.66301 303.251007 c +220.16301 300.752014 218.164017 299.253021 216.665009 298.253021 c +217.165009 299.253021 217.664017 300.252014 218.164017 301.252014 c +f +n +239.156006 263.266998 m +211.667007 263.266998 l +211.667007 260.268005 l +209.168015 248.77301 202.171005 241.276016 190.67601 237.278015 c +182.679016 248.27301 l +194.674011 263.266998 l +82.719002 263.266998 l +85.217796 259.768005 88.716599 256.269989 93.2146 252.271011 c +93.2146 251.772018 93.2146 251.772018 93.714401 251.772018 c +93.2146 251.772018 93.2146 251.772018 92.714798 251.772018 c +88.216797 250.772018 85.218002 247.77301 84.7183 243.275009 c +83.718796 240.276016 84.218498 236.278015 86.217499 231.279999 c +90.715599 211.28801 l +90.215797 210.78801 90.215797 210.78801 90.215797 210.78801 c +89.716095 210.289017 89.216301 210.289017 88.716599 209.789017 c +88.216797 209.789017 88.216797 209.789017 88.216797 209.789017 c +84.7183 208.289993 82.7192 207.289993 81.719498 206.289993 c +80.2202 204.791016 79.220695 203.792007 79.220695 202.292007 c +78.720901 200.793015 78.720901 199.793015 79.720497 198.294006 c +79.720497 198.294006 79.720497 198.294006 79.720497 197.794006 c +81.719498 193.296005 84.7183 189.297012 88.716797 186.799011 c +89.216599 186.799011 89.216599 186.799011 89.716301 186.299011 c +89.216599 186.799011 l +101.711006 176.303009 l +189.67601 176.303009 l +197.173004 179.802002 204.169998 182.30101 210.168015 183.800003 c +204.669998 180.30101 200.172012 177.802002 196.673004 176.303009 c +240.156006 176.303009 l +274.141998 192.796005 l +277.641022 194.295013 280.139984 196.794006 281.139008 199.293015 c +282.638 202.292007 282.139008 205.791016 280.139984 209.789017 c +277.641022 214.787018 272.143005 221.284012 262.647003 228.781006 c +262.147003 228.781006 l +259.14801 232.279999 245.154007 226.782013 220.664017 212.78801 c +223.162018 216.286011 226.661011 220.784012 232.159012 226.282013 c +240.156006 227.282013 249.152008 232.779999 258.64801 242.775009 c +259.14801 243.275009 259.64801 244.275009 259.64801 245.274017 c +259.64801 246.77301 259.64801 247.77301 259.14801 248.27301 c +255.149994 256.269989 249.152008 260.768005 241.655014 261.268005 c +241.155014 261.766998 241.155014 261.766998 241.155014 262.266998 c +240.656006 262.766998 239.656006 262.766998 239.156006 263.266998 c +h +171.183014 261.268005 m +170.683014 259.269012 169.184006 257.269989 167.685013 255.269989 c +164.686005 257.769012 160.688004 258.769012 155.689011 259.269012 c +155.190002 259.269012 155.190002 259.269012 154.690002 259.269012 c +147.193008 258.769012 143.195007 253.771011 142.195007 244.774017 c +142.195007 243.775009 142.695007 242.775009 143.195007 241.776016 c +144.694 238.277008 145.693008 233.779007 145.693008 227.781006 c +138.695999 232.279007 l +137.697006 232.779007 136.697006 233.279007 135.198013 233.279007 c +133.698013 233.279007 132.699005 232.779007 132.199005 231.779999 c +126.701004 225.782013 l +118.205002 233.779007 110.708008 240.276016 104.209999 245.274017 c +104.709999 245.274017 l +126.201004 250.772018 141.695007 255.269989 150.692001 258.769012 c +150.192001 258.769012 l +157.689011 261.266998 163.686005 262.266998 168.185013 261.766998 c +169.684006 261.766998 170.683014 261.766998 171.183014 261.268005 c +h +144.194 195.794006 m +145.193008 196.794006 146.193008 197.293015 147.692001 197.793015 c +147.692001 197.293015 l +147.692001 194.295013 147.692001 191.296005 147.692001 188.297012 c +147.193008 187.298004 147.193008 185.798004 147.193008 184.299011 c +139.695999 182.300003 133.198013 180.30101 126.701004 178.30101 c +128.199997 179.80101 130.199005 181.800003 132.698013 183.299011 c +132.698013 183.799011 l +133.698013 184.798004 134.698013 185.798004 135.697006 186.798004 c +136.197006 187.297012 136.697006 188.297012 137.197006 188.797012 c +138.195999 191.795013 140.195007 194.294006 143.694 195.794006 c +144.194 195.794006 l +h +197.672012 208.289017 m +195.174011 202.792007 192.675003 198.793015 191.175003 197.294006 c +190.675003 197.793015 l +190.17601 200.292007 189.67601 203.291016 189.67601 206.289993 c +189.67601 206.789993 l +189.17601 211.28801 189.67601 216.786011 190.675003 222.783005 c +195.173004 221.784012 198.672012 220.284012 200.671005 218.285004 c +201.671005 216.786011 201.171005 213.787003 199.672012 210.289017 c +198.672012 209.789017 198.172012 209.289017 197.673004 208.289993 c +f +n +106.209007 172.803009 m +106.709007 172.303009 l +106.209007 172.303009 l +106.209007 172.303009 106.209007 172.303009 106.209007 172.303009 c +69.723595 162.308014 42.2346 156.809998 22.742399 155.309998 c +22.242699 155.309998 l +17.7446 154.811005 15.2456 152.812012 14.246099 148.813004 c +13.246599 146.314011 13.246599 142.815002 14.7458 137.818008 c +14.7458 136.818008 15.2456 135.819 16.2451 135.319 c +30.7393 122.824005 44.733601 117.326004 59.227798 118.826004 c +59.727497 118.826004 60.227299 118.826004 60.7271 119.325005 c +73.221901 123.823006 l +73.721695 123.823006 73.721695 123.823006 73.721695 123.823006 c +76.720497 125.323006 79.7192 127.322006 82.718002 128.820999 c +82.2183 128.820999 l +109.207008 144.815002 131.698013 154.811005 149.19101 159.309006 c +148.692001 158.309998 148.692001 156.809998 148.692001 154.311005 c +133.198013 146.315002 119.703003 138.318008 107.708008 130.320999 c +104.209999 128.322006 101.211006 126.323006 97.712395 123.824005 c +84.218002 114.328003 73.222397 105.331001 63.726097 95.835007 c +61.227299 94.335701 60.227497 92.836197 59.727798 90.337395 c +57.229004 83.840096 64.2258 78.842003 81.219002 74.843796 c +82.218498 74.843796 83.218002 74.843796 84.217796 74.843796 c +149.69101 98.334198 l +146.693008 65.847397 146.193008 39.8577 147.692001 19.366001 c +147.692001 18.866199 147.692001 17.866699 148.192001 17.366899 c +152.690002 7.87085 158.688004 2.8728 165.185013 2.8728 c +165.685013 2.8728 166.685013 2.8728 167.184006 3.37256 c +167.684006 3.87231 168.684006 4.37207 169.183014 4.87183 c +182.678009 21.865002 l +183.177002 22.3647 183.177002 22.3647 183.677002 22.8645 c +189.675003 38.3582 191.674011 60.3494 190.175003 89.337898 c +190.175003 89.837601 l +189.675003 94.335701 189.675003 99.333694 190.674011 104.832008 c +190.674011 105.331001 l +191.174011 107.329994 191.674011 109.329994 192.174011 111.829002 c +238.655014 129.322006 l +239.654007 129.820999 240.654007 130.820999 241.154007 131.819992 c +241.653015 132.819992 241.653015 133.819 241.653015 134.819 c +240.654007 141.81601 l +240.154007 143.315002 239.654007 144.815002 238.655014 145.315002 c +213.665009 163.807007 l +240.154007 176.302002 l +196.672012 176.302002 l +194.673004 175.302002 193.173004 174.803009 192.174011 174.303009 c +191.174011 174.803009 190.175003 175.802002 189.675003 176.302002 c +101.709999 176.302002 l +106.208008 172.803009 l +h +140.195999 124.823006 m +139.195999 124.323006 138.197006 123.323006 137.197006 122.823006 c +137.697006 123.323006 l +131.199005 120.324005 125.202003 117.826004 120.204002 116.326004 c +121.703003 117.326004 123.702003 118.325005 125.701004 119.325005 c +125.701004 119.325005 125.701004 119.325005 126.201004 119.325005 c +132.698013 123.823006 140.195007 127.822006 149.192001 131.819992 c +149.192001 131.319992 149.192001 130.320999 149.192001 129.820999 c +146.193008 128.322006 143.194 126.822006 140.695007 125.323006 c +140.195007 125.323006 140.195007 125.323006 140.195007 124.823006 c +h +192.675003 141.81601 m +192.175003 141.31601 191.675003 140.81601 191.175003 140.31601 c +189.67601 143.815002 189.17601 146.814011 189.67601 148.813004 c +190.67601 147.314011 191.675003 144.815002 192.675003 141.81601 c +f +n +802.929993 287.757019 m +803.429993 292.255005 802.929993 296.254028 801.93103 299.752014 c +798.432068 312.247009 785.937012 321.743011 763.946045 327.741028 c +762.947021 328.241028 761.947021 328.241028 761.447021 327.741028 c +751.45105 326.242004 747.953064 318.245026 751.45105 304.251007 c +750.952026 304.75 l +751.45105 303.251007 751.45105 301.252014 751.95105 299.253021 c +752.95105 292.756012 753.950012 284.259003 754.950012 274.763 c +754.950012 270.265015 754.950012 265.766998 755.450012 261.269012 c +755.949036 250.27301 756.449036 237.278015 756.449036 222.784012 c +755.949036 214.78801 755.949036 206.291016 755.949036 197.294006 c +755.949036 194.296005 755.949036 191.297012 755.949036 187.798004 c +755.949036 187.299011 755.949036 187.299011 755.949036 186.799011 c +753.950012 184.800003 751.95105 182.80101 750.452026 181.30101 c +795.934021 181.30101 l +797.433044 182.80101 799.432068 183.800003 800.93103 184.800003 c +800.93103 184.300003 l +808.42804 189.298004 814.926025 194.296005 819.424011 199.794006 c +819.424011 200.293015 l +822.922058 205.291016 825.921021 209.789993 827.419983 214.28801 c +827.419983 214.78801 827.419983 215.787018 827.419983 216.287018 c +826.921021 219.286011 825.421021 223.284012 822.922058 227.782013 c +822.922058 228.282013 822.922058 228.282013 822.423035 228.782013 c +820.424011 231.281006 817.925049 234.279007 815.426025 237.778015 c +815.426025 238.278015 815.426025 238.278015 814.926025 238.278015 c +814.426025 239.777008 814.926025 243.276016 816.425049 248.274017 c +816.425049 249.27301 816.425049 250.27301 816.425049 251.272018 c +815.925049 252.272018 815.426025 253.271011 814.426025 253.771011 c +813.427063 254.271011 812.427063 254.771011 811.427063 254.771011 c +806.429016 254.771011 l +804.929993 254.771011 803.93103 254.271011 803.43103 253.271011 c +802.43103 252.772018 801.93103 251.772018 801.432068 250.27301 c +799.932068 240.777008 797.933044 232.779999 795.934021 226.282013 c +795.434021 225.283005 794.935059 224.283005 794.435059 222.784012 c +793.935059 222.284012 793.435059 221.285004 792.936035 220.285004 c +792.936035 221.784012 792.936035 222.784012 792.936035 223.784012 c +793.435059 232.779999 794.935059 245.275009 797.933044 261.768005 c +797.933044 262.268005 l +798.433044 265.266998 798.933044 268.266022 799.433044 271.264008 c +800.432068 276.262024 801.432068 281.259979 802.93103 286.758026 c +802.93103 287.258026 802.93103 287.258026 802.93103 287.758026 c +f +n +711.467041 291.756012 m +710.467041 292.255005 709.468018 292.255005 708.968018 292.255005 c +708.468018 292.255005 707.469055 291.756012 706.969055 291.256012 c +705.469971 290.756012 704.469971 289.757019 703.969971 288.757019 c +707.469055 292.755005 709.968018 296.754028 711.467041 300.252014 c +715.465027 310.748016 712.966003 320.744019 703.969971 330.23999 c +701.471008 332.739014 698.972046 335.238007 695.47406 337.73703 c +694.97406 338.23703 693.97406 338.73703 692.975037 338.73703 c +687.477051 339.236023 683.979004 338.23703 682.479004 335.738007 c +679.97998 333.739014 679.47998 330.73999 680.97998 326.242004 c +670.984009 319.744019 661.988037 313.247009 653.991028 307.25 c +644.495056 300.252014 636.498047 293.755005 629.501038 288.257019 c +619.005005 279.761017 611.009033 272.764008 606.51001 267.266022 c +605.511047 265.766998 604.511047 264.766998 604.011047 263.268005 c +603.012024 261.768005 602.512024 260.769012 603.012024 259.769012 c +602.512024 257.769989 604.011047 256.271027 606.51001 254.771011 c +606.011047 254.771011 l +611.508057 252.272018 631.5 259.769012 664.987061 277.762024 c +667.986023 279.761017 670.985046 281.759979 674.483032 283.259979 c +682.47998 282.759979 691.476013 283.759003 700.972046 286.758026 c +701.472046 287.258026 702.472046 287.258026 702.971008 287.758026 c +702.472046 287.258026 701.972046 287.258026 701.972046 286.758026 c +700.473022 284.759003 699.473022 282.759979 698.973022 280.261017 c +699.473022 280.759979 l +696.97406 274.763 698.473022 266.766022 704.969971 256.769989 c +708.469055 251.27301 712.967041 244.775009 719.465027 237.278015 c +713.467041 214.287003 l +712.468018 214.787018 710.968018 214.787018 709.469055 214.787018 c +707.969055 214.787018 705.969971 213.78801 702.472046 211.78801 c +701.972046 211.289017 701.472046 210.789017 700.972046 210.289017 c +695.975037 202.792007 690.977051 196.795013 685.979004 191.797012 c +685.479004 191.297012 684.979004 190.797012 684.479004 190.297012 c +682.97998 189.298004 681.97998 188.298004 680.981018 187.299011 c +681.47998 195.795013 684.479004 205.791016 689.977051 216.287018 c +689.977051 216.787018 689.977051 216.787018 690.477051 216.787018 c +690.477051 217.286011 690.477051 217.286011 690.477051 217.286011 c +692.976013 222.784012 696.47406 228.782013 700.473022 234.279999 c +700.972046 235.279007 700.972046 236.279007 700.972046 236.778015 c +700.972046 237.278015 700.972046 238.278015 700.972046 238.777008 c +696.47406 249.27301 691.476013 257.269989 684.979004 261.768005 c +679.981018 265.766022 674.483032 268.265015 668.986023 268.765015 c +667.986023 268.765015 666.987061 268.765015 666.487061 268.265015 c +665.987061 268.265015 665.487061 267.766022 664.988037 267.266022 c +662.489014 265.766998 659.98999 262.768005 658.48999 259.269012 c +655.491028 254.771011 653.492004 248.774017 651.993042 241.277008 c +643.996033 234.779007 636.0 228.282013 627.503052 221.784012 c +626.004028 221.285004 625.004028 220.285004 624.004028 219.286011 c +608.511047 208.789993 591.518005 198.294006 574.024048 188.298004 c +573.025024 188.298004 572.525024 187.798004 572.025024 187.299011 c +571.526001 186.799011 570.526001 186.799011 570.026001 186.299011 c +569.027039 185.799011 568.027039 185.300003 567.528015 184.300003 c +567.028015 183.800003 566.528015 182.80101 566.528015 181.30101 c +626.004028 181.30101 l +646.996033 199.794006 l +646.496033 194.796005 646.496033 189.798004 646.996033 185.300003 c +646.996033 184.800003 l +646.996033 184.300003 646.996033 183.800003 646.996033 183.30101 c +646.996033 182.80101 646.996033 181.80101 646.996033 181.302002 c +704.472046 181.302002 l +704.972046 182.30101 705.472046 183.30101 705.972046 183.800003 c +706.471008 183.800003 l +706.971008 184.800003 707.471008 185.799011 707.971008 186.299011 c +708.469971 186.799011 708.469971 186.799011 708.969971 187.299011 c +712.469055 193.796005 714.968018 198.794006 715.967041 202.792007 c +716.967041 199.294006 717.966064 195.795013 718.966064 192.297012 c +718.966064 190.298004 718.966064 188.298004 719.466064 186.299011 c +719.966064 184.800003 719.966064 182.80101 720.465027 181.30101 c +747.454041 181.30101 l +747.954041 183.800003 747.954041 185.799011 747.954041 187.799011 c +747.954041 190.797012 747.454041 193.796005 745.955017 196.795013 c +746.455017 196.295013 l +744.956055 199.794006 742.956055 202.792007 740.457031 205.791016 c +739.958008 206.291016 l +736.459045 209.789993 735.459045 214.28801 735.959045 220.785004 c +736.459045 227.282013 738.958008 235.279007 742.956055 243.776016 c +743.456055 244.276016 743.456055 245.275009 743.456055 245.775009 c +743.456055 251.772018 742.956055 257.269989 741.457031 261.768005 c +738.958008 269.265015 734.459961 275.763 728.462036 281.259979 c +723.96405 285.759003 717.967041 289.257019 711.469055 291.756012 c +f +n +747.452026 181.300003 m +720.463013 181.300003 l +720.463013 178.80101 720.463013 176.302002 720.463013 173.803009 c +720.463013 173.303009 l +720.963013 170.305008 720.963013 167.306015 720.963013 163.807007 c +713.966003 137.818008 l +713.466003 136.818008 713.466003 135.819 713.966003 134.319 c +714.466003 133.319992 714.966064 132.319992 715.965027 131.820999 c +724.96106 125.323006 736.957031 129.322006 751.95105 142.81601 c +752.450012 143.31601 753.450012 144.315002 753.950012 144.815002 c +754.449036 30.8606 l +754.449036 29.861099 754.949036 28.861599 755.449036 28.361799 c +755.949036 27.362299 756.448059 26.862499 756.948059 26.362799 c +766.444031 21.365002 773.94104 23.364 780.439026 31.860399 c +780.439026 32.3601 780.439026 32.3601 780.439026 32.3601 c +781.938049 35.358898 783.438049 38.857399 784.937012 42.356003 c +784.937012 42.855698 l +787.936035 52.351799 789.935059 66.346199 791.434021 84.339096 c +791.434021 84.838898 791.434021 85.3386 791.434021 85.838394 c +789.935059 93.335197 788.935059 102.332008 788.435059 111.828003 c +787.936035 118.825005 787.936035 126.322006 788.435059 133.819 c +788.435059 134.319 l +788.435059 138.817001 788.435059 142.815002 788.935059 147.313004 c +789.435059 152.811005 789.935059 158.809006 790.434021 165.306015 c +790.434021 165.806015 l +790.434021 167.305008 790.434021 168.304001 790.934021 169.804001 c +790.934021 170.304001 790.934021 170.304001 790.934021 170.803009 c +790.934021 173.302002 791.434021 176.30101 791.934021 178.800003 c +792.933044 179.800003 794.432068 180.799011 795.932068 181.299011 c +750.450012 181.299011 l +748.95105 179.800003 747.45105 178.800003 745.952026 177.30101 c +746.452026 178.800003 746.952026 179.799011 747.45105 181.299011 c +f +n +626.001038 181.300003 m +566.525024 181.300003 l +566.525024 180.30101 567.025024 179.30101 568.024048 178.30101 c +571.52301 174.303009 576.021057 171.304001 581.019043 168.805008 c +581.519043 168.305008 l +589.015015 165.807007 597.512024 164.807007 608.008057 166.306015 c +608.508057 166.306015 609.507019 166.806015 610.507019 167.306015 c +626.0 181.300003 l +f +n +686.477051 157.309998 m +686.477051 157.809006 686.477051 157.809006 686.977051 157.809006 c +691.475037 163.307007 694.973022 168.305008 698.472046 172.803009 c +698.972046 172.803009 l +700.471008 175.802002 702.469971 178.80101 704.469055 181.300003 c +646.992004 181.300003 l +646.992004 179.80101 646.992004 178.80101 647.492004 177.302002 c +647.492004 176.302002 647.492004 175.302002 647.992004 174.303009 c +647.992004 166.306015 647.492004 159.809006 646.493042 155.311005 c +645.993042 160.808014 645.493042 164.307007 644.494019 165.806015 c +642.994019 167.805008 641.495056 168.805008 639.996033 169.305008 c +638.496033 170.304001 636.497009 169.804001 634.498047 168.305008 c +632.999023 167.805008 631.0 165.806015 629.5 162.308014 c +622.003052 156.309998 616.506042 150.313004 613.007019 143.815002 c +610.508057 139.817001 608.509033 136.318008 608.009033 132.819992 c +608.509033 133.319992 l +607.01001 129.320999 607.01001 124.823006 607.51001 120.325005 c +607.51001 120.825005 l +608.009033 117.326004 609.009033 114.327003 610.508057 110.829002 c +610.508057 109.829002 611.008057 108.829994 611.508057 107.829994 c +611.008057 104.831001 611.508057 102.832008 613.007019 101.333008 c +614.506042 98.334007 617.005005 97.334496 621.504028 97.834198 c +625.002014 98.334007 630.5 101.833008 637.997009 108.329994 c +639.996033 110.329002 641.995056 112.328003 644.494019 114.827003 c +644.994019 113.328003 644.994019 112.328003 645.494019 110.829002 c +646.993042 106.331001 648.992004 103.332008 652.491028 101.833008 c +651.991028 101.833008 l +663.486023 94.835396 672.483032 96.335007 679.47998 106.331001 c +679.979004 106.829994 680.479004 107.829994 680.479004 108.329994 c +680.479004 109.329002 680.479004 110.329002 680.479004 110.828003 c +679.979004 111.328003 679.979004 111.828003 679.979004 112.328003 c +679.979004 112.827003 679.979004 112.827003 679.979004 112.827003 c +679.47998 117.325005 678.97998 121.324005 678.47998 124.823006 c +677.97998 131.819992 677.97998 137.817001 679.47998 142.315002 c +679.47998 142.815002 679.47998 143.315002 679.47998 143.815002 c +680.479004 149.812012 682.978027 154.309998 686.477051 157.309006 c +f +n +1069.819946 334.239014 m +1069.319946 333.739014 1068.319946 333.739014 1067.819946 333.239014 c +1067.319946 332.73999 1066.819946 332.23999 1066.329956 331.23999 c +1065.829956 330.73999 1065.829956 329.741028 1065.329956 328.241028 c +1062.829956 321.744019 1061.829956 313.248016 1062.329956 303.751007 c +1062.329956 303.252014 l +1062.329956 298.254028 1061.829956 293.756012 1060.329956 289.257019 c +1058.829956 287.758026 1057.829956 285.759003 1056.829956 283.759979 c +1056.329956 283.759979 l +998.853027 247.274017 l +999.353027 250.27301 l +1026.339966 278.262024 l +1026.839966 278.762024 1027.339966 279.761017 1027.839966 280.761017 c +1028.339966 281.759979 1028.339966 282.759979 1027.839966 283.259979 c +1026.339966 286.758026 1025.339966 289.257019 1023.839966 291.256012 c +1021.339966 294.755005 1019.339966 296.754028 1016.849976 297.254028 c +1016.349976 297.753021 1015.349976 297.753021 1014.849976 297.753021 c +1014.349976 297.753021 l +1014.349976 299.253021 l +1014.349976 300.252014 1014.349976 301.252014 1013.849976 301.751007 c +1007.849976 312.247009 998.353027 319.744019 985.358032 324.242004 c +984.35907 324.742004 983.35907 324.742004 982.859985 324.742004 c +982.359985 324.742004 981.359985 324.242004 980.861023 323.743011 c +971.864075 318.745026 l +971.365051 318.245026 970.865051 317.745026 970.365051 317.246002 c +969.865051 316.746002 969.365051 315.746002 969.365051 315.247009 c +964.867065 277.262024 l +961.369019 274.763 958.369995 272.764008 955.371033 270.765015 c +950.374023 267.766022 945.375061 265.266998 940.877075 263.268005 c +940.377014 263.268005 l +937.379028 261.769012 934.380005 260.769012 931.881042 259.769012 c +930.382019 259.269989 929.882019 258.769989 929.382019 257.769989 c +928.383057 256.771027 927.883057 255.771011 928.383057 254.272018 c +931.881042 235.779007 940.378052 227.782013 954.87207 229.282013 c +955.37207 229.282013 956.371033 229.282013 956.871033 229.781006 c +956.871033 229.282013 956.871033 229.282013 956.871033 228.782013 c +956.371033 225.283005 955.871033 222.285004 955.37207 219.286011 c +953.373047 209.289993 949.874023 202.793015 944.876038 199.794006 c +944.376038 199.294006 943.876038 199.294006 943.377075 198.794006 c +942.877075 198.294006 942.877075 198.294006 942.877075 197.795013 c +989.858032 197.795013 l +996.855042 235.779007 l +998.354065 234.279999 999.854065 233.281006 1001.849976 231.781006 c +1004.849976 229.282013 1007.849976 227.783005 1011.349976 226.783005 c +1011.349976 226.783005 1011.349976 226.783005 1011.849976 226.783005 c +1014.849976 226.283005 1017.849976 226.283005 1020.839966 226.783005 c +1020.839966 226.783005 1020.839966 226.783005 1021.339966 226.783005 c +1023.839966 227.783005 1026.339966 229.282013 1028.839966 230.781006 c +1030.339966 231.281006 1031.339966 232.281006 1032.839966 232.781006 c +1036.839966 235.279007 1040.339966 237.778015 1043.839966 240.277008 c +1043.839966 239.778015 1043.839966 239.278015 1043.839966 238.778015 c +1043.339966 237.279007 1042.839966 235.279999 1042.339966 232.781006 c +1042.839966 233.279999 l +1042.339966 230.781006 1041.339966 228.782013 1040.839966 226.283005 c +1040.839966 226.783005 l +1038.339966 220.286011 1035.839966 214.28801 1033.339966 208.789993 c +1032.839966 208.789993 l +1032.339966 208.291016 1031.839966 207.291016 1031.339966 206.292007 c +1031.339966 205.292007 1031.339966 204.292007 1031.839966 203.293015 c +1032.339966 201.294006 1033.339966 199.294006 1034.339966 197.795013 c +1102.809937 197.795013 l +1103.309937 201.294006 1103.309937 204.292007 1101.809937 206.792007 c +1099.809937 211.289993 1095.809937 214.78801 1089.819946 217.787018 c +1089.319946 217.787018 1089.319946 217.787018 1089.319946 217.787018 c +1087.819946 218.287018 1085.819946 219.286011 1084.319946 219.786011 c +1083.819946 220.286011 1082.819946 220.286011 1082.319946 220.286011 c +1074.819946 220.286011 l +1074.819946 222.285004 1074.819946 224.284012 1075.319946 226.283005 c +1075.819946 227.782013 1076.319946 229.282013 1076.819946 230.781006 c +1076.819946 231.281006 l +1077.319946 233.279999 1077.819946 235.279007 1078.819946 236.779007 c +1078.819946 237.278015 1078.819946 237.278015 1079.319946 237.778015 c +1098.309937 273.264008 l +1118.809937 287.258026 l +1119.309937 287.758026 1119.800049 288.757019 1120.300049 289.257019 c +1120.800049 290.257019 1120.800049 291.256012 1120.800049 291.756012 c +1120.300049 303.751007 1115.309937 310.248016 1106.809937 310.748016 c +1103.809937 317.245026 l +1103.309937 318.245026 1102.809937 318.745026 1102.309937 319.244019 c +1095.809937 324.742004 1090.319946 328.73999 1085.819946 331.23999 c +1079.819946 334.238007 1074.319946 335.238007 1069.829956 334.238007 c +h +1074.319946 234.779007 m +1074.819946 235.278015 l +1075.319946 235.278015 l +1074.319946 234.779007 l +f +n +1102.809937 197.793015 m +1034.339966 197.793015 l +1037.339966 192.296005 1040.339966 189.297012 1043.829956 188.297012 c +1044.329956 188.297012 1045.329956 188.297012 1045.829956 188.297012 c +1046.329956 188.297012 1047.329956 188.297012 1047.829956 188.797012 c +1052.329956 191.296005 1056.329956 193.295013 1059.329956 193.795013 c +1058.829956 193.295013 1058.829956 192.296005 1058.829956 191.296005 c +1058.829956 191.796005 l +1056.829956 186.298004 1054.329956 181.800003 1051.329956 178.302002 c +1036.839966 191.796005 1025.839966 196.294006 1019.339966 190.796005 c +1018.339966 190.297012 1017.839966 189.797012 1017.339966 189.297012 c +1016.839966 188.797012 1016.839966 187.798004 1016.839966 186.798004 c +1016.839966 179.80101 l +1016.839966 178.802002 1017.339966 177.802002 1017.839966 177.302002 c +1021.839966 170.305008 1025.339966 164.308014 1028.339966 159.809998 c +1028.339966 160.309006 l +1030.839966 155.811005 1032.839966 152.813004 1034.839966 150.313004 c +1034.339966 149.814011 1034.339966 148.814011 1033.839966 148.314011 c +1026.839966 134.819992 1018.839966 123.824005 1009.349976 115.328003 c +1008.849976 115.328003 l +1008.349976 114.828003 1008.349976 114.328003 1007.849976 113.829002 c +996.353027 106.332008 989.356018 103.833008 985.858032 105.332008 c +985.358032 105.832008 l +984.858032 107.331009 984.858032 109.329994 984.858032 111.829002 c +984.358032 119.326004 984.858032 130.822006 985.358032 145.31601 c +985.858032 146.315002 985.858032 147.315002 985.858032 147.815002 c +985.858032 152.813004 985.858032 157.811005 986.357056 163.308014 c +986.857056 169.806015 986.857056 176.303009 987.357056 183.300003 c +989.856018 197.794006 l +942.875061 197.794006 l +942.375061 197.295013 941.375061 196.295013 940.876038 195.296005 c +940.376038 194.796005 939.376038 194.296005 938.877014 193.297012 c +938.877014 192.797012 l +931.380005 183.80101 924.882019 175.804001 918.385071 169.306015 c +912.387024 163.309006 906.889954 157.811005 902.392029 152.813004 c +899.393066 150.314011 896.894043 148.315002 894.39502 145.81601 c +894.39502 146.31601 l +889.397034 142.318008 884.899048 139.319 880.901062 136.819992 c +879.401062 136.319992 878.902039 135.320999 878.402039 134.320999 c +877.902039 133.322006 877.902039 132.322006 878.402039 130.823013 c +878.402039 129.823013 878.902039 128.823013 879.901062 128.324005 c +903.891052 110.331009 l +904.391052 109.831009 905.391052 109.332008 906.889954 109.332008 c +907.389954 109.332008 908.389038 109.332008 909.389038 109.831009 c +919.885071 115.829002 929.881042 126.324005 938.877014 141.319 c +940.376038 142.818008 941.376038 144.817001 941.876038 146.31601 c +941.876038 146.81601 941.876038 146.81601 942.375061 146.81601 c +944.874023 151.814011 947.373047 156.812012 949.87207 162.309998 c +949.87207 162.809998 949.87207 162.809998 950.37207 162.809998 c +950.87207 164.809006 951.37207 166.308014 952.371033 167.807007 c +948.373047 104.833008 l +944.874023 102.334007 936.877014 102.334007 924.383057 104.833008 c +923.883057 105.333008 923.383057 105.333008 922.883057 105.333008 c +916.386047 104.333008 912.887024 102.334007 912.388062 99.335007 c +909.889038 96.336197 911.388062 92.337898 916.886047 87.8396 c +917.385071 87.339798 917.885071 87.339798 918.385071 86.840096 c +937.877014 80.842499 951.37207 72.845695 959.868042 62.849899 c +960.368042 62.350098 961.368042 61.8503 962.367065 61.350597 c +962.867065 61.350597 963.866028 61.350597 964.866028 61.350597 c +975.362061 62.849899 981.85907 68.347702 984.358032 77.344002 c +987.357056 73.845497 990.356018 72.346199 992.855042 72.346199 c +993.854065 72.346199 994.854065 72.346199 995.854065 72.845901 c +1015.349976 83.341599 1031.839966 95.336899 1044.329956 108.332008 c +1044.829956 108.332008 l +1049.329956 113.329002 1053.829956 118.327003 1057.829956 123.825005 c +1082.819946 91.838097 l +1083.319946 91.338394 1084.319946 91.338394 1084.819946 90.8386 c +1085.319946 90.338898 1086.319946 90.338898 1086.819946 90.338898 c +1102.309937 90.8386 1121.800049 96.336395 1144.789917 107.332008 c +1152.289917 110.831009 1159.789917 115.329002 1168.280029 120.327003 c +1168.780029 120.826004 1169.780029 121.826004 1170.280029 122.326004 c +1170.780029 122.825005 1170.780029 123.825005 1170.780029 124.824005 c +1170.780029 129.822006 l +1170.780029 130.822006 1170.780029 131.820999 1170.280029 132.320999 c +1169.780029 133.320999 1168.780029 133.819992 1167.780029 134.319992 c +1166.780029 134.819992 1165.780029 134.819992 1164.780029 134.319992 c +1146.789917 130.322006 1128.300049 131.820999 1109.809937 138.318008 c +1080.819946 160.309006 l +1084.319946 170.305008 1089.319946 179.302002 1095.809937 186.799011 c +1095.809937 187.298004 l +1097.309937 188.798004 1098.309937 189.797012 1099.309937 191.297012 c +1099.809937 191.796005 1099.809937 191.796005 1100.309937 192.296005 c +1101.309937 194.295013 1102.309937 196.294006 1102.809937 197.794006 c +f +Q +Q +n +[/EMC PDFMark5 +PDFVars/TermAll get exec end end +%%PageTrailer +%%Trailer +%%EOF diff --git a/hust-title.pdf b/hust-title.pdf new file mode 100644 index 0000000..bce78c0 Binary files /dev/null and b/hust-title.pdf differ diff --git a/hustreport.cls b/hustreport.cls new file mode 100644 index 0000000..fd4dcea --- /dev/null +++ b/hustreport.cls @@ -0,0 +1,1000 @@ +%% +%% This is file `hustreport.cls', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% hustreport.dtx (with options: `class') +%% +%% This is a generated file. +%% +%% Copyright (C) 2013-2014 by Xu Cheng +%% 2014-2016 by hust-latex +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3 +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3 or later is part of all distributions of LaTeX +%% version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `maintained'. +%% +%% The Current Maintainer of this work is hust-latex Organization. +%% +%% This work consists of the files hustreport.dtx, +%% hustreport.ins and the derived file hustreport.cls +%% along with its document and example files. +%% +\NeedsTeXFormat{LaTeX2e}[1999/12/01] +\ProvidesClass{hustreport} +[2016/06/01 v1.1 A Report Template for Huazhong University of Science and Technology] +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +\RequirePackage{ifthen} +\RequirePackage{xkeyval} +\newif\ifHUST@finalformat +\HUST@finalformattrue +\DeclareOptionX{format}[final]{ + \ifthenelse{\equal{#1}{final}}{ + \HUST@finalformattrue + }{ + \ifthenelse{\equal{#1}{draft}}{ + \HUST@finalformatfalse + }{ + \ClassError{hustreport} + {Option format can only be 'final' or 'draft'} + {Try to remove option format^^J} + } + } +} +\gdef\HUST@language{chinese} +\DeclareOptionX{language}[chinese]{ + \ifthenelse{\equal{#1}{chinese} \OR \equal{#1}{english}}{ + \gdef\HUST@language{#1} + }{ + \ClassError{hustreport} + {Option language can only be 'chinese' or 'english'} + {Try to remove option language^^J} + } +} +\gdef\HUST@degree{ms} +\DeclareOptionX{degree}[ms]{ + \ifthenelse{\equal{#1}{ms} \OR \equal{#1}{me} \OR \equal{#1}{phd}}{ + \gdef\HUST@degree{#1} + }{ + \ClassError{hustreport} + {Option degree can only be 'ms', 'me' or 'phd'} + {Try to remove option degree^^J} + } +} +\gdef\HUST@category{none} +\DeclareOptionX{category}[none]{ + \ifthenelse{\equal{#1}{none} \OR \equal{#1}{literature-survey} \OR \equal{#1}{thesis-proposal} \OR \equal{#1}{academic-report} \OR \equal{#1}{midterm-progress} \OR \equal{#1}{practice}}{ + \gdef\HUST@category{#1} + }{ + \ClassError{hustreport} + {Option category can only be 'none', 'literature-survey', 'thesis-proposal', 'academic-report', 'midterm-progress' or 'practice'} + {Try to remove option category^^J} + } +} +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{book}} +\ProcessOptionsX +\LoadClass[12pt, a4paper, openany]{book} +\RequirePackage{iftex} +\ifXeTeX\else + \ifLuaTeX\else + \begingroup + \errorcontextlines=-1\relax + \newlinechar=10\relax + \errmessage{^^J + *******************************************************^^J + * XeTeX or LuaTeX is required to compile this document.^^J + * Sorry!^^J + *******************************************************^^J + }% + \endgroup + \fi +\fi +\ifthenelse{\equal{\HUST@language}{english}}{ + \RequirePackage{fontspec} + \setmainfont[ + Ligatures={Common,TeX}, + Extension=.otf, + UprightFont=*-regular, + BoldFont=*-bold, + ItalicFont=*-italic, + BoldItalicFont=*-bolditalic]{texgyretermes} + \setsansfont[Ligatures={Common,TeX}]{Droid Sans Fallback} + \setmonofont{CMU Typewriter Text} + \defaultfontfeatures{Mapping=tex-text} + \let\HEI\relax + \let\KAI\relax + \let\FANGSONG\relax + \newcommand{\hei}[1]{#1} + \newcommand{\kai}[1]{#1} + \newcommand{\fangsong}[1]{#1} +}{} +\ifthenelse{\equal{\HUST@language}{chinese}}{ + \ifXeTeX % XeTeX下使用fontspec + xeCJK处理字体 + % 英文字体 + \RequirePackage{fontspec} + \RequirePackage{xunicode} + \setmainfont[ + Ligatures={Common,TeX}, + Extension=.otf, + UprightFont=*-regular, + BoldFont=*-bold, + ItalicFont=*-italic, + BoldItalicFont=*-bolditalic]{texgyretermes} + \setsansfont[Ligatures={Common,TeX}]{Droid Sans Fallback} + \setmonofont{CMU Typewriter Text} + \defaultfontfeatures{Mapping=tex-text} + % 中文字体 + \RequirePackage[CJKmath]{xeCJK} + \setCJKmainfont[ + Path=font/, + BoldFont={SimHei.ttf}, + ItalicFont={SimKai.ttf}]{SimSun.ttc} + \setCJKsansfont[ + Path=font/]{SimKai.ttf} + \setCJKmonofont[ + Path=font/]{SimFang.ttf} + \xeCJKsetup{PunctStyle=kaiming} + + \newcommand\ziju[2]{{\renewcommand{\CJKglue}{\hskip #1} #2}} + \newCJKfontfamily\HEI[ + Path=font/]{SimHei.ttf} + \newCJKfontfamily\KAI[ + Path=font/]{SimKai.ttf} + \newCJKfontfamily\FANGSONG[ + Path=font/]{SimFang.ttf} + \newcommand{\hei}[1]{{\HEI #1}} + \newcommand{\kai}[1]{{\KAI #1}} + \newcommand{\fangsong}[1]{{\FANGSONG #1}} + \else\fi + \ifLuaTeX % LuaTeX下使用luatex-ja处理字体 [推荐] + \RequirePackage{luatexja-fontspec} + % 英文字体 + \setmainfont[Ligatures={Common,TeX}]{Tex Gyre Termes} + \setsansfont[Ligatures={Common,TeX}]{Droid Sans Fallback} + \setmonofont{CMU Typewriter Text} + \defaultfontfeatures{Mapping=tex-text,Scale=MatchLowercase} + % 中文字体 + \setmainjfont[ + BoldFont={AdobeHeitiStd-Regular}, + ItalicFont={AdobeKaitiStd-Regular}]{AdobeSongStd-Light} + \setsansjfont{AdobeKaitiStd-Regular} + \defaultjfontfeatures{JFM=kaiming} + + \newcommand\ziju[2]{\vbox{\ltjsetparameter{kanjiskip=#1} #2}} + \newjfontfamily\HEI{AdobeHeitiStd-Regular} + \newjfontfamily\KAI{AdobeKaitiStd-Regular} + \newjfontfamily\FANGSONG{AdobeFangsongStd-Regular} + \newcommand{\hei}[1]{{\jfontspec{AdobeHeitiStd-Regular} #1}} + \newcommand{\kai}[1]{{\jfontspec{AdobeKaitiStd-Regular} #1}} + \newcommand{\fangsong}[1]{{\jfontspec{AdobeFangsongStd-Regular} #1}} + \else\fi + \RequirePackage{zhnumber} + \def\CJKnumber#1{\zhnumber{#1}} % 兼容CJKnumb +}{} +\linespread{1.3}\selectfont +\RequirePackage{geometry} +\geometry{ + top=1.2in, + bottom=1.2in, + left=1in, + right=1in, + includefoot +} +\ifthenelse{\isundefined{\pagewidth}}{ + \pdfpagewidth=\paperwidth + \pdfpageheight=\paperheight +}{ + \pagewidth=\paperwidth + \pageheight=\paperheight +} +\RequirePackage{indentfirst} +\setlength{\parindent}{2em} +\setlength{\parskip}{0pt plus 2pt minus 1pt} +\RequirePackage{color} +\RequirePackage[table]{xcolor} +\RequirePackage[unicode]{hyperref} +\hypersetup{ + bookmarksnumbered=true, + bookmarksopen=true, + bookmarksopenlevel=1, + breaklinks=true, + colorlinks=true, + allcolors=black, + linktoc=all, + plainpages=false, + pdfpagelabels=true, + pdfstartview={XYZ null null 1}, + pdfinfo={Template.Info={hustreport.cls v1.0 2013/07/01, Copyright (C) 2013-2014 by Xu Cheng 2014 by hust-latex, https://github.com/hust-latex/hustreport}} +} +\RequirePackage{amsmath,amssymb,amsfonts} +\RequirePackage[amsmath,amsthm,thmmarks,hyperref,thref]{ntheorem} +\RequirePackage{fancynum} +\setfnumgsym{\,} +\RequirePackage[lined,boxed,linesnumbered,ruled,vlined,algochapter]{algorithm2e} +\RequirePackage{overpic} +\RequirePackage{graphicx,caption,subcaption} +\RequirePackage{array} +\RequirePackage{multirow,tabularx,ltxtable} +\RequirePackage{listings} +\RequirePackage[numbers,square,comma,super,sort&compress]{natbib} +\RequirePackage{titlesec} +\RequirePackage{titletoc} +\RequirePackage{tocvsec2} +\RequirePackage[inline]{enumitem} +\RequirePackage{fancyhdr} +\RequirePackage{afterpage} +\RequirePackage{datenumber} +\RequirePackage{etoolbox} +\RequirePackage{appendix} +\RequirePackage[titles]{tocloft} +\RequirePackage{xstring} +\RequirePackage{perpage} +\def\title#1{\gdef\HUST@title{#1}\hypersetup{pdftitle={#1}}} +\title{} +\def\author#1{\gdef\HUST@author{#1}\hypersetup{pdfauthor={#1}}} +\author{} +\def\major#1{\gdef\HUST@major{#1}} +\major{} +\def\advisor#1{\gdef\HUST@advisor{#1}} +% \long\def\advisor#1{\gdef\HUST@advisor{#1}} +\advisor{} +\def\department#1{\gdef\HUST@department{#1}} +\department{} +\def\stuno#1{\gdef\HUST@stuno{#1}} +\stuno{} +\def\categoryname#1{\gdef\HUST@categoryname{#1}} +\categoryname{} +\long\def\abstract#1{\long\gdef\HUST@abstract{#1}} +\abstract{} +\def\keywords#1{\gdef\HUST@keywords{#1}\hypersetup{pdfkeywords={#1}}} +\keywords{} +\ifthenelse{\equal{\HUST@language}{chinese}}{ + \def\indexname{索引} + \def\figurename{图} + \def\tablename{表} + \AtBeginDocument{\def\listingscaption{代码}} + \def\bibname{参考文献} + \def\contentsname{目\hspace{1em}录} + \def\contentsnamenospace{目录} + \def\appendixname{附录} + \def\HUST@listfigurename{插图索引} + \def\HUST@listtablename{表格索引} + \def\equationautorefname{公式} + \def\footnoteautorefname{脚注} + \def\itemautorefname~#1\null{第~#1~项\null} + \def\figureautorefname{图} + \def\tableautorefname{表} + \def\appendixautorefname{附录} + \expandafter\def\csname\appendixname autorefname\endcsname{\appendixname} + \def\chapterautorefname~#1\null{第\zhnumber{#1}章\null} + \def\sectionautorefname~#1\null{#1~小节\null} + \def\subsectionautorefname~#1\null{#1~小节\null} + \def\subsubsectionautorefname~#1\null{#1~小节\null} + \def\FancyVerbLineautorefname~#1\null{第~#1~行\null} + \def\pageautorefname~#1\null{第~#1~页\null} + \def\lstlistingautorefname{代码} + \def\definitionautorefname{定义} + \def\propositionautorefname{命题} + \def\lemmaautorefname{引理} + \def\theoremautorefname{定理} + \def\axiomautorefname{公理} + \def\corollaryautorefname{推论} + \def\exerciseautorefname{练习} + \def\exampleautorefname{例} + \def\proofautorefname{证明} + \SetAlgorithmName{算法}{算法}{算法索引} + \SetAlgoProcName{过程}{过程} + \SetAlgoFuncName{函数}{函数} + \def\AlgoLineautorefname~#1\null{第~#1~行\null} +}{} +\ifthenelse{\equal{\HUST@language}{chinese}}{}{ + \def\HUST@listfigurename{List of Figures} + \def\HUST@listtablename{List of Tables} + \def\equationautorefname{Equation} + \def\footnoteautorefname{Footnote} + \def\itemautorefname{Item} + \def\figureautorefname{Figure} + \def\tableautorefname{Table} + \def\appendixautorefname{Appendix} + \expandafter\def\csname\appendixname autorefname\endcsname{\appendixname} + \def\chapterautorefname{Chapter} + \def\sectionautorefname{Section} + \def\subsectionautorefname{Subsection} + \def\subsubsectionautorefname{Sub-subsection} + \def\FancyVerbLineautorefname{Line} + \def\pageautorefname{Page} + \def\lstlistingautorefname{Code Fragment} + \def\definitionautorefname{Definition} + \def\propositionautorefname{Proposition} + \def\lemmaautorefname{Lemma} + \def\theoremautorefname{Theorem} + \def\axiomautorefname{Axiom} + \def\corollaryautorefname{Corollary} + \def\exerciseautorefname{Exercise} + \def\exampleautorefname{Example} + \def\proofautorefname{Proof} + \SetAlgorithmName{Algorithm}{Algorithm}{List of Algorithms} + \SetAlgoProcName{Procedure}{Procedure} + \SetAlgoFuncName{Function}{Function} + \def\AlgoLineautorefname{Line} +} +\def\HUST@headcontent{华中科技大学研究生院} + +\def\HUST@zhabstractname{摘\hspace{1em}要} +\def\HUST@zhabstractnamenospace{摘要} +\def\HUST@zhkeywordstitle{关键词:} +\def\HUST@enabstractname{Abstract} +\def\HUST@enkeywordstitle{Key words:} + +\ifthenelse{\equal{\HUST@language}{chinese}}{ + \def\HUST@ackname{致\hspace{1em}谢} + \def\HUST@acknamenospace{致谢} + \def\HUST@publicationtitle{攻读学位期间发表的学术论文} +}{ + \def\HUST@ackname{Acknowledge} + \def\HUST@acknamenospace{Acknowledge} + \def\HUST@publicationtitle{Publication} +} + +\ifthenelse{\equal{\HUST@category}{none}}{ + \categoryname{} +}{} +\ifthenelse{\equal{\HUST@category}{literature-survey}}{ + \ifthenelse{\equal{\HUST@language}{chinese}} + {\categoryname{文献综述}} + {\categoryname{Literature Survey}} +}{} +\ifthenelse{\equal{\HUST@category}{thesis-proposal}}{ + \ifthenelse{\equal{\HUST@language}{chinese}} + {\categoryname{选题}} + {\categoryname{Thesis Proposal}} +}{} +\ifthenelse{\equal{\HUST@category}{academic-report}}{ + \ifthenelse{\equal{\HUST@language}{chinese}} + {\categoryname{文献综述与选题}} + {\categoryname{Academic Report}} +}{} +\ifthenelse{\equal{\HUST@category}{midterm-progress}}{ + \ifthenelse{\equal{\HUST@language}{chinese}} + {\categoryname{论文中期进展}} + {\categoryname{Midterm Progress Report}} +}{} +\ifthenelse{\equal{\HUST@category}{practice}}{ + \ifthenelse{\equal{\HUST@language}{chinese}} + {\categoryname{实践环节}} + {\categoryname{Practice Report}} +}{} + +\ifthenelse{\equal{\HUST@language}{chinese}}{ + \hypersetup{pdfsubject={研究生{\HUST@categoryname}报告}} +}{ + \ifthenelse{\equal{\HUST@categoryname}{}}{ + \hypersetup{pdfsubject={Postgraduate~Report}} + }{ + \hypersetup{pdfsubject={Postgraduate~\HUST@categoryname}} + } +} +\def\listfigurename{\HUST@listfigurename} +\def\listtablename{\HUST@listtablename} +\allowdisplaybreaks[4] +\abovedisplayskip=10bp plus 2bp minus 2bp +\abovedisplayshortskip=10bp plus 2bp minus 2bp +\belowdisplayskip=\abovedisplayskip +\belowdisplayshortskip=\abovedisplayshortskip +\numberwithin{equation}{chapter} +\theoremnumbering{arabic} +\ifthenelse{\equal{\HUST@language}{chinese}}{ + \theoremseparator{:} +}{ + \theoremseparator{:} +} +\theorempreskip{1.2ex plus 0ex minus 1ex} +\theorempostskip{1.2ex plus 0ex minus 1ex} +\theoremheaderfont{\normalfont\bfseries\HEI} +\theoremsymbol{} + +\theoremstyle{definition} +\theorembodyfont{\normalfont} +\ifthenelse{\equal{\HUST@language}{chinese}}{ + \newtheorem{definition}{定义}[chapter] +}{ + \newtheorem{definition}{Definition}[chapter] +} + +\theoremstyle{plain} +\theorembodyfont{\itshape} +\ifthenelse{\equal{\HUST@language}{chinese}}{ + \newtheorem{proposition}{命题}[chapter] + \newtheorem{lemma}{引理}[chapter] + \newtheorem{theorem}{定理}[chapter] + \newtheorem{axiom}{公理}[chapter] + \newtheorem{corollary}{推论}[chapter] + \newtheorem{exercise}{练习}[chapter] + \newtheorem{example}{例}[chapter] + \def\proofname{\hei{证明}} +}{ + \newtheorem{proposition}{Proposition}[chapter] + \newtheorem{lemma}{Lemma}[chapter] + \newtheorem{theorem}{Theorem}[chapter] + \newtheorem{axiom}{Axiom}[chapter] + \newtheorem{corollary}{Corollary}[chapter] + \newtheorem{exercise}{Exercise}[chapter] + \newtheorem{example}{Example}[chapter] + \def\proofname{\textbf{Proof}} +} +\setlength{\intextsep}{0.7\baselineskip plus 0.1\baselineskip minus 0.1\baselineskip} +\setlength{\textfloatsep}{0.8\baselineskip plus 0.1\baselineskip minus 0.2\baselineskip} +\renewcommand{\textfraction}{0.15} +\renewcommand{\topfraction}{0.85} +\renewcommand{\bottomfraction}{0.65} +\renewcommand{\floatpagefraction}{0.60} +\newcommand{\tabincell}[2]{\begin{tabular}{@{}#1@{}}#2\end{tabular}} +\def\@cline#1-#2\@nil{% + \omit + \@multicnt#1% + \advance\@multispan\m@ne + \ifnum\@multicnt=\@ne\@firstofone{&\omit}\fi + \@multicnt#2% + \advance\@multicnt-#1% + \advance\@multispan\@ne + \leaders\hrule\@height\arrayrulewidth\hfill + \cr + \noalign{\nobreak\vskip-\arrayrulewidth}} +\newif\ifHUST@useoldtabular +\HUST@useoldtabularfalse +\def\TurnOffTabFontSetting{\HUST@useoldtabulartrue} +\def\TurnOnTabFontSetting{\HUST@useoldtabularfalse} +\AtBeginEnvironment{tabular}{ + \ifHUST@useoldtabular\else + \fontsize{11pt}{15.4pt}\selectfont + \fi +} +\AtBeginEnvironment{tabularx}{ + \ifHUST@useoldtabular\else + \fontsize{11pt}{15.4pt}\selectfont + \fi +} +\AtBeginEnvironment{longtable}{ + \ifHUST@useoldtabular\else + \fontsize{11pt}{15.4pt}\selectfont + \fi +} +\DeclareCaptionFont{HUST@captionfont}{\fontsize{11pt}{14.3pt}\selectfont} +\DeclareCaptionLabelFormat{HUST@caplabel}{#1~#2} +\captionsetup{ + font=HUST@captionfont, + labelformat=HUST@caplabel, + format=hang, + labelsep=quad, + skip=12pt +} +\renewcommand{\thetable}{\arabic{chapter}.\arabic{table}} +\renewcommand{\thefigure}{\arabic{chapter}-\arabic{figure}} +\definecolor{HUST@lstgreen}{rgb}{0,0.6,0} +\definecolor{HUST@lstmauve}{rgb}{0.58,0,0.82} + +\lstset{ + basicstyle=\footnotesize\ttfamily\linespread{1}\selectfont\FANGSONG, + keywordstyle=\color{blue}\bfseries, + commentstyle=\color{HUST@lstgreen}\itshape\KAI, + stringstyle=\color{HUST@lstmauve}, + showspaces=false, + showstringspaces=false, + showtabs=false, + numbers=left, + numberstyle=\tiny\color{black}, + frame=lines, + rulecolor=\color{black}, + breaklines=true +} +\setcounter{secnumdepth}{3} +\titleformat{\chapter} + { + \bfseries + \HEI + \centering + \fontsize{18pt}{23.4pt}\selectfont + } + { + \ifthenelse{\equal{\HUST@language}{chinese}} + {\zhnumber{\thechapter}} + {Chapter~\thechapter} + } + {1em} + {} +\titlespacing*{\chapter}{0pt}{0pt}{20pt} +\titleformat*{\section}{\bfseries\HEI\fontsize{16pt}{20.8pt}\selectfont} +\titlespacing*{\section}{0pt}{18pt}{6pt} +\titleformat*{\subsection}{\bfseries\HEI\fontsize{14pt}{18.2pt}\selectfont} +\titlespacing*{\subsection}{0pt}{12pt}{6pt} +\titleformat*{\subsubsection}{\bfseries\HEI\fontsize{13pt}{16.9pt}\selectfont} +\titlespacing*{\subsubsection}{0pt}{12pt}{6pt} +\setcounter{tocdepth}{1} +\contentsmargin{2.0em} +\newskip\HUST@oldcftbeforechapskip +\HUST@oldcftbeforechapskip=\cftbeforechapskip +\newskip\HUST@oldcftbeforesecskip +\HUST@oldcftbeforesecskip=\cftbeforesecskip +\let\HUST@oldl@chapter\l@chapter +\let\HUST@oldl@section\l@section +\let\HUST@oldl@subsection\l@subsection +\def\l@chapter#1#2{\HUST@oldl@chapter{#1}{#2}\cftbeforechapskip=3pt} +\def\l@section#1#2{\HUST@oldl@section{#1}{#2}\cftbeforechapskip=\HUST@oldcftbeforechapskip\cftbeforesecskip=3pt} +\def\l@subsection#1#2{\HUST@oldl@subsection{#1}{#2}\cftbeforesecskip=\HUST@oldcftbeforesecskip} +\renewcommand*\cftfigpresnum{\figurename~} +\newlength{\HUST@cftfignumwidth@tmp} +\settowidth{\HUST@cftfignumwidth@tmp}{\cftfigpresnum} +\addtolength{\cftfignumwidth}{\HUST@cftfignumwidth@tmp} +\renewcommand{\cftfigaftersnumb}{\quad~} +\renewcommand*\cfttabpresnum{\tablename~} +\newlength{\HUST@cfttabnumwidth@tmp} +\settowidth{\HUST@cfttabnumwidth@tmp}{\cfttabpresnum} +\addtolength{\cfttabnumwidth}{\HUST@cfttabnumwidth@tmp} +\renewcommand{\cfttabaftersnumb}{\quad~} +\let\ps@plain\ps@fancy +\pagestyle{fancy} +\fancyhf{} +\renewcommand{\headrulewidth}{0pt} +\renewcommand{\footrulewidth}{0pt} +\ifthenelse{\equal{\HUST@language}{english}}{ + \fancyfoot[C]{\thepage} +}{ + \ifHUST@finalformat + \fancyfoot[C]{\thepage} + \else + \fancyhead[C]{ + \hei{\fontsize{14pt}{18.2pt}\selectfont\HUST@headcontent} + \vskip 0.3\normalbaselineskip + \hrule width \textwidth height 0.4pt + } + \fancyfoot[C]{ + \hrule width \textwidth height 0.4pt + \vskip 0.3\normalbaselineskip + \thepage + } + \fi +} +\setlist{noitemsep,partopsep=0pt,topsep=.8ex} +\setlist[1]{labelindent=\parindent} +\setlist[enumerate,1]{label=\arabic*.,ref=\arabic*} +\setlist[enumerate,2]{label*=\arabic*,ref=\theenumi.\arabic*} +\setlist[enumerate,3]{label=\emph{\alph*}),ref=\theenumii\emph{\alph*}} +\setlist[description]{font=\bfseries\HEI} +\MakePerPage{footnote} +\def\frontmatter{ + \clearpage + \@mainmatterfalse + \pagenumbering{Roman} +} +\def\mainmatter{ + \clearpage + \@mainmattertrue + \pagenumbering{arabic} +} +\def\backmatter{ + \clearpage + \@mainmatterfalse + \settocdepth{chapter} + \hypersetup{bookmarksopenlevel=0} +} +\def\HUST@zhtitlepage{ + \begin{center} + \null\vskip 1cm + \includegraphics[width=.5\textwidth]{hust-title.pdf} \\[0.8cm] + \parbox[t][][t]{\textwidth}{ + \centering + \fontsize{22pt}{33.0pt}\selectfont + \HEI + \ifthenelse{\equal{\HUST@categoryname}{}}{ + \ziju{8pt}{研究生( ~\hspace{6em}~)报告} + }{ + \ziju{8pt}{研究生( \HUST@categoryname)报告} + } + } + \vskip 0.8cm + \parbox[t][][t]{\textwidth}{ + \centering + \fontsize{18pt}{27.0pt}\selectfont + \ifthenelse{\equal{\HUST@title}{}}{ + \hei{题目:~\hspace{13em}} + }{ + \hei{题目:~\HUST@title} + } + } + \vfill + \parbox[t][][t]{\textwidth}{ + \centering + \TurnOffTabFontSetting + \fontsize{16pt}{24.0pt}\selectfont + \begin{tabular}{p{6em}@{\hspace{1em}}l} + {{学}\hfill{号}} & \makebox[10em][l]{\rule[-2.0pt]{10em}{1pt}\hspace{-10em}\hfill\HUST@stuno\hfill} \\[2ex] + {{姓}\hfill{名}} & \makebox[10em][l]{\rule[-2.0pt]{10em}{1pt}\hspace{-10em}\hfill\HUST@author\hfill} \\[2ex] + {{专}\hfill{业}} & \makebox[10em][l]{\rule[-2.0pt]{10em}{1pt}\hspace{-10em}\hfill\HUST@major\hfill} \\[2ex] + {{指}\hfill{导}\hfill{教}\hfill{师}} & \makebox[10em][l]{\rule[-2.0pt]{10em}{1pt}\hspace{-10em}\hfill\HUST@advisor\hfill} \\[2ex] + {院(系、所)} & \makebox[10em][l]{\rule[-2.0pt]{10em}{1pt}\hspace{-10em}\hfill\HUST@department\hfill} + \end{tabular} + \TurnOnTabFontSetting + } + \vskip 2cm + \parbox[t][][t]{\textwidth}{ + \centering + \fontsize{16pt}{24.0pt}\selectfont + {华中科技大学研究生院制} + } + \end{center} +} +\def\HUST@entitlepage{ + \begin{center} + \null\vskip 1cm + \parbox[t][][t]{\textwidth}{ + \centering + \fontsize{20pt}{30.0pt}\selectfont + \scshape + Huazhong University of Science and Technology + } + \vskip 0.8cm + \parbox[t][][t]{\textwidth}{ + \centering + \fontsize{20pt}{30.0pt}\selectfont + \scshape + \ifthenelse{\equal{\HUST@categoryname}{}}{ + Postgraduate~\hspace{6em}~Report + }{ + Postgraduate~\HUST@categoryname + } + } + \vskip 0.8cm + \parbox[t][][t]{\textwidth}{ + \centering + \fontsize{18pt}{27.0pt}\selectfont + \bfseries + \ifthenelse{\equal{\HUST@title}{}}{ + Title:~\hspace{13em} + }{ + Title:~\HUST@title + } + } + \vfill + \parbox[t][][t]{\textwidth}{ + \centering + \TurnOffTabFontSetting + \fontsize{16pt}{24.0pt}\selectfont + \begin{tabular}{p{5em}@{~}l} + {Student ID} & \makebox[16em][l]{\rule[-2.0pt]{16em}{1pt}\hspace{-16em}\hfill\HUST@stuno\hfill} \\[2ex] + {Name} & \makebox[16em][l]{\rule[-2.0pt]{16em}{1pt}\hspace{-16em}\hfill\HUST@author\hfill} \\[2ex] + {Major} & \makebox[16em][l]{\rule[-2.0pt]{16em}{1pt}\hspace{-16em}\hfill\HUST@major\hfill} \\[2ex] + {Advisor} & \makebox[16em][l]{\rule[-2.0pt]{16em}{1pt}\hspace{-16em}\hfill\HUST@advisor\hfill} \\[2ex] + {Department} & \makebox[16em][l]{\rule[-2.0pt]{16em}{1pt}\hspace{-16em}\hfill\HUST@department\hfill} + \end{tabular} + \TurnOnTabFontSetting + } + \vskip 2cm + \parbox[t][][t]{\textwidth}{ + \centering + \fontsize{16pt}{24.0pt}\selectfont + Graduate School\\ + Huazhong University of Science~\char38~Technology + } + \end{center} +} +\def\HUST@zhnotepage{ + \null\vskip 1cm + \begin{center} + \ziju{1em}{\hei{\fontsize{18pt}{27.0pt}\selectfont 填表注意事项}} + \end{center} + \vskip 1.2ex + \begingroup + \fontsize{14pt}{21.0pt}\selectfont + \ifthenelse{\equal{\HUST@category}{practice}}{ + \begin{enumerate} + \renewcommand{\labelenumi}{\zhnumber{\theenumi}、} + \item 本表适用于攻读专业硕士学位研究生实践环节报告,文献阅读与选题报告等。 + \item 以上各报告内容及要求由相关院(系、所)做具体要求。 + \item 以上各报告均须存入研究生个人学籍档案。 + \item 本表填写要求文句通顺、内容明确、字迹工整。 + \end{enumerate} + }{ + \begin{enumerate} + \renewcommand{\labelenumi}{\zhnumber{\theenumi}、} + \item 本表适用于攻读硕士学位研究生选题报告、学术报告,攻读博士学位研究生文献综述、选题报告、论文中期进展报告、学术报告等。 + \item 以上各报告内容及要求由相关院(系、所)做具体要求。 + \item 以上各报告均须存入研究生个人学籍档案。 + \item 本表填写要求文句通顺、内容明确、字迹工整。 + \end{enumerate} + } + \endgroup +} +\def\HUST@ennotepage{ + \null\vskip 1cm + \begin{center} + \textbf{\fontsize{18pt}{27.0pt}\selectfont Note} + \end{center} + \vskip 1.2ex + \begingroup + \fontsize{14pt}{21.0pt}\selectfont + \ifthenelse{\equal{\HUST@category}{practice}}{ + \begin{enumerate} + \item This form is applicable for master student's practice report, literature survey and thesis proposal. + \item The contents and the requirements of the above reports are specified in details by each department, respectively. + \item All these reports will be filed into the graduate's academic archive. + \item This form should be filled with correct grammar, clear text and neat handwriting. + \end{enumerate} + }{ + \begin{enumerate} + \item This form is applicable for master student's thesis proposal, academic report, and also applicable for Ph.D. student's literature survey, thesis proposal, midterm progress report and academic report. + \item The contents and the requirements of the above reports are specified in details by each department, respectively. + \item All these reports will be filed into the graduate's academic archive. + \item This form should be filled with correct grammar, clear text and neat handwriting. + \end{enumerate} + } + \endgroup +} +\def\maketitle{ + \let\HUST@oldthepage\thepage + \ifthenelse{\equal{\HUST@language}{chinese}} + {\def\thepage{封面}} + {\def\thepage{Titlepage}} + \begin{titlepage} + \thispagestyle{empty} + \ifthenelse{\equal{\HUST@language}{chinese}} + {\HUST@zhtitlepage} + {\HUST@entitlepage} + \end{titlepage} + \ifthenelse{\equal{\HUST@language}{chinese}} + { + \def\thepage{注意事项} + \thispagestyle{empty} + \HUST@zhnotepage + }{ + \def\thepage{Note} + \thispagestyle{empty} + \HUST@ennotepage + } + \clearpage + \let\thepage\HUST@oldthepage + \setcounter{page}{1} +} +\let\makecover\maketitle +\def\HUST@zhabstractpage{ + \chapter*{\HUST@zhabstractname} + \begingroup + \fontsize{10.5pt}{13.7pt}\selectfont + \HUST@zhabstract \par + \vskip 1.2ex + \noindent\hei{\HUST@zhkeywordstitle}\hspace{.8em} \HUST@zhkeywords + \endgroup +} +\def\HUST@enabstractpage{ + \chapter*{\textsf{\HUST@enabstractname}} + \begingroup + \fontsize{10.5pt}{13.7pt}\selectfont + \HUST@enabstract \par + \vskip 1.2ex + \noindent\textbf{\HUST@enkeywordstitle}\hspace{.8em} \HUST@enkeywords + \endgroup +} +\def\makeabstract{ + \phantomsection + \ifthenelse{\equal{\HUST@language}{chinese}}{ + \let\HUST@zhabstract\HUST@abstract + \let\HUST@zhkeywords\HUST@keywords + \addcontentsline{toc}{chapter}{\HUST@zhabstractnamenospace} + \HUST@zhabstractpage + \clearpage + }{ + \let\HUST@enabstract\HUST@abstract + \let\HUST@enkeywords\HUST@keywords + \addcontentsline{toc}{chapter}{\HUST@enabstractname} + \HUST@enabstractpage + \clearpage + } +} +\let\HUST@tableofcontents\tableofcontents +\def\tableofcontents{ + \ifthenelse{\equal{\HUST@language}{chinese}}{ + \pdfbookmark{\contentsnamenospace}{\contentsnamenospace} + }{ + \pdfbookmark{\contentsname}{\contentsname} + } + \HUST@tableofcontents + \clearpage +} +\newenvironment{ack}{ + \clearpage + \phantomsection + \addcontentsline{toc}{chapter}{\HUST@acknamenospace} + \chapter*{\HUST@ackname} + \begingroup + \fontsize{10.5pt}{13.7pt}\selectfont +}{ + \endgroup +} +\newenvironment{publications}{ + \clearpage + \ifHUST@inappendix + \chapter{\HUST@publicationtitle} + \else + \phantomsection + \addcontentsline{toc}{chapter}{\HUST@publicationtitle} + \chapter*{\HUST@publicationtitle} + \fi + \begin{enumerate}[labelindent=0pt,label={[\arabic*]},itemsep=0.5ex] + \fontsize{10.5pt}{10.5pt}\selectfont +}{ + \end{enumerate} +} +\ifthenelse{\equal{\HUST@language}{chinese}}{ + \def\thudot{\unskip.} + \def\thumasterbib{[Master Thesis]} + \def\thuphdbib{[Doctor Thesis]} + \bibliographystyle{thuthesis-numeric} +}{ + \bibliographystyle{IEEEtran} +} +\let\HUST@bibliography\bibliography +\def\bibliography#1{ + \clearpage + \phantomsection + \addcontentsline{toc}{chapter}{\bibname} + \begingroup + \fontsize{10.5pt}{10.5pt}\selectfont + \setlength\bibsep{0.5ex} + \ifthenelse{\equal{\HUST@language}{chinese}}{ + \HUST@bibliography{#1} + }{ + \HUST@bibliography{IEEEabrv,#1} + } + \endgroup +} +\newif\ifHUST@inappendix +\HUST@inappendixfalse +\newif\ifHUST@appendix@resetmainmatter +\HUST@appendix@resetmainmatterfalse +\renewenvironment{appendix}{ + \if@mainmatter + \HUST@appendix@resetmainmatterfalse + \else + \HUST@appendix@resetmainmattertrue + \@mainmattertrue + \fi + \appendixtitletocon + \appendices + \titleformat{\chapter} + { + \bfseries\HEI + \centering + \fontsize{18pt}{23.4pt}\selectfont + } + {\appendixname\,\thechapter} + {1em} + {} + \HUST@inappendixtrue +}{ + \endappendices + \HUST@inappendixfalse + \ifHUST@appendix@resetmainmatter + \HUST@appendix@resetmainmatterfalse + \@mainmatterfalse + \else\fi +} +\let\HUST@listoffigures\listoffigures +\def\listoffigures{ + \clearpage + \ifHUST@inappendix + \addtocounter{chapter}{1} + \def\listfigurename{\appendixname\,\thechapter\hspace{1em}\HUST@listfigurename} + \else + \def\listfigurename{\HUST@listfigurename} + \fi + \phantomsection + \ifHUST@inappendix + \addcontentsline{toc}{chapter}{\thechapter\hspace{1em}\HUST@listfigurename} + \else + \addcontentsline{toc}{chapter}{\listfigurename} + \fi + \HUST@listoffigures + \def\listfigurename{\HUST@listfigurename} +} +\let\HUST@listoftables\listoftables +\def\listoftables{ + \clearpage + \ifHUST@inappendix + \addtocounter{chapter}{1} + \def\listtablename{\appendixname\,\thechapter\hspace{1em}\HUST@listtablename} + \else + \def\listtablename{\HUST@listtablename} + \fi + \phantomsection + \ifHUST@inappendix + \addcontentsline{toc}{chapter}{\thechapter\hspace{1em}\HUST@listtablename} + \else + \addcontentsline{toc}{chapter}{\listtablename} + \fi + \HUST@listoftables + \def\listtablename{\HUST@listtablename} +} +\def\HUST@backcoverpage{ + \ifthenelse{\equal{\HUST@category}{practice}}{ + \ifthenelse{\equal{\HUST@language}{chinese}}{ + \begin{center} + \ziju{1em}{\hei{\fontsize{18pt}{27.0pt}\selectfont 导师评语}} + \end{center} + \vskip 1.5cm + 实践是专业硕士学位的重要环节,是一门必修课,8个学分,对于专业学位实践报告,要求字数5000以上,内容包括但不限于:参加实践的具体内容、完成的工作、收获和体会等,格式自定,但封面和封底需用“研究生实践环节报告”。 + \vfill + \begin{flushleft} + \fontsize{16pt}{24.0pt}\selectfont\HEI 导师评分: + \end{flushleft} + \vskip 2cm + }{ + \begin{center} + \textbf{\fontsize{18pt}{27.0pt}\selectfont Advisor Reviews} + \end{center} + \vskip 6ex + Practice is an important part of a master's degree. It's a required course with eight credits. The practice report requires more than 5000 words. The content can be including but not limited to: the specific content during the participation in practice, the work which has been done, the harvesting or the experience. The format is not set, but the font and back cover are required from ``graduate practice report''. + \vfill + \begin{flushleft} + \textbf{\fontsize{16pt}{24.0pt}\selectfont Score:} + \end{flushleft} + \vskip 2cm + } + }{\null\vfill} + \begin{flushleft} + \TurnOffTabFontSetting + \fontsize{16pt}{24.0pt}\selectfont + \bfseries + \begin{tabular}{p{8em}@{\hspace{1em}}l} + \ifthenelse{\equal{\HUST@language}{chinese}}{研究生签字}{Student Signature} + & \makebox[10em][l]{\rule[-2.0pt]{10em}{1pt}} \\[2ex] + \ifthenelse{\equal{\HUST@language}{chinese}}{指导教师签字}{Advisor Signature} + & \makebox[10em][l]{\rule[-2.0pt]{10em}{1pt}} \\[2ex] + \ifthenelse{\equal{\HUST@language}{chinese}}{院(系、所)领导签字}{Dean Signature} + & \makebox[10em][l]{\rule[-2.0pt]{10em}{1pt}} + \end{tabular} + \TurnOnTabFontSetting + \end{flushleft} + \vskip 2cm + \begin{flushright} + \fontsize{16pt}{24.0pt}\selectfont + \bfseries + \ifthenelse{\equal{\HUST@language}{chinese}}{\hspace{2em}年\hspace{2em}月\hspace{2em}日}{Date:\hspace{8em}} + \end{flushright} + \vskip 6ex +} +\AtEndDocument{ + \clearpage + \let\HUST@oldthepage\thepage + \ifthenelse{\equal{\HUST@language}{chinese}} + {\def\thepage{封底}} + {\def\thepage{Back cover}} + \thispagestyle{empty} + \HUST@backcoverpage + \let\thepage\HUST@oldthepage +} +\def\email#1{ + \href{mailto:#1}{\texttt{#1}} +} +\endinput +%% +%% End of file `hustreport.cls'. diff --git a/position.bib b/position.bib new file mode 100644 index 0000000..9a76cee --- /dev/null +++ b/position.bib @@ -0,0 +1,801 @@ + +@article{carlucci_congestion_2017, + title = {Congestion {Control} for {Web} {Real}-{Time} {Communication}}, + volume = {25}, + copyright = {https://ieeexplore.ieee.org/Xplorehelp/downloads/license-information/IEEE.html}, + issn = {1063-6692, 1558-2566}, + url = {http://ieeexplore.ieee.org/document/7938641/}, + doi = {10.1109/TNET.2017.2703615}, + abstract = {Applications requiring real-time communication (RTC) between Internet peers are ever increasing. RTC requires not only congestion control but also minimization of queuing delays to provide interactivity. It is known that the wellestablished transmission control protocol congestion control is not suitable for RTC due to its retransmissions and in-order delivery mechanisms, which induce significant latency. In this paper, we propose a novel congestion control algorithm for RTC, which is based on the main idea of estimating—using a Kalman Filter—the end-to-end one-way delay variation which is experienced by packets traveling from a sender to a destination. This estimate is compared with a dynamic threshold and drives the dynamics of a controller located at the receiver, which aims at maintaining queuing delays low, while a loss-based controller located at the sender acts when losses are detected. The proposed congestion control algorithm has been adopted by Google Chrome. Extensive experimental evaluations have shown that the algorithm contains queuing delays while providing intra and inter protocol fairness along with full link utilization.}, + language = {en}, + number = {5}, + urldate = {2026-06-11}, + journal = {IEEE/ACM Transactions on Networking}, + author = {Carlucci, Gaetano and De Cicco, Luca and Holmer, Stefan and Mascolo, Saverio}, + month = oct, + year = {2017}, + pages = {2629--2642}, + file = {PDF:C\:\\Users\\26815\\Zotero\\storage\\SBVBMBYH\\Carlucci 等 - 2017 - Congestion Control for Web Real-Time Communication.pdf:application/pdf}, +} + +@inproceedings{carlucci_making_2016, + address = {Berlin Germany}, + title = {Making {Google} {Congestion} {Control} robust over {Wi}-{Fi} networks using packet grouping}, + isbn = {978-1-4503-4443-2}, + url = {https://dl.acm.org/doi/10.1145/2959424.2959431}, + doi = {10.1145/2959424.2959431}, + abstract = {Google congestion control (GCC) has been proposed for the case of delay sensitive traffic (i.e. video-conference) in the WebRTC framework. In this paper we analyze the effect of wireless channel outages on the GCC. We have observed that, when a channel outage ends, there are packets that arrive at the receiver as a burst. This behavior impairs the delay-based controller employed by GCC, resulting in throughput degradation. We propose a solution to make GCC robust with respect to channel outages. In particular, by grouping packets that arrive in a burst, the delay-based controller avoids to misinterpret a burst as network congestion. In order to prove the effectiveness of the proposed solution we have carried out a trace-driven experimental evaluation in a loaded Wi-Fi scenario.}, + language = {en}, + urldate = {2026-06-11}, + booktitle = {Proceedings of the 2016 {Applied} {Networking} {Research} {Workshop}}, + publisher = {ACM}, + author = {Carlucci, Gaetano and De Cicco, Luca and Holmer, Stefan and Mascolo, Saverio}, + month = jul, + year = {2016}, + pages = {74--80}, + file = {PDF:C\:\\Users\\26815\\Zotero\\storage\\NL9HPGCL\\Carlucci 等 - 2016 - Making Google Congestion Control robust over Wi-Fi networks using packet grouping.pdf:application/pdf}, +} + +@inproceedings{dai_learning-based_2018, + address = {Florence}, + title = {Learning-based {Congestion} {Control} for {Internet} {Video} {Communication} over {Wireless} {Networks}}, + isbn = {978-1-5386-4881-0}, + url = {https://ieeexplore.ieee.org/document/8351530/}, + doi = {10.1109/ISCAS.2018.8351530}, + abstract = {With the deployment of real-time video applications and wireless networks, the real-time congestion control becomes a hot topic. Most existing congestion control algorithms are not designed for low-latency real-time flows, or perform poorly in the face of highly variable channel capacities. In this paper, we proposed a novel Learning-based Congestion Control (LCC) for real-time video communication over wireless networks. The key idea of LCC is employing Kernel Density Estimation for oneway delay and sending rate to capture the underlying information about channel state. Then LCC bases on the estimated probability density and Bayesian theorem to quickly adapt sending rate to the changing channel. We implemented LCC in WebRTC framework and extensive experiments were carried out. Compared with the native WebRTC congestion control (GCC), experimental results show that LCC achieves higher channel utilization, even more than 4.2ˆ throughput in lossy links. LCC is also much better at adapting to the variable channel than GCC. Besides, LCC performs well in delay constraint and intra-protocol fairness.}, + language = {en}, + urldate = {2026-06-11}, + booktitle = {2018 {IEEE} {International} {Symposium} on {Circuits} and {Systems} ({ISCAS})}, + publisher = {IEEE}, + author = {Dai, Tongyu and Zhang, Xinggong and Guo, Zongming}, + year = {2018}, + pages = {1--5}, + file = {PDF:C\:\\Users\\26815\\Zotero\\storage\\85BU4EP7\\Dai 等 - 2018 - Learning-based Congestion Control for Internet Video Communication over Wireless Networks.pdf:application/pdf}, +} + +@article{dai_statistical_2020, + title = {Statistical {Learning} {Based} {Congestion} {Control} for {Real}-{Time} {Video} {Communication}}, + volume = {22}, + copyright = {https://ieeexplore.ieee.org/Xplorehelp/downloads/license-information/IEEE.html}, + issn = {1520-9210, 1941-0077}, + url = {https://ieeexplore.ieee.org/document/8931660/}, + doi = {10.1109/TMM.2019.2959448}, + abstract = {The existing congestion control is hard to simultaneously achieve low latency, high throughput, good adaptability and fair bandwidth allocation, mainly because of the hardwired control strategy and egocentric convergence objective. To address these issues, we propose an end-to-end statistical learning based congestion control, named Iris. By exploring the underlying principles of self-inflicted delay, we find that RTT variation is linearly related to the difference between sending rate and receiving rate, which inspires us to control video bit rate using a statistical-learning congestion control model. The key idea of Iris is to force all flows to converge to the same queue load and adjust bit rate by the model. All flows keep a small and fixed number of packets queuing in the network, thus the fair bandwidth allocation and low latency are both achieved. Besides, the adjustment step size of sending rate is updated by online learning, to better adapt to dynamically changing networks. We carried out extensive experiments to evaluate the performance of Iris, with the implementations over transport layer and application layer respectively. The testing environment includes emulated network, real-world Internet and commercial cellular networks. Compared against Transmission Control Protocol (TCP) flavors and state-of-the-art protocols, Iris is able to achieve high bandwidth utilization, low latency and good fairness concurrently. Especially for HyperText Transfer Protocol (HTTP) video streaming service, Iris is able to increase the video bitrate up to 25\% and Peak Signal to Noise Ratio (PSNR) up to 1 dB.}, + language = {en}, + number = {10}, + urldate = {2026-06-11}, + journal = {IEEE Transactions on Multimedia}, + author = {Dai, Tongyu and Zhang, Xinggong and Zhang, Yihang and Guo, Zongming}, + month = oct, + year = {2020}, + pages = {2672--2683}, + file = {PDF:C\:\\Users\\26815\\Zotero\\storage\\PIV8XYSW\\Dai 等 - 2020 - Statistical Learning Based Congestion Control for Real-Time Video Communication.pdf:application/pdf}, +} + +@misc{karimi_vidaptive_2024, + title = {Vidaptive: {Efficient} and {Responsive} {Rate} {Control} for {Real}-{Time} {Video} on {Variable} {Networks}}, + shorttitle = {Vidaptive}, + url = {http://arxiv.org/abs/2309.16869}, + doi = {10.48550/arXiv.2309.16869}, + abstract = {Real-time video streaming relies on rate control mechanisms to adapt video bitrate to network capacity while maintaining high utilization and low delay. However, the current video rate controllers, such as Google Congestion Control (GCC), are very slow to respond to network changes, leading to link under-utilization and latency spikes. While recent delaybased congestion control algorithms promise high efficiency and rapid adaptation to variable conditions, low-latency video applications have been unable to adopt these schemes due to the intertwined relationship between video encoders and rate control in current systems.}, + language = {en}, + urldate = {2026-06-11}, + publisher = {arXiv}, + author = {Karimi, Pantea and Fouladi, Sadjad and Sivaraman, Vibhaalakshmi and Alizadeh, Mohammad}, + month = feb, + year = {2024}, + note = {arXiv:2309.16869 [cs.NI]}, + keywords = {Computer Science - Networking and Internet Architecture}, + file = {PDF:C\:\\Users\\26815\\Zotero\\storage\\YX7FGX8G\\Karimi 等 - 2024 - Vidaptive Efficient and Responsive Rate Control for Real-Time Video on Variable Networks.pdf:application/pdf}, +} + +@inproceedings{xie_pbe-cc_2020, + address = {Virtual Event USA}, + title = {{PBE}-{CC}: {Congestion} {Control} via {Endpoint}-{Centric}, {Physical}-{Layer} {Bandwidth} {Measurements}}, + isbn = {978-1-4503-7955-7}, + shorttitle = {{PBE}-{CC}}, + url = {https://dl.acm.org/doi/10.1145/3387514.3405880}, + doi = {10.1145/3387514.3405880}, + abstract = {Cellular networks are becoming ever more sophisticated and overcrowded, imposing the most delay, jitter, and throughput damage to end-to-end network flows in today’s internet. We therefore argue for fine-grained mobile endpoint-based wireless measurements to inform a precise congestion control algorithm through a welldefined API to the mobile’s cellular physical layer. Our proposed congestion control algorithm is based on Physical-Layer Bandwidth measurements taken at the Endpoint (PBE-CC), and captures the latest 5G New Radio innovations that increase wireless capacity, yet create abrupt rises and falls in available wireless capacity that the PBE-CC sender can react to precisely and rapidly. We implement a proof-of-concept prototype of the PBE measurement module on software-defined radios and the PBE sender and receiver in C. An extensive performance evaluation compares PBE-CC head to head against the cellular-aware and wireless-oblivious congestion control protocols proposed in the research community and in deployment, in mobile and static mobile scenarios, and over busy and idle networks. Results show 6.3\% higher average throughput than BBR, while simultaneously reducing 95th percentile delay by 1.8×.}, + language = {en}, + urldate = {2026-06-11}, + booktitle = {Proceedings of the {Annual} conference of the {ACM} {Special} {Interest} {Group} on {Data} {Communication} on the applications, technologies, architectures, and protocols for computer communication}, + publisher = {ACM}, + author = {Xie, Yaxiong and Yi, Fan and Jamieson, Kyle}, + month = jul, + year = {2020}, + pages = {451--464}, + file = {PDF:C\:\\Users\\26815\\Zotero\\storage\\KICDNXP9\\Xie 等 - 2020 - PBE-CC Congestion Control via Endpoint-Centric, Physical-Layer Bandwidth Measurements.pdf:application/pdf}, +} + +@misc{goyal_abc_2021, + title = {{ABC}: {A} {Simple} {Explicit} {Congestion} {Controller} for {Wireless} {Networks}}, + shorttitle = {{ABC}}, + url = {http://arxiv.org/abs/1905.03429}, + doi = {10.48550/arXiv.1905.03429}, + abstract = {We propose Accel-Brake Control (ABC), a simple and deployable explicit congestion control protocol for network paths with time-varying wireless links. ABC routers mark each packet with an “accelerate” or “brake”, which causes senders to slightly increase or decrease their congestion windows. Routers use this feedback to quickly guide senders towards a desired target rate. ABC requires no changes to header formats or user devices, but achieves better performance than XCP. ABC is also incrementally deployable; it operates correctly when the bottleneck is a non-ABC router, and can coexist with non-ABC traffic sharing the same bottleneck link. We evaluate ABC using a Wi-Fi implementation and trace-driven emulation of cellular links. ABC achieves 30-40\% higher throughput than Cubic+Codel for similar delays, and 2.2× lower delays than BBR on a Wi-Fi path. On cellular network paths, ABC achieves 50\% higher throughput than Cubic+Codel.}, + language = {en}, + urldate = {2026-06-11}, + publisher = {arXiv}, + author = {Goyal, Prateesh and Agarwal, Anup and Netravali, Ravi and Alizadeh, Mohammad and Balakrishnan, Hari}, + month = mar, + year = {2021}, + note = {arXiv:1905.03429 [cs.NI]}, + keywords = {Computer Science - Networking and Internet Architecture}, + file = {PDF:C\:\\Users\\26815\\Zotero\\storage\\ZHEPVNJA\\Goyal 等 - 2021 - ABC A Simple Explicit Congestion Controller for Wireless Networks.pdf:application/pdf}, +} + +@inproceedings{chen_videollm-online_2024, + address = {Seattle, WA, USA}, + title = {{VideoLLM}-online: {Online} {Video} {Large} {Language} {Model} for {Streaming} {Video}}, + copyright = {https://doi.org/10.15223/policy-029}, + isbn = {979-8-3503-5300-6}, + shorttitle = {{VideoLLM}-online}, + url = {https://ieeexplore.ieee.org/document/10657274/}, + doi = {10.1109/CVPR52733.2024.01742}, + language = {en}, + urldate = {2026-06-11}, + booktitle = {2024 {IEEE}/{CVF} {Conference} on {Computer} {Vision} and {Pattern} {Recognition} ({CVPR})}, + publisher = {IEEE}, + author = {Chen, Joya and Lv, Zhaoyang and Wu, Shiwei and Lin, Kevin Qinghong and Song, Chenan and Gao, Difei and Liu, Jia-Wei and Gao, Ziteng and Mao, Dongxing and Shou, Mike Zheng}, + month = jun, + year = {2024}, + pages = {18407--18418}, + file = {PDF:C\:\\Users\\26815\\Zotero\\storage\\HYUNXZ24\\Chen 等 - 2024 - VideoLLM-online Online Video Large Language Model for Streaming Video.pdf:application/pdf}, +} + +@inproceedings{niu_ovo-bench_2025, + address = {Nashville, TN, USA}, + title = {{OVO}-{Bench}: {How} {Far} is {Your} {Video}-{LLMs} from {Real}-{World} {Online} {Video} {Understanding}?}, + copyright = {https://doi.org/10.15223/policy-029}, + isbn = {979-8-3315-4364-8}, + shorttitle = {{OVO}-{Bench}}, + url = {https://ieeexplore.ieee.org/document/11094230/}, + doi = {10.1109/CVPR52734.2025.01761}, + language = {en}, + urldate = {2026-06-11}, + booktitle = {2025 {IEEE}/{CVF} {Conference} on {Computer} {Vision} and {Pattern} {Recognition} ({CVPR})}, + publisher = {IEEE}, + author = {Niu, Junbo and Li, Yifei and Miao, Ziyang and Ge, Chunjiang and Zhou, Yuanhang and He, Qihao and Dong, Xiaoyi and Duan, Haodong and Ding, Shuangrui and Qian, Rui and Zhang, Pan and Zang, Yuhang and Cao, Yuhang and He, Conghui and Wang, Jiaqi}, + month = jun, + year = {2025}, + pages = {18902--18913}, + file = {PDF:C\:\\Users\\26815\\Zotero\\storage\\2AXRLIKN\\Niu 等 - 2025 - OVO-Bench How Far is Your Video-LLMs from Real-World Online Video Understanding.pdf:application/pdf}, +} + +@misc{zou_codecsight_2026, + title = {{CodecSight}: {Leveraging} {Video} {Codec} {Signals} for {Efficient} {Streaming} {VLM} {Inference}}, + shorttitle = {{CodecSight}}, + url = {http://arxiv.org/abs/2604.06036}, + doi = {10.48550/arXiv.2604.06036}, + abstract = {Video streaming analytics is a crucial workload for visionlanguage model serving, but the high cost of multimodal inference limits scalability. Prior systems reduce inference cost by exploiting temporal and spatial redundancy in video streams, but they target either the vision transformer (ViT) or the LLM with a limited view, leaving end-to-end opportunities untapped. Moreover, existing methods incur significant overhead to identify redundancy, either through offline profiling and training or costly online computation, making them ill-suited for dynamic real-time streams.}, + language = {en}, + urldate = {2026-06-11}, + publisher = {arXiv}, + author = {Zou, Yulin and Chen, Yan and Chen, Wenyan and Park, JooYoung and Nitin, Shivaraman and Tao, Luo and Romero, Francisco and Ustiugov, Dmitrii}, + month = apr, + year = {2026}, + note = {arXiv:2604.06036 [cs.DC]}, + keywords = {Computer Science - Computer Vision and Pattern Recognition, Computer Science - Distributed, Parallel, and Cluster Computing, Computer Science - Machine Learning}, + annote = {Comment: 18 pages, 34 figures}, + file = {PDF:C\:\\Users\\26815\\Zotero\\storage\\FKDV6KU9\\Zou 等 - 2026 - CodecSight Leveraging Video Codec Signals for Efficient Streaming VLM Inference.pdf:application/pdf}, +} + +@misc{ahmad_vision-language_2026, + title = {Vision-{Language} {Models} on the {Edge} for {Real}-{Time} {Robotic} {Perception}}, + url = {http://arxiv.org/abs/2601.14921}, + doi = {10.48550/arXiv.2601.14921}, + abstract = {Vision–Language Models (VLMs) enable multimodal reasoning for robotic perception and interaction, but their deployment in real-world systems remains constrained by latency, limited onboard resources, and privacy risks of cloud offloading. Edge intelligence within 6G, particularly Open RAN and Multi-access Edge Computing (MEC), offers a pathway to address these challenges by bringing computation closer to the data source. This work investigates the deployment of VLMs on ORAN/MEC infrastructure using the Unitree G1 humanoid robot as an embodied testbed. We design a WebRTC-based pipeline that streams multimodal data to an edge node and evaluate LLaMA-3.2-11B-Vision-Instruct deployed at the edge versus in the cloud under real-time conditions. Our results show that edge deployment preserves near-cloud accuracy while reducing end-to-end latency by 5\%. We further evaluate Qwen2-VL-2BInstruct, a compact model optimized for resource-constrained environments, which achieves sub-second responsiveness, cutting latency by more than half but at the cost of accuracy.}, + language = {en}, + urldate = {2026-06-11}, + publisher = {arXiv}, + author = {Ahmad, Sarat and Hafeez, Maryam and Zaidi, Syed Ali Raza}, + month = jan, + year = {2026}, + note = {arXiv:2601.14921 [cs.RO]}, + keywords = {Computer Science - Artificial Intelligence, Computer Science - Robotics}, + file = {PDF:C\:\\Users\\26815\\Zotero\\storage\\VKP58GQE\\Ahmad 等 - 2026 - Vision-Language Models on the Edge for Real-Time Robotic Perception.pdf:application/pdf}, +} + +@article{casasnovas_experimental_2024, + title = {Experimental evaluation of interactive {Edge}/{Cloud} {Virtual} {Reality} gaming over {Wi}-{Fi} using unity render streaming}, + volume = {226-227}, + issn = {01403664}, + url = {https://linkinghub.elsevier.com/retrieve/pii/S0140366424002585}, + doi = {10.1016/j.comcom.2024.08.001}, + abstract = {Virtual Reality (VR) streaming enables end-users to seamlessly immerse themselves in interactive virtual environments using even low-end devices. However, the quality of the VR experience heavily relies on Wireless Fidelity (Wi-Fi) performance, since it serves as the last hop in the network chain. Our study delves into the intricate interplay between Wi-Fi and VR traffic, drawing upon empirical data and leveraging a Wi-Fi simulator. In this work, we further evaluate Wi-Fi’s suitability for VR streaming in terms of the Quality of Service (QoS) it provides. In particular, we employ Unity Render Streaming to remotely stream real-time VR gaming content over Wi-Fi 6 using Web Real-Time Communication (WebRTC), considering a server physically located at the network’s edge, near the end user. Our findings demonstrate the system’s sustained network performance, showcasing minimal round-trip time (RTT) and jitter at 60 and 90 frames per second (fps). In addition, we uncover the characteristics and patterns of the generated traffic streams, unveiling a distinctive video transmission approach inherent to WebRTC-based services: the systematic packetization of video frames (VFs) and their transmission in discrete batches at regular intervals, regardless of the targeted frame rate. This interval-based transmission strategy maintains consistent video packet delays across video frame rates but leads to increased Wi-Fi airtime consumption. Our results demonstrate that shortening the interval between batches is advantageous, as it enhances Wi-Fi efficiency and reduces delays in delivering complete frames.}, + language = {en}, + urldate = {2026-06-11}, + journal = {Computer Communications}, + author = {Casasnovas, Miguel and Michaelides, Costas and Carrascosa-Zamacois, Marc and Bellalta, Boris}, + month = oct, + year = {2024}, + pages = {107919}, + file = {PDF:C\:\\Users\\26815\\Zotero\\storage\\ISGDXY58\\Casasnovas 等 - 2024 - Experimental evaluation of interactive EdgeCloud Virtual Reality gaming over Wi-Fi using unity rend.pdf:application/pdf}, +} + +@misc{guo_blade_2026, + title = {{BLADE}: {Adaptive} {Wi}-{Fi} {Contention} {Control} for {Next}-{Generation} {Real}-{Time} {Communication}}, + copyright = {arXiv.org perpetual, non-exclusive license}, + shorttitle = {{BLADE}}, + url = {https://arxiv.org/abs/2603.16119}, + doi = {10.48550/ARXIV.2603.16119}, + abstract = {Next-generation real-time communication (NGRTC) applications, such as cloud gaming and XR, demand consistently ultra-low latency. However, through our first large-scale measurement, we find that despite the deployment of edge servers, dedicated congestion control, and loss recovery mechanisms, cloud gaming users still experience long-tail latency in WiFi networks. We further identify that Wi-Fi last-mile access points (APs) serve as the primary latency bottleneck. Specifically, short-term packet delivery droughts, caused by fundamental limitations in Wi-Fi contention control standards, are the root cause. To address this issue, we propose BLADE, an adaptive contention control algorithm that dynamically adjusts the contention windows (CW) of all Wi-Fi transmitters based on the channel contention level in a fully distributed manner. Our ns3 simulations and real-world evaluations with commercial Wi-Fi APs demonstrate that, compared to standard contention control, BLADE reduces Wi-Fi packet transmission tail latency by over 5× under heavy channel contention and significantly stabilizes MAC throughput while ensuring fast and fair convergence. Consequently, BLADE reduces the video stall rate in cloud gaming by over 90\%.}, + language = {en}, + urldate = {2026-06-11}, + publisher = {arXiv}, + author = {Guo, Fengqian and Zhou, Yuhan and Jiang, Longwei and Miao, Congcong and Liu, Yuxin and Xu, Chenren and Lu, Hancheng and Chen, Chang Wen and Xie, Yaxiong and Liu, Honghao}, + year = {2026}, + note = {Version Number: 1}, + keywords = {FOS: Computer and information sciences, Networking and Internet Architecture (cs.NI)}, + file = {PDF:C\:\\Users\\26815\\Zotero\\storage\\CAY73MEU\\Guo 等 - 2026 - BLADE Adaptive Wi-Fi Contention Control for Next-Generation Real-Time Communication.pdf:application/pdf}, +} + +@inproceedings{kulkarni_understanding_2023, + address = {New York NY USA}, + title = {Understanding the {Impact} of {Wi}-{Fi} {Configuration} on {Volumetric} {Video} {Streaming} {Applications}}, + isbn = {979-8-4007-0303-4}, + url = {https://dl.acm.org/doi/10.1145/3609395.3610599}, + doi = {10.1145/3609395.3610599}, + abstract = {Emerging multimedia applications often use a wireless LAN (Wi-Fi) infrastructure to stream content. These Wi-Fi deployments vary vastly in terms of their system configurations. In this paper, we take a step toward characterizing the Quality of Experience (QoE) of volumetric video streaming over an enterprise-grade Wi-Fi network to: (i) understand the impact of Wi-Fi control parameters on user QoE, (ii) analyze the relation between Quality of Service (QoS) metrics of Wi-Fi networks and application QoE, and (iii) compare the QoE of volumetric video streaming to traditional 2D video applications. We find that Wi-Fi configuration parameters such as channel width, radio interface, access category, and priority queues are important for optimizing Wi-Fi networks for streaming immersive videos.}, + language = {en}, + urldate = {2026-06-11}, + booktitle = {Proceedings of the 2023 {Workshop} on {Emerging} {Multimedia} {Systems}}, + publisher = {ACM}, + author = {Kulkarni, Umakant and Diab, Khaled and Aggarwal, Shivang and Cao, Lianjie and Ahmed, Faraz and Sharma, Puneet and Fahmy, Sonia}, + month = sep, + year = {2023}, + pages = {41--47}, + file = {PDF:C\:\\Users\\26815\\Zotero\\storage\\FGLYZTY2\\Kulkarni 等 - 2023 - Understanding the Impact of Wi-Fi Configuration on Volumetric Video Streaming Applications.pdf:application/pdf}, +} + +@inproceedings{ns3_wimac, +author = {Mi, Chengxiang and Gu, Jingyi and Zhang, Chengwei and Gao, Yayu}, +title = {ns3-WiMacStat: Enabling In-Depth WiFi MAC Performance Analysis via RadioTap-Based Statistics}, +year = {2025}, +isbn = {9798400715174}, +publisher = {Association for Computing Machinery}, +address = {New York, NY, USA}, +url = {https://doi.org/10.1145/3747204.3747215}, +doi = {10.1145/3747204.3747215}, +booktitle = {Proceedings of the 2025 International Conference on Ns-3}, +pages = {29–37}, +numpages = {9}, +keywords = {ns-3, Statistical Analysis, Visualization}, +series = {ICNS3 '25} +} + +@article{JDCP202406008, +author = {陈震 and 卢金勤 and 朱奇 and 朱磊}, +title = {基于WebRTC的低延迟流媒体传输方法研究}, +journal = {机电产品开发与创新}, +volume = {37}, +number = {06}, +pages = {29-31}, +year = {2024}, +issn = {1002-6673}, +} +@article{JSJA202410013, +author = {牛冠冲 and 刘飞翔 and 杨雯 and 苗启广 and 毛亮}, +title = {基于边缘计算和WebRTC的元宇宙教育通信技术方案研究与实现}, +journal = {计算机科学}, +volume = {51}, +number = {10}, +pages = {94-104}, +year = {2024}, +issn = {1002-137X}, +} +@article{XXWX202308018, +author = {高朝龙 and 张景波 and 蔡星娟}, +title = {WebRTC视频会议的高维多目标多码率优化研究}, +journal = {小型微型计算机系统}, +volume = {44}, +number = {08}, +pages = {1735-1742}, +year = {2023}, +issn = {1000-1220}, +doi = {10.20009/j.cnki.21-1106/TP.2021-0899} +} +@mastersthesis{1016074228.nh, +author = {闫素英}, +title = {基于WebRTC的无线实时通信QoS-QoE评估与预测}, +school = {北京交通大学}, +year = {2016} +} + +@article{ DZQJ202504022, +author = { 徐嵩 and 王尔申 and 郭倩文 and 舒皖森 and 娜拉 }, +title = {基于5G及WebRTC的车辆行驶状态实时监控系统设计}, +journal = {电子器件}, +volume = {48}, +number = {04}, +pages = {863-868}, +year = {2025}, +issn = {1005-9490}, +} + +@inproceedings{LiYueheng, +author = {Li, Yueheng and Zhang, Zicheng and Chen, Hao and Ma, Zhan}, +title = {Mamba: Bringing Multi-Dimensional ABR to WebRTC}, +year = {2023}, +isbn = {9798400701085}, +publisher = {Association for Computing Machinery}, +address = {New York, NY, USA}, +url = {https://doi.org/10.1145/3581783.3611915}, +doi = {10.1145/3581783.3611915}, +booktitle = {Proceedings of the 31st ACM International Conference on Multimedia}, +pages = {9262–9270}, +numpages = {9}, +keywords = {adaptive bitrate (abr), multi-agent reinforcement learning, multi-dimensional abr, qoe}, +location = {Ottawa ON, Canada}, +series = {MM '23} +} + +@article{Smirnov, +author = {Smirnov, Nikita and Tomforde, Sven}, +title = {Real-time rate control of WebRTC video streams in 5G networks: Improving quality of experience with Deep Reinforcement Learning}, +year = {2024}, +issue_date = {Mar 2024}, +publisher = {Elsevier North-Holland, Inc.}, +address = {USA}, +volume = {148}, +number = {C}, +issn = {1383-7621}, +url = {https://doi.org/10.1016/j.sysarc.2024.103066}, +doi = {10.1016/j.sysarc.2024.103066}, +journal = {J. Syst. Archit.}, +month = mar, +numpages = {9}, +keywords = {Deep reinforcement learning, Real-time communication, 5G networks, Webrtc, Adaptive bitrate streaming, Congestion control, Remote-controlled device, Organic computing} +} + +@article{Encheng, +author = {Yu, Encheng and Zhou, Jianer and Li, Zhenyu and Tyson, Gareth and Li, Weichao and Zhang, Xinyi and Xu, Zhiwei and Xie, Gaogang}, +title = {Mustang: Improving QoE for Real-Time Video in Cellular Networks by Masking Jitter}, +year = {2024}, +issue_date = {September 2024}, +publisher = {Association for Computing Machinery}, +address = {New York, NY, USA}, +volume = {20}, +number = {9}, +issn = {1551-6857}, +url = {https://doi.org/10.1145/3672399}, +doi = {10.1145/3672399}, +journal = {ACM Trans. Multimedia Comput. Commun. Appl.}, +month = sep, +articleno = {285}, +numpages = {23}, +keywords = {WebRTC, GCC, real-time video, cellular network} +} + +@inproceedings{RFEC, +author = {Lee, Insoo and Kim, Seyeon and Sathyanarayana, Sandesh and Bin, Kyungmin and Chong, Song and Lee, Kyunghan and Grunwald, Dirk and Ha, Sangtae}, +title = {R-FEC: RL-based FEC Adjustment for Better QoE in WebRTC}, +year = {2022}, +isbn = {9781450392037}, +publisher = {Association for Computing Machinery}, +address = {New York, NY, USA}, +url = {https://doi.org/10.1145/3503161.3548370}, +doi = {10.1145/3503161.3548370}, +booktitle = {Proceedings of the 30th ACM International Conference on Multimedia}, +pages = {2948–2956}, +numpages = {9}, +keywords = {qoe, rate control, video conferencing}, +location = {Lisboa, Portugal}, +series = {MM '22} +} + +@article{Cheng2023, +author = {Cheng, Sheng and Hu, Han and Zhang, Xinggong}, +title = {ABRF: Adaptive BitRate-FEC Joint Control for Real-Time Video Streaming}, +year = {2023}, +issue_date = {Sept. 2023}, +publisher = {IEEE Press}, +volume = {33}, +number = {9}, +issn = {1051-8215}, +url = {https://doi.org/10.1109/TCSVT.2023.3248164}, +doi = {10.1109/TCSVT.2023.3248164}, +journal = {IEEE Trans. Cir. and Sys. for Video Technol.}, +month = sep, +pages = {5212–5226}, +numpages = {15} +} + +@inproceedings {Shen2026, +author = {Yixin Shen and Ruihua Chen and Bo Wang and Jing Chen and Haochen Zhang and Minhu Wang and Mingwei Xu and Zili Meng}, +title = {Mortise: Auto-tuning Congestion Control to Optimize {QoE} via {Network-Aware} Parameter Optimization}, +booktitle = {23rd USENIX Symposium on Networked Systems Design and Implementation (NSDI 26)}, +year = {2026}, +isbn = {978-1-939133-54-0}, +address = {Renton, WA}, +pages = {2303--2321}, +url = {https://www.usenix.org/conference/nsdi26/presentation/shen-yixin}, +publisher = {USENIX Association}, +month = {may} +} + +@INPROCEEDINGS{bankov_tuning_2020, + author={Bankov, Dmitry and Chemrov, Kirill and Khorov, Evgeny}, + booktitle={2020 12th International Congress on Ultra Modern Telecommunications and Control Systems and Workshops (ICUMT)}, + title={Tuning Channel Access to Enable Real-Time Applications in Wi-Fi 7}, + year={2020}, + volume={}, + number={}, + pages={20-25}, + doi={10.1109/ICUMT51630.2020.9222409}} + + +@article{adame_tsn_2021, +AUTHOR = {Adame, Toni and Carrascosa-Zamacois, Marc and Bellalta, Boris}, +TITLE = {Time-Sensitive Networking in IEEE 802.11be: On the Way to Low-Latency WiFi 7}, +JOURNAL = {Sensors}, +VOLUME = {21}, +YEAR = {2021}, +NUMBER = {15}, +ARTICLE-NUMBER = {4954}, +URL = {https://www.mdpi.com/1424-8220/21/15/4954}, +PubMedID = {34372190}, +ISSN = {1424-8220}, +DOI = {10.3390/s21154954} +} + +@inproceedings{du_revisiting_2024, +author = {Du, Xinle and Li, Jie and Shao, Yiyang and Wang, Wei and Hu, Shuihai and Zhou, Jingbin and Tan, Kun}, +title = {Revisiting Congestion Control for WiFi Networks}, +year = {2024}, +isbn = {9798400717581}, +publisher = {Association for Computing Machinery}, +address = {New York, NY, USA}, +url = {https://doi.org/10.1145/3663408.3663421}, +doi = {10.1145/3663408.3663421}, +booktitle = {Proceedings of the 8th Asia-Pacific Workshop on Networking}, +pages = {88–94}, +numpages = {7}, +keywords = {Congestion Control, WiFi Networks}, +location = {Sydney, Australia}, +series = {APNet '24} +} + + +@inproceedings{yi_athena_2024, +author = {Yi, Fan and Wan, Haoran and Jamieson, Kyle and Rexford, Jennifer and Xie, Yaxiong and Michel, Oliver}, +title = {Athena: Seeing and Mitigating Wireless Impact on Video Conferencing and Beyond}, +year = {2024}, +isbn = {9798400712722}, +publisher = {Association for Computing Machinery}, +address = {New York, NY, USA}, +url = {https://doi.org/10.1145/3696348.3696889}, +doi = {10.1145/3696348.3696889}, +booktitle = {Proceedings of the 23rd ACM Workshop on Hot Topics in Networks}, +pages = {103–110}, +numpages = {8}, +keywords = {5G Networks, Network Measurement, Video Conferencing}, +location = {Irvine, CA, USA}, +series = {HotNets '24} +} + +@inproceedings {shen_law_2026, +author = {Yibin Shen and Zili Meng}, +title = {Law: Towards Consistent Low Latency in 802.11 Home Networks}, +booktitle = {23rd USENIX Symposium on Networked Systems Design and Implementation (NSDI 26)}, +year = {2026}, +isbn = {978-1-939133-54-0}, +address = {Renton, WA}, +pages = {1741--1757}, +url = {https://www.usenix.org/conference/nsdi26/presentation/shen-yibin}, +publisher = {USENIX Association}, +month = {may} +} + +@inproceedings {gong_flick_2025, +author = { Gong, Qianyun and Xu, Jiapei and Shi, Jianxin and Yuan, Xinjing and Pu, Lingjun and Xu, Jingdong }, +booktitle = { 2025 IEEE 33rd International Conference on Network Protocols (ICNP) }, +title = {{ Flick: Frame-Perceptive Packet Scheduling for Low-Latency Video Services in Wi-Fi Networks }}, +year = {2025}, +volume = {}, +ISSN = {}, +pages = {1-13}, +doi = {10.1109/ICNP65844.2025.11192371}, +url = {https://doi.ieeecomputersociety.org/10.1109/ICNP65844.2025.11192371}, +publisher = {IEEE Computer Society}, +address = {Los Alamitos, CA, USA}, +month = {sep}} + +@inproceedings{carrascosa_mlo_2022, + author={Carrascosa, Marc and Geraci, Giovanni and Knightly, Edward and Bellalta, Boris}, + booktitle={ICC 2022 - IEEE International Conference on Communications}, + title={An Experimental Study of Latency for IEEE 802.11be Multi-link Operation}, + year={2022}, + volume={}, + number={}, + pages={2507-2512}, + doi={10.1109/ICC45855.2022.9838765}} + +@misc{ning_livevlm_2025, +title = {LiveVLM: Efficient Online Video Understanding via Streaming-Oriented KV Cache and Retrieval}, +author = {Ning, Zhenyu and Liu, Guangda and Jin, Qihao and Ding, Wenchao and Guo, Minyi and Zhao, Jieru}, +year = {2025}, +eprint = {2505.15269}, +archivePrefix = {arXiv}, +primaryClass = {cs.CV} +} + +@misc{xu_streamingvlm_2025, + title={StreamingVLM: Real-Time Understanding for Infinite Video Streams}, + author={Ruyi Xu and Guangxuan Xiao and Yukang Chen and Liuning He and Yao Lu and Song Han}, + year={2026}, + eprint={2510.09608}, + archivePrefix={arXiv}, + primaryClass={cs.CV}, + url={https://arxiv.org/abs/2510.09608}, +} + +@misc{li_videoscan_2025, + title={VideoScan: Enabling Efficient Streaming Video Understanding via Frame-level Semantic Carriers}, + author={Ruanjun Li and Yuedong Tan and Yuanming Shi and Jiawei Shao}, + year={2025}, + eprint={2503.09387}, + archivePrefix={arXiv}, + primaryClass={cs.CV}, + url={https://arxiv.org/abs/2503.09387}, +} + +@misc{shaker_mobilevideogpt_2025, + title={Mobile-VideoGPT: Fast and Accurate Model for Mobile Video Understanding}, + author={Abdelrahman Shaker and Muhammad Maaz and Chenhui Gou and Hamid Rezatofighi and Salman Khan and Fahad Shahbaz Khan}, + year={2026}, + eprint={2503.21782}, + archivePrefix={arXiv}, + primaryClass={cs.CV}, + url={https://arxiv.org/abs/2503.21782}, +} + + +@InProceedings{brohan_rt2_2023, + title = {RT-2: Vision-Language-Action Models Transfer Web Knowledge to Robotic Control}, + author = {Zitkovich, Brianna and Yu, Tianhe and Xu, Sichun and Xu, Peng and Xiao, Ted and others}, + booktitle = {Proceedings of The 7th Conference on Robot Learning}, + pages = {2165--2183}, + year = {2023}, + editor = {Tan, Jie and Toussaint, Marc and Darvish, Kourosh}, + volume = {229}, + series = {Proceedings of Machine Learning Research}, + month = {Nov}, + publisher = {PMLR} +} + +@InProceedings{kim_openvla_2024, + title = {OpenVLA: An Open-Source Vision-Language-Action Model}, + author = {Kim, Moo Jin and Pertsch, Karl and Karamcheti, Siddharth and Xiao, Ted and others}, + booktitle = {Proceedings of The 8th Conference on Robot Learning}, + pages = {2679--2713}, + year = {2025}, + editor = {Agrawal, Pulkit and Kroemer, Oliver and Burgard, Wolfram}, + volume = {270}, + series = {Proceedings of Machine Learning Research}, + month = {Nov}, + publisher = {PMLR}, +} + +@INPROCEEDINGS{khani_adaptive_2021, + author={Khani, Mehrdad and Hamadanian, Pouya and Nasr-Esfahany, Arash and Alizadeh, Mohammad}, + booktitle={2021 IEEE/CVF International Conference on Computer Vision (ICCV)}, + title={Real-Time Video Inference on Edge Devices via Adaptive Model Streaming}, + year={2021}, + volume={}, + number={}, + pages={4552-4562}, + doi={10.1109/ICCV48922.2021.00453}} + +@INPROCEEDINGS{wang_runespoor_2021, + author={Wang, Yiding and Wang, Weiyan and Liu, Duowen and Jin, Xin and Jiang, Junchen and Chen, Kai}, + booktitle={IEEE INFOCOM 2021 - IEEE Conference on Computer Communications}, + title={Enabling Edge-Cloud Video Analytics for Robotics Applications}, + year={2021}, + volume={}, + number={}, + pages={1-10}, + doi={10.1109/INFOCOM42981.2021.9488801}} + +@inproceedings{fu_video-mme_2025, + title={Video-mme: The first-ever comprehensive evaluation benchmark of multi-modal llms in video analysis}, + author={Fu, Chaoyou and Dai, Yuhan and Luo, Yongdong and Li, Lei and Ren, Shuhuai and Zhang, Renrui and Wang, Zihan and Zhou, Chenyu and Shen, Yunhang and Zhang, Mengdan and others}, + booktitle={Proceedings of the IEEE/CVF conference on computer vision and pattern recognition}, + pages={24108--24118}, + year={2025} +} + +@article{wu_longvideobench_2024, + title={Longvideobench: A benchmark for long-context interleaved video-language understanding}, + author={Wu, Haoning and Li, Dongxu and Chen, Bei and Li, Junnan}, + journal={Advances in Neural Information Processing Systems}, + volume={37}, + pages={28828--28857}, + year={2024} +} + +@inproceedings{zhou_mlvu_2025, + title={Mlvu: Benchmarking multi-task long video understanding}, + author={Zhou, Junjie and Shu, Yan and Zhao, Bo and Wu, Boya and Liang, Zhengyang and Xiao, Shitao and Qin, Minghao and Yang, Xi and Xiong, Yongping and Zhang, Bo and others}, + booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition}, + pages={13691--13701}, + year={2025} +} + +@inproceedings{huang_ovbench_2025, + title={Online video understanding: Ovbench and videochat-online}, + author={Huang, Zhenpeng and Li, Xinhao and Li, Jiaqi and Wang, Jing and Zeng, Xiangyu and Liang, Cheng and Wu, Tao and Chen, Xi and Li, Liang and Wang, Limin}, + booktitle={Proceedings of the Computer Vision and Pattern Recognition Conference}, + pages={3328--3338}, + year={2025} +} + +@inproceedings{lin_streamingbench_2024, + title={Streamingbench: Assessing the gap for mllms to achieve streaming video understanding}, + author={Lin, Junming and Fang, Zheng and Chen, Chi and Cheng, Haoxuan and Wan, Zihao and Luo, Fuwen and Wang, Ziyue and Li, Peng and Liu, Yang and Sun, Maosong}, + booktitle={ICASSP 2026-2026 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP)}, + pages={12147--12151}, + year={2026}, + organization={IEEE} +} + +@inproceedings{yang_egolife_2025, + title={Egolife: Towards egocentric life assistant}, + author={Yang, Jingkang and Liu, Shuai and Guo, Hongming and Dong, Yuhao and Zhang, Xiamengwei and Zhang, Sicheng and Wang, Pengyun and Zhou, Zitang and Xie, Binzhu and Wang, Ziyue and others}, + booktitle={Proceedings of the Computer Vision and Pattern Recognition Conference}, + pages={28885--28900}, + year={2025} +} + +@article{FJDN202504015, +author = { 钟育伙 }, +title = {WebRTC的实时会议系统设计与实现}, +journal = {福建电脑}, +volume = {41}, +number = {04}, +pages = {80-84}, +year = {2025}, +issn = {1673-2782}, +doi = {10.16707/j.cnki.fjpc.2025.04.015} +} + +@techreport{huawei2025wireless, + author = {{Huawei Technologies Co., Ltd.}}, + title = {Striding Towards the Intelligent World White Paper: Wireless Network}, + institution = {Huawei}, + year = {2025}, + url = {https://www-file.huawei.com/admin/asset/v1/pro/view/9a6d45ad388446e29a1ad513b1b30788.pdf} +} + +@techreport{IEEE_HUAWEI_Post_bn, + + author = {{Huawei Technologies Co., Ltd.}}, + title = {Post-802.11bn}, + institution = {HUAWEI}, + number = {11-26-0180-00-0wng}, + year = {2026}, + month = {Jan.}, + type = {IEEE 802.11 WNG Contribution}, + url = {https://mentor.ieee.org/802.11/dcn/26/11-26-0180-00-0wng-post-802-11bn.pptx} +} + +@techreport{IEEE_HUAWEI_bn_for_ai, + author = {{Huawei Technologies Co., Ltd.}}, + title = {802.11bx for AI}, + institution = {HUAWEI}, + number = {11-26-1012-00-0wng}, + year = {2026}, + month = {May.}, + type = {IEEE 802.11 WNG Contribution}, + url = {https://mentor.ieee.org/802.11/dcn/26/11-26-1012-00-0wng-802-11bx-for-ai.pptx} +} + +@techreport{IEEE_80211_AIO_SG_agenda, + author = {{IEEE 802.11 AI Offload Study Group}}, + title = {AI Offload Study Group May 2026 Meeting Agenda}, + institution = {IEEE 802.11}, + number = {11-26-0779-04-0aio}, + year = {2026}, + month = {May.}, + type = {IEEE 802.11 AIO SG Contribution}, + url = {https://mentor.ieee.org/802.11/dcn/26/11-26-0779-04-0aio-aio-sg-may-2026-meeting-agenda.pptx} +} + +@inproceedings {pakha2018reinventing, +author = {Chrisma Pakha and Aakanksha Chowdhery and Junchen Jiang}, +title = {Reinventing Video Streaming for Distributed Vision Analytics}, +booktitle = {10th USENIX Workshop on Hot Topics in Cloud Computing (HotCloud 18)}, +year = {2018}, +address = {Boston, MA}, +url = {https://www.usenix.org/conference/hotcloud18/presentation/pakha}, +publisher = {USENIX Association}, +month = jul +} + + +@inproceedings{zhang2018awstream, +author = {Zhang, Ben and Jin, Xin and Ratnasamy, Sylvia and Wawrzynek, John and Lee, Edward A.}, +title = {AWStream: adaptive wide-area streaming analytics}, +year = {2018}, +isbn = {9781450355674}, +publisher = {Association for Computing Machinery}, +address = {New York, NY, USA}, +url = {https://doi.org/10.1145/3230543.3230554}, +doi = {10.1145/3230543.3230554}, +booktitle = {Proceedings of the 2018 Conference of the ACM Special Interest Group on Data Communication}, +pages = {236–252}, +numpages = {17}, +location = {Budapest, Hungary}, +series = {SIGCOMM '18} +} + +@inproceedings{jiang2018chameleon, +author = {Jiang, Junchen and Ananthanarayanan, Ganesh and Bodik, Peter and Sen, Siddhartha and Stoica, Ion}, +title = {Chameleon: scalable adaptation of video analytics}, +year = {2018}, +isbn = {9781450355674}, +publisher = {Association for Computing Machinery}, +address = {New York, NY, USA}, +url = {https://doi.org/10.1145/3230543.3230574}, +doi = {10.1145/3230543.3230574}, +booktitle = {Proceedings of the 2018 Conference of the ACM Special Interest Group on Data Communication}, +pages = {253–266}, +numpages = {14}, +location = {Budapest, Hungary}, +series = {SIGCOMM '18} +} + +@inproceedings{du2020dds, +author = {Du, Kuntai and Pervaiz, Ahsan and Yuan, Xin and Chowdhery, Aakanksha and Zhang, Qizheng and Hoffmann, Henry and Jiang, Junchen}, +title = {Server-Driven Video Streaming for Deep Learning Inference}, +year = {2020}, +isbn = {9781450379557}, +publisher = {Association for Computing Machinery}, +address = {New York, NY, USA}, +url = {https://doi.org/10.1145/3387514.3405887}, +doi = {10.1145/3387514.3405887}, +booktitle = {Proceedings of the Annual Conference of the ACM Special Interest Group on Data Communication on the Applications, Technologies, Architectures, and Protocols for Computer Communication}, +pages = {557–570}, +numpages = {14}, +location = {Virtual Event, USA}, +series = {SIGCOMM '20} +} + +@INPROCEEDINGS{zhang2022casva, + author={Zhang, Miao and Wang, Fangxin and Liu, Jiangchuan}, + booktitle={IEEE INFOCOM 2022 - IEEE Conference on Computer Communications}, + title={CASVA: Configuration-Adaptive Streaming for Live Video Analytics}, + year={2022}, + volume={}, + number={}, + pages={2168-2177}, + keywords={Deep learning;Visual analytics;Neural networks;Bandwidth;Reinforcement learning;Streaming media;Cameras}, + doi={10.1109/INFOCOM48880.2022.9796875}} + + +@inproceedings{wu2025chatwithai, +author = {Wu, Jiangkai and Ren, Zhiyuan and Liu, Liming and Zhang, Xinggong}, +title = {Chat with AI: The Surprising Turn of Real-time Video Communication from Human to AI}, +year = {2025}, +isbn = {9798400722806}, +publisher = {Association for Computing Machinery}, +address = {New York, NY, USA}, +url = {https://doi.org/10.1145/3772356.3772390}, +doi = {10.1145/3772356.3772390}, +booktitle = {Proceedings of the 24th ACM Workshop on Hot Topics in Networks}, +pages = {402–410}, +numpages = {9}, +location = {UMD Campus, College Park, MD, USA}, +series = {HotNets '25} +} + +@misc{wu2026artic, + title={Artic: AI-oriented Real-time Communication for MLLM Video Assistant}, + author={Jiangkai Wu and Zhiyuan Ren and Junquan Zhong and Liming Liu and Xinggong Zhang}, + year={2026}, + eprint={2602.12641}, + archivePrefix={arXiv}, + primaryClass={cs.NI}, + url={https://arxiv.org/abs/2602.12641}, +} diff --git a/proposal.pdf b/proposal.pdf new file mode 100644 index 0000000..5adfa81 Binary files /dev/null and b/proposal.pdf differ diff --git a/proposal.tex b/proposal.tex new file mode 100644 index 0000000..963d63a --- /dev/null +++ b/proposal.tex @@ -0,0 +1,61 @@ +\documentclass[format=draft,language=chinese,category=academic-report]{hustreport} + +%封面 +\input{text/00_cover.tex} + +\begin{document} +\raggedbottom +\frontmatter +\maketitle +%\makeabstract +\tableofcontents +%\listoffigures +%\listoftables + +\mainmatter + +% 正文 +% 绪论 +\input{text/01_introduction.tex} + +% 相关工作 +\input{text/02_related_work.tex} + +% 研究方法 +\input{text/03_method.tex} + +% 可行性分析和预期成果 +\input{text/04_prev.tex} + +% 研究计划 +\input{text/05_plan.tex} + +% 总结 +\input{text/06_conclusion.tex} + + +\bibliography{position} +%\begin{thebibliography}{1} + +% \bibitem{shen2000nanophotonics} +% Y.~Shen, C.~S.~Friend, Y.~Jiang, et~al, ``Nanophotonics: interactions, materials, andapplications,'' \emph{ACS Publications}, vol.~104, no.~32, pp.~7577--7587, 2000. + +%\end{thebibliography} + +\backmatter + +\appendix + +%\begin{publications} +% \item 论文1 +% \item 论文2 +%\end{publications} + +%\chapter{这是一个附录}\label{appendix:1} +%附录正文。 + + +\end{document} +\endinput +%% +%% End of file `hustreport-zh-example.tex'. diff --git a/related_works.md b/related_works.md new file mode 100644 index 0000000..d014479 --- /dev/null +++ b/related_works.md @@ -0,0 +1,59 @@ +# 国内外研究现状 + +## 一、实时视觉大模型通信需求研究 +- **1. 流式视频理解与在线响应** + - VideoLLM-online: Online Video Large Language Model for Streaming Video(2024) + - LiveVLM: Efficient Online Video Understanding via Streaming-Oriented KV Cache and Retrieval(2025) + - CodecSight: Leveraging Video Codec Signals for Efficient Streaming VLM Inference(2026) +- **2. 在线视频理解评测基准** + - OVO-Bench: How Far is Your Video-LLMs from Real-World Online Video Understanding?(2025) + - StreamingBench: Assessing the Gap for MLLMs to Achieve Streaming Video Understanding(2026) +- **3. 边缘/具身智能应用** + - Vision-Language Models on the Edge for Real-Time Robotic Perception(2026) + - RT-2: Vision-Language-Action Models Transfer Web Knowledge to Robotic Control(2023) + - OpenVLA: An Open-Source Vision-Language-Action Model(2025) + - EgoLife: Towards Egocentric Life Assistant(2025) + +## 二、面向视频类 AI 的视频传输优化研究 +- **1. 面向视频分析的自适应传输** + - Reinventing Video Streaming for Distributed Vision Analytics(2018) + - AWStream: Adaptive Wide-Area Streaming Analytics(2018) + - Chameleon: Scalable Adaptation of Video Analytics(2018) +- **2. 边缘视频分析与模型反馈驱动传输** + - Server-Driven Video Streaming for Deep Learning Inference(2020) + - Enabling Edge-Cloud Video Analytics for Robotics Applications(2021) + - CASVA: Configuration-Adaptive Streaming for Live Video Analytics(2022) +- **3. 面向多模态大模型的视频通信优化** + - Chat with AI: The Surprising Turn of Real-Time Video Communication from Human to AI(2025) + - ARtIC: AI-Oriented Real-Time Communication for MLLM Video Assistant(2026) + +## 三、WebRTC 优化研究 +- **1. 端到端拥塞控制** + - Making Google Congestion Control Robust over Wi-Fi Networks Using Packet Grouping(2016) + - Congestion Control for Web Real-Time Communication(2017) + - Learning-Based Congestion Control for Internet Video Communication over Wireless Networks(2018) + - Statistical Learning Based Congestion Control for Real-Time Video Communication(2020) +- **2. 动态网络下的速率控制** + - Vidaptive: Efficient and Responsive Rate Control for Real-Time Video on Variable Networks(2024) + - Mustang: Improving QoE for Real-Time Video in Cellular Networks by Masking Jitter(2024) + - Mortise: Auto-Tuning Congestion Control to Optimize QoE via Network-Aware Parameter Optimization(2026) +- **3. 多维视频 QoE 与 FEC 优化** + - R-FEC: RL-Based FEC Adjustment for Better QoE in WebRTC(2022) + - Mamba: Bringing Multi-Dimensional ABR to WebRTC(2023) + - ABRF: Adaptive Bitrate-FEC Joint Control for Real-Time Video Streaming(2023) + - Real-Time Rate Control of WebRTC Video Streams in 5G Networks: Improving Quality of Experience with Deep Reinforcement Learning(2024) + +## 四、Wi-Fi 实时业务优化研究 +- **1. Wi-Fi 实时业务 QoS 与低时延机制** + - Tuning Channel Access to Enable Real-Time Applications in Wi-Fi 7(2020) + - Time-Sensitive Networking in IEEE 802.11be: On the Way to Low-Latency WiFi 7(2021) +- **2. Wi-Fi 配置与实时视频 QoE 测量** + - Understanding the Impact of Wi-Fi Configuration on Volumetric Video Streaming Applications(2023) + - Experimental Evaluation of Interactive Edge/Cloud Virtual Reality Gaming over Wi-Fi Using Unity Render Streaming(2024) +- **3. Wi-Fi 状态辅助应用层传输控制** + - Revisiting Congestion Control for WiFi Networks(2024) + - Athena: Seeing and Mitigating Wireless Impact on Video Conferencing and Beyond(2024) +- **4. 应用层信息辅助 Wi-Fi 调度** + - Flick: Frame-Perceptive Packet Scheduling for Low-Latency Video Services in Wi-Fi Networks(2025) + - LAW: Towards Consistent Low Latency in 802.11 Home Networks(2026) + - BLADE: Adaptive Wi-Fi Contention Control for Next-Generation Real-Time Communication(2026) diff --git a/text/00_cover.tex b/text/00_cover.tex new file mode 100644 index 0000000..f6397ce --- /dev/null +++ b/text/00_cover.tex @@ -0,0 +1,18 @@ +\stuno{M202573151} +\title{面向边缘视觉大模型推理的 WebRTC-WiFi 跨层协同优化机制研究} +\author{宓呈祥} +\major{信息与通信系统} +\department{电子信息与通信学院} +\advisor{ + 高雅玙 +} + +\usepackage{natbib} +\usepackage{graphicx} +%\abstract{ +% 这这是一个\LaTeX{}模板使用实例文件,该模板用于华中科技大学研究生报告写作。 +% +% 该模板基于LPPL v1.3发行。 +% +%} +%\keywords{\LaTeX{},华中科技大学,报告,模板} \ No newline at end of file diff --git a/text/01_introduction.tex b/text/01_introduction.tex new file mode 100644 index 0000000..21c1ceb --- /dev/null +++ b/text/01_introduction.tex @@ -0,0 +1,18 @@ +\chapter{引言} + +% 近年来,生成式人工智能(Generative Artificial Intelligence, GenAI)和多模态大模型快速发展,智能服务正在由传统文本交互逐渐扩展到持续感知、在线理解和实时决策。基于视觉语言模型(Vision-Language Model, VLM)和视觉语言动作模型(Vision-Language-Action Model,VLA)的实时视觉模型业务,已经开始出现在具身智能、机器人控制、实时视频对话、远程巡检和边缘智能等场景中。 +% % 一方面,生成式AI业务的激增正在成为网络流量增长的主要驱动力之一\cite{cisco_cisco_2024},已经有研究开始。另一方面, +% 在这类业务中,终端侧通常需要持续采集摄像头视频,并通过网络将视频流传输至边缘服务器或云端模型,由模型完成视觉理解、问答推理或动作决策后再将结果返回终端。由于终端侧算力和能耗受限,而VLM/VLA等模型通常具有较高计算开销,实时视觉模型推理业务往往难以完全依赖本地计算,而需要借助边缘或云端算力支撑\cite{ahmad_vision-language_2026,wang_runespoor_2021}。在这种系统形态下,WebRTC(Web Real-Time Communication)和Wi-Fi成为承载实时视频上传和模型交互的重要通信技术基础。因此针对实时视觉模型推理业务的无线视频传输优化,已经成为一个亟需解决的关键问题。 +近年来,生成式人工智能(Generative Artificial Intelligence, GenAI)业务呈现爆发式增长。截止2026年3月,中国日均Token调用量已超过140万亿次,较2025年底增长约40\%;AI搜索流量预计将于2028年超越传统搜索,对无线网络格局产生深远影响\cite{IEEE_HUAWEI_bn_for_ai}。与传统多媒体业务相比,GenAI业务呈现出显著不同的流量特征——上行方向,受多模态大模型发展驱动,持续上传视频、图像等多模态数据,呈现高上行带宽、强突发性和多模态交织的特点;下行方向则主要表现为流式文本或语音回应的短包传输,呈现高频小包特征。上述特征已引起IEEE 802.11等无线标准化组织的高度关注\cite{huawei2025wireless,IEEE_HUAWEI_Post_bn,IEEE_HUAWEI_bn_for_ai}。与此同时,智能服务正从传统文本交互向持续感知、在线理解和实时决策演进,基于视觉语言模型(Vision-Language Model, VLM)和视觉语言动作模型(Vision-Language-Action Model, VLA)的实时视觉模型业务逐渐从云端下沉至边缘,支撑具身智能、机器人控制、实时视频对话和远程巡检等应用。作为边缘场景的核心无线接入技术,Wi-Fi网络的传输能力直接决定了上述业务的部署可行性与服务质量。为此,IEEE 802.11标准化组织已成立AI Offload研究小组,探索将计算密集型AI推理任务卸载到边缘Wi-Fi接入点及其他支持Wi-Fi的边缘计算设备\cite{IEEE_80211_AIO_SG_agenda}。由于终端侧算力和能耗受限,此类业务通常需要持续上传摄像头视频至边缘AP,基于推理结果做出决策\cite{ahmad_vision-language_2026,wang_runespoor_2021}。在这一过程中,视频传输质量直接决定模型"看到"了什么、何时看到,从而深刻影响推理准确率和响应及时性;而WebRTC作为承载实时音视频交互的关键协议,其与Wi-Fi之间的协同效率将直接影响传输效果。因此,研究面向视觉模型推理质量的WebRTC–Wi-Fi视频传输优化机制,具有紧迫的理论意义和实际价值。 + +然而,实时视觉模型推理对视频传输提出了不同于传统视频会议、云游戏和虚拟现实等业务的新要求。传统实时视频应用主要面向人类观看体验,通常关注清晰度、卡顿率、端到端时延和交互流畅性;而实时视觉模型业务的最终目标并不是让人“看得更清楚”,而是让模型在限定时间内获得对任务有用的视觉信息,从而提高任务准确率、响应及时性和推理稳定性。不同视觉任务对视频传输的敏感因素可能存在显著差异:例如,文字识别、细粒度目标识别等任务可能更依赖图像清晰度和空间细节,动态事件理解和机器人感知任务可能更依赖帧率、时序连续性和视频帧新鲜度。因此,传统网络服务质量(Quality of Service, QoS)或面向人类观看体验的体验质量(Quality of Experience, QoE)指标,未必能够准确反映实时视觉模型的服务质量。现有实时视觉大模型研究虽然已经开始关注连续视频输入、在线理解和低时延推理\cite{chen_videollm-online_2024,niu_ovo-bench_2025,zou_codecsight_2026},但对无线网络状态、WebRTC传输行为和视频质量变化如何影响模型推理效果,仍缺少系统分析。 + +与此同时,现有WebRTC优化研究和Wi-Fi实时业务优化研究也难以直接满足上述需求。一方面,现在还少有研究面向模型服务质量。另一方面,WebRTC和Wi-Fi协议分属不同网络层,两者存在天然的不透明性。在Wi-Fi网络中,信道竞争、无线重传、链路速率变化和队列积压会显著影响时延和丢包表现,但WebRTC仅依赖端到端反馈时,难以及时准确地区分真实网络拥塞和无线链路波动,也难以利用Wi-Fi内部状态优化拥塞控制和FEC(Forward Error Correction)策略。而WiFi同样无法感知WebRTC的帧类型和帧级截止时间,难以做优先级调度和过期包清理。现有研究大多分别从WebRTC侧或Wi-Fi侧进行优化,仅有少量工作尝试引入跨层信息。并且现有引入跨层信息的工作通常只引入了单方面的跨层感知,并以一个协议为主体进行优化,尚未形成 WebRTC、Wi-Fi 之间的双向协同机制\cite{yi_athena_2024, shen_law_2026}。也就是说,WebRTC通常不了解Wi-Fi内部的信道竞争和队列状态,Wi-Fi也不了解WebRTC数据包所属视频帧的重要性、截止时间和冗余属性,二者难以围绕视觉模型QoE进行联合优化。 + +针对上述问题,本文拟研究面向实时视觉模型推理质量的WebRTC–Wi-Fi跨层协同传输方法。 +\begin{itemize} + \item 首先,本文拟基于ns-3和ns3-ai构建闭环联合仿真平台,将真实视频客户端、WebRTC传输机制、ns-3 Wi-Fi网络仿真和实际部署的VLM/VLA推理服务连接起来,实现视频上传、无线传输、模型推理和结果返回的完整业务闭环。 + \item 其次,本文拟利用该平台系统分析Wi-Fi网络状态、WebRTC视频传输行为和视觉模型推理质量之间的关联关系,明确不同网络状态和视频传输指标对模型准确率、响应时延和信息新鲜度的影响。 + \item 在上述分析的基础上,本文拟设计WebRTC–Wi-Fi双向跨层协同优化方法:一方面使WebRTC能够感知Wi-Fi的信道竞争、无线重传、链路速率和队列状态,并据此优化码率选择、发送节奏和FEC策略;另一方面使Wi-Fi能够感知WebRTC提供的视频帧类型、帧级截止时间、数据重要性和冗余属性,并据此进行优先级调度、关键帧保障和过期帧清理。 +\end{itemize} +与传统更关注人类视觉体验的优化机制不同,本文提出的WebRTC–Wi-Fi跨层协同优化方法将以视觉模型推理质量为核心指标,并尝试建立两者之间的双向协同机制,旨在提升实时视觉模型推理的准确率和响应速度,从而更好地支撑边缘AI业务的发展。 \ No newline at end of file diff --git a/text/02_related_work.tex b/text/02_related_work.tex new file mode 100644 index 0000000..ebd91a3 --- /dev/null +++ b/text/02_related_work.tex @@ -0,0 +1,65 @@ +\chapter{国内外研究概况及发展趋势} + + +面向实时视觉模型推理的无线传输优化涉及模型任务、视频传输和无线接入等多个层面的协同。现有研究尚未形成完整的WebRTC–Wi-Fi–视觉模型闭环优化框架,但已从四个相关方向展开探索:一是实时视觉大模型的流式推理与通信需求研究,主要关注连续视频输入、在线理解和边缘推理;二是面向视频类AI的视频传输优化研究,主要关注如何根据视频内容和模型反馈调整帧率、分辨率、传输区域与带宽分配;三是WebRTC优化研究,主要围绕拥塞控制、速率调节和FEC等传输机制展开;四是Wi-Fi实时业务优化研究,主要关注无线状态感知、资源调度和低时延保障。本章按照上述顺序梳理相关工作的主要进展,并在此基础上归纳现有研究在跨层协同和模型任务导向优化方面的不足。 + + +\section{实时视觉大模型通信需求研究} +随着多模态大模型的发展,视觉理解任务正在从离线图像理解和离线视频问答,逐渐转向连续视频流上的在线感知、实时问答和具身交互。在传统离线视频理解任务中,模型通常可以在完整视频已经采集和存储之后再进行推理;而在实时视觉大模型业务中,视频数据仍在不断产生,模型需要在有限时延内持续接收最新视觉输入,并结合当前场景、历史上下文和用户指令生成响应。因此,这类业务不再只是模型结构或推理效率问题,而是同时依赖视频采集、编码压缩、无线传输、边缘计算和模型推理之间的协同。本节将从流式模型能力、在线视频理解评测和边缘具身应用三个方面梳理相关研究,并进一步说明实时视觉模型业务对无线视频传输提出的新需求。 + +从模型能力演进来看,近期研究已经开始从离线视频理解转向连续视频输入和在线响应能力。VideoLLM-online提出Learning-In-Video-Stream框架,使视频大语言模型能够在持续接收视频流的过程中进行时间对齐理解和实时对话\cite{chen_videollm-online_2024}。LiveVLM和StreamingVLM等工作进一步面向实时或近无限视频流提出流式KV缓存和紧凑记忆机制,以支持模型在长时间视频输入下维持较低响应延迟\cite{ning_livevlm_2025,xu_streamingvlm_2025}。VideoScan和Mobile-VideoGPT则分别从帧级语义压缩、关键帧选择和视觉token裁剪等角度降低视频理解过程中的计算和显存开销\cite{li_videoscan_2025,shaker_mobilevideogpt_2025}。这些研究共同说明,实时视觉大模型已经不再只关注“能否理解完整视频”,而是开始关注“能否在视频持续到达的过程中及时理解和响应”。相应地,模型对输入视频帧的新鲜度、连续性和有效信息保留提出了更高要求。 + +从评测基准和数据集的发展来看,实时视觉大模型的研究目标也正在由离线长视频理解转向在线、流式和时间敏感的视频理解。Video-MME、LongVideoBench和MLVU等基准主要推动多模态大模型处理更长、更复杂的视频输入,要求模型能够在长时间、多事件和多语义线索的视频中进行检索与推理\cite{fu_video-mme_2025,wu_longvideobench_2024,zhou_mlvu_2025}。在此基础上,OVBench、OVO-Bench和StreamingBench进一步强调在线视频理解中的当前场景感知、历史信息记忆、未来事件预测和时间点触发响应能力\cite{huang_ovbench_2025,niu_ovo-bench_2025,lin_streamingbench_2024}。这些基准的变化表明,实时视觉模型的能力评估已经不再局限于“看完整段视频后回答问题”,而是逐渐转向“边看边理解、边交互边响应”。因此,视频帧是否能够及时、连续、稳定地传输到模型侧,将直接影响模型在线感知和实时响应能力的发挥。 + +从应用场景来看,实时视觉大模型正在向机器人、移动终端、可穿戴设备和具身智能系统扩展,这进一步强化了其通信需求。RT-2和OpenVLA将视觉语言模型扩展到机器人动作决策和通用操作策略,使模型能够根据视觉观测和语言指令生成控制行为\cite{brohan_rt2_2023,kim_openvla_2024};EgoLife面向AI眼镜和第一人称日常生活助手构建长时间、多模态视频数据集,反映了视觉模型持续感知环境并提供实时辅助的应用趋势\cite{yang_egolife_2025}。由于VLM/VLA通常具有较高计算和显存开销,许多应用需要借助边缘或云端算力。Ahmad等人在O-RAN/MEC环境中部署VLM,并设计基于WebRTC的多模态数据流传输管线,将机器人采集的视频传输到边缘节点进行实时感知推理\cite{ahmad_vision-language_2026}。这些应用说明,实时视觉模型的输入往往需要经过无线网络传输到边缘或云端,传输时延、连续性和视频质量会直接影响模型获得的视觉信息及其输出质量。 + +总体而言,实时视觉大模型正在从离线视频理解走向连续视频流上的在线感知、实时问答和具身交互,并越来越多地依赖边缘或云端推理。与面向人类观看的视频业务相比,这类业务更关注任务准确率、响应及时性和输入信息新鲜度,不同任务对清晰度、帧率和时序连续性的敏感程度也可能不同。因此,传统网络QoS或人类视频QoE指标未必能够准确反映模型任务质量。现有研究的重点仍主要集中在模型结构、视觉token压缩、流式记忆和推理效率,对无线网络状态及传输自适应行为如何影响模型任务质量缺少系统分析。 + +\section{面向视频类 AI 的视频传输优化研究} +除实时视觉大模型本身的流式推理研究外,近年来也有一类工作开始从“机器理解视频”而非“人类观看视频”的角度重新设计视频传输机制。早期面向视频分析的研究已经指出,传统视频流传输通常以人类观看体验为目标,难以直接适配目标检测、识别和场景理解等 DNN 推理任务。Pakha 等人较早提出应面向分布式视觉分析重新设计视频流传输协议,使其优化目标从人眼感知质量转向分析准确率与带宽开销之间的权衡\cite{pakha2018reinventing}。AWStream 进一步面向广域流式分析场景,通过在帧率、分辨率和数据压缩等多个维度上进行自适应降级,在带宽受限时维持应用级分析准确率和数据新鲜度\cite{zhang2018awstream}。Chameleon 则针对大规模视频分析系统,利用时间和跨摄像头相关性动态选择视频分辨率、帧率和模型配置,以在资源消耗和分析准确率之间取得平衡\cite{jiang2018chameleon}。这些工作表明,视频类 AI 业务中的传输优化不能简单等同于传统视频 QoE 优化,而应结合模型任务对输入质量的敏感性进行设计。 + +在边缘视频分析场景中,后续研究进一步将视频传输与服务端模型推理过程结合起来。DDS 提出服务端驱动的视频流传输机制,先传输低质量视频流,由服务端 DNN 根据检测结果决定哪些区域需要以更高质量重新传输,从而在降低带宽消耗的同时保持或提升推理准确率\cite{du2020dds}。CASVA 则针对实时视频分析中的配置选择问题,根据视频内容、网络带宽和推理准确率之间的关系,自适应选择分辨率、帧率和模型配置,以提升实时分析任务在带宽变化下的稳定性\cite{zhang2022casva}。Runespoor 面向机器人边缘-云视觉分析提出内容自适应数据率控制机制,在受限带宽下改善机器人视觉任务的尾部准确率\cite{wang_runespoor_2021}。这些研究共同说明,面向视频类 AI 的传输优化已经逐渐从单纯压缩视频码流,发展为结合视频内容、模型反馈和任务准确率的联合优化问题。 + +近期,多模态大模型视频助手的出现进一步推动了面向 MLLM 的实时视频通信优化研究。Wu 等人指出,在 AI Video Chat 场景中,实时通信的一端不再是人类用户,而是部署在云端或边缘侧的多模态大模型,因此传统 RTC 中以人眼感知质量、播放流畅性和卡顿率为核心的 QoE 指标不再完全适用,系统更应关注 MLLM 响应准确率和端到端交互时延\cite{wu2025chatwithai}。在此基础上,Artic 提出面向 MLLM Video Assistant 的 AI-oriented RTC 框架,通过响应能力感知的自适应码率控制限制不必要的视频码率,并利用上下文感知流式传输将有限码率分配给与当前问题最相关的视频区域,同时构建 DeViBench 评估 RTC 引起的视频退化对 MLLM 准确率的影响\cite{wu2026artic}。这类工作与传统 WebRTC 优化的差异在于,其优化目标已经从“让人看得清楚和流畅”转向“让模型及时获得足够有用的视觉信息”。 + +总体来看,面向视频类AI的传输优化已经从视频参数自适应发展到结合内容、模型反馈和任务准确率的联合控制。然而,现有工作大多侧重应用层视频配置或端到端传输策略,对Wi-Fi信道竞争、链路层重传和队列积压等底层状态考虑不足,因而尚未充分揭示无线传输行为对视觉模型任务质量的影响。 + + +\section{WebRTC优化研究} + +WebRTC是当前低时延实时音视频通信中的重要技术框架,被广泛应用于低延迟流媒体传输、视频会议多码率优化、边缘计算通信和实时监控等场景\cite{JDCP202406008,XXWX202308018,JSJA202410013,DZQJ202504022,FJDN202504015}。与传统视频点播业务不同,WebRTC业务通常需要在严格时延约束下持续传输音视频流,因此其优化目标不仅包括提高链路利用率和视频清晰度,还包括控制排队时延、抖动、丢包恢复开销和帧级传输稳定性。围绕这些问题,现有WebRTC优化研究主要可以分为三类:一是以GCC为代表的端到端拥塞控制研究,二是面向无线动态网络的状态感知与速率控制增强研究,三是面向视频QoE的码率、分辨率、帧率和FEC等多维联合优化研究。这些研究为实时视频传输提供了重要基础,但其优化目标主要仍然面向视频传输质量和人类观看体验,尚未充分考虑实时视觉模型推理业务的特殊需求。 + +WebRTC优化的基础是端到端拥塞控制机制,其代表性方案为谷歌拥塞控制(Google Congestion Control, GCC)。Carlucci等人系统研究了GCC机制,指出GCC通过端到端单向时延变化、丢包反馈和带宽估计判断网络拥塞状态,并结合接收端延迟控制器和发送端丢包控制器对视频发送速率进行调节\cite{carlucci_congestion_2017}。该类方法的优点在于不依赖网络内部设备支持,具有较好的端到端部署性,因而成为WebRTC实时媒体传输中的典型拥塞控制方案。然而,GCC的核心输入仍然是端到端传输反馈。当网络状态快速变化,尤其是在Wi-Fi和蜂窝等无线网络中出现信道竞争、链路速率变化和突发排队时,仅依赖端到端时延和丢包信号容易产生状态判断滞后或误判,从而影响视频码率调整的及时性和稳定性。 + +针对无线网络环境中端到端反馈不足的问题,已有研究开始尝试增强WebRTC或实时视频传输系统对动态网络状态的适应能力。Carlucci等人研究了GCC在Wi-Fi网络中的表现,指出Wi-Fi信道中断结束后的分组突发到达会影响GCC延迟估计,并提出基于分组聚合的改进方法,以降低无线突发行为对拥塞判断的干扰\cite{carlucci_making_2016}。Dai等人进一步引入数据驱动方法,通过学习端到端时延、发送速率和网络状态之间的关系,提高实时视频通信在无线链路中的适应能力\cite{dai_learning-based_2018,dai_statistical_2020}。Yu等人针对移动网络中RTT和丢包反馈难以准确反映视频播放体验的问题,提出Mustang以改善高抖动场景下的实时视频控制效果\cite{Encheng}。Karimi等人提出Vidaptive,指出GCC等实时视频速率控制机制在网络快速变化时可能存在响应滞后,并通过解耦传输控制与编码器目标码率调节,提高动态网络中的链路利用率和时延表现\cite{karimi_vidaptive_2024}。此外,PBE-CC、ABC和Mortise等工作虽然并非全部专门针对WebRTC设计,但从无线跨层拥塞控制和网络感知参数优化角度说明,引入物理层测量、显式网络反馈或网络状态感知参数调优,有助于减少仅依赖端到端探测带来的控制滞后\cite{xie_pbe-cc_2020,goyal_abc_2021,Shen2026}。这些研究共同表明,无线状态感知能够改善动态网络中的实时视频传输性能,但多数方法仍主要从传输层或单向网络状态感知角度出发,尚未形成WebRTC与Wi-Fi之间的双向跨层协同。 + +除拥塞控制外,WebRTC优化研究还逐渐从单一发送速率控制扩展到面向用户体验质量(Quality of Experience,QoE)的多维联合优化。传统GCC主要依据端到端反馈调节目标码率,但实际视频质量还与分辨率、帧率、量化参数、FEC冗余和视频内容复杂度等因素密切相关。Li等人提出Mamba,将WebRTC中的自适应码率问题扩展为多维决策问题,通过多智能体强化学习协同调整量化参数、分辨率和帧率,以提升视频会议场景下的用户体验质量\cite{LiYueheng}。Smirnov等人面向5G网络下的WebRTC视频流,利用深度强化学习进行实时速率控制,以改善动态网络条件下的QoE\cite{Smirnov}。在丢包恢复方面,Lee等人提出R-FEC,利用强化学习联合调整视频码率和FEC冗余,在丢包恢复能力、带宽开销和视频质量之间进行权衡\cite{RFEC};Cheng等人提出ABRF,将自适应码率控制与FEC控制联合建模,根据网络状态和丢包模式动态调整码率与纠错冗余\cite{Cheng2023}。这些工作说明,WebRTC优化已经不再局限于拥塞控制本身,而是逐渐发展为码率、分辨率、帧率、冗余和视频QoE之间的多维联合控制问题。 + +综上所述,现有WebRTC研究提供了码率调整、发送节奏控制、FEC配置和编码参数调节等控制手段,也表明更准确的网络状态有助于改善动态网络中的实时视频传输。然而,现有方法主要依赖端到端反馈或单向网络状态感知,难以直接获得Wi-Fi内部的信道竞争、无线重传和队列积压等状态;其优化目标也主要是清晰度、流畅度、卡顿率和端到端时延,尚未充分考虑模型任务准确率、输入信息新鲜度和响应及时性。 + + +\section{Wi-Fi实时业务优化研究} + + +Wi-Fi是移动终端、机器人、增强现实、边缘智能和室内实时视频传输中常见的无线接入方式。与有线网络相比,Wi-Fi链路更容易受到信道竞争、无线干扰、终端数量变化、物理层速率自适应、链路层重传和队列积压等因素影响。总体来看,相关研究主要可以分为三类:一是面向实时业务的Wi-Fi QoS保障机制,二是Wi-Fi配置、视频业务特征与应用QoE之间关系的测量分析,三是通过Wi-Fi与应用层的跨层感知进行优化设计,分为将Wi-Fi状态引入应用层和将应用层信息引入Wi-Fi两大类。 + +早期Wi-Fi实时业务优化主要依托IEEE802.11e中的增强型分布式信道接入机制(Enhanced Distributed Channel Access, EDCA)。EDCA通过为不同业务类型配置不同的AIFS、竞争窗口和TXOP参数,使语音、视频等实时业务能够获得高于普通数据流的信道接入优先级。然而,传统EDCA参数多为静态配置,难以适应实时视频流的码率波动、帧大小变化和无线竞争环境变化。随着Wi-Fi6/7的发展,研究者进一步从OFDMA资源分配、TXOP限制、预先信道接入以及多链路传输等角度支持实时业务。Bankov等人面向Wi-Fi7实时应用研究了限制非实时业务信道占用时间和预先信道接入等机制,以满足实时业务对时延和丢包率的严格要求\cite{bankov_tuning_2020}。Adame等人则从时间敏感网络(Time-Sensitive Networking,TSN)角度分析IEEE802.11be支持低时延高可靠业务的机制,为Wi-Fi7/8面向实时业务的标准演进提供了参考\cite{adame_tsn_2021}。这类研究说明,Wi-Fi侧已经具备通过接入优先级、空口资源分配和低时延机制保障实时业务的技术基础,但其优化粒度通常仍停留在业务类别或链路层参数层面,难以直接反映具体视频帧或模型推理任务的实时价值。 + +在基础QoS机制之外,相关研究进一步关注Wi-Fi底层配置、视频业务特征和应用QoE之间的关系。Kulkarni等人研究了信道宽度、接入类别、优先级队列和硬件配置等Wi-Fi参数对体积视频流应用QoE的影响,指出底层Wi-Fi配置会显著影响视频业务的稳定性和最终体验\cite{kulkarni_understanding_2023}。Casasnovas等人构建了基于Unity Render Streaming、WebRTC和Wi-Fi6的边缘/云端虚拟现实实验系统,分析WebRTC视频帧发送批次、Wi-Fi分组聚合和空口占用之间的关系,发现WebRTC视频帧的周期性批量发送会影响Wi-Fi空口效率和完整视频帧到达时延\cite{casasnovas_experimental_2024}。这类工作表明,实时视频业务的性能不仅由平均吞吐量决定,还与视频帧发送节奏、MAC层聚合方式、信道占用和完整帧到达时延密切相关。因此,Wi-Fi实时业务优化需要从单纯链路层参数配置,逐步转向结合应用层帧结构和业务体验质量的跨层分析。 + +近年研究进一步开始为应用层引入Wi-Fi物理层和MAC层状态,以辅助实时业务传输控制。Du等人提出Cupid,重新审视Wi-Fi网络中的拥塞控制问题,利用接收端Wi-Fi物理层测量信息感知空口占用、并发传输和物理层速率等状态,从而更准确地判断Wi-Fi瓶颈并进行速率调节\cite{du_revisiting_2024}。Yi等人提出Athena,通过从物理层到应用层的高分辨率跨层测量,分析无线网络事件对视频会议QoE的影响,并指出当前视频会议拥塞控制算法看到的往往只是网络状态的表象,缺乏对无线底层事件的可解释感知\cite{yi_athena_2024}。这些研究说明,仅在应用层被动观察端到端反馈已经难以满足低时延实时业务的稳定性需求,为应用层主动引入Wi-Fi底层状态有助于解释和改善无线环境下的视频传输性能。 + +除向上层提供Wi-Fi状态外,部分研究通过给Wi-Fi引入业务信息,以实现更加精准的优先级调度和拖尾时延控制。Shen等人提出LAW,引入WebRTC的尾帧信息,并通过重塑队列结构和细粒度传输机会控制降低WebRTC应用中的尾帧时延和卡顿率\cite{shen_law_2026}。Guo等人提出BLADE,面向云游戏和XR等下一代实时通信业务,通过动态调整竞争窗口来降低Wi-Fi分组尾时延和视频卡顿率\cite{guo_blade_2026}。Gong等人提出Flick,在Wi-Fi侧引入视频帧边界等信息,以进行帧感知分组调度,从而降低完整视频帧的到达时延\cite{gong_flick_2025}。这些工作共同表明,为Wi-Fi层引入应用层的帧级信息,可以实现更细粒度的调度和优先级控制,从而改善实时视频业务的传输稳定性和体验质量。 + +总体来看,Wi-Fi实时业务优化已经从静态QoS配置发展到无线状态感知和帧级跨层调度。现有工作证明了信道竞争、链路层重传、发送节奏和队列管理会显著影响实时业务,也说明Wi-Fi侧可以利用部分上层信息进行优先级控制和队列管理。不过,多数方法仍面向视频会议、云游戏和VR/XR等人类感知业务;已有跨层方法通常只引入局部、单向的信息,尚未同时结合WebRTC传输状态与视觉模型任务需求形成双向闭环。 + + +\section{总结与讨论} + +综上所述,四类相关研究分别为本文问题提供了不同基础。实时视觉大模型研究推动了连续视频理解、在线响应和边缘推理的发展,明确了新型智能业务对视频时效性和任务质量的需求;面向视频类AI的传输研究证明了视频内容、传输参数和模型任务质量之间存在耦合关系;WebRTC研究提供了拥塞控制、速率调节和冗余配置等端到端自适应机制;Wi-Fi实时业务研究则揭示了无线配置、发送节奏和MAC层竞争对应用体验的影响,并提供了网络侧调度与低时延保障手段。 + +然而,从本文研究问题出发,现有工作之间仍缺少进一步的协同。首先,已有研究一方面尝试将Wi-Fi物理层或MAC层状态提供给WebRTC及其他实时传输机制,以改善拥塞判断和速率控制;另一方面也尝试将视频帧边界、尾帧状态等应用层信息提供给Wi-Fi,以指导队列管理和资源调度。但这两类工作通常分别优化信息传递的单一方向,尚未形成WebRTC与Wi-Fi相互感知、联合决策的双向协同机制。其次,面向视频AI的研究已经提出了多种由视频内容、模型反馈和任务准确率驱动的端到端传输优化方法,但其控制对象大多集中在帧率、分辨率、区域选择和带宽分配等应用层参数,较少进一步结合WebRTC的拥塞控制、发送节奏与FEC机制以及Wi-Fi的信道竞争、链路层重传和队列调度。因而,现有研究尚未将模型任务需求、WebRTC传输控制和Wi-Fi底层状态贯通起来,形成以视觉模型任务质量为目标的跨层闭环优化框架。 + +针对上述不足,本文拟开展三个方面的研究:首先,基于ns-3和ns3-ai构建闭环联合仿真平台,连接真实视频客户端、WebRTC传输、Wi-Fi网络仿真和实际VLM/VLA推理服务;其次,系统分析Wi-Fi状态、WebRTC传输行为和视觉模型任务性能之间的关联,明确传统QoS与视频QoE指标在实时视觉模型业务中的适用边界;最后,设计面向视觉任务需求的WebRTC–Wi-Fi跨层协同传输方法,综合利用无线链路状态、端到端传输状态和模型任务反馈,对视频传输和无线资源进行联合调整。 + +上述研究将把模型任务目标、WebRTC传输控制与Wi-Fi底层状态连接起来,使无线传输优化由传统网络质量或人类观看体验进一步面向模型任务效果,并为多模态智能体、具身智能和边缘视觉推理场景下的无线网络优化提供实验与方法基础。 diff --git a/text/03_method.tex b/text/03_method.tex new file mode 100644 index 0000000..15578ac --- /dev/null +++ b/text/03_method.tex @@ -0,0 +1,225 @@ +\chapter{研究内容与方法} + + +本文围绕 Wi-Fi 网络中实时视觉模型推理业务的传输优化问题展开研究。具体而言,本文研究内容包括四个层次:首先构建能够运行真实视觉模型业务的系统级联合仿真平台,为后续实验提供可控、可重复的环境;其次利用该平台分析Wi-Fi网络状态、WebRTC 传输行为和视觉模型任务性能之间的跨层关联;然后在关联分析的基础上设计面向视觉任务需求的 WebRTC–Wi-Fi 联合优化方法;最后通过在不同场景下的实验验证所提出方法的有效性。接下来将详细介绍每个层次的研究内容和方法。 + +\section{系统模型} + + + +\begin{figure}[!h] + \centering + \includegraphics[width=0.6\linewidth]{figure/毕业论文-系统场景.pdf} + \caption{面向实时视觉模型推理的WebRTC–Wi-Fi联合优化系统模型} + \label{fig:system_model} +\end{figure} + + + +\section{面向实时视觉模型业务的闭环联合仿真平台} + +% 本文首先研究如何构建一个能够支撑真实实时视觉模型业务的无线通信联合仿真平台。 +\subsection{研究内容} +实时视觉模型业务具有视频持续输入、模型在线推理和结果实时返回等特点,如果仅使用预先生成的流量模型或离线网络轨迹,难以准确反映网络变化对模型任务结果的影响,并且考虑到可复现性和可分析性,本研究最终决定使用半实物仿真来支撑后续的分析和研究。现有仿真平台难以同时满足真实业务闭环、Wi-Fi 细粒度仿真和可复现实验需求,因此本研究决定首先建立一个能够同时包含真实业务逻辑、WebRTC传输过程和Wi-Fi网络仿真的闭环仿真实验平台。 + +该平台以ns-3作为Wi-Fi网络仿真基础,用于模拟客户端与服务端之间的无线通信过程。ns-3能够较细粒度地描述Wi-Fi网络中的信道竞争、调制编码方式、无线重传、队列变化和多终端接入等现象,适合用于研究无线网络状态对实时业务的影响。同时,平台使用ns3-ai模块提供的共享内存通信机制,将ns-3仿真进程与外部真实应用进程连接起来,使仿真网络不再只是处理预设模型产生的流量,而是可以承载真实应用产生的视频流和业务请求。本研究力求将该框架构建成一个通用的联合仿真平台,因此并不假定GenAI客户端和GenAI服务端的具体实现,而是提供标准化的接口。这意味着GenAI客户端可以是任何能够发送请求的仿真器(例如Maniskill等机器人仿真器)或实物,GenAI服务端可以是任何能够接收请求并返回结果的模型——这意味着本研究既可以部署LLM/VLM等真实模型,也可以使用现成的流量模型,甚至可以支持LLM ServingSim等专门的模型推理仿真器。通过这种设计,平台能够适应不同的研究需求和实验场景,具有较强的灵活性和扩展性。 + +\subsection{技术路线} + +\begin{figure}[!h] + \centering + \includegraphics[width=0.6\linewidth]{figure/ns3agent-overview-zh.pdf} + \caption{面向GenAI业务的联合仿真平台} + \label{fig:ns3agent-overview} +\end{figure} + +如图~\ref{fig:ns3agent-overview}所示,在平台运行过程中,客户端连接视频采集与请求程序,将实时视频流以及任务请求送入 ns-3仿真的网络中。ns-3将视频流通过WebRTC协议发送到Wi-Fi网络中,并模拟视频分组在无线链路中的传输过程,包括排队、竞争、重传、丢包和时延变化。服务端连接已经部署好的视觉语言模型或视觉语言动作模型服务,在接收到视频流和请求后完成推理,并将模型生成的文本响应、决策结果或控制指令通过同一仿真网络返回客户端。由此,平台形成从客户端输入、无线网络传输、模型推理到结果返回的完整闭环。 + +该平台的关键难点在于联合仿真的时间同步和时序因果一致性。ns-3采用离散事件仿真机制,内部按照仿真时间推进,而外部视频客户端和模型服务器运行在真实时间中。如果两者之间缺少严格的同步机制,就会出现事件的时序因果错误。以GenAI客户端与ns-3网络之间的二分交互为例:假设初始时间点为$t_0$,客户端计划在未来的时间点$t_1$向ns-3发送请求。为避免因果性违规,客户端必须在$t_1$准确暂停,并确保ns-3的仿真时间尚未推进到$t_1$之后,然后在客户端和ns-3的时间都到达$t_1$时,客户端才能将请求发送到ns-3中。 + +作为联合仿真的一个经典问题,本研究参考High Level Architecture(HLA)同步机制的实现,设计了一种基于前瞻量的保守时间同步机制。此机制要求GenAI客户端/服务端和ns-3仿真器在每次同步事件中交换当前时间和前瞻承诺(Lookahead)参数,以独立计算下一个安全同步点,从而确保双方都能安全地推进时间而不违反时序因果性。所谓前瞻量可以理解为一个严格的时间承诺,即在当前时间点$T_k$加上前瞻值$TL_{k}$之前,相关仿真器绝对不会生成任何面向另一个仿真器的新事件或数据。 + +\begin{figure} + \centering + \includegraphics[width=0.6\linewidth]{figure/time_syn.pdf} + \caption{联合仿真时间同步示意图} + \label{fig:time_syn} +\end{figure} + +如图~\ref{fig:time_syn}所示,在每次同步事件中,外部仿真器(如GenAI客户端)与ns-3网络环境之间会进行一次双向数据交换。客户端将其当前仿真时间记为$T_k$,并将其前瞻承诺记为$TL_{k}^{(c)}$发送给ns-3。前瞻值$TL_{k}^{(c)}$作为一项严格保证,确保客户端在$T_k + TL_{k}^{(c)}$之前绝对不会生成任何面向ns-3网络的新事件或数据。与此同时,ns-3仿真器也将其当前时间$T_k$及其前瞻值$TL_{k}^{(n)}$发送给客户端。基于这些交换的参数,系统使用以下公式独立计算所有交互域之间的下一个安全同步点$T_{k+1}$: + \begin{equation} +T_{k+1}=T_k+\min\left(TL_{k}^{(c)}, TL_{k}^{(n)}\right), + \end{equation} +从而确保两个仿真器可以安全地将各自本地时钟推进至$T_{k+1}$,而不会违反时序因果性。 + +该研究产出一个面向通用智能体AI工作流的跨平台联合仿真框架,支持真实视觉模型业务的闭环仿真。该平台不仅能够用于分析Wi-Fi网络状态、WebRTC传输行为和视觉模型任务性能之间的关系,还能够为后续设计多种GenAI业务场景提供支持。因此后续本文可以利用该平台模拟出具身智能、AI视频问答等多种GenAI业务场景,并在此基础上分析不同网络状态下视觉模型任务的性能表现,为后续的优化方法设计提供数据支持和理论依据。 + +\section{Wi-Fi、WebRTC和视觉模型任务性能的跨层关联分析} +在完成联合仿真平台的基础上,本文进一步研究Wi-Fi网络状态、WebRTC视频传输行为和视觉模型任务性能之间的关联关系。该部分的核心目标不是立即提出优化算法,而是先回答一个基础问题:动态Wi-Fi网络中的链路变化究竟会通过什么机制影响WebRTC视频传输,并进一步影响实时视觉模型的QoE指标。在本文中,模型QoE指标用于描述实时视觉模型业务的最终服务质量,为了定量描述,本文将模型 QoE 定义为由准确性、TTFT(首 token 响应时间)、ITL(Token 间隔)和输入帧新鲜度(以视频帧的传输时延衡量)共同构成的综合指标。 + +\subsection{研究内容} + +本文拟首先分析 Wi-Fi 状态对 WebRTC 传输行为的影响。在 Wi-Fi 网络中,信道竞争、链路速率变化、无线重传和队列积压会改变端到端时延、丢包率、抖动和可用带宽,从而影响 WebRTC 的带宽估计、码率调整、FEC 冗余配置和视频帧传输时延。本文将通过实验分析不同 Wi-Fi 底层状态变化是否会导致 WebRTC 拥塞控制产生滞后、误判或过度保守等现象。 + +其次,本文拟分析 WebRTC 视频传输行为对视觉模型任务性能的影响。对于实时视觉模型业务,视频质量下降并不一定直接等价于模型性能下降,不同任务对视频分辨率、帧率、关键帧丢失、帧完成时延和输入帧新鲜度的敏感程度可能不同。例如,文字识别和细粒度目标识别任务可能更依赖空间细节,异常事件识别任务可能更依赖时间连续性,实时视频问答和机器人感知任务则可能更加关注输入帧新鲜度和模型响应及时性。因此,本文将比较不同视频传输质量和不同任务类型下模型准确率、任务成功率、TTFT 和 ITL 分布的变化规律。 + +最后,本文拟分析传统网络 QoS、视频 QoE 指标与模型 QoE 之间的对应关系。本文将重点判断吞吐量、RTT、丢包率、抖动、视频码率、帧率和帧完成时延等传统指标,是否能够稳定解释模型任务准确率和响应时延变化。如果发现传统指标与模型 QoE 之间存在不一致现象,则进一步说明面向视觉模型业务进行专门跨层优化的必要性。 + +\subsection{技术路线} +本文将基于联合仿真平台开展多因素控制实验。实验中将 Wi-Fi 网络条件、WebRTC 传输配置和视觉任务类型作为主要实验变量,并同步采集 Wi-Fi 层、WebRTC 层和模型任务层的观测指标。具体实验变量与观测指标如表~\ref{tab:3} 所示。 + +\begin{table}[htbp] +\centering +\small +\caption{跨层关联分析的实验变量与观测指标} +\label{tab:3} +\begin{tabular}{p{0.18\textwidth} p{0.36\textwidth} p{0.36\textwidth}} +\hline +层次 & 实验变量或观测指标& 分析目的 \\ +\hline +Wi-Fi 层 & 信道质量、背景流量强度、竞争终端数量、信道忙碌比例、MCS、无线重传率、队列长度、竞争时延等 & 分析无线链路状态和接入竞争对端到端传输行为的影响 \\ +\hline +WebRTC 层 & 发送码率、目标码率、带宽估计值、RTT、丢包率、抖动、FEC 冗余率、视频帧大小、关键帧比例、帧完成传输时延、发送队列状态等 & 分析 WebRTC 自适应传输行为及其对视频帧质量、时延和新鲜度的影响 \\ +\hline +模型任务层 & 任务准确率、任务成功率、TTFT、ITL 均值、ITL 高分位数、模型响应完成时延、输入帧新鲜度、过期帧比例等 & 分析网络和视频传输变化对最终模型服务质量的影响 \\ +\hline +\end{tabular} +\end{table} + +在数据分析方法上,本文拟采用统计分析和数据驱动建模相结合的方式。首先,通过相关性分析、分组对比和敏感性分析,识别哪些 Wi-Fi 状态和 WebRTC 传输指标与模型准确率、TTFT 和 ITL 变化关系最为密切。其次,通过多变量回归、决策树或轻量级机器学习模型,建立从跨层状态到模型 QoE 的预测关系,用于判断不同网络状态和传输行为对模型任务效果的影响程度。最后,针对不同视觉任务分别分析关键影响因素,形成任务类型与传输敏感因素之间的对应关系。 + +该部分研究预期形成三类结果。第一,获得 Wi-Fi 底层状态对 WebRTC 拥塞控制、码率调整和视频帧传输时延的影响规律;第二,获得视频传输质量、帧新鲜度和模型任务准确率、TTFT、ITL 之间的关联关系;第三,筛选出对模型 QoE 影响显著的跨层状态和控制变量,为后续强化学习优化方法中的状态空间、动作空间和奖励函数设计提供依据。通过该部分研究,本文将从实验数据层面说明为什么需要进行 WebRTC--Wi-Fi 双向跨层协同优化,以及联合优化应重点关注哪些网络状态、视频传输参数和模型服务质量指标。 +% 本文将利用联合仿真平台搭建视频传输与边缘视觉推理实验场景,在不同Wi-Fi信道质量、背景流量强度、竞争终端数量和视频配置下运行实验。实验中将同时采集Wi-Fi层、WebRTC层和模型任务层的信息。Wi-Fi层主要反映无线链路和接入竞争状态,包括信道忙碌程度、调制编码方式、无线重传、信号质量、发送队列和竞争时延等。WebRTC层主要反映端到端传输行为,包括带宽估计、往返时延、丢包率、抖动、发送速率、视频帧大小、视频帧传输时延和发送队列状态等。模型任务层则用于反映最终业务效果,包括输入视频分辨率、帧率、视频帧新鲜度、模型推理时延、模型响应时延、任务准确率和任务成功率等。 + +% 通过这些跨层数据,本文将分析Wi-Fi状态对WebRTC传输行为的影响。例如,当无线竞争加剧时,WebRTC观测到的RTT、丢包、抖动和带宽估计会如何变化;当信道质量下降或背景流量增加时,WebRTC会如何调整视频码率、帧率和分辨率;当发送队列发生积压时,视频帧是否会出现明显的长尾时延或过期现象。这一部分分析有助于判断WebRTC仅依靠端到端反馈是否能够及时、准确地反映Wi-Fi内部状态。 + +% 进一步地,本文将分析WebRTC视频传输变化对视觉模型任务性能的影响。对于实时视觉模型而言,视频质量下降并不一定等同于任务性能下降,不同任务对视频输入的敏感性可能不同。例如,细粒度识别或文字理解任务可能更依赖图像分辨率和空间细节,动态事件理解任务可能更依赖帧率和时间连续性,而交互式视觉问答或机器人感知任务则可能更加关注视频帧的新鲜度和响应及时性。因此,本文将比较不同视频配置、不同网络损伤和不同任务类型下模型性能的变化,分析哪些网络和视频指标更能反映模型任务质量。 + +% 该部分研究的产出是Wi-Fi、WebRTC和视觉模型任务性能之间的跨层影响规律。它将回答为什么需要进行跨层联合优化,以及联合优化应重点关注哪些状态和参数。换言之,该部分为后续方法设计提供数据依据和问题边界。 + +\section{面向视觉模型服务质量的WebRTC–Wi-Fi联合优化方法} + +在完成跨层关联分析之后,本文将进一步研究面向视觉模型服务质量的 WebRTC–Wi-Fi 双向跨层协同优化方法。与传统实时视频传输优化主要关注网络吞吐量、端到端时延、丢包率或人类观看体验不同,本文拟将视觉模型任务的QoE作为最终优化目标。在此基础上,本文拟从研究内容和技术路线两个方面开展工作。 + +\subsection{研究内容} +本文拟建立 WebRTC 与 Wi-Fi 之间的双向跨层信息交互机制。 + +\textbf{(1)Wi-Fi状态辅助的WebRTC拥塞控制与FEC策略: }使 WebRTC 能够感知 Wi-Fi 层的信道竞争、无线重传、链路速率变化和队列积压等底层状态,从而辅助其进行码率调整、发送节奏控制和 FEC 冗余配置。相比仅依赖端到端 RTT、丢包率和带宽估计的传统 WebRTC 控制方式,引入 Wi-Fi 显式状态有助于减少无线环境下拥塞判断的滞后和误判。 + +% 现有WebRTC拥塞控制主要依赖往返时延、丢包率、分组到达时间和带宽估计等端到端反馈判断网络状态。在Wi-Fi网络中,信道竞争、无线重传、链路速率变化和队列积压都会影响WebRTC观测到的时延和丢包,但WebRTC难以判断这些变化究竟来自真实网络拥塞、无线竞争加剧还是短时链路波动。因此,本文拟建立Wi-Fi状态到WebRTC的上行反馈机制,使WebRTC能够直接获取信道忙碌程度、调制编码方式、无线重传次数、链路速率、发送队列长度等Wi-Fi的MAC层和物理层状态。 + +% 基于这些显式Wi-Fi状态,WebRTC可以更加准确地判断当前无线链路的可用能力,并据此调整拥塞控制策略。当Wi-Fi状态显示信道竞争加剧或链路速率下降时,WebRTC可以提前降低发送码率、调整视频帧率或改变发送节奏,避免持续向无线队列注入超过链路承载能力的数据;当无线重传和丢包风险上升时,WebRTC可以结合视频帧重要性和模型服务需求动态调整FEC冗余率,而不是对所有数据采用相同的冗余保护强度。通过这种方式,WebRTC的传输控制不再只依赖端到端试探,而是能够结合Wi-Fi内部状态进行更加及时和有针对性的自适应调整。 + +\textbf{(2)WebRTC帧级信息驱动的Wi-Fi队列管理: }使 Wi-Fi 层能够感知 WebRTC 提供的视频帧级信息,包括帧类型、帧级截止时间、数据重要性、FEC 冗余属性和过期状态等。基于这些信息,Wi-Fi 层可以在队列管理和分组调度过程中对不同数据进行差异化处理。例如,对关键帧和高重要性数据包给予更高传输优先级,对已经超过任务截止时间的过期帧进行及时清理,对 FEC 冗余数据根据当前链路状态和主数据包传输情况动态调整优先级。通过这种方式,Wi-Fi 层不再无差别传输所有视频数据,而是能够围绕视觉模型任务需求进行无线资源分配。 + +% 因此,本文拟将WebRTC中的视频帧类型、帧级截止时间、数据包所属帧的重要性、冗余数据标识和过期状态等信息传递给Wi-Fi层,使Wi-Fi能够根据视频数据的实时价值进行差异化处理。在无线队列资源有限或信道竞争严重时,Wi-Fi可以优先保障关键帧和高重要性数据包;对于已经超过截止时间的过期帧,可以将其对应的数据包从Wi-Fi队列中清除,以减少无效传输和队列阻塞;对于FEC冗余数据,可以根据当前链路状态和主数据包传输情况动态调整其优先级。这样,Wi-Fi层不再只是被动传输WebRTC注入的所有数据,而是能够根据WebRTC提供的帧级语义、时限和冗余信息进行更加有效的无线资源分配。 + +\textbf{(3)模型QoE驱动的跨层联合决策: }在双向跨层信息交互的基础上,本文拟将 Wi-Fi 状态感知、WebRTC 帧级信息下传和模型服务质量反馈结合起来,形成面向实时视觉模型推理业务的跨层协同优化机制,使系统能够在视频质量、传输时延、帧新鲜度和无线资源利用之间进行联合权衡,从而提升模型任务准确率并降低模型任务响应时延。 + + +% 在双向跨层信息交互的基础上,本文将视觉模型的QoE作为联合优化目标。这里的QoE主要包括模型任务准确率、响应时延、输入信息新鲜度、任务成功率和推理稳定性等指标。本文将模型QoE作为上层反馈信号,用于指导WebRTC在码率、FEC冗余率等方面进行调整。通过这种方式,系统能够使跨层传输策略更接近实时视觉模型服务的最终需求。具体而言,如果任务本身对图像清晰度并没有很高的要求,那么系统就不必追求高码率视频,而分配更多资源满足模型对实时性的需求,反之亦然。 + +% 具体而言,当模型准确率对空间细节较为敏感时,系统可以在网络允许的范围内优先保障较高分辨率或关键帧质量;当模型任务更加依赖实时性时,系统可以优先降低排队时延和过期帧比例,而不是盲目提高视频码率;当网络状态恶化时,系统可以根据模型QoE下降程度判断码率、冗余率和队列策略的调整幅度。由此,WebRTC和Wi-Fi的联合优化不再仅以吞吐量、丢包率或传统视频QoE为目标,而是直接围绕实时视觉模型的最终服务效果进行决策。 + +\subsection{技术路线} +本文拟将 WebRTC–Wi-Fi 联合优化问题建模为一个面向模型 QoE 的序贯决策问题。系统以固定控制周期运行,在每个控制周期内采集 Wi-Fi 层、WebRTC 层和模型任务层的跨层状态,并根据当前状态选择下一阶段的传输控制和无线调度动作。该问题可表示为马尔可夫决策过程,其中状态空间、动作空间和奖励函数分别设计如下。 + +首先,状态空间 $s_t$ 由 Wi-Fi 层状态、WebRTC 层状态和模型任务层状态共同组成: + +\begin{equation} + s_t = \left[s_t^{wifi}, s_t^{rtc}, s_t^{model}\right] +\end{equation} + + + +其中,Wi-Fi 层状态 $s_t^{wifi}$ 用于描述无线链路和接入竞争情况,主要包括信道忙碌比例、物理层速率或 MCS、无线重传率、发送队列长度、队列等待时延、竞争时延和背景流量强度等。WebRTC 层状态 $s_t^{rtc}$ 用于描述端到端视频传输行为,主要包括当前发送码率、目标码率、带宽估计值、RTT、丢包率、抖动、FEC 冗余率、视频帧大小、关键帧比例、视频帧完成传输时延和发送队列状态等。模型任务层状态 $s_t^{model}$ 用于描述视觉模型业务的服务质量,主要包括近期模型任务准确率、首 token 响应时间(Time to First Token, TTFT)、输出 token 间隔(Inter-Token Latency, ITL)的均值和高分位数等。 + +其次,动作空间 $a_t$ 由 WebRTC 侧控制动作和 Wi-Fi 侧调度动作组成: + +\begin{equation} +a_t = \left[a_t^{rtc}, a_t^{wifi}\right] +\end{equation} + +其中,WebRTC 侧动作 $a_t^{rtc}$ 主要包括目标码率调整、发送节奏调整、FEC 冗余率调整、视频帧率调整和分辨率等级调整等。Wi-Fi 侧动作 $a_t^{wifi}$ 主要包括关键帧优先级调整、普通帧优先级调整、FEC 冗余包优先级调整、过期帧清理阈值调整以及不同队列的调度权重调整等。考虑到连续动作空间会增加训练难度,本文初步拟采用离散化动作集合,例如对码率、FEC 冗余率、帧率和队列优先级分别设置“提高、保持、降低”三类动作,并根据后续实验结果进一步扩展为更细粒度的连续控制。 + +最后,奖励函数以模型 QoE 为核心进行设计。本文重点关注模型任务准确率和模型任务响应时延,其中响应时延包括 TTFT 和 ITL 的分布特征。对于第 $t$ 个控制周期,奖励函数可设计为: + +\begin{equation} +r_t = +\alpha \widetilde{A}t +-\beta_1 \widetilde{L}{t}^{TTFT} +-\beta_2 \widetilde{L}{t}^{ITL} +-\beta_3 \widetilde{F}{t}^{stale} +-\beta_4 \widetilde{C}_{t}^{overhead} +\end{equation} + +其中,$\widetilde{A}t$ 表示归一化后的模型任务准确率或任务成功率,$\widetilde{L}{t}^{TTFT}$ 表示归一化后的 TTFT 时延惩罚,$\widetilde{L}{t}^{ITL}$ 表示归一化后的 ITL 时延惩罚,$\widetilde{F}{t}^{stale}$ 表示输入视频帧过期或新鲜度下降带来的惩罚,$\widetilde{C}_{t}^{overhead}$ 表示过高码率、过高 FEC 冗余或过度占用无线资源带来的系统开销。$\alpha,\beta_1,\beta_2,\beta_3,\beta_4$ 为权重参数,可根据不同任务类型进行设置。 + +由于 ITL 的尾部时延会直接影响模型输出的连续性和交互稳定性,本文不仅考虑 ITL 的平均值,也将考虑其高分位数,例如 90 分位数或 95 分位数。因此,$\widetilde{L}_{t}^{ITL}$ 可以设计为 ITL 的均值和高分位数的加权组合,以同时反映整体时延水平和长尾时延风险。 + +基于上述建模,本文拟采用强化学习方法学习跨层控制策略。强化学习智能体以跨层状态 $s_t$ 作为输入,以联合控制动作 $a_t$ 作为输出,并通过奖励函数 $r_t$ 引导策略优化。训练阶段将在联合仿真平台中构建多种 Wi-Fi 网络条件和视觉任务场景,使智能体学习不同网络状态和任务需求下的传输控制策略;验证阶段将与原生 WebRTC/GCC 和 BBR(瓶颈带宽与往返传播时间)基线方法进行对比,并通过消融实验分析 Wi-Fi 状态反馈、WebRTC 帧级信息下传和模型 QoE 反馈对系统性能提升的贡献。 + +\section{基于联合仿真平台的多场景实验验证} + +\subsection{研究内容} + +本文将基于前述闭环联合仿真平台,对所提出的WebRTC–Wi-Fi双向跨层协同优化方法进行实验验证。实验将围绕多类实时视觉模型业务场景展开,以验证所提出方法相比其他方案的有效性和泛化能力。具体而言,本文将设计以下几个典型的实时视觉模型业务场景: + +\begin{itemize} +\item \textbf{具身智能场景}:在该场景中,机器人作为客户端,通过Wi-Fi连接到VLA服务端。机器人将上传自身摄像头拍摄的第一视角视频,服务端模型根据当前画面生成环境理解、动作建议或控制指令,使得机器人可以完成各种任务。 +\item \textbf{实时视频对话场景}:在该场景中,用户使用的对话终端作为客户端,VLM作为服务端。用户通过摄像头与模型进行连续交互,模型需要根据当前视频内容及时生成文本回答。 +\item \textbf{异常事件识别场景}:在该场景中,监控摄像头作为客户端,VLM作为服务端。系统需要在连续视频流中及时发现关键事件并返回结果,例如识别异常行为、检测安全隐患或监测设备状态。 +\end{itemize} + +\subsection{技术路线} + +本文拟使用对比实验和消融实验开展实验验证。本文将基于联合仿真平台构建可控的实时视觉模型业务实验环境,构建上述三个不同的场景,并统计模型QoE指标。 + +在对比实验方面,本文拟将所提出的 WebRTC--Wi-Fi 双向跨层协同优化方法与典型的 GCC 和 BBR 类拥塞控制基线方案进行比较,如表~\ref{tab:1} 所示。通过该组实验,可以评估本文方法相较于当前经典方案的整体优势。 + +\begin{table}[htbp] +\centering +\caption{对比实验设计} +\label{tab:1} +\begin{tabular}{p{0.18\textwidth} p{0.34\textwidth} p{0.38\textwidth}} +\hline +实验方案 & 方法说明 & 对比目的 \\ +\hline +GCC & 采用 WebRTC 默认拥塞控制机制,仅依据端到端 RTT、丢包率和到达时间反馈进行码率调整 & 评估仅依赖端到端反馈的传统实时视频传输方法在动态 Wi-Fi 环境下的性能 \\ +\hline +BBR & 采用基于瓶颈带宽和往返时延估计的拥塞控制方法,通过估计网络可用带宽和最小 RTT 来调节发送速率 & 作为模型式拥塞控制基线,评估不依赖传统丢包驱动机制的速率控制方法在实时视觉模型业务中的适用性 \\ +\hline +本文方法 & 同时引入 Wi-Fi 状态反馈、WebRTC 帧级信息下传和模型 QoE 驱动的联合决策机制 & 验证双向跨层协同优化相较于传统方法的综合优势 \\ +\hline +\end{tabular} +\end{table} + +在消融实验方面,本文将分别去除或简化所提出方法中的关键模块,以分析不同机制对最终性能提升的贡献。具体消融实验设计如表~\ref{tab:2} 所示。 + +\begin{table}[htbp] +\centering +\caption{消融实验设计} +\label{tab:2} +\begin{tabular}{p{0.22\textwidth} p{0.34\textwidth} p{0.34\textwidth}} +\hline +消融方案 & 去除或简化的模块 & 分析目的 \\ +\hline +去除 Wi-Fi 状态反馈 & WebRTC 不再获取信道忙碌比例、无线重传率、链路速率和队列状态等 Wi-Fi 底层信息 & 分析 Wi-Fi 显式状态感知对拥塞判断、码率控制和 FEC 调整的贡献 \\ +\hline +去除 WebRTC 帧级信息下传 & Wi-Fi 层不再获取视频帧类型、帧级截止时间、数据重要性和冗余属性等信息 & 分析帧级语义信息对 Wi-Fi 队列管理、关键帧保障和过期帧清理的贡献 \\ +\hline +去除模型 QoE 反馈 & 优化目标退化为传统网络 QoS 或视频传输质量指标,不再直接考虑模型准确率、TTFT 和 ITL & 分析模型 QoE 驱动优化相较于传统网络指标优化的必要性 \\ +\hline +完整方法 & 保留 Wi-Fi 状态反馈、WebRTC 帧级信息下传、模型 QoE 反馈、过期帧清理和 FEC 自适应机制 & 作为消融实验中的完整方案,用于衡量各模块叠加后的综合效果 \\ +\hline +\end{tabular} +\end{table} +通过这种方式,可以判断性能提升究竟主要来自Wi-Fi显式状态感知,还是来自WebRTC向Wi-Fi提供的帧级时限和重要性信息,或者来自模型QoE对联合决策的引导,从而解释各个跨层模块对最终性能提升的具体作用。 + + +% 首先,在实验场景构建方面,本文将基于联合仿真平台搭建可控的实时视觉模型业务实验环境。客户端侧负责视频采集、WebRTC 发送和任务请求生成;ns-3 侧负责模拟 Wi-Fi 网络中的信道竞争、速率变化、重传、排队和丢包过程;服务端侧部署 VLM/VLA 推理服务,接收视频输入并返回模型响应。通过调整 Wi-Fi 信道条件、背景流量数量、竞争终端数量和视频输入配置,构建从轻载到重载、从稳定链路到动态链路的多种实验场景。 + +% 在每类场景中,本文将设置不同Wi-Fi网络条件,包括信道质量变化、背景流量干扰、多终端竞争、链路容量波动和队列拥塞等,以模拟实时视觉业务在无线接入环境中可能遇到的典型问题。实验首先将本文方法与现有代表性方案进行对比,包括原生WebRTC/GCC方案、传统基于端到端反馈的WebRTC优化方案,以及面向实时业务的Wi-Fi侧QoS或队列优先级优化方案。通过这些对比,可以评价本文方法相比传统传输层自适应方法和单独Wi-Fi侧优化方法,在网络传输、视频质量和模型服务效果方面是否具有整体优势。 + +% 在完成与外部基线方案的总体对比后,本文将进一步开展消融实验,用于分析本文方法内部不同机制的贡献。消融实验将分别去除或简化Wi-Fi状态反馈、WebRTC帧级信息下传和模型QoE反馈三个模块,观察系统性能变化。通过这种方式,可以判断性能提升究竟主要来自Wi-Fi显式状态感知,还是来自WebRTC向Wi-Fi提供的帧级时限和重要性信息,或者来自模型QoE对联合决策的引导。这样既能够证明本文方法相较于现有方案的有效性,也能够解释各个跨层模块对最终性能提升的具体作用。 + diff --git a/text/04_prev.tex b/text/04_prev.tex new file mode 100644 index 0000000..a3a686f --- /dev/null +++ b/text/04_prev.tex @@ -0,0 +1,26 @@ +\chapter{可行性分析与预期成果} + + +\section{前期工作与研究基础} +本研究已经开展了一系列前期工作,包括实验平台搭建以及研究设备的采购等。 + +在Wi-Fi研究和ns-3仿真平台的使用上,本文作者已经有了一定的研究基础,在ICNS3 2025会议上发表了题为“ns3-WiMacStat: Enabling In-Depth WiFi MAC Performance Analysis via RadioTap-Based Statistics”的论文,介绍了一个基于ns-3的Wi-Fi性能分析工具,能够提供丰富的MAC层统计信息,为本研究中Wi-Fi状态感知和优化提供了技术积累\cite{ns3_wimac}。 + +另外,本文作者已经设计并完成了本文研究内容中说明的联合仿真平台的初步版本,能够支持真实视觉模型业务的闭环仿真,并实现了基于前瞻量的保守时间同步机制,确保了仿真过程中事件的时序因果一致性。这为后续的跨层关联分析和联合优化方法设计提供了坚实的实验基础。 + +最后,本课题组已经专门采购了边缘算力平台和Wi-Fi开发板,为本课题的实验提供了必要的硬件支持。这些设备将用于部署和测试实时视觉模型推理业务,并验证所提出的WebRTC–Wi-Fi联合优化方法在实际场景中的效果。 + +综上所述,本文在研究基础与实验准备方面已具备扎实条件,且在 ns-3 仿真平台与 Wi‑Fi 研究上取得了阶段性成果,足以支撑本课题的开展。 + +\section{预期成果} +本研究的预期成果主要包括以下几个方面: +\begin{itemize} + \item 本文预期形成一套面向GenAI业务无线网络分析的通用闭环联合仿真平台。该平台能够在ns-3仿真Wi-Fi网络中接入真实视频客户端和实际部署的VLM/VLA服务,支持视频流上传、模型推理和结果返回的完整业务闭环。与传统使用预设流量模型的网络仿真相比,该平台能够直接观察无线网络状态变化对真实智能业务性能的影响,可为后续研究GenAI业务、实时视觉模型推理、具身智能和边缘多模态服务的无线网络性能提供可靠实验基础。 + + \item 本文预期形成面向实时视觉模型推理业务的跨层传输优化研究成果。相关成果有望推动无线网络优化目标从传统网络QoS和视频QoE进一步扩展到模型服务质量层面,为实时视觉模型、具身智能和多模态智能体等新型GenAI业务提供更加有效的网络支撑。同时,相关研究将有助于揭示Wi-Fi网络状态、实时视频传输行为与模型任务性能之间的关系,为后续开展面向智能业务的跨层协同优化研究提供参考。 + + \item 本课题预期完成两篇学术论文。其中一篇围绕面向实时视觉模型业务的联合仿真平台展开,重点介绍平台设计、时间同步机制、闭环业务接入和无线网络实验能力;另一篇围绕WebRTC–Wi-Fi双向跨层协同优化方法展开,重点介绍跨层信息交互机制、模型QoE驱动的传输控制方法以及多场景实验验证结果。 + + \item 本文预期申请发明专利一项,内容可围绕面向实时视觉模型推理的WebRTC–Wi-Fi跨层协同传输方法。 +\end{itemize} + diff --git a/text/05_plan.tex b/text/05_plan.tex new file mode 100644 index 0000000..b25650e --- /dev/null +++ b/text/05_plan.tex @@ -0,0 +1,40 @@ +\chapter{研究计划} + +本课题研究计划如下: + +第一阶段(2026年6月-2026年8月) + +完善并测试本项目所用的联合仿真平台,撰写其设计与实现相关的学术论文,并投稿至相关会议或期刊,同时准备开源事宜。 + +第二阶段(2026年9月-2027年2月) + +基于联合仿真平台,完成Wi-Fi网络状态、WebRTC传输行为和视觉模型任务性能之间的跨层关联分析,本阶段预期明确Wi-Fi状态如何影响WebRTC拥塞控制和视频传输行为,以及WebRTC传输质量变化如何进一步影响实时视觉模型服务效果。通过该阶段研究,确定后续联合优化方法需要重点关注的跨层状态、控制对象和评价指标。 + +第三阶段(2027年3月-2027年8月) + +本阶段将在跨层关联分析结果基础上,调研并探索其实现路径,设计面向视觉模型服务质量的WebRTC–Wi-Fi联合优化方法。本阶段预期完成优化方法设计、主要功能模块实现和初步调试。 + +第四阶段(2027年9月-2028年2月) + +本阶段将对所提出的联合优化方法进行全面实验验证,评估其在不同Wi-Fi网络条件、不同视觉任务类型和不同模型服务质量指标下的性能表现,并与现有方法进行对比分析。本阶段预期形成完整的实验结果和分析,并撰写相关学术论文和相关专利。 + +第五阶段(2028年3月-2028年6月) + +完成毕业论文撰写并准备毕业答辩。 + + +\begin{table}[h] +\centering +\caption{研究计划} +\begin{tabular}{cc} +\hline +\textbf{时间} & \textbf{任务} \\ +\hline +2026年6月-2026年8月 & 完善联合仿真平台,撰写论文并投稿 \\ +2026年9月-2027年2月 & 跨层关联分析,确定优化重点 \\ +2027年3月-2027年8月 & 设计并实现联合优化方法 \\ +2027年9月-2028年2月 & 实验验证与对比分析,撰写论文和专利 \\ +2028年3月-2028年6月 & 完成毕业论文与答辩准备 \\ +\hline +\end{tabular} +\end{table} \ No newline at end of file diff --git a/text/06_conclusion.tex b/text/06_conclusion.tex new file mode 100644 index 0000000..538fd1d --- /dev/null +++ b/text/06_conclusion.tex @@ -0,0 +1,3 @@ +\chapter{总结} + +本文面向实时视觉模型推理业务中的无线传输问题,围绕WebRTC视频传输、Wi-Fi链路状态与视觉模型QoE之间的跨层关系展开研究。本文首先构建基于ns-3和ns3-ai的闭环联合仿真平台,为真实VLM/VLA业务的无线网络分析提供可控实验环境。在此基础上,本文拟通过实验分析Wi-Fi状态、WebRTC传输行为与模型服务质量之间的关联,并提出一种面向视觉模型QoE的WebRTC–Wi-Fi双向跨层协同优化方法,使Wi-Fi状态能够辅助WebRTC拥塞控制和FEC策略,同时使WebRTC帧级信息能够指导Wi-Fi队列管理、优先级保障和过期帧清理。预期本文能够为GenAI业务的无线网络分析提供可靠平台,为实时视觉模型推理提供有效的跨层传输优化方案,并形成相关论文和专利成果。 \ No newline at end of file