crф D╛дш0/.~~АВЖКОТЬж░░┤╕╝└╩цЁ·.2<<FVVVVVVVfffpzЦа░╠╘,ор╧O┼уKП>6ЕB╪Uа    Аа    BЄШ│nНсGЫ W>╧▄/2Model0/.~~АВЖКОТЬж░░┤╕╝└╩цЁ·.2<<FVVVVVVVfffpzЦа░╠╘,ор╧O┼уKП>6ЕB╪U     Аа    BЄШ│nНсGЫ W>╧▄/2Model0/.~~АВЖКОТЬж░░┤╕╝└╩цЁ·.2<<FVVVVVVVfffpzЦа░╠╘,ор╧O┼уKП>6ЕB╪U╪    Аа    BЄШ│nНсGЫ W>╧▄/2Model╕ c№Чe 8О╖ФЬDDDDDDpd`pt``p`p``p`p```p`p`p`a`p`p`p`@@0 0 0``````p`@@@@@@@@`p``````p`p`p`p`p`p`p`p`p`p`p`p`p`p`p`p`p`p`p`p``````p`p`p`p`p`p`p`p`p`p`p`p`p``````ap`d``p`p`p(@@@@@@@`ZcЎ#╣pY ^8р                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 ╛` ZcЎFПM ^8╛`ZcЎшЩЇ┐к^8  @А @А @А @А @А @А @А @А ╛`ZcЎ^8╛` ZZЎ0╫╚ ^@8Ри╛` c· ЧЯ?Я1,дПП A@/╨7А√░wЭD:\DEVELOPMENT\RUBY_ODATA\TEST\SAMPLESERVICE\APP_DATA\_TESTDB.MDF В d╨ЧЯЕЇC╨4aь:мЛ4SKТ╓mL╒хЪL ь:мЛ4SKТ╓mL╒хЪПА√░wЭу ╩мIv"ЬLШ;',lу╦Z*`┬%,lТ  HП2╡и0%D+ ╘Ъ─+ ╘Ъ2sys8└` Z,Ў @,C^ ^ 8╛` Z° ^ 8└`┬ ,Кt @E`Цр&sys8└`#@\Д xVUH╦0#FG + ╘Ъ + ╘Ъ8PRIMARY0#2@ + ╘Ъ + ╘Ъ:db_owner0#2@ + ╘Ъ + ╘ЪFdb_accessadmin0#2@ + ╘Ъ + ╘ЪJdb_securityadmin0#2@ + ╘Ъ + ╘Ъ@db_ddladmin0#2@ + ╘Ъ + ╘ЪLdb_backupoperator0#2@ + ╘Ъ + ╘ЪDdb_datareader0#2@ + ╘Ъ + ╘ЪDdb_datawriter0#2@ + ╘Ъ + ╘ЪLdb_denydatareader0#2 @ + ╘Ъ + ╘ЪLdb_denydatawriter0#2 + ╘Ъ + ╘Ъ4guest0#2 + ╘Ъ + ╘Ъ0dbo0#2 + ╘Ъ + ╘Ъ0sys0#2 + ╘Ъ + ╘ЪNINFORMATION_SCHEMA0#`+ ╘Ъ`+ ╘Ъ8PRIMARY0# Ж+ ╘Ъэ+ ╘Ъ\Microsoft.SqlServer.Types┬v2ювb╥ШrвB`(Ё Z,Ў@<!$^ 8`p╛`IВ3у[ЧЯ|╢┼l═IWV   IГ I I    I I I I I[[\ Ieef I""ttu I))kol  I,,    I.. I11 I22KKL I33 I66|У} I77МСН I::QQR I<<АОБ I@@X IAA ICC IDD IEEЖЗ IGG IHH III IJJaab IKKggh INN IZZЭBA I[[!!" I\\%%& I]]''H I^^ I__ I`` IaaИИЙ I556 I]]^ I""vvw I))mrn I,,   I.. I22MMN I33 I66~~ I::SST I@@YYZ ICC IEE IJJccd IKKiij INN IZZЯЯ I[[##$ I]]IIJ I__ I`` Iaa I__` I""xxy I.. I22OOP ICC IEE I__ I`` I""zz{ I.. I< < ID I^ I. I_ I  I I   I  I  I Ibb Ibb I I I I  I` I I I I  I  I  I  I  I  I;; IRR IUU IUU ╗n!╘З:эаS д╣l╥Е8ыЮQ╖j╨Г6Ь Ь O  ╡ ┐h W ╬ Б 4 ч Ъ M t│ f  ╠2хШK■▒d'╩}0уЦI№пb╚{.сФrG·н` ZЎ ДЫП0 ^В8РА╛`В9^ JЧЯ}Gсn╜@9ЕR:А}9^\9А}9m MIА}9#А}9А}91* А}9 ° А}9SOА}9 МА}9ВА}9""< @,А}9))юГ-А}9,,8%А}9.. ▄+ А}911r  А}922" E1А}933 6"А}966в ;'А}977:А}9:: /' А}9<<жuА}9@@6#А}9AA А}9CC А}9DDз) R А}9EE А}9GG# А}9HH63А}9II4┤А}9JJХА}9KKjА}9NN$!А}9ZZaWА}9[[c i! А}9\\pWА}9]]cА}9^^z0 А}9__ V( А}9`` ├?! А}9aaА}9mА9 А}9""< А}9))Dю А}9,, А}9..  А}922" А}933D А}966Dв А}9:: А}9@@ А}9CC  А}9EEF А}9JJХА}9KKjА}9NNА}9ZZa  А}9[[cА}9]]  А}9__  А}9``  А}9aa А}9DagА}9""< А}9..ПСА}922" А}9CCF А}9EE  А}9__)+А}9``F%+ А}9""<  А}9..)+А}9Xз╦v м1d1А}9Xз╦v /5/5А}9╩я│x м1d1А}9╩я│x /5/5А}9<8Ьz м1d1А}9<8Ьz /5/5А}9bb ,А9bbF А9bbF А9u\Р{ TDА9u\Р{B4:17А9оАД| 30А9 оАД|А9&А9 А9FА9  А9 Xз╦v м1d1А9 ╩я│x м1d1А9 <8Ьz м1d1А9;;А9;;А9RR74А9RR74А9UUа А9UUФУ А977:А9 чдx}у] А9 ╔l~[А9чдx}╫] А9 ╔l~O А9чдx}  А9Z=й>А9Z= ?, А9Z=  А    ╬j,ю╕z<■КТT╪Ъ\рвd░└&шкl.Ё ▓ t 6 ° ║ | >  ┬ Д F  ╩ М N r В╥ Ф V  ┌Ь^ ▐bтдf(ъмn0Є┤v8ц·╝~@─ЖH ╠ОP╘ЦX4▄Ю`┬EЦh И,5Б▌n` ZEЎ И#N ^8╛`┬EuЙ И<┼?i&)AutoCreatedLocal` ZEЎ И3MЛ^8╛`1:2Lа ╚Чet╗С\Е:H0А$:HА%:HнА-:I$А:I0А:I$А:IА%:I8А-:I8А1:IпА5:I=А7:I 8А? :I 8АC :I $АG :I АW :I А_ :IАg:IАo:I8Аw:I=А{:I=АГ:I8АЛ:Iе8А  :I$АП:I8АЯ:Iе8А■ :I$Аг:IчА¤ :Iч№ :J│*0А:J│*8А:J│*8А :J│*8А :J│*8А:J│*8А:Ko0А:Ko8А:Ko8А :Ko8А :Ko8А:Ko8А:N0А:N8А:N8А :N$А :N8А:Zc8А:Zc8А:Zc8А :Zcч@А  :[c8А:[c8А:[c8А :[c0А:[c8А:[cпА:[c8А:[cпА:[ cпА :[ Ш8А :[ ШпА :[ Шч@   :\p8А:I0А│:R8А:R8А:R8А :RнА:R8А:RА:RА$:RА,:U8А:UчАА    :U8А:U0А Кe@Ў ╤ м З b =  є ╬ й Д _ :  Ё ╦ ж Б \ d&шкl.Ё ▓ t 6 ° ║ | > ┬ Д КL╨ТT╪Ъ\рF  ╩ М N  ╥ Ф V  ┌Ь^ тдfв(ъмn0Є┤v8·╝~@─ЖH ╠ОP╘ЦX▄Ю`В~~ Кгэ╛s.В) 8 ) 8 ) п)=)=) !) 8 )) н- ) н5 ) 0= ) 0> ) 8 ? ) C) 8 K) 0) )  ) 8 ) ч╨4  ) п)еU■ )е¤ )ч╨4№ ) 8 ) = ) = ) 0) 8 ) 8 ) 8 ) 8 ) п) п)" 8 )" ч╨4  )" 8 )" 0 )" 8 )" п)" 8 )" 0)" 8  )" = )" =$ )) 8 )) 4)) 8 ))ч╨4  )) 0)) 8 )) 4)) 0)) 0 )) 8  0| H└▄ьА88 4444 syspermissions @0R @  |!р· Б88 00 44ч╨4      sysproperties@0R @ 86п┘%%7$Б0088 88 44  44 sysdepends@0R  99 %:а║╩Б88 44 0088 44  0088 88 44  44 ncsysdepends1@0R@ nАЮоА88 ucsysreferences@0R   а└╨А88 88 nc1sysreferences@0R   а└╨А88  88 nc2sysreferences@0R@ %Аж╢А44sysfulltextcatalogs@0R а╩┌Ач╨4      44ncsysfulltextcatalogs@0RДДEIЕ~Иclust0RВВ'*Г~Иclust0RКУ"%ЛЮи88  clust0RОО%)П~Иclust0R ИР)-ЙЮи88  clust0R ^psysserefs0RЖЖЗ╛╚00 clust0R М^psysowners0R[[А\~Ж88 clst0R]] ^Юдч╨4  88 nc10R __ag`Ь╛─ееU  88 88 nc20R OS^psysftinds0ROS~Ж88 clst88  88 88 0088 88 88 nc10R(0088 88  88  88 ппclust0REI~Иclust0R'*~Иclust0R"%Юи88  clust0R%)~Иclust0R )-Юи88  clust0R^psysseref▐ ▒ Д W * ¤╨гvIя┬Хh;с┤ЗZ-╙жyLЄ┼Шk>ф╖К]0╓й|O"ї╚ЫnAч║o`ВfЦ h╣/Е0┬8{` ZЎ h░JПУЛ^8╛`┬*_Я h╟╢░═0*FG ?PRIMARY8└` ZЎ h┐зUЛ^8ь└╛`В°lмЧТ╩ЕШ$╛0°а    Аq*-1╚!мАX4╠▐q╬АFG ?PRIMARY╕{_Кmodeldeve:\sql10_main_t\sql\mkmastr\databases\objfre\i386\model.mdf0° @     q*-1╚!мА4╠▐q╬АFG ?PRIMARY╕_Рmodelloge:\sql10_main_t\sql\mkmastr\databases\objfre\i386\modellog.ldf0°а    Аq*-1╚!мАX4╠▐q╬АFG ?PRIMARY╕{_└modeldevc:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\Template Data\model.mdf0° @     q*-1╚!мА4╠▐q╬АFG ?PRIMARY╕_╞modellogc:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\Template Data\modellog.ldf<°а    АBЄШ│nНсGЫ W>╧▄/2q*-1╚!мА4╠▐q╬АFG ?PRIMARYШ_МModelD:\Development\ruby_odata\test\SampleService\App_Data\Model.mdf<° ? а═(ь░їDВs╗Шї@Шq*-1╚!мА4╠▐q╬АFG ?PRIMARYШ_ЬModel_logD:\Development\ruby_odata\test\SampleService\App_Data\Model_log.LDF0°а    А    BЄШ│nНсGЫ W>╧▄/2  ╛ХБ ЧБ  `г║ И╕ХБ   Аг║ аA1Б║ аг║ Ш_МModelD:\Development\ruby_odata\test\SampleService\App_Data\Model.mdf0° ?     а═(ь░їDВs╗Шї@Ш  ╛ХБ ЧБ  `г║ И╕ХБ   Аг║ аA1Б║ аг║ Ш_ЬModel_logD:\Development\ruby_odata\test\SampleService\App_Data\Model_log.LDF0°╪    АBЄШ│nНсGЫ W>╧▄/2   ЧБ  `г║ И╕ХБ   Аг║ аA1Б║ аг║ Ш_ОModelD:\Development\ruby_odata\test\SampleService\App_Data\TestDB.mdf0° ? а═(ь░їDВs╗Шї@Ш   ЧБ  `г║ И╕ХБ   Аг║ аA1Б║ аг║ Ш_ЮModel_logD:\Development\ruby_odata\test\SampleService\App_Data\TestDB_log.ldf0°╪    АBЄШ│nНсGЫ W>╧▄/2   ЧБ  `г║ И╕ХБ   Аг║ аA1Б║ аг║ Ш_РModeld:\Development\ruby_odata\test\SampleService\App_Data\_TestDB.mdf0° ? а═(ь░їDВs╗Шї@Ш   ЧБ  `г║ И╕ХБ   Аг║ аA1Б║ аг║ Ш_аModel_logd:\Development\ruby_odata\test\SampleService\App_Data\_TestDB_log.ldf | ZЎ h═HПкЛ^8╛`:0f №ЧЯ\сW%ф:ЛА:Л8А :Л8А :УА:Л8А:Л8А :Л4А$:Л4А&: Л8А( : Л8А, : Л8А0 : Л4А4 : Ле   :Л8А6:║А: 0А : 8А : 8А: 8А:Ю 8А: 4А:! А: х 0А' : м0А( : м4А) : м8А+ : м4А/ :м4А1:м4А3:х еА  : еА■ :А8А5:┘А:у0А :уА :┘8А:┌4А: нА: нА!: нА': А- : А5 : А= : Э8АE :8А:4А:я╨4А :я╨4А :8А:8А:8А :8А :8А:8А:8А:8А :пА:$А:8":8А&:ч╨4А  :8А:8А:8А :8А:0А:0А:8А:8А: 8А : ч╨4А   : ч╨4А■  : н " : н , :$6:8АF:н J:н T:н ^:н h:н r:н |:н Ж:$Р:=Аа:н и:н ▓:н ╝:$╞:н ╓:Ар:$ш:8А:8А:8А :пА:8А:ч╨4А  :8:8 :ч╨4■ :0А:R8А:R8А:R8А :RнА:R8А:RА:RА$:RА,:U8А:UчАА  :U8А:U0А :8 :ч╨4■ :0А:;0А:;8А:;8А :;8А :;8А:;пА:;пА:R8А:R8А:R8А bbbbbbbbb$циj,ю░r4Ў╕z<■└ВD╚КL╨ТT╪Ъ\рвd&шкl.Ё ▓ t 6 ° ║ | > ╓ШZ▐а┬ Д F  ╩ М N  ╥ Ф V  ┌Ь^ тдf(ъмn0Є┤v8·╝~@─ЖH ╠ОP╘ЦX▄Ю`lР ЧТфNНModel d:\Development\ruby_odata\test\SampleService\App_Data\_TestDB.mdf BModel_log d:\Development\ruby_odata\test\SampleService\App_Data\_TestDB_log.ldf x`!c[Лп! HЩ╘{е|!TNN ! TZR !TPR !TPR !TPR !TPR ! TPR ! TPR ! TPR ! TPR ! TPR !TPR !TPR !TPR !TPR !TPR !TPR !TPR !TPR ! TPR !!TPR !dTSR !eTSR !fTSR !gTSR !hTSR !iTSR !jTSR !kTSR !l TSR !m!TSR !n"TSR !o#TSR !p$TSR !q%TSR !r&TSR !s'TSR !t(TSR !u)TSR !v*TSR !w+TSR !x,TSR !y-TSR !╚.TLR !╔/TLR !╩0TLR !3TSR !,4TSR !-5TSR !.6TLN !/7TSR !08TSR !19TSR !2:TSR !3;TSR !4<TSR !5=TSR !6>TSR !7?TSR !8@TSR !9ATSR !: TSR !;BTSR !<CTSR !=%TSR !>DTSR !?ETSR !@FTSR !ATSR !BGTSR !DHTSR !EITSR !FJTSR !GKTSR !HLTSR !IMTKR !hNTSR !OAAN !PAAN !QAAN !iRAAN !jSAAN !kTAAN !lUAAN !mVAAN !nWAAN !oXAAN !pYAAN !qZAAN !r[AAN !s\AAN !|M|MNS !}N}WNP !J TSR !K TSR !L]TSR !M^TSR !NaTSR !tbAAN м З Кb =  є ╬ й Д _ :  Ё \ e@Ў ╤ 7  э ╚ г ~ Y 4  ъ ┼ а { V 1 ч┬ЭxS. ф┐ЪuP+ж ╦ Б с╝ЧrM(▐╣ФoJ%█╢СlG"¤╪│ОiD·╒░ЛfAў╥нИc>Ї╧кЕ` Z[Ў"@S┌ПvЕ^!8М8╛`c[їE # HХю╡.(TT TTTT T T T T TTTTTTTTTT T!TdTeTfTgThTiTjTk Tl!Tm"Tn#To$Tp%Tq&Tr'Ts(Tt)Tu*Tv+Tw,Tx-Ty.T╚/T╔0T╩3T4T,5T-6T.7T/8T09T1:T2;T3<T4=T5>T6?T7@T8AT9 T:BT;CT<%T=DT>ET?FT@TAGTBHTDITEJTFKTGLTHMTINThOAPAQARAiSAjTAkUAlVAmWAnXAoYApZAq[Ar\AsM||N}} TJ TK]TL^TMaTNbAtybKВ.  щv_H1ь╒╛зР4я╪┴кУeN7 Є─нЦhQ:# ї▐╟░Щ ╗╥█|дНkT=&°с╩│ЬЕnW@)√ф═╢ЯИqZC,■ч╨╣вЛt]F/ъ╙╝еОw` Z[Ў$@c·П╤ ^#8мД╛`p\оr% HНсТ№s0WS'preserve0WS'collapse0WS'collapse0WS'collapse0WS'collapse0WS'collapse0WS'collapse0WS'collapse0WS'collapse0WS'collapse0WS'collapse0WS'collapse0WS'collapse0WS'collapse0WS'collapse0WS'collapse0WS'collapse0 WS'collapse0!WS'collapse0dWS%replace0eWS'collapse0fPTY[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*0gPT!\i\c*0hPT9[\i-[:]][\c-[:]]*0lPT\c+0mDF00nIX00oIX-10pIN?-92233720368547758080pIX=92233720368547758070qIN--21474836480qIX+21474836470rIN#-327680rIX!327670sIN-1280sIX1270tIN00uIX?184467440737095516150vIX+42949672950wIX!655350xIX2550yIN10╚LN10╔LN10╩LN10EU%default0EU'preserve0,EU#BigInt0,EU#Binary0,EUBit0,EUChar0,EU'DateTime0,EU%Decimal0,EU!Float0,EU!Image0, EUInt0, EU!Money0, EU!NChar0, EU!NText0, EU'NVarChar0,EUReal0,EU1SmallDateTime0,EU'SmallInt0,EU+SmallMoney0,EU%Variant0,EUText0,EU)Timestamp0,EU%TinyInt0,EUUdt0,EU7UniqueIdentifier0,EU)VarBinary0,EU%VarChar0,EUXml0-EU%Default0-EUNone0-EU+IgnoreCase0-EU3IgnoreNonSpace0-EU3IgnoreKanaType0-EU-IgnoreWidth0-EU+BinarySort0-EU-BinarySort208LX80DPTg((000[1-9])|(00[1-9][0-9])|(0[1-9][0-9]{2})|([1-9][0-9]{3}))-((0[1-9])|(1[012]))-((0[1-9])|([12][0-9])|(3[01]))T(([01][0-9])|(2[0-3]))(:[0-5][0-9]){2}(\.[0-9]{2}[037])?0DIXE9999-12-31T23:59:59.9970DINE1753-01-01T00:00:00.0000EPTG((000[1-9])|(00[1-9][0-9])|(0[1-9][0-9]{2})|([1-9][0-9]{3}))-((0[1-9])|(1[012]))-((0[1-9])|([12][0-9])|(3[01]))T(([01][0-9])|(2[0-3]))(:[0-5][0-9])(:00)0EIX=2079-06-06T23:59:000EIN=1900-01-01T00:00:000FDT190FDF40FIX?922337203685477.58070FINA-922337203685477.58080GDT100GDF40GIX-214748.36470GIN/-214748.36480HPTU([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})|(\{[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}\})0JPTї((000[1-9])|(00[1-9][0-9])|(0[1-9][0-9]{2})|([1-9][0-9]{3}))-((0[1-9])|(1[012]))-((0[1-9])|([12][0-9])|(3[01]))0JIX+9999-12-310JIN+0001-01-010KPTy(([01][0-9])|(2[0-3]))(:[0-5][0-9]){2}(\.[0-9]+)?0KIN'00:00:000LPTY((000[1-9])|(00[1-9][0-9])|(0[1-9][0-9]{2})|([1-9][0-9]{3}))-((0[1-9])|(1[012]))-((0[1-9])|([12][0-9])|(3[01]))T(([01][0-9])|(2[0-3]))(:[0-5][0-9]){2}(\.[0-9]+)?0LIN=0001-01-01T00:00:000MPT┴((000[1-9])|(00[1-9][0-9])|(0[1-9][0-9]{2})|([1-9][0-9]{3}))-((0[1-9])|(1[012]))-((0[1-9])|([12][0-9])|(3[01]))T(([01][0-9])|(2[0-3]))(:[0-5][0-9]){2}(\.[0-9]+)?(([+-]((((0[0-9])|(1[0-3]))(:[0-5][0-9]))|14:00))|Z)0MIN?0001-01-01T00:00:00Z0,EUDate0,EUTime0,EU)DateTime20,EU3DateTimeOffset0NPTO/((-?[0-9]+)(\.-?[0-9]+)*/)*0,EU-HierarchyIdЎ\╞Я&√╨█ЖW*Ў╡v]B╚Б<ў Р w J  Є ┐ М a B  E├Ъ{\ █ ▓ { ^ 9  ё ╠ б z I *  т┴аГbAї╓╣ЦsL'ї▄├жЕZх╞еВW*эоУzaD ъСjEў╨йВ[4 ц┐ШqJ#№╒оЗ` Z\Ў&@7T}К^%8╛`]NО' HЪ╞▄o .-@i,@j@kp@lq@m.@nq@oq@px@qx@r@s@I|@|}   @@f@@t@єo╡ЦwX9√▄╜Ю╘`P1k-pB)* ╕( °'║2╘√0-А=auid0-00А=type0-АCownerid0-88 АAstatus0-44А=fgid0-ннАCpgfirst0-ннАApgroot0-ннАIpgfirstiam0- АApcused0- АApcdata0- АIpcreserved0-88 АAstatus0-44АAfileid0-яя╨4А=name0-яя╨4АEfilename0- АAhobtid0- 88 АMhobtcolumnid0- 88 АAstatus0- 44АAordkey0- 00А?xtype0- 44АAlength0- 00А=prec0- 00А?scale0- 88 АKcollationid0- 44АIoffsetleaf0- 44АGoffsetint0- 00АIbitposleaf0- 00АGbitposint0- 44АKnullbitleaf0- 44АInullbitint0-АAhobtid0-88 АAstatus0-00АEfillfact0-44АImaxnullbit0-88 АCmaxleaf0-44АAmaxint0-44АCminleaf0-44АAminint0- АClockres0-88 А=fgid0-88 АEfgfragid0-88 АEdbfragid0-88 АAphfgid0-88 АAstatus0-88 АEdbfragid0-88 АAphfgid0-88 А=fgid0-ппА=type0-$$АAfgguid0-88 АAlgfgid0-88 АAstatus0-ч╨4А=name0-88 АEdbfragid0-88 АAfileid0-88 А?grpid0-88 АAstatus0-00АEfiletype0-00АGfilestate0-88 А=size0-88 АCmaxsize0- 88 АAgrowth0- ч╨4А?lname0- чч╨4А?pname0- нн  АGcreatelsn0- нн  АCdroplsn0-$$АEfileguid0-88 АQinternalstatus0-нн  АKreadonlylsn0-нн  АMreadwritelsn0-нн  АSreadonlybaselsn0-нн  АQfirstupdatelsn0-нн  АOlastupdatelsn0-нн  АGbackuplsn0-нн  АKdiffbaselsn0-$$АMdiffbaseguid0-==АMdiffbasetime0-нн  АQdiffbaseseclsn0-нн  АMredostartlsn0-нн  АOredotargetlsn0-$$АEforkguid0-нн  АCforklsn0-АAforkvc0-$$АWredostartforkguid0- 88 АEdbfragid0-88 АKpriority_id0-ч╨4А=name0-88 А[service_contract_id0-88 АUlocal_service_id0-чч╨4А[remote_service_name0-00АEpriorityrityadmin╢╢╢╢Ш| |Р| (x;и▀ ЬЬЬЬЬ зз╨4<|╔╔╔╔P|╪| ─∙ж╫╗╗╗╗╗db_securityadminюююю╕| | Dx;и ууууу|Ї|(|А4╢╢╢╢ |P| (x;и3 ФФФФФ0@ ┴┴┴┴h|╕|Dx;и ооооо|╘|@0А4√√√√(|Р||░▒вЭZZZZhh╪|h|(x;и╓ KKKKK`hееЇ||Р|─∙ж╫ЁЁЁЁЁееее╣╣╣└|h|╪|Dx;и ;;;;;№|м| А4nnnn№йШ||░▒в┌"""""getdatewwwwр|h|(Xбв| erFш═зLLLLH|Ш|Dx;и ╝╝╝╝╝▄|┤|00А4щщщщ|x|р|░▒в┌tttttgetdate!!!!└|H|(Xбв| ╔╔╔╔╔№їFш═зЬЬЬЬ(|x|Dx;и ttttt┤|Ф|А4!!!!fsp|└|(x;и  ╠╠╠╠╠ 88 М|ЩЩЩЩШ|(|─∙ж╫**** ||p|Dx;и OOOOOd|D|&А4H0H|Ш|(x;и3 """"" wwww░||Dx;и bbbbb|0@А47777шшшшш|H|░▒в┌}}}}}sysusers((((■■╕|P|░|HXбвW88888д╩w№└wД■Й И@├єєєє mmmm └wш|DDDDDDDDDDDDDDDDDDD└{,▀ОAЇйb┬o"╫ЖA■╖x9°╡x1ьлl+ц й h ' ц й l + ц е d  ┌ Э s├h+рЄ╡t3Ыъйh▐Ы^┌Э`C-Ut))ЧЫ:╬ч0-J00А?class0-J88 А?depid0-J88 АEdepsubid0-J88 АCindepid0-J88 АIindepsubid0-J88 АAstatus0-K00А?class0-K88 А?depid0-K88 АEdepsubid0-K88 АCindepid0-K88 АIindepsubid0-K88 АAstatus0-N00А?class0-N88 А9id0-N88 А?subid0-N$$А=guid0-N88 АAstatus0-R88 АCcprelid0-R88 АAfragid0-R88 АGfragobjid0-RннА9ts0-R88 АAstatus0-RАEdatasize0-RАCitemcnt0-RАArowcnt0-U88 АIstoplistid0-UччАААEstopword0-U88 А=lcid0-U00АAstatus0-Z88 А;qid0-Z88 А=hash0-Z88 А;nid0-Zчч@@А=name0-[88 А9id0-[88 А?xsdid0-[88 АAuriord0-[00А=qual0-[88 АAnameid0-[ппАEsymspace0-[88 АCnmscope0-[ппА=kind0-[ ппА?deriv0-[ 88 АAstatus0-[ ппА=enum0-[ чч@@АAdefval0-\88 АAcompid0-\88 А;ord0-\ппА=kind0-\44АAstatus0-\чч@@А=dflt0-]88 АGplacingid0-]88 АCordinal0-]88 АEplacedid0-]88 АAstatus0-]88 АEminoccur0-]88 АEmaxoccur0-]чч@@АAdefval0-^00А?class0-^88 А9id0-^ее  АIthumbprint0-^ппА=type0-^ее  @АAcrypto0-^88 АAstatus0-_88 А9id0-_ч╨4А=name0-_ее  АIthumbprint0-_88 АGbitlength0-_ппАGalgorithm0-_==АEmodified0-_ее╨╨А=pkey0-_ппАEencrtype0-_ ее  @А?pukey0-`88 А9id0-`ч╨4А=name0-`00АGscopetype0-`88 АCscopeid0-`ееА=hash0-`88 АAstatus0-`==АCcreated0-`==АEmodified0-` чч  ╨4@АGbatchtext0-` чч  ╨4@АSparamorhinttext0-a00А?class0-a88 АCidmajor0-a88 А?subid0-aчА=name0-a88 АAstatus0-a88 АCintprop0-b00АEdepclass0-b88 А?depid0-b00АIindepclass0-bч╨4АGindepname0-bч╨4АKindepschema0-bч╨4АCindepdb0-bч╨4АKindepserver0-b88 АAnumber0-b 88 АAstatus0-Xз╦v00АAstatus0-Xз╦v00АEpriority0-Xз╦vQjqueuing_order0-Xз╦v$$А_conversation_group_id0-Xз╦v$$А[conversation_handle0-Xз╦vАcmessage_sequence_number0-Xз╦v$$АImessage_id0-Xз╦v88 АSmessage_type_id0-Xз╦v 88 АIservice_id0-Xз╦v 88 А[service_contract_id0-Z=88 ;HId0-Z=чч  ╨4@А=Name0-Z=чч  ╨4@АKDescription0-Z=<<А?Price0-Z=88 АKCategory_Id0-Z===ЪЧ╪}АICreateDate0-Z===╙╗╠~АMModifiedDate0-Z=ччd╨4dАGCreatedBy0-Z= ==АUDiscontinuedDateК└╛КрD!╪Е<┘~╡p/│l╓ЛL─|юнb╘НD└}< └}>ыд_█Ю[╫Ю_▌ШQ ┴ДK ╔МC ╦КE┐ z 7 Ё │ r 5 · ╣ x ; · ╗ ~ ; Ў ╡ x 7 °┐ВG ╧ОQ ├В?·╣А9°╡t7°┐А?Ў│n/Ёпf#▐Я` Z °*ИнвА^8w└`А ╚+╪6 6 @@@@@@@@ @└@КAК_`}и@К&&&&Ъ┐░@AКЪ┐░АAКА╨`        └AКв<iвV6╩н+ыыыырЫBК`рIЩ0@КиИо    ╩н0@КМ└0@К@BК`М▄ЛpМ))))0└Д` └█Л ╟Л АBКт┼┼┼┼┼╘╬ЙlcЖ,╨Й╝bЖД╤Й bЖL╙Й╘Й\aЖм`Ж─kЖt╓ЙkЖ░RМА@Мв P■м;ъъъъъ┐┐┐┐hhКP┬Дn L>нШбббббlпЪ0`Кl┬ДЇЇЇЇШ┘Д└CК"╩нkЇЇЇЇЇиЫ0`К88 ббббАCКP█Д ╩нъппппп$Ы0`Кhh····╠Д8░FК%gЖHRКЯL>н_ 0└Д°qн,gЖш╪Д╕DК.XPiняzzzzzЇШЪ0`К┘ДМbМзззз°qнь@К////@DК0EК+XPiнЗ44444ЇШЪ0`Кl█ДьcМ,КEК\DКSК┼┼┼┼■■■■SКaaaa╕DКиEК*XPiнЗ]]]]]ЇШЪ0`К▄CКмfМРEК╘DКдKКИSКHМ╒0EК FК)XPiнЗ▐▐▐▐▐ЇШЪ0`КЬCК╠jМFКLEК<╬Д,GК╩нЛЛЛЛиEК@┘Д(XPiнЗ ЇШЪ0`К\┘Д,lМXГwАFК─EКL>н0RRRRRXXXXH┌Дp├Д5X╩н5ьььььЇШЪ0`КМ├ДМmМTTTT°FК@Ё?ZZZZ░BМ(KМ|8№нGGGGGФЧЪРЧЪ0`К  0СМ rЖ]8№нГГГГГФЧЪРЧЪ0`К ╓╓╓╓XИwаИwo8№нГГГГГФЧЪРЧЪ0`К  ╓╓╓╓WКoЖЩ8╨sн┐;;;;;ФЧЪРЧЪ0`КnnnnШvЖЁMК88Їжм сссссЁ▀Щl╘Л м_К88 ┤┤┤┤PК`└QК╚М▀P■м;%%%%%pppp kЖ▄P■м;°°°°°ннннМXkЖ┘P■мээээ╕╕╕╕АsЖРkЖ╡@PК;ФФФФФ┴┴┴┴╚kЖ▓L>нd ЬЬЬЬЬфkЖ╔╔╔╔╕PКQК▒L>нX уууууаPКрPК0QК░L>н°°°°<▀ЛннннQКXQКпL>нC _____\▐Л 0QКQКL>нC ь▌Л<▀ЛрoЖиQКиL>нM ЪЪЪЪЪ╧╧╧╧АQК╨QКзL>н`QКRК║║║║иQК°QКжL>нK 00000н YYYYYЁ? bЖxBМЮ@`}и_66666ppppDК@gЖЮP■мqqqq$$$$HDКp@КЦccccЁ┴Д└┴Ди@`}и %%%%%м[К<[К╠ZК\ZКьYК|YК YКЬXК,XКм_Км[КP■м;pppp░WКш╞Дq@`}и_@@@@@╘╫ДМ╫ДD╫Д№╓Д┤╓Дl╓Д$╓Д▄╒ДФ╒ДL╒Д М╥ЛЄЄЄЄА┬Д╪fКj@`}и_м[К<[К╠ZК\ZКьYК|YК YКЬXК,XКм_КМГМ,─ЛHHHHр┬ДИGКd@`}и IIIII\К╝┌ДtК4К\╔Л ┌ДT╪ДЬ╦Л▄╠ЛU  ■   TКP VКееq╧Лd╬Лф8{\\\\;S╨EКy$`}и_ююююю<▀Л╠▐Ль▌Л|▌Л ▌ЛЬ▄Л@TКмcЖ╗╗╗╗АfЖ└oЖл(L>нt ╛╛╛╛╛ьQК─QКЬQК№oЖ▄oЖРTКыыыыFК╫Лu(╩н░░░░0╥Ъ0└ДP■мууууххххрTКxUКs╩нШ ^^^^^оом▀Л 0UК0UК$╩нШ PPPPP ,,РcЖ▄Лp$АUКШ uuuuuн,▄Л ▄ЛА▄Лn$╩н╨UКЬ▄Лттттp╒ДА▄ЛЁ▄Лl╩нШ |||||pЫwАmЖФ,░^нP(((((А#Ы0`К}}}}@HК8LКБ,░^нeeeeeА#Ы0`К0000xЩМPOКЪ,╨sн$лллллА#Ы0`К■■■■@╞Д╘ДХ0╩нхЭЭЭЭЭ$╝Ъ0`КЇfК$╞Дь┼Д═▐Лм[К╚╚╚╚ ┬ДрRКr0L>н╡╠оЪ0`КЇfК0`К<┬ДMMMMXКp╨]К└╒Д╓ДЖLЇжмЇ\╫Щ°<╙ЛЬXК4444м[К4МIIII╓ДP╓ДДLЇжмЇsssss\╫ЩРЧЪ╝╥Л YК====м[К╘М&&&&P╓ДШ╓ДВLЇжмЇЧЧЧЧЧ\╫Щ4╥Л|YК====м[КtМ0┬┬┬┬К;Ш╓Др╓ДАLЇжмЇPPPPP\╫Щм╤ЛьYКееее¤ м[КМ0@Кр╓Д(╫Д~LЇжмЇuuuuu\╫Щ ,╤Л\ZКееUееU■ м[К┤М 0@К(╫Дp╫Д|LЇжмЇ╖╖╖╖╖\╫Щ ┤╨Л╠ZКч╨4ч╨4  м[КTМxXтттт└БМp╫Д╕╫ДzLЇжмЇ|||||\╫Щ <╨Л<[К4444м[КЇМ))))╕╫ДР[КxLЇжмЇKKKKK\╫Щ ╝╧Лм[К4444м[КФМ [К ┬ДwPЇжмSЄЄЄЄЄ╠┘Щ D╧Л T╪ДееqЇfКее М4МшщщщззззXК╪Xh]К└БМ4░hнtttttXЧЪXЧЪРЧЪ0@К\КРЧЪ0@КXЧЪРЧЪ0@КА\КРЧЪ0@КЗМ!!!!Ё\К8И0Аw└БМ├4░hнКOOOOOXЧЪ,╨ЙXЧЪРЧЪ0@К`]КXЧЪРЧЪ0@КXЧЪРЧЪ0@КВwрКweP`}и ╔╔╔╔╔▄БwФБwLБwБw╝АwtАw,Аw╘ЛwМЛwDЛw№Кw$Вw┤КwlКw$Кw▄ЙwФЙwLЙwЙw╝ИwЬЬЬЬрJМ╕[М╣P`}и )))))┤JМlJМ$JМ▄IМФIМLIМIМ╝HМtHМ,HМ╘[М№JММ[МD[М№ZМ┤ZМlZМ$ZМ▄YМФYМ||||аtЖxEМrP`}и fffffttЖ,tЖ╘GММGМDGМ№FМ┤FМlFМ$FМ▄EМФEМ╝tЖLEМEМ╝DМtDМ,DМ╘KММKМDKМ3333x╒Д└╒ДИLЇжмЇРРРРР\╫Щ╝╙Л,XКееее № └╕░иаШРИАt`l Z °,И┤яl^Ы8└`.<4╨p-`&ж┌п0.88 &¤  Mcollationid0.88 *$ Glanguage0.88  ;idm0.44 Cnumbere0.44  Acolidtu0.44   Cstatusr0.ее@     ActextCl0.88  Cstatusx0.44 Cfileidx0.яя ╨4?name0.яя ╨4Gfilename0. 88  ;id0. 44 Egrantee 0. 44  Egrantor 0. 44   Cactadd0. 44  Cactmod0. ееа     Cseladd0. ееа■ ■  Cselmod0. ееа¤ ¤  Cupdadd0. ееа №  №  Cupdmod0. ееа √  √  Crefadd0.00 Cstatus0.00 ?type0.44 Gusertype0.зз ╨4Gprintfmta0.44 ?prec0.88  Ascale0.88  Kiscomputeda0.88  Kisoutparamd0.88  Kisnullable0.ч╨4Icollationе0.нн   Otdscollation0.44 Gtexttype0.44 Glanguage0.hh Iencrypted0.hh   Kcompressed0.чч@  ╨4?text0. @auid0.00 @type0. Fownerid0.88  Dstatus0.44 @fgid0.нн Fpgfirst0.нн! Dpgroot0.нн' Lpgfirstiam0. - Dpcused0. 5 Dpcdata0. = Lpcreserved0. Hrowsetid0.00 Jownertype40.88  Fidmajor0.88  Fidminor0.88  Fnumpart@0.88  Dstatus0.44 Dfgidfs0. Drcrows0. Hrowsetid0.88  NrowsetcolidЛ0.88  Jhobtcolid0.88  Dstatus0. Lrcmodified0.44 Nmaxinrowlen     Eforkeysвм0.ее ■ ■  Erefkeys0.44 EftcatidJJJ0.ч    ╨4?name0.44 Cstatus0.чч■ ■ ╨4?path0.88  Etableid╙Л0.44 Erowinfos0.ееА     Aftkey├├├0.00 Cstatus0.00 ?type0.44 Gusertype0.зз ╨4Gprintfmt0.44 ?prec0.88  Ascale0.88  Kiscomputed0.88  Kisoutparam0.88  Kisnullable0.ч╨4Icollation╪Л0.нн   Otdscollation0.44   Gusertype0.hh Gvariable0.hh Kallownulls0.00 ?type0.зз ╨4Gprintfmt0.44 ?prec0.00 Ascale┘Л0.ч╨4IcollationЫЫЫ0.44 Gtexttype0.44 Glanguage0.hh Iencrypted0.hh   Kcompressed0.чч@  ╨4?text0. 44 Edepdbid╒Л0. 44 Idepsiteid0. hh   Cselall0. hh   IresultobjРРР0. hh   Ereadobj0.44 Gfkeydbid0.44   Grkeydbidд0.44   Afkey1ёёё0.44   Afkey20.44   Afkey30.44   Afkey40.44 Afkey50.44 Afkey6▀Л0.44 Afkey7*0.44 Afkey8К0.44 Afkey9╦Л0. @auid0.00 @type0.╕╕╕╕╕╕╕╕╕ ╠ИD( ф а T  ╚ И D № ╝ | < Ё д \  ╝x4°h$рШP╝ t ╘РDЇм─x,рФP╚А@№░`└ `Тl.╨a╝0_`}и4э╘АXэ╘АXА╨`        p ASh<╖╠oЙ!`рIЩ0аЙиИо    дддд0аЙрМ└Й0аЙ└`К\ЙpКМtЙ,вЙМ{Й` └WЙ GЙ L╣мт╩╩╩╩╩DОЛl[ЙЬПЛ╝ZЙЇРЛ╠СЛ ZЙм╧М<╧М╠╬М\╬Мь═ММвЙМ{Й44;;;;`╕аЙЁ┐ЙZ@Їжмн╓╓╓╓╓ММШ╠oЙьвЙМ{Й88 ГГГГ`PаЙЁ┐Й[@Їжмн┘┘┘┘┘ММШ╠nЙTгЙМ{ЙееА  ЙММММ`шаЙЁ┐Й\@$kиРlllll─дЙTеЙМдЙКp T9999`АаЙ(жЙ]\вЕiiiii─еЙlбЙ,вЙмаЙ<<<<0HаЙ(жЙ^d\вч└Tш   └Tш   └Tш   PTHLLLLLйЙИ0pеЙpдЙ_\в№@@@@└0иеЙpдЙ` \в╜/////ьвЙTгЙ╝гЙzzzz°H°еЙpдЙa(░жмк hhhhhММШМеЙМ{Й====ш°агЙb|кмйJJJJJ0└дЙЁ┐Й    \ЮШ/ XжЙ0└Мqqqq╪╪А╝МшрМн╕нM NNNNNсМ\сМЯЯЯЯ Иа╟М ┬М+h╩н║fffff╝оЪДиЙм╧М─УЛDФЛЬtМ` 0аЙ╝╟М0аЙ─CнМCЙдйЙВ\FЙ|EЙDEЙ EЙ╘DЙ$╥МЇ▐j╠╦М`S р ─зЙЩ p╨[М▄оЪ0аЙ0аЙ╠SЙWЙь╣М`Фj3333ИшFЙWЙ1°L>нЪ33333а#ЫЁ?Ё?И├@GЙЬгМ$╥МФЧЪРЧЪ0аЙФЧЪРЧЪ0аЙА        0аЙLСМffff╪ШRЙ└RЙZ┤L>н├ моЪ  0аЙ▄VЙЬDЙ  Х44pнггггг╚ШЪLйЙЮМLйЙилЙ0└МьГw4444╕аЙЁ┐ЙЎЎЎЎphшгЙЁ┐Й0└МьГw№№№№╕ иеЙЁ┐Й\ЮШ┤RЙXXXX╪╪AЙ└AЙa┤L>нk╡╡╡╡╡моЪ0аЙAЙdDЙ Мч╨4      44еепЙ\ЮШМRЙрррр╪X░▐М@PЙm4░hнnnnnn<$ЫФЧЪРЧЪ0аЙФЧЪРЧЪ0аЙФЧЪРЧЪ0аЙФЧЪРЧЪ0аЙ╠▐М;;;;XXx▐МPЙp4░hнКCCCCC<$Ы╠СЛФЧЪРЧЪ0аЙ ФЧЪРЧЪ0аЙФЧЪРЧЪ0аЙ ФЧЪРЧЪ0аЙ╠СЛФ▐МXX@▐М╪зМs4░hн╨WWWWW<$ЫФЧЪРЧЪ0аЙ ФЧЪРЧЪ0аЙФЧЪРЧЪ0аЙ ФЧЪРЧЪ0аЙ \▐МXX▐М░зМv4░hнKKKKK<$ЫФЧЪРЧЪ0аЙ ФЧЪРЧЪ0аЙ@ФЧЪРЧЪ0аЙФЧЪРЧЪ0аЙ $▐МX(аЙЁ┐ЙЫ,lиЖХХХХХPRIMARYXЧЪРЧЪ0аЙXЧЪРЧЪ0аЙXЧЪРЧЪ0аЙЬПЛ▀МОООО└└└└ аЙЁ┐Й░hн╨ЭЭЭЭЭXЧЪXЧЪРЧЪ0аЙXЧЪРЧЪ0аЙXЧЪРЧЪ0аЙXЧЪРЧЪ0аЙ╠▐М╚╚╚╚ШXи╝Й█МУ4░hн∙∙∙∙∙XЧЪXЧЪРЧЪ0аЙXЧЪРЧЪ0аЙXЧЪРЧЪ0аЙXЧЪРЧЪ0аЙФ▐МммммШX╛Й█МЦ4░hнКгггггXЧЪ╠СЛXЧЪРЧЪ0аЙ XЧЪРЧЪ0аЙXЧЪРЧЪ0аЙ XЧЪРЧЪ0аЙ╠СЛ\▐МЎЎЎЎШш0рМ█МЩ4░hн╨╛╛╛╛╛XЧЪXЧЪРЧЪ0аЙ XЧЪРЧЪ0аЙXЧЪРЧЪ0аЙ XЧЪРЧЪ0аЙ $▐Мыыыы(└╕Й` Z`°/*!╙^CC8Й└`:1|аh0ЧЯ{aюt╪:=:=:А!:8А): нА- : н5 : 0А= : 0А> : 8А? :АC:8АK:8А:ч╨4А  :пА:еU■ :е¤ :ч╨4№ :8А :=А : =А :Д0А:Д8А:Д8А :Д8А :Д8А:ДпА:ДпА:"\8А:"]ч╨4А  :"\8А:"\0А :"Й8А :"\пА:"\8А:"\0А:" Й8А :" \=А :" ё1=А$ :)°8А:)°4А:)°8А :)°ч╨4  :)°0А:)°8А:)°4А:)°0А:) °0А :) °8А :) "8А :) °4А :) °8А! :)·8А%:)°8А):)е@■ :,0А:,8А:,ч╨4А  :,8А :,8А :,8А:,=А:,=А:.8А:.ч╨4А  :.еtА■ :.еА¤ :.е А№ :.е╨√ :.пА:.е@А· :. 8А :10А:18А:18А :1ч╨4А    :1b■ :2"8А:2"8А:2"ч╨4А  :2"0А :2"4А :2"0А:2"0А:2"8А:2 "8А :2 "=А :2 "=А! :2 "8А) :2 "8А- :30А:38А:38А :3ч  :30А :38А:34А:30А:3 0А :3 8А :3 8А :3 8А :6■8А:6■8А:6■ч╨4  :6B8А :68А:6■0А:6■0А:6■0А:6  8А :6 8А :6 ,А :7Ц8А:7Ц8А:7Ц8А :7Ц8А:7Ц8А:7Ц0А:7Ц0А::0А::8А::8А ::чА  :. = ::8А ::чА  жжьоp2Ї╢x:№╛АB╞ИJ ╬РR╓ШZ▐аb$циj,ю░r4Ў╕z<■└ВD╚КL╨Т*T╪Ъ\рвd&шкl.Ё ▓ t 6 ° ║ | > ┬ Д F  ╩ М N  ╥ Ф V  ┌Ь^ тдf(ъмn0Є┤v8·╝~@─ЖH ╠ОP╘ЦX▄Ю`0:F T1ЧЯДwЛиЭ::8А ::пА::8А::=А:: =А :<╬0А:<╬8А:<╬8А :<╬8А :<бb  :<бе@■ :@0А:@8А:@ч╨4А  :@8А :@пА :@8А:@=А:@=А:A0А:A8А:A8А :A8А :AА:A8А:C8А:Cч╨4А  :C8А:Cч■ :C8А :D$А:DhА:Dч  :Dч■ :Dч¤ :Dч№ :Dч√ :DА:D ч·  :D 8А :D 8А! :D =А% :D =- :D8А5:D$А9:D4АI:D4АK:D0АM:D8АN:Dе@∙ :E8А:Eч╨4А  :Eч■ :Eч¤ :Eч№ :Eч√ :E=:G$А:G8А:G8А:G8А:H$А:H$А:;0А:;8А:;8А :;8А :;8А:;пА:;пА:I8А-:I8А1:IпА5:I=А7:I 8А? :I 8АC :I $АG :I АW :I А_ :IАg:IАo:I8Аw:I=А{:I=АГ:I8АЛ:Iе8А  :I$АП:I8АЯ:Iе8А■ :I$Аг:IчА¤ :Iч№ :JР0А:JР8А:JР8А :JР8А :JР8А:JР8А:Km0А:Km8А:Km8А :Km8А :Km8А:Km8А:N0А:N8А:N8А :N$А :N8А:Z`8А:Z`8А:Z`8А :Z`ч@А  :[a8А:[a8А:[a8А :[a0А:[a8А:[aпА:[a8А:[aпА:[ aпА :[ Ф8А :[ ФпА :[ Фч@   :\n8А:;0А:;8АD╚КL╨ТTd&шкl.Ё ▓ t 6 ° ║ | > ┬ Д F  ╩ М N  ╥ Ф V  ┌Ь^ тдf(ъмn0Є┤v8·╝~@─ЖH ╠ОP╘Ц╪Ъ\рвX▄Ю`:4Sр z2 @╘ШQы:\p8А:\pпА :\p4А:\pч@  :]8А:]8А:]8А :]8А:]8А:]8А:]ч@  :^0А:^8А:^е А    :^пА :^е@А■ :^8А :_8А:_ч╨4А  :_е А■ :_8А:_пА :_=А:_е╨¤ :_пА:_ е@А№  :`8А:`ч╨4А  :`0А:`8А :`е■ :`8А :`=А:`=А:a0А:a8А:a8А :aчА  :a8А :a8А:ч╨4А    :8А:"0А:"8А:"ч╨4А    :"8А:)ч╨4    :)8А:)4А:)8А:,ч╨4А    :,8А:,0А:,8А:.ч╨4А    :.8А:28А:2ч╨4А    :28А:3ч    :38А:30А:38А:А:0А :А :8А:b0А:b8А:b0А :bч╨4А    :bч╨4■ ■ :bч╨4¤ :bч╨4№ :b8А :b 8А :` ч╨4@¤  :` ч╨4@№  :8:8:ч╨4    :0А :8А :K8А:K0А:K8А:K8А :K8А:N$А:N0А:N8А:N8А:Z8А:Z8А:Z8А :[8А:[8А:[0А :[8А :[пА:[8А:[8А:]8А:]8А:]8А :_ч╨4А    :_8А:`ч╨4А    :`8А:aчА    :a8А:a0А:a8А:еU    :8А:"ч╨4А    :"8А:"0А:"8А:.еtА    :.еА■ ■ :.8А:2ч╨4А    :28А:28А:C8А:А:0А d&шкl.Ё ▓ t 6 ° ║ | > ┬ Д F  ╩ М N  <■└ВD\рвКL╨ТT╪Ъ╥ Ф V  ┌Ь╚^ тдf(ъмn0Є┤v8·╝~@─ЖH ╠ОP╘ЦX▄Ю`4:sр:3ЧЫ Gє╥I+:Cч    :C8А:Eч╨4А    :E8А:_е А    :_8А:`0А:`8А:`е    :`8А:"8А:"0А:"8А:.е А    :.8А:0А:0А:А:$А :$А:8А++:0А:0А:А:$А :$А:8А++:0А:0А:А:$А :$А:8А++:8А:8А:8А :8А:$А:$$:ч  :А4: А< :8А:$А:$:8А%%:8А)):8А--:А:А :А:А:=А$:8А,: А: 8А : А : 0А: $А: 0А: $А: А&#: А.: $А6: 8АF:  8АJ :  8АN :  яАR :  8АT :  8АX : А\: е@  : 0А: $А: 0А: $А: А&#: А.: $А6: 8АF:  8АJ :  8АN :  яАR :  8АT :  8АX : А\: е@  : 0А: $А: 0А: $А: А&#: А.: $А6: 8АF:  8АJ :  8АN :  яАR :  8АT :  8АX : А\: е@  :W8А:Xч╨4@А  :п8А:ч╨4@А  :▒ч╨4@А■ :▒<А:п8А:8А:8А:╪=А:╪=А:~чd╨4¤ : =$ :8А:п8А:ч╨4@А  :▒ч╨4@А■ :▒<А:п8А:8А:8А:╪=А:╪=А:~чd╨4¤ ░|┌░$К88 ╟╟ьььььььь╞№╛АBИJ ╬РR╓ШZ▐аb$циj,ю░r4Ў╕z<■└ВD╚КL╨ТT╪Ъ\рвd&шкl.Ё ▓ t 6 ° ║ | > ┬ Д F  ╩ М N  ╥ Ф V  ┌Ь^ тдf(ъмn0Є┤v8·╝~@─ЖH ╠ОP╘ЦX▄Ю`2:3Kр К4 РR█▌┘:6ч╨4    :68А:68А::0А::8А::чА    ::8А:@ч╨4А    :@0А:@8А:Cч╨4А    :C8А:Eч    :Eч■ ■ :E8А:J8А:J0А:J8А:J8А :J8А:K8А:K0А:K8А:K8А :K8А:N$А:N0А:N8А:N8А:Z8А:Z8А:Z8А :[8А:[8А:[0А :[8А :[пА:[8А:[8А:]8А:]8А:]8А :_ч╨4А    :_8А:`ч╨4А    :`8А:aчА    :a8А:a0А:a8А:еU    :8А:"ч╨4А    :"8А:"0А:"8А:.еtА    :.еА■ ■ :.8А:2ч╨4А    :28А:28А:C8А:bч╨4А    :bч╨4■ ■ :b0А:b8А:b0А:b8А:ч╨4А    :8А:78А:78А:78А :78А d&шкl.Ё ▓ t 6 ° ║ | T╪Ъ\рв> ┬ Д F  ╩ М N  ╥ Ф V  ┌Ь^ тдf(ъмn0Є┤v8·╝~@─ЖH ╠ОP╘ЦXL╨Т▄Ю`ВmhR 5 Gd%,═  "")),,...1122336677::<<<< @@AACCDDDEEGGHHIIJJKKNNZZ[[\\]]^^^___``aa"")),,..223366::@@CCEEJJKKNNZZ[[]]__``aa""..22CCEE__``""..     bbbbbb `          ;;;;RRRRUUUU77        ! " # $ % &'(&)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!< < < < < < < <  & · М v  ъ ╛ ╘ и | Т f т╠╢аHЁШ@*■ш╥╝жРzP КdN8" Ўр╩┤ЮИr\░ F0ю╪┬м: ЦtА°jT>(№ц╨║Ъ n дОxbL6  Ї▐╚▓ЬЖB pZD.ь╓└кФ~h<&·$ ╕вМ` ZЎ6 Рs! %^58....╛`m sБ)°7ИєG(}▄Ў6Xз╦v ,fragment_size6╩я│x ,fragment_size6<8Ьz ,fragment_size6D*frombrkrinst6D fromsvc6 grantee6 grantor6 growth6grpid6Nguid6Hhandle6Ihandle6Zhash6`hash6 hbcolid6D&hdrpartlen6D$hdrseclen6id6id6id6"id6)id6,id6.id61id62id66id6:id6@id6Cid6Eid6Gid6Nid6[id6^id6_id6`id6 idmajor63 idmajor67 idmajor6a idmajor6 idminor67 idminor6)idtval6<"imageval6J indepid6K indepid6J&indepsubid6K&indepsubid6A indexid6indid66indid6H$initiator6I$initiator6I"inseskey6I&inseskeyid6.internalstatus6"  intprop6, intprop63  intprop66 intprop67 intprop6: intprop6@ intprop6a intprop6.issuer6[kind6\kind6I&lastoorder6I*lastoorderfr6,lastupdatelsn6)length62length63length6lgfgid6E"lifetime6I"lifetime6 lname66 lobds6 lockres6) "maxinrow6(maxinrowlen6 maxint6  maxleaf6 &maxnullbit6]"maxoccur6 maxsize6Xз╦v&message_id6╩я│x&message_id6<8Ьz&message_id6Xз╦v@message_sequence_number6╩я│x@message_sequence_number6<8Ьz@message_sequence_number6Xз╦v0message_type_id6╩я│x0message_type_id6<8Ьz0message_type_id6minint6 minleaf6]"minoccur6E miraddr6 "modified6" "modified6,"modified62 "modified6: "modified6@"modified6_"modified6`"modified6D msgbody6D&msgbodylen6Dmsgenc6Dmsgid6D$msgseqnum6D  msgtype6b&indepclass6b$indepname6b(indepschema6b indepdb6b(indepserver62local_service_id6;id6; grantee6R$fragobjid6R itemcnt6Ulcid6. .lastpkeybackup:чдx}Id6 ╔l~Id6Z=Id6Z=*ModifiedDate╛Ъ~`:╬° ╓ ┤ Т p N , ъ ╚ и К Z * · ║ z :  ю ╚ и Ж ` @ " · ╪ ╕ ШЬ А ^ <  т─DШ^nH.$Ў╓╢ЦvV6Ў╚вА\8р║Фp(tTP▐2Ї╘┤ФtTв╕>(№ц╨║дО╩xbL6  Ї▐╚▓ЬxR2■р┬иМnNр.ф╕М`еб<9k8Их o@zЁ0<)$`у., ╘Ъуу1 ├= ╫г< ╫гА@АёCА@Ыг(?VmДpAА?АоCА?XBА?xBА?@@А?у0<)$Bу.n┤wЭуу%IТ=А@АёCА@▓║pЗЮ╡╠у·(?VmДЫ╪AА?$XBА?0РAА?4HCА?8╨AА?=@А?bА?А?hBА?└AА?еаAА?наAА?п╕AА?ча@А?я└AА?у0<) "0<)$№у/n┤wЭуу┘ЙЭ= А?АёCА?lth|Рд╕╠рЇ0DX╪AА?$XBА?0РAА?4HCА?8╨AА?=@А?bА?А?hBА?└AА?еаAА?наAА?п6ФW=А@hBА@╤┘xПж╜╘ы0G^uМг║а@А?А?А?А@А?AAAа@А?А@А?а@А? @@@ @@А? А?А?А?А@А?А?А?А?А?А?А?А?А?А?:0<" $╪ ╢вювЭ::А?А?hBА?lthBА?¤▓wЭАJ@GЁ?,Щ@Щ@:0<" $э╪ ╝вювЭ::лк*>@hB@о¤MU0EZoДЩА?А?F а@А?IT@А?PK4BА?S @@А?SQ@А?U   ((F ITS Q@ББ@Й¤▓wЭАJ@G`UU╒?@@,Щ@Щ@RjгMJм┬?:0<"$ГD╜вювЭ::═╠L>А@hBА@Ыыє(?VmД@@А?@@А?@А?8BА?А@А? м■▓wЭАJ@k`UU╒?@▐в@╘в@6{¤йц─├?:0<" $&╪ ├гявЭ::?А@hBА@>ОЦ'AА?HBА?¤▓wЭАJ@Gр?,Щ@Щ@Ш\╘▌╤─?:0<"$ ┘ √дявЭ::А?╦=Н<╦=Н<╦=Н<╦=Н<99░▄ BhBa╣╧AА@А?А@л ks╚єBЧ╥0Wжя8Б╝эEpб╚єMД│┌,U~й╓,UК╣т 8 _ М ╡ ш  D m Р ├ ю % X З ╝ ы M В 0А?А?+Categories0А?А?OEventNotificationErrorsQueue0А?А?Ufilestream_tombstone_20730584210А?А?;FK_CategoryProduct0А?А?1PK_Categories0А?А?-PK_Products0А?А?'Products0А?А?OQueryNotificationErrorsQueue0А?А?Iqueue_messages_19770580790А?А?Iqueue_messages_20090581930А?А?Iqueue_messages_20410583070А?А?;ServiceBrokerQueue0А?А?1sysallocunits0А?А?-sysasymkeys0А?А?+sysaudacts0А?А?+sysbinobjs0А?А?1sysbinsubobjs0А?А?'syscerts0А?А?+sysclsobjs0А?А?+syscolpars0А?А?/syscommittab0А?А?7syscompfragments0А?А?/sysconvgroup0А?А?'sysdercv0А?А?)sysdesend0А?А?)sysfgfrag0А?А?)sysfiles10А?А?)sysftinds0А?А?+sysftstops0А?А?-sysguidrefs0А?А?-sysidxstats0А?А?)sysiscols0А?А?А?)sysnsobjs0А?А?5sysobjkeycrypts0А?А?/sysobjvalues0А?А?)sysowners0А?А?%sysphfg0А?А?1syspriorities0А?А?'sysprivs0А?А?-sysprufiles0А?А?)sysqnames0А?А?3sysremsvcbinds0А?А?1sysrowsetrefs0А?А?+sysrowsets0А?А?)sysrscols0А?А?#sysrts0А?А?3sysscalartypes0А?А?+sysschobjs0А?А?7syssingleobjrefs0А?А?3syssoftobjrefs0А?А?/syssqlguides0А?А?5systypedsubobjs0А?А?/sysxmitqueue0А?А?5sysxmlcomponent0А?А?-sysxmlfacet0А?А?5sysxmlplacement0А?А?)sysxprops  ((АCategoriesPK_Productsqueue_messages_2041058307sysbinobjscommittabfgfragguidrefsobjkeycryptsprivsrowsetssingleobjrefsxmlcomponent@Б Б Б@.Б1Б 8БAБGБ OБ[Б`Б g t3, ╘ЪАJ@G4RУ?Ё?.Щ@Щ@√чКЕ№3╙?:0<"$Г╪ d┐явЭ::А?лк*>лк*>╦=Н<AhBА@А?А@Ыыє(?VmДPBА?@А?Z=А?А?Г╫uА?А?А?иyА?А? ╔l~3, ╘ЪАJ@G╨?Ё?,Щ@Щ@B∙Еoе7╝?:арР`▓5 ┼┴f[ <г<S:╤jрв0<$Y3, ╘ЪА?%IТ=%IТ= ╪A`A╕AА@╦┴╔hЫ╘6cЬ╒№3PЛо0А?А?3db_accessadmin0А?А?9db_backupoperator0А?А?1db_datareader0А?А?1db_datawriter0А?А?-db_ddladmin0А?А?9db_denydatareader0А?А?9db_denydatawriter0А?А?'db_owner0А?А?7db_securityadmin0А?А?dbo0А?А?А?;INFORMATION_SCHEMA0А?А?#public0А?А?sys  ((>db_accessadmindatareaderwriterenydatareaderownerguestpublicsys@└└Б └└Б@Б%++Б0Б5;0<$ў3, ╘ЪА?┘ЙЭ=%IТ=Т$┴A`A@Т$бAА@go8PhЫ╬40А?А?0А?А?0А?А?А?3 @0А?А?А?3 @0А?@А?3 @0А?А?А?3  @0А?А?3 МhяR}яЬ@│ГО▄┘0<$╚3, ╘Ъ?6ФW=6ФW=6ФW=6ФW=6ФW=иAШAА?А@А@А@А@А@8@$А?А?РAА?0<"$ьG., ╘Ъ55А?шРЪ<$$А@TBА@\d 7Ne|Ук┴╪я4KbyРз╛╒ь1H_vНд╗╥щ.EА?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?"А?А?)А?А?,А?А?.А?А?1А?А?А?3А?А?6А?А?7А?А?:А?А?А?<А?А?@А?А?AА?@А?EА?@А?IА?А?А?KА?А?NА?А?RА?А?UА?А?ZА?А?А?\А?А?А?^А?А?А?`А?А?А?bА?А?Г╫uА?А?А?С╦┐wА?А?А?иyА?А?А?u\Р{А?А?оАД|50<"$мG3, ╘Ъ55А??шРЪ<шРЪ<СЪ BTBА?А@"5╤AА@$TBА?50< р"0< └$-$▒wЭлкк>А?`AА?TХЭ,@ AА?R@@А?SА?А?U  ((RSU@ЗВ0<  "0< $ъДЁ=╬wЭВВА?А?CА?RZCА?G ((G@В0<  "0< $пДЁ=╬wЭВВА?А@CА@'CА?В0<  "0< $╬ДЁ=╬wЭВВ?А@CА@>F'CА?А?А?В0< "0<$пДё=╬wЭВВА?А@CА@'CА?В0< "dx ¤N^НБ░2╣`?<<З╒;╕▄╟╘є0<$ ┴3, ╘ЪggА?f<MMA╬BAЗ П hГЮ╣╘я %@[vСм╟т¤3NiДЯ║╒Ё &A\wТн╚у■4OjЕа╗╓ё 'B]xУо╔ф 5PkЖб╝╫Є ( C ^ y Ф п ╩ х  6 Q l А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?"А?А?)А?А?,А?А?.А?А?1А?А?А?3А?А?6А?А?7А?А?:А?А?А?<А?А?@А?А?AА?@А?EА?@А?IА?А?А?KА?А?NА?А?RА?А?UА?А?ZА?А?А?\А?А?А?^А?А?А?`А?А?А?bА?А?А?А?А?А?А?А?)А?А?,А?А?.А?А?2А?А?3А?А?6А?А?7А?А?:А?А?@А?А?CА?А?EА?А?JА?А?KА?А?NА?А?ZА?А?[А?@@А?aА?А?bА?А?А?А?А?А?"А?А?.А?А?2А?А?CА?А?EА?А?_А?А?`А?А?"А?А?.А?А?< А?А?А?А?А?А?А?А?А?А?А?А?А? А?А? А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?g0< "0<"0<"0<"0<$п3, ╘ЪА?А???АA@А@А@А@А@'@А?0<$п3, ╘ЪА?А@А?А@'А?А?0<$╬3, ╘Ъ?А@@А@>F'А?А?А?А?0<"0<$И3, ╘ЪА?%IТ=А@`AА@°@WnЕЬ│╩сА?А?А?А?А?А?А?А?А?А?@А?А?А?@А?А?@А?@А?@А?А?А? @O(convert(bit,([status] & 4)))0 O(convert(bit,([status] & 8)))G0?(convert(smallint,0))0 ?(convert(smallint,0))0 ╣(convert(smallint,isnull(convert(binary(2),reverse(substring([forkeys],1,2))),0)))0 ╣(convert(smallint,isnull(convert(binary(2),reverse(substring([forkeys],3,2))),0)))0 ╣(convert(smallint,isnull(convert(binary(2),reverse(substring([forkeys],5,2))),0)))0 ╣(convert(smallint,isnull(convert(binary(2),reverse(substring([forkeys],7,2))),0)))ККК0╣(convert(smallint,isnull(convert(binary(2),reverse(substring([forkeys],9,2))),0)))0╗(convert(smallint,isnull(convert(binary(2),reverse(substring([forkeys],11,2))),0)))0╗(convert(smallint,isnull(convert(binary(2),reverse(substring([forkeys],13,2))),0)))0╗(convert(smallint,isnull(convert(binary(2),reverse(substring([forkeys],15,2))),0)))0╗(convert(smallint,isnull(convert(binary(2),reverse(substring([forkeys],17,2))),0)))0╗(convert(smallint,isnull(convert(binary(2),reverse(substring([forkeys],19,2))),0)))0╗(convert(smallint,isnull(convert(binary(2),reverse(substring([forkeys],21,2))),0)))F0╗(convert(smallint,isnull(convert(binary(2),reverse(substring([forkeys],23,2))),0)))0╗(convert(smallint,isnull(convert(binary(2),reverse(substring([forkeys],25,2))),0)))╖А4┤°<А─LР╘\афдd─t4Ї╚x888888888╚┤  ╝ \ M+]о  ▌ ╗ Щ w `;:<┌┤<а Я ╥а0< "0<"0<"0<"0<$п3, ╘ЪА?А???АA@А@А@А@А@'@А?0<$п3, ╘ЪА?А@А?А@'А?А?0<$╬3, ╘Ъ?А@@А@>F'А?А?А?А?0<"0<$И3, ╘ЪА?%IТ=А@`AА@°@WnЕЬ│╩сА?А?А?А?А?А?А?А?А?А?@А?А?А?@А?А?@А?@А?@А?А?А? @0<$E ╚3, ╘Ъgg╙Ы^?A 4А?╬BА?T\,@╢BА?AА?@@А?g0< А"oupuid0.88  ;id0.44 =uid0.00  Caction0.00   Mprotecttype???0.ееа     Ecolumns0.44   Egrantor0._44 Cfileid0._44 Egroupid¤╕0._88  ?size0._88    Emaxsize0._88  Cgrowth0._88  Cstatus0.  Dhobtid0ьмl(фЬX╨Ф ╠ М D $рЬX╨И И И И И И И И И И И И И И И И И И И И И И И И И И И И И И И И И И И И И И И И И И И И И И И И И И И И И И И И Ё6Т▌є%FЧш╞дВо╛бE<|╞=rgЦBэ0<."0<."0<."0<."0<1"0<2$╢"., ╘Ъ""А?ёЁЁ<А@BА@&.╨ч■,CZqИЯ╢═ф√)@WnЕЬ│╩с°А?А?"А?А?А?$А?А?(А?А?А?*А?А?+А?А?0А?А?А?8А?@А?<А?А?А?>А?А?bА?А?cА?А?hА?А?А?lА?А?zА?А?А?А?А?БА?А?ВА?А?еА?А?зА?А?нА?А?пА?А?╜А?А?чА?А?яА?А?ёА?А?"0<2$п"., ╘Ъ""А?ёЁЁ<ёЁЁ<╙╥▓ABА@жеeAА@'BА?"0<2$u"., ╘Ъ""А?ёЁЁ<ёЁЁ<ёЁЁ<╙╥▓ABжеeAА@А@╤▌х╪√;Zyв╒·DkИп╬ &Q~г┬с /fП┤0А?А?#bigint0А?А?#binary0А?А?bit0А?А?char0А?А?date0А?А?А?)datetime20А?А?3datetimeoffset0А?А?%decimal0А?А?!float0А?А?)geography0А?А?'geometry0А?@А?int0А?А@А?'nvarchar0А?А?real0А?А?1smalldatetime0А?А?'smallint0А?А?+smallmoney0А?А?-sql_variant0А?А?%sysname0А?А?text0А?А?time0А?А?)timestamp0А?А?%tinyint0А?А?7uniqueidentifier0А?А?)varbinary0А?А?%varchar0А?А?xml  ((Nbigintdatetimeoffsetgeographyimagencharvarcharsmallintysnametimestampvarbinary@Б┴ Б Б└"Б#'└.Б/6Б < E"0<3"0<3"0<1 "0<1 "0<1 "0<2  "0<2 $0"лm┤wЭ""А?!=А?BА?аи└╘ш№$8L`tИЬ░─╪ь(<PdxМА?А?"А?А?А?$А?А?(А?А?А?*А?А?+А?А?0А?А?А?8А?@А?<А?А?А?>А?А?bА?А?cА?А?hА?А?А?lА?А?zА?А?А?А?еА?А?зА?А?нА?А?пА?А?╜@А?чА?А?я@@А?ЁА?А?ё"0<3 А"0<3 "0<2 а"0<2 А$п"Ч)╬wЭ""А?А@BА@'BА?"0<2  "0<2 $п"Ч)╬wЭ""А?А@BА@'BА?"mallint,isnull(convert(binary(2),reverse(substring([refkeys],23,2))),0)))0&╗(convert(smallint,isnull(convert(binary(2),reverse(substring([refkeys],25,2))),0)))0'╗(convert(smallint,isnull(convert(binary(2),reverse(substring([refkeys],27,2))),0)))0(╗(convert(smallint,isnull(convert(binary(2),reverse(substring([refkeys],29,2))),0)))0)╗(convert(smallint,isnull(convert(binary(2),reverse(substring([refkeys],31,2))),0)))Ё88 Ф╣ееееа╣0╣v─∙ж╫EEEEEш╣x╣w$x;и -----d╣/ж00xxxx0`╢0╣а╣x$x;и ╫╫╫╫╫╣╝╣°Юкж00ВВВВx╣ш╣y$x;и 11111L╣╣ЇQ╖ж88 dddd└╣0╣z(x;и иииииL╣\ЮШF00╚╥礤¤¤╣x╣{(x;и9 ╓╓╓╓╓мe╣$╣╪{ М╣№╣ГГГГp╣└╣|Dx;и Ф╣т ЭА4SSSS╕╣╣}(x;иу жжжжжчч╨4╘╣єєєєр╣p╣~─∙ж╫LLLLLtype(╣╕╣(x;иу oooooччz╨4D╣z::::╚╣р╣Аz─∙ж╫(convert(tinyint,xtypetotds([xtype],(1 - ([typestat] & 1)))))JJJJР?p┌р╣(╣Б░▒в┌usertypeRRRRВВ8╣╚╣В░▒в┌aaaaasmallint4444Ё?А╣╣Г(x;иу ссссс44┤┤┤┤ `╣8╣Д─∙ж╫smallintР╘\аф(l░Ї$ $ $ $ $ $ $ $ $ $ $ $ $ $ рфF░o└ lJ(ш╞дВ`ВА?<">\ю z0<$R X8, ╘Ъxx▌` >A 4UlГЪ▒╚▀Ў $;RiАЧо┼▄є !8Of}Фл┬┘ЁBА?$ЪBА?0ШAА?4ЛCА?8╨AА?=@А?bА?А?h8BА?AА?е@А?чAА?пAА?п@@А?я@@А?пА@А?нА?А?е@@А?нPAА?н А@А?е@А?еа@А?е @А?е8А?А?е@@А?еUА?А?чАА?А?еDBА?чА?А?яPAА?ч@А?чА?А?я@А?еt@А?е╨А@А?ч@x0<  "0< $xX-n┤wЭxxяюю>!=А@DА@шЁ└╫ю3JaxПж╜╘ы0G^uМг║╤╢BА?╢BА?вBА?МBА?\BА?8BА?BА?╪AА?╕AА? РAА? АAА? `AА? 0AА?  AА?AА?а@А?А@А@А@@@@@@@@@@@@@@@@@А?А?А?А?А?А?А?xА? А?А?А? А?А? [0< $+▓Я■▓wЭ[[═╠L>А@╢BА@Ыг(?VmДА?А?DBА?ЁAА?AА?@А?[0<  "0<  "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Цд╘ `В>;<` O?ИЪ\FўR0<$╣ н8, ╘Ъ[[А?A 4<CCA╢BA) 1 3NiДЯ║╒Ё &A\wТн╚у■4OjЕа╗╓ё 'B]xУо╔ф 5PkЖб╝╫Є (C^yФп╩х6QlЗв╜╪є А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?"А?А?)А?А?,А?А?.А?А?1А?А?А?3А?А?6А?А?7А?А?:А?А?А?<А?А?@А?А?AА?@А?EА?@А?IА?А?А?KА?А?NА?А?RА?А?UА?А?ZА?А?А?\А?А?А?^А?А?А?`А?А?А?bА?А?А?А?А?А?А?А?)А?А?,А?А?.А?А?2А?А?3А?А?6А?А?7А?А?:А?А?@А?А?CА?А?EА?А?JА?А?KА?А?NА?А?ZА?А?[А?@@А?aА?А?bА?А?А?А?А?А?"А?А?.А?А?2А?А?CА?А?EА?А?_А?А?`А?А?"А?А?.А?А?А?@@А?А?А?А? А?А?А? А?А? [0< $+▓Я■▓wЭ[[═╠L>А@╢BА@Ыг(?VmДА?А?DBА?ЁAА?AА?@А?[0<  "0< $h▓а■▓wЭ[[ЧЦ? ╫г<((А@╢BА@╪р@WnЕЬ│╩с°&=TkВЩ░╟▐ї #:QhЦн─█Є  7Ne|Ук┴А?А?А?А?@А?А?А?@@А?А?А?А?А?А?А?А?@@А?А?А?А@А?"@А?)@А?,А@А?.А?А?1@@А?2@А?3@А?6@А?7@А?:А?А?А?<@А?@А?А?A@@А?CА?А?D@@А?EА?@А?I@@@K@А?NА?А?RА?А?U@А?Z@А?[А?А?\@А?]А?А?^@@@@@@`@@@b@А?Xз╦v@└@@оАД|[0< $Г▐ ╜вювЭ^^═╠L>А@╝BА@Ыыє(?VmДА?А?LBА?°AА?AА?@А?Я■▓wЭ└V@▓аЩЩ╔?^Ц@RЦ@f^ь'ёЗ?^0< $■▐ ╛вювЭ^^ЧЦ?┘ЙЭ<**А@╝BА@fnPg~Хм├┌ё6Md{Тй└╫ю3JaxПж╜╘ы0G^uМг║╤ш А?А?А?А?@А?А?А?@@А?А?А?А?А?А?А?А?@@А?А?А?А@А?"@А?)@А?,А@А?.А?А?1@@А?2@А?3@А?6@А?7@А?:А?А?А?<@А?@А?А?A@@А?CА?А?D@@А?EА?@А?I@@@K@А?NА?А?RА?А?U@А?Z@А?[А?А?\@А?]А?А?^@@@@@@`@@@b@А?Z=@А?Xз╦v@└@@оАД|А?А? ╔l~а■▓wЭ└V@▓(@сzФ?Ё?^Ц@RЦ@╧мn▒%─?^!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Q╬`В aZёZ@vРq°ЫУ аЖ ЯЪjeX╡°tZNР√Ш¤ЄЁЫmC╡╕■ ┬у:= xаS CёSZ хvЪ ezШ ╧=0Їp9{ОПК*∙0ё T╣√▌oЫїє╕xGj5ярv╪jYsM"щЄ·MУЇa~хv╪ Сt╪9─$┬вФШuhТъ г╪єI!ЕU╕L"Є5 Є# щФ$gўЫ %tw&s∙='ez^ (К5aг)ЁўZа*uїA/+е▓Ы▌,ЄzЯб-rщO┼.aQJ/wXЪ0ўQь∙1п·ч2уn И3Е&U 4If,=5ЪSмb6ГРНc7Є0z 8Ї0zь9¤ы{,:¤ыз,;t|Щ<r|Щю=o▓ы>oz╪Э?уs╕Э@▀┴KJA┌_BM╜▄Cbt·ЬDz└}═E:д;яFЇ┤GьpYHCёS^I5In5J ▓√▌Kж80LЫЫ7Mь6NК·Р-OgwШ Pтq>QхyX RC╩}YSХЙq+T0U·█@VvЧ~бWVЦЗ_XzЦ╛НYbvx<ZЁрЯю[0█Єб\й╧gI]Эб°)^є№#_@c4Ю`r.gФaFщ√╪b`╝Нbit0А?char0А?'datetime0А?%decimal0А?!float0А?!image0А?int0А?!money0А?!nchar0А?!ntext0А?%numeric0А?'nvarchar0А?real0А?1smalldatetime0А?'smallint0А?+smallmoney0А?-sql_variant0А?%sysname0А?text0А?)timestamp0А?%tinyint0А?7uniqueidentifier0А?)varbinary0А?%varcharT╨@@@j @Иj¤Ъ^э▓=ЧUУ═╠L>═╠L>═╠L>dff╞Aа@ffЦA@А@+Tк0А?+syscolumns0А?)sysfiles10А?+sysindexes0А?+sysobjects0А?'systypesT▀@@ @j @Иj¤Ъ^uъ=ЧUУА?═╠L>Aа@А@А@а@Tg@@ @j @Иj¤Ъ^],>ЧUУKK═╠L>tZ<tZ<tZ<KЪЩйAЦBА@33SA@@.E\0A╪AиA@AА@TO@@ @j @шЗj¤Ъ^Vm>ЧUУ┘Й=┘Й=┘Й=АA╨A@`A*?Ti~Уи╜╥ч№&;PezПд╣А?"А?А?А?$А?0А?4А?8А?:А?@@А?>А?bА?cА?hА?jА?lА?zА?А?еА?зА?нА?пА?╜А?чА?яА?TH@ @ @j @Иj¤Ъ^TdH@ TH@ T H@ T ╘Иw№ХjдН╦8 Н8 Н`Н╝w░yМTТj gW╚№Н░yМT ╘HМ№ХjдoМ╦ШjМШjМ`Н╝wКЛTТj gWpLqМКЛT ╦ЇЙЇЙ`Н╝wЇЙїa╝wHрЙдКj2PW1ЇЙдКjфPWбhJЩT  ╘lК╠Хjд█М╦p^Мp^М`Н╝w░Щw$Тj gW╚№ВМ░ЩwT╘шМ┤ХjдЛМ╦`ПМ`ПМ`Н╝w░YМ Тj gW╚№ЦМ░YМT╘шМЬХjдKМ╦8SМ8SМ`Н╝w░ЩМЇСj gW╚№VМ░ЩМT╘шМЬХjдУМ╦шЦМшЦМ`Н╝wКwЇСj gWpLЭМКwTUН╝w╦@ФМ@ФМ`Н╝w@ФМїa╝wHНьКj2PWTUН╝w╦@ФМ@ФМ`Н╝w@ФМїa╝wHНьКj2PWTUН╝w╦@ФМ@ФМ`Н╝w@ФМїa╝wHНьКj2PWT╘шМ№ХjдCМ╦8KМ8KМ`Н╝w░ЩМTТj gW╚№NМ░ЩМT╘иМ№ХjдПМ╦ШКМШКМ`Н╝wкЙTТj gWpLСМкЙT╘иМфХjдgК╦`kК`kК`Н╝w░ЩМ<Тj gW╚№nК░ЩМMM@3&  Єх╪╦╛▒дЧК}pcVI</"√юс╘╟║наУЖyl_RE8+ўъ▌╨├╢йЬПВuh[NA4' єц┘╠┐▓еШЛ~qdWJ=0# №ят╒╚╗обФЗzm ZZЎA`FПcЛ^B8╛`ВaZ 6BvРJУiп0аЖWhttp://www.w3.org/2001/XMLSchema0уn И2_http://www.w3.org/XML/1998/namespace0`╝Нb1base64Encoded0zЦ╛НX)sqlSortId0 щФ#5negativeInteger0r.gФ` microsoft.sqlserver.types, version=10.0.0.0, culture=neutral, publickeytoken=89845dcd8080cc91, processorarchitecture=msil0┬вФШ!IDREF0wXЪ/'ENTITIES0 ЯЪ%anyType0bt·ЬC#bigint0уs╕Э?!image0oz╪Э>#binary0@c4Ю_microsoft.sqlserver.types, version=0.0.0.0, culture=neutral, publickeytoken=89845dcd8080cc91, processorarchitecture=msil0ЁўZа)/unsignedLong0vЧ~бV9sqlCompareOptions0ЄzЯб,/unsignedByte00█Єб[=xmlSchemaCollection0К5aг(;nonNegativeInteger0jeX╡1anySimpleType0rщO┼-5positiveInteger0z└}═D'smallint0Fщ√╪a-hierarchyid0M╜▄B%numeric0е▓Ы▌+1unsignedShort0 ▓√▌J!money0T╣√▌#gMonth0п·ч1http://schemas.microsoft.com/sqlserver/2004/sqltypes0uhТъ#ENTITY0o▓ы=)varbinary0Ї0zь8!nchar0r|Щю<!ntext0ЁрЯюZ)precision0Gj5я#anyURI0:д;яE%tinyint0Є5 Є";nonPositiveInteger0oЫї)hexBinary0ўQь∙0'NMTOKENS0Р√Ш¤%boolean0C╡╕■#double0─$ID0Ї┤Fbit0tw%int0ь6Mxml0╧=0+gYearMonth0хv╪ Name0Е&U 3/xmlSpaceEnum0хyX Qbase0ez^ 'byte0Є0z 7char0ezШ date0∙0ё gDay0gwШ Olang0gўЫ $long0ьpYGreal0t|Щ;text0хvЪ time0рv╪!QName0jY'NOTATION0·█@U'localeId0xаS 'duration0sM"7normalizedString0є№#^3datetimeoffset0Эб°)])datetime20ОПК*)gMonthDay0ХЙq+S-clrTypeName0¤ы{,9%varchar0¤ыз,:'nvarchar0К·Р-N'dbobject0uїA/*-unsignedInt00T)maxLength0ж80K+smallmoney05In5I1smalldatetime0ЫЫ7L7uniqueidentifier0Сt╪9#NCName0bvxP!space0й╧gI\/sqlTypeAlias0г╪єI %NMTOKEN0▀┴KJ@)timestamp0aQJ.#IDREFS0ЕU╕L!%integer0щЄ·M!token0°tZN#string0C╩}YR)sqlDbType0CёSZ 'dateTime0CёS^H'datetime0┌_A7timestampNumeric0VЦЗ_W=sqlCollationVersion0ЪSмb5AsqlCompareOptionsEnum0ГРНc6AsqlCompareOptionsList0ЄЁЫm!float0є╕x/base64Binary0Їp9{!gYear0УЇa~'languageю┐Ю]▀иБZ1э╚е|W(т▒РoLф ╣ Р c <  Ё ├ Ъ q >  р ╣ Т q R 3  ї ╓ ╖ Ш y Z ; э ┬ е И k P  ї╬еjE"∙╪╖Оkь╔иwR%■╔Ш] ё╕ЙВ_>Ў╧оеpG╖`Вq-)+)с╔ C`.7N ║0-E88 А9id0-Eч╨4А=name0-EччАAremsvc0-EччАEbrkrinst0-EччА=addr0-EччАCmiraddr0-E==АElifetime0-G$$А9id0-G88 АIservice_id0-G88 АAstatus0-G88 АErefcount0-H$$АAhandle0-H$$АAdiagid0-H00АGinitiator0-HАCsendseq0-HннАEsendxact0-I$$АAdiagid0-I00АGinitiator0-I$$АAhandle0-IАArcvseq0-I88 АCrcvfrag0-I88 АAstatus0-IппА?state0-I==АElifetime0-I 88 АEcontract0-I 88 А?svcid0-I $$АGconvgroup0-I АAsysseq0-I АGenddlgseq0-IАKfirstoorder0-IАIlastoorder0-I88 АMlastoorderfr0-I==АEdlgtimer0-I==АGdlgopened0-I88 АCprincid0-Iее88АGoutseskey0-I$$АKoutseskeyid0-I88 АIfarprincid0-Iее88АEinseskey0-I$$АIinseskeyid0-IччАAfarsvc0-IччАKfarbrkrinst0-I00АEpriorityД 9 ° п j ! ╓ П L  └s*▀ШW╤МG╟ДC╗z5Єлj)фгZ!▄Щ\╓Щ`Вp-qW) MD`AX║l╖0-)ее@@АAidtval0-,00А?class0-,88 А9id0-,ч╨4А=name0-,88 А=nsid0-,88 АAstatus0-,88 АCintprop0-,==АCcreated0-,==АEmodified0-.88 А9id0-.ч╨4А=name0-.ееttАAissuer0-.ееА=snum0-.ее  АIthumbprint0-.ее╨╨А=pkey0-.ппАEencrtype0-.ее  @А=cert0-. 88 АAstatus0-. ==АQlastpkeybackup0-100А?class0-188 А9id0-188 А?subid0-1ч╨4А=name0-1bbPPА?value0-288 А9id0-288 А?schid0-2ч╨4А=name0-200А?xtype0-244АAlength0-200А=prec0-200А?scale0-288 АKcollationid0-2 88 АAstatus0-2 ==АCcreated0-2 ==АEmodified0-2 88 А=dflt0-2 88 А;chk0-300А?class0-388 АCidmajor0-388 А?subid0-3чА=name0-300А?xtype0-388 А?utype0-344АAlength0-300А=prec0-3 00А?scale0-3 88 АKcollationid0-3 88 АAstatus0-3 88 АCintprop0-688 А9id0-688 А?indid0-6ч╨4А=name0-688 АAstatus0-688 АCintprop0-600АEfillfact0-600А=type0-600АEtinyprop0-6 88 АGdataspace0-6 88 А?lobds0-6 АArowset0-788 АCidmajor0-788 АCidminor0-788 А?subid0-788 АAstatus0-788 АCintprop0-700АGtinyprop10-700АGtinyprop20-:00А?class0-:88 А9id0-:88 А=nsid0-:чА=name0-:88 АAstatus0-:ппА=type0-:88 АCintprop0-:==АCcreated0-: ==АEmodified0-;00А?class0-;88 А9id0-;88 А?subid0-;88 АCgrantee0-;88 АOaudit_spec_id0-;ппА=type0-;ппА?state0-<00АEvalclass0-<88 А?objid0-<88 АEsubobjid0-<88 АAvalnum ╟ИC╟x5Ў╜~9Ў│v5°╗ВC№╡r1Єпl+ье`#▐ Ы Z  ▐ е b ! ╓ Ч Z  ┌ Ы ^  ▄ Э b % рЭ\╥ХT╪Щ`!феl-▄Ы^▄УV╪ЯZ╘УVрб`=П <)СEХ ╩╔█0<6$hн*, ╘Ъ[[ЧЦ? ╫г/зА@▐BА@°@WnЕЬ│╩сА?А?DBА?ЁAА?AА?@А?AА? р@А? А@А? o0<6  "0<6 $Jт m┤wЭvvлк*>А@ьBА@║┬0G^uМгА?А?А?А?@А?кBА? @@А? ╨AА? v0<6  "0<6 $╬▌z)╬wЭЖЖ?А@CА@>F' BА?╝BА?Ж0<6 "0<6$╬рz)╬wЭЗЗ?А@CА@>F'°BА?0AА?З0<6 "0<6$фц├)╬wЭРРлкк>А?CА?T\,@LBА?LBА?(BА?Р0<6 "0<6$пщр)╬wЭССА?А@CА@'CА?Сi т▄ь№Рц╚`Ра<lxFУJn┐0UlГЪ▒╚▀Ў $;RiАЧо┼▄є !8Of}Фл┬┘Ё5LczСи┐╓э2I`wОе╝╙ъ/F]tЛв╣╨чА?А?0AА?а@а@а@@@А?@@@А?А?А?А?А?А? @А? А?А?А? А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?!А?А?dА?А?А?fА?А?А?hА?А?А?jА?А?А?lА?А?А?nА?А?А?pА?А?А?rА?А?А?tА?А?А?vА?А?А?xА?А?yА?А?АА?А?А?ВА?А?╚А?А?А?╩А?А?А?А?,А?А?-А?@А?1А?А?А?3А?А?А?5А?А?А?7А?А?А?9А?А?А?;А?А?А?=А?А?А??А?А?А?AА?А?BА?@А?FА?А?А?HА?А?А?JА?А?А?LА?А?А?NА?А?hА?А?|А?А?}@А?@@@@@@А?@@А?@@@@@@@@ @А?А?А?А?Xз╦vА?@@А?оАД|@@А?asф|%, ╘Ъ@b@ТAАўБ?@╧▓@╠▓@┘Я╣ чя─?Х0UlГЪ▒╚▀Ў $;RiАЧо┼▄є !8Of}Фл┬┘Ё5LczСи┐╓э2I`wОе╝╙ъ/F]tЛв╣╨чА?А?0AА?а@а@а@@@А?@@@А?А?А?А?А?А? @А? А?А?А? А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?!А?А?dА?А?А?fА?А?А?hА?А?А?jА?А?А?lА?А?А?nА?А?А?pА?А?А?rА?А?А?tА?А?А?vА?А?А?xА?А?yА?А?АА?А?А?ВА?А?╚А?А?А?╩А?А?А?А?,А?А?-А?@А?1А?А?А?3А?А?А?5А?А?А?7А?А?А?9А?А?А?;А?А?А?=А?А?А??А?А?А?AА?А?BА?@А?FА?А?А?HА?А?А?JА?А?А?LА?А?А?NА?А?hА?А?|А?А?}@А?@@@@@@А?@@А?@@@@@@@@ @А?А?А?А?Xз╦vА?@@А?оАД|@@А?pНг}╤╛явЭаb@-&Bа╧Б?@Ёx@Ёx@ц/z─ВЩ?%, ╘Ъ@b@ТAАўБ?@╧▓@╠▓@┘Я╣ чя─?Хщ.E\sКб╕╧ц¤+BYpЗЮ╡╠у·(?VmДЫ▓╔рў@А?@@А?@@@@@@@@@ @@@ @@@А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А? А?А?А?"А?А?А?$А?А?А?&А?А?А?(А?А?А?*А?А?А?,А?А?А?.А?А?А?0А?А?3А?А?А?5А?А?А?7А?А?А?9А?А?А?;А?А?А?=А?А?А??А?А?А?AА?А?А?CА?А?А?EА?А?А?GА?А?А?IА?А?А?KА?А?А?MА?А?А?OА?А?А?QА?А?А?SА?А?А?UА?А?А?WА?А?А?YА?А?А?[А?А?А?]А?А?^А?А?aА?А?bА?А?@j0А@CА@║┬0G^uМг CА?А?А?А?А?А?@@А?╔А?А?╨А?А?╥Т0А?А?А?@А?А?А?BА?@А?FА?А?А?HА?А?А?JА?А?А?LА?А?А?NА?А?hА?А?А?jА?А?А?lА?А?А?nА?А?А?pА?А?А?rА?А?А?tА?А?|А?А?}c0<[$пc%, ╘ЪccА?лкк>А>/'<╡~%<╡~%<╡~%<░A╞BА@А@А?А@А?А@А@'╞BА?c7■` Z]ЎH |UП╟Л^'8╛` ]ТJI HЫ ZКa-.,ijpkql.mqnqoxpxqrs|I}|ft р  р р  р р` р рy    р}    рs    рw    рq    рЧ    рz    рЦ    рu    р    рx    рt    р~    рv    р{    рr    ртыfц р|    р  uuuu$иC╗°B╗ЦDx;и ЛЛЛЛЛdE╗А4▐▐▐▐88рC╗@C╗Ч░▒в┌МММММsysfiles┘┘┘┘рраD╗иC╗ШаXбвєєєєє@  ьD╗╝D╗жжжж╨D╗рC╗Щx;иъ яяяяяsysfiles║║║║HE╗аD╗ЪXXбв,┴┴┴┴┴^HФФФФ░E╗╨D╗ЫDx;и ИИИИИА4▌▌▌▌шE╗HE╗Ь└иw99999Ln╢И llllчч0F╗░E╗Э$диDЛЛЛЛЛМl╢eчч╨4▐▐▐▐F╗PJ╗шE╗ЮX∙жl(((((ФJ╗lJ╗╝J╗фJ╗}}}}xJ╗0F╗ЯX∙ж═\u╢EEEEаJ╗PJ╗аX∙ж═дv╢DDDD╚J╗xJ╗бX∙ж═zzzzz№w╢////ЁJ╗аJ╗вX∙ж═╣╣╣╣╣Ty╢ьььь(K╗╚J╗г└иw┤┤┤┤┤ ц╣scalИ сссс°J╗pK╗ЁJ╗д$диDЎЎЎЎЎLф╣eчч╨4гггг K╗РO╗(K╗еX∙жlммммммO╗$P╗tP╗╘O╗∙∙∙∙╕O╗pK╗жX∙ж═(((((,э╣}}}}рO╗РO╗зX∙ж═╪╪╪╪╪№O╗lю╣ННННP╗╕O╗иX∙ж═▓▓▓▓▓мя╣чччч0P╗рO╗йX∙ж═tttttLP╗№Ё╣!!!!XP╗P╗кX∙ж═зззззLЄ╣ЄЄЄЄАP╗0P╗лX∙ж═OOOOOЬє╣╕P╗XP╗м└иw!!!!!╠ ╣nPИ ttttyFQ╗АP╗н$диDccccc ■╣┌eчч╨46666LLLL U╗╕P╗оX∙жlмммммdU╗>5Ї* ╘ЪЇ* ╘Ъ Cfloat01""Ї* ╘ЪЇ* ╘Ъ Cimage0188 Ї* ╘ЪЇ* ╘Ъ ?int01<<Ї* ╘ЪЇ* ╘Ъ Cmoney01яя@╨4Ї* ╘ЪЇ* ╘Ъ Cnchar01cc╨4Ї* ╘ЪЇ* ╘Ъ Cntext01ll&&Ї* ╘ЪЇ* ╘Ъ Gnumeric01чч@╨4Ї* ╘ЪЇ* ╘Ъ Invarchar01;;Ї* ╘ЪЇ* ╘Ъ Areal01::Ї* ╘ЪЇ* ╘Ъ Ssmalldatetime0144Ї* ╘ЪЇ* ╘Ъ Ismallint01zz Ї* ╘ЪЇ* ╘Ъ Msmallmoney01bbPЇ* ╘ЪЇ* ╘Ъ Osql_variant01ч╨4Ї* ╘ЪЇ* ╘Ъ Gsysname01##╨4Ї* ╘ЪЇ* ╘Ъ Atext01╜╜Ї* ╘ЪЇ* ╘Ъ Ktimestamp0100Ї* ╘ЪЇ* ╘Ъ Gtinyint01$$Ї* ╘ЪЇ* ╘Ъ Yuniqueidentifier01ее@Ї* ╘ЪЇ* ╘Ъ Kvarbinary01зз@╨4Ї* ╘ЪЇ* ╘Ъ Gvarchar01(( |+ ╘Ъ|+ ╘Ъ Adate01))|+ ╘Ъ|+ ╘Ъ Atime01**|+ ╘Ъ|+ ╘Ъ Kdatetime201++ "|+ ╘Ъ|+ ╘Ъ Udatetimeoffset01АЁ|Ж+ ╘ЪЖ+ ╘Ъ Ohierarchyid01БЁ  П+ ╘ЪП+ ╘Ъ Igeometry01ВЁ  ░+ ╘Ъ░+ ╘Ъ Kgeography╨`AXhфОCП F ўЯ4╟Є)ДБ9й■WШ┐ыгвW╒ъ| Z2ЎL└яcUЛ^K8╛` "2║M XА>▐.&ёxml&bigint&нbinary&hbit&пchar&=datetime&jdecimal&>float&"image&8int&<money&яnchar&cntext&lnumeric&чnvarchar&;real&:'smalldatetime&4smallint&z!smallmoney&b#sql_variant&sysname&#text&╜timestamp&0tinyint&$-uniqueidentifier&еvarbinary&зvarchar&(date&)time&*datetime2&+)datetimeoffset&А#hierarchyid&Бgeometry&Вgeography`ў╩пРF{`= ╪├жЛt]F3г╞уъz[═1╕еМs Z2ЎN└√a^ ^M8╛` "2║O XБ>^/О&ёxml&bigint&нbinary&hbit&пchar&=datetime&jdecimal&>float&"image&8int&<money&яnchar&cntext&lnumeric&чnvarchar&;real&:'smalldatetime&4smallint&z!smallmoney&b#sql_variant&sysname&#text&╜timestamp&0tinyint&$-uniqueidentifier&еvarbinary&зvarchar&(date&)time&*datetime2&+)datetimeoffset&А#hierarchyid&Бgeometry&Вgeography`ў╩пРF{`= ╪├жЛt]F3г╞уъz[═1╕еМs Z2ЎP0A.vк^O8!!!!╛`В':Щ9Q И░Г╖й0'X R+ ╘ЪR+ ╘Ъ Чhttp://schemas.microsoft.com/SQL/ServiceBroker/Error0'E R+ ╘ЪR+ ╘Ъ Яhttp://schemas.microsoft.com/SQL/ServiceBroker/EndDialog0'X R+ ╘ЪR+ ╘Ъ пhttp://schemas.microsoft.com/SQL/Notifications/QueryNotification0'X R+ ╘ЪR+ ╘Ъ пhttp://schemas.microsoft.com/SQL/Notifications/EventNotification0'E R+ ╘ЪR+ ╘Ъ гhttp://schemas.microsoft.com/SQL/ServiceBroker/DialogTimer0'X R+ ╘ЪR+ ╘Ъ ┘http://schemas.microsoft.com/SQL/ServiceBroker/BrokerConfigurationNotice/MissingRoute0'X R+ ╘ЪR+ ╘Ъ ╫http://schemas.microsoft.com/SQL/ServiceBroker/BrokerConfigurationNotice/FailedRoute0'X R+ ╘ЪR+ ╘Ъ ўhttp://schemas.microsoft.com/SQL/ServiceBroker/BrokerConfigurationNotice/MissingRemoteServiceBinding0' X R+ ╘ЪR+ ╘Ъ їhttp://schemas.microsoft.com/SQL/ServiceBroker/BrokerConfigurationNotice/FailedRemoteServiceBinding0' N R+ ╘ЪR+ ╘Ъ нhttp://schemas.microsoft.com/SQL/ServiceBroker/ServiceEcho/Echo0' X R+ ╘ЪR+ ╘Ъ ╗http://schemas.microsoft.com/SQL/ServiceBroker/ServiceDiagnostic/Query0' X R+ ╘ЪR+ ╘Ъ ╜http://schemas.microsoft.com/SQL/ServiceBroker/ServiceDiagnostic/Status0' N R+ ╘ЪR+ ╘Ъ ╟http://schemas.microsoft.com/SQL/ServiceBroker/ServiceDiagnostic/Description0'N R+ ╘ЪR+ ╘Ъ =DEFAULT0'R+ ╘ЪR+ ╘Ъ ╖http://schemas.microsoft.com/SQL/Notifications/PostQueryNotification0'R+ ╘ЪR+ ╘Ъ ╖http://schemas.microsoft.com/SQL/Notifications/PostEventNotification0'R+ ╘ЪR+ ╘Ъ ┐http://schemas.microsoft.com/SQL/ServiceBroker/BrokerConfigurationNotice0'R+ ╘ЪR+ ╘Ъ гhttp://schemas.microsoft.com/SQL/ServiceBroker/ServiceEcho0'R+ ╘ЪR+ ╘Ъ пhttp://schemas.microsoft.com/SQL/ServiceBroker/ServiceDiagnostic0'R+ ╘ЪR+ ╘Ъ =DEFAULT0'W+ ╘ЪW+ ╘Ъ ╜http://schemas.microsoft.com/SQL/Notifications/QueryNotificationService0'W+ ╘ЪW+ ╘Ъ ╜http://schemas.microsoft.com/SQL/Notifications/EventNotificationService0'W+ ╘ЪW+ ╘Ъ зhttp://schemas.microsoft.com/SQL/ServiceBroker/ServiceBroker!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Т╒█ , Й ╩  \  X Ыр3>GpЧЇEЦў` Z:ЎR ╜─М▌Ж^Q8кD ╛`В :РB S ИМdwE&vhttp://schemas.microsoft.com/SQL/ServiceBroker/Error&~http://schemas.microsoft.com/SQL/ServiceBroker/EndDialog&Оhttp://schemas.microsoft.com/SQL/Notifications/QueryNotification&Оhttp://schemas.microsoft.com/SQL/Notifications/EventNotification&Вhttp://schemas.microsoft.com/SQL/ServiceBroker/DialogTimer&╕http://schemas.microsoft.com/SQL/ServiceBroker/BrokerConfigurationNotice/MissingRoute&╢http://schemas.microsoft.com/SQL/ServiceBroker/BrokerConfigurationNotice/FailedRoute&╓http://schemas.microsoft.com/SQL/ServiceBroker/BrokerConfigurationNotice/MissingRemoteServiceBinding& ╘http://schemas.microsoft.com/SQL/ServiceBroker/BrokerConfigurationNotice/FailedRemoteServiceBinding& Мhttp://schemas.microsoft.com/SQL/ServiceBroker/ServiceEcho/Echo& Ъhttp://schemas.microsoft.com/SQL/ServiceBroker/ServiceDiagnostic/Query& Ьhttp://schemas.microsoft.com/SQL/ServiceBroker/ServiceDiagnostic/Status& жhttp://schemas.microsoft.com/SQL/ServiceBroker/ServiceDiagnostic/Description&DEFAULT&Цhttp://schemas.microsoft.com/SQL/Notifications/PostQueryNotification&Цhttp://schemas.microsoft.com/SQL/Notifications/PostEventNotification&Юhttp://schemas.microsoft.com/SQL/ServiceBroker/BrokerConfigurationNotice&Вhttp://schemas.microsoft.com/SQL/ServiceBroker/ServiceEcho&Оhttp://schemas.microsoft.com/SQL/ServiceBroker/ServiceDiagnostic&DEFAULT&Ьhttp://schemas.microsoft.com/SQL/Notifications/QueryNotificationService&Ьhttp://schemas.microsoft.com/SQL/Notifications/EventNotificationService&Жhttp://schemas.microsoft.com/SQL/ServiceBroker/ServiceBroker!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!╝ Д X ┌ ║ О$ h 0Ц╠`╓pЄ`к6Tтr Z:ЎT ═─Бd^S8к╞ ╛`)-4)чUЧeG┘▒╗0-Xз╦v яяАIvalidation0-Xз╦v 88 АOnext_fragment0-Xз╦v 88 АOfragment_size0-Xз╦vАSfragment_bitmap0-Xз╦vее  @А[binary_message_body0-╩я│x00АAstatus0-╩я│x00АEpriority0-╩я│xАOqueuing_order0-╩я│xQjqueuing_order0-╩я│x$$А_conversation_group_id0-╩я│x$$А[conversation_handle0-╩я│xАcmessage_sequence_number0-╩я│x$$АImessage_id0-╩я│x88 АSmessage_type_id0-╩я│x 88 АIservice_id0-╩я│x 88 А[service_contract_id0-╩я│x яяАIvalidation0-╩я│x 88 АOnext_fragment0-╩я│x 88 АOfragment_size0-╩я│xАSfragment_bitmap0-╩я│xее  @А[binary_message_body0-<8Ьz00АAstatus0-<8Ьz00АEpriority0-<8ЬzАOqueuing_order0-<8ЬzQjqueuing_order0-<8Ьz$$А_conversation_group_id0-<8Ьz$$А[conversation_handle0-<8ЬzАcmessage_sequence_number0-<8Ьz$$АImessage_id0-<8Ьz88 АSmessage_type_id0-<8Ьz 88 АIservice_id0-<8Ьz 88 А[service_contract_id0-<8Ьz яяАIvalidation0-<8Ьz 88 АOnext_fragment0-<8Ьz 88 АOfragment_size0-<8ЬzАSfragment_bitmap0-<8Ьzее  @А[binary_message_body0-u\Р{88 АMoplsn_fseqno0-u\Р{88 АOoplsn_bOffset0-u\Р{88 АMoplsn_slotid0-u\Р{88 АCfile_id0-u\Р{$$АKrowset_guid0-u\Р{$$АKcolumn_guid0-u\Р{ччА_filestream_value_name0-u\Р{Аetransaction_sequence_num0-u\Р{ АAstatus0-оАД|АGcommit_ts0-оАД|АCxdes_id0-оАД|АIcommit_lbn0-оАД|АIcommit_csn0-оАД|==АKcommit_time0-оАД|88 АEdbfragid0-чдx}88 А9Id<-чдx}88 ;HId<-чдx}чч  ╨4@А=Name<-чдx}чч  ╨4@АKDescription<-чдx}чч  ╨4@А?Price<-чдx}88 АKCategory_Id0- ╔l~88 А9Id0- ╔l~88 ;HId0- ╔l~чч  ╨4@А=Name  <id0.@ч  ╨4 @name0.@88  Dstatus0.@пп  @type0.@88  Fintprop0.@== Fcreated0.@== Hmodified0.300 Bclass0.388  Fidmajor0.388  Bsubid0.3ч   @name0.300 Bxtype0.388  Butype0.344 Dlength0.300 @prec0.300  Bscale0.388  Ncollationid0.388  Dstatus0.388  Fintprop0.688  <id0.688  Bindid0.6ч  ╨4 @name0.688  Dstatus0.688  Fintprop0.600 Hfillfact0.600 @type0.600 Htinyprop0.688  Jdataspace0.688  Blobds0.6  Drowset0.788  Fidmajor0.788  Fidminor0.788  Bsubid0.788  Dstatus0.788  Fintprop0.700 Jtinyprop10.700 Jtinyprop20.A00 Bclass0.A88  Bobjid0.A88  Findexid0.A88  Jrowsetnum0.A Hrowsetid0.A88  Dstatus!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!ЗЗЗX╬Ж4фР@ЁвX▓ \ ╛ j " ╪ Р J ╛ | 8 Є ▓ n , шиd╥КH┬v0шжdB·░j(ц▐▐▐▐▐▐ЦЕ:ёиe▌x╬ Г @ є д W № й Z ┬ g  ╦ В  ─e√g&╦x)┌С6эЪQюУ4╩6їЪG°й` ZЎV ° s.кк^W012348!!!!╛` хW °ш░#"0:1\2C364Hм┐Щ╥Жs` Z@ЎX`оW*^8!!!!╛`@\ЬY0╩^─╬р&PRIMARY&2@db_owner&2@&db_accessadmin&2@*db_securityadmin&2@ db_ddladmin&2@,db_backupoperator&2@$db_datareader&2@$db_datawriter&2@,db_denydatareader&2 @,db_denydatawriter&2guest&2dbo&2sys&2.INFORMATION_SCHEMA*PRIMARY& <Microsoft.SqlServer.Types&PRIMARY!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Є`ДH╬т╕xвvтR.Т Z@ЎZJо\*^Y8!!!!╛`╫0[0 ▒K▄0RwAЧUУW+ ╘Ъ 03Opublic МhяR}яЬ@│ГО▄┘0@R|AЧUУ|AЧUУ 07Gdb_owner @0@R|AЧUУ|AЧUУ 0CSdb_accessadmin @0@RБAЧUУБAЧUУ 0GWdb_securityadmin @0@RБAЧUУБAЧUУ 0=Mdb_ddladmin @0@RБAЧUУБAЧUУ 0IYdb_backupoperator @0@RЕAЧUУЕAЧUУ 0AQdb_datareader @0@RЕAЧUУЕAЧUУ 0AQdb_datawriter @0@RКAЧUУКAЧUУ 0IYdb_denydatareader @0 @RКAЧUУКAЧUУ 0IYdb_denydatawriter  @0SwAЧUУwAЧUУ 566@guestguest0SnAЧUУnAЧUУ 1228dbodbo0S + ╘Ъ + ╘Ъ 8+sys0S + ╘Ъ + ╘Ъ 8IINFORMATION_SCHEMA0@R|AЧUУW+ ╘Ъ 07Sdb_owner @0@R|AЧUУW+ ╘Ъ 0C_db_accessadmin @0@RБAЧUУW+ ╘Ъ 0Gcdb_securityadmin @0@RБAЧUУW+ ╘Ъ 0=Ydb_ddladmin @0@RБAЧUУW+ ╘Ъ 0Iedb_backupoperator @0@RЕAЧUУW+ ╘Ъ 0A]db_datareader @0@RЕAЧUУW+ ╘Ъ 0A]db_datawriter @0@RКAЧUУW+ ╘Ъ 0Iedb_denydatareader @0 @RКAЧUУW+ ╘Ъ 0Iedb_denydatawriter  @0UnAЧUУ▄√░wЭ 1MMSdbo~Я0gдg`┐yRmhdbo!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!x╢YЇЫ8┘Ж=Ъ▌` ZЎ\J.tк^[8!!!!╛`─ ]╖▐ h&public&@db_owner&@%db_accessadmin&@)db_securityadmin&@db_ddladmin&@+db_backupoperator&@#db_datareader&@#db_datawriter&@+db_denydatareader& @+db_denydatawriter&guest&dbo&sys&-INFORMATION_SCHEMA!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!ф`є┬╒│uЧl▄I&√О ZЎ^+H.o*^]8!!!!╛`пf_v╩▄▓6( ╖`vе*йVMШЬS╢Onб6@ @6@ @6@ @6@ @6@ @6@ @6@ @6@ @6 @  @6 : 6( МhяR}яЬ@│ГО▄┘6@( @6@( @6@( @6@( @6@( @6@( @6@( @6@( @6 @(  @6(~Я0gдg`┐yRmh!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!оою╞ЮvN&■╓>ДЮж ZЎ`I.nк^_8!!!!╛`ХJ*№aЧeфC[2U33@2@@3@2@@3@2@@3@2@@3@2@@3@2@@3@2@@3@2@@3 @2 @ @2222PR R R R R R R R R R R R R R R R R R R R! RdRedRfeRgeRhgRihRjhRkhRleRmRnmRonRpmRqpRrqRsrRtmRutRvuRwvRxwRytR╚jR╔kR╩lP1P2RR,R-R/R0R1R2R3R4R5R6R7R8R9pR:R;R<pR=qR>rR?xR@RARBRDRERFRGRHRIRhQ|IQ}|555555555 5 5 5 5 5666666(Xз╦v╔Г╫uГ╫u7(╩я│x╔С╦┐wС╦┐w7(<8Ьz╔иyиy71RJRKRLRM4_`&А&Б(u\Р{╨(оАД|╥&ВRNшy 3 ╔l~шy 3Z=шy 3 ╔l~!Ю 3 ╔l~!Ю 3Z=!Ю 3 ╔l~Z┬є4 ╔l~Z┬є4Z=Z┬є4 ╔l~Уцч5 ╔l~Уцч5Z=Уцч5 ╔l~╠ ▄6 ╔l~╠ ▄6Z=╠ ▄6 ╔l~r╬ ╔l~r╬Z=r╬ ╔l~л=┬ ╔l~л=┬Z=л=┬ ╔l~фa╢ ╔l~фa╢Z=фa╢ ╔l~Жк ╔l~ЖкZ=Жк ╔l~VкЮ ╔l~VкЮZ=VкЮ ╔l~П╬Т ╔l~П╬ТZ=П╬Т ╔l~╚ЄЖ ╔l~╚ЄЖZ=╚ЄЖ ╔l~{ ╔l~{Z={ ╔l~:;o ╔l~:;oZ=:;o ╔l~s_c ╔l~s_cZ=s_c ╔l~мГW ╔l~мГWZ=мГW ╔l~хзK ╔l~хзKZ=хзK ╔l~╠? ╔l~╠?Z=╠? ╔l~WЁ3 ╔l~WЁ3Z=WЁ3 ╔l~Р( ╔l~Р(Z=Р( ╔l~╔8 ╔l~╔8Z=╔8 ╔l~] ╔l~]Z=] ╔l~;Б ╔l~;БZ=;Б ╔l~tе° ╔l~tе°Z=tе° ╔l~н╔ь ╔l~н╔ь Z=н╔ь  ╔l~цэр! ╔l~цэр!Z=цэр! ╔l~╒" ╔l~╒"Z=╒" ╔l~X6╔# ╔l~X6╔#Z=X6╔# ╔l~СZ╜$ ╔l~СZ╜$Z=СZ╜$ ╔l~╩~▒% ╔l~╩~▒%Z=╩~▒% ╔l~ге& ╔l~ге&Z=ге& ╔l~<╟Щ' ╔l~<╟Щ'Z=<╟Щ' ╔l~uыН( ╔l~uыН(Z=uыН( ╔l~оВ) ╔l~оВ)Z=оВ) ╔l~ч3v* ╔l~ч3v*Z=ч3v* ╔l~ Xj+ ╔l~ Xj+Z= Xj+ ╔l~Y|^, ╔l~Y|^,Z=Y|^, ╔l~ТаR- ╔l~ТаR-Z=ТаR- ╔l~╦─F. ╔l~╦─F.Z=╦─F. ╔l~щ:/ ╔l~щ:/Z=щ:/ ╔l~= /0 ╔l~= /0Z== /0 ╔l~v1#1 ╔l~v1#1Z=v1#1 ╔l~пU2 ╔l~пU2Z=пU2 ╔l~шy 3 ╔l~шy 3Z=шy 3 ╔l~ш|(╘ р─и╨<X ╠шФ░\x$@ь┤╨|ШИ l P <@$ь4  № р ─ и М p T 8  ф ╚ м Р t X <  ш╠░Фx\@$╨┤Ш ╠░|`D( Ё╘╕ЬАdH,Ї╪╝аДhL0°▄└дИlP4№р─иМpT8 Ї ╪ ╝ а Д h L ╕ 0 Ь  А ° м┤d ▄ ╚Ш`H └ tDьф , д \РФЁ x` ZJЎbWоMк^a8!!!!╛`ВХJ№тcЧeфCуUФЮ33@@2@3@@2@3@@2@3@@2@3@@2@3@@2@3@@2@3@@2@3 @ @2 @2222PR  R R R R R R R R R R R R R R R R R R  R!RddReeRfeRggRhhRihRjhRkeRlRmmRnnRomRppRqqRrrRsmRttRuuRvvRwwRxtRyjR╚kR╔lR╩1P2PRR,R-R/R0R1R2R3R4R5R6R7R8pR9R:R;pR<qR=rR>xR?R@RARBRDRERFRGRHRIRhIQ||Q}555555555 5 5 5 5 5666666Г╫u(Xз╦v╔Г╫u7С╦┐w(╩я│x╔С╦┐w7иy(<8Ьz╔иy71RJRKRLRM4_`&А&Б(u\Р{╨(оАД|╥&ВRN ╔l~рIan Z=рIan ╔l~рIan ╔l~nUo Z=nUo ╔l~nUo ╔l~RТIp Z=RТIp ╔l~RТIp ╔l~Л╢=q Z=Л╢=q ╔l~Л╢=q ╔l~─┌1r Z=─┌1r ╔l~─┌1r ╔l~¤■%s Z=¤■%s ╔l~¤■%s ╔l~6#t Z=6#t ╔l~6#t ╔l~oGu Z=oGu ╔l~oGu ╔l~иkv Z=иkv ╔l~иkv ╔l~сПЎv Z=сПЎv ╔l~сПЎv ╔l~┤ъw Z=┤ъw ╔l~┤ъw ╔l~S╪▐x Z=S╪▐x ╔l~S╪▐x ╔l~М№╥y Z=М№╥y ╔l~М№╥y ╔l~┼ ╟z Z=┼ ╟z ╔l~┼ ╟z ╔l~■D╗{ Z=■D╗{ ╔l~■D╗{ ╔l~7iп| Z=7iп| ╔l~7iп| ╔l~pНг} Z=pНг} ╔l~pНг} ╔l~й▒Ч~ Z=й▒Ч~ ╔l~й▒Ч~ ╔l~т╒Л Z=т╒Л ╔l~т╒Л ╔l~· Z=· ╔l~· ╔l~Tt Z=Tt ╔l~Tt ╔l~НBh Z=НBh ╔l~НBh ╔l~╞f\ Z=╞f\ ╔l~╞f\ ╔l~ КP Z= КP ╔l~ КP ╔l~8пD Z=8пD ╔l~8пD ╔l~q╙8 Z=q╙8 ╔l~q╙8 ╔l~кў, Z=кў, ╔l~кў, ╔l~у! Z=у! ╔l~у! ╔l~@ Z=@  ╔l~@  ╔l~Ud Z=Ud  ╔l~Ud  ╔l~ОИ¤ Z=ОИ¤  ╔l~ОИ¤  ╔l~╟мё Z=╟мё  ╔l~╟мё  ╔l~╤х Z=╤х  ╔l~╤х  ╔l~9ї┘ Z=9ї┘  ╔l~9ї┘  ╔l~r╬ Z=r╬ ╔l~r╬ ╔l~л=┬ Z=л=┬ ╔l~л=┬ ╔l~фa╢ Z=фa╢ ╔l~фa╢ ╔l~Жк Z=Жк ╔l~Жк ╔l~VкЮ Z=VкЮ ╔l~VкЮ ╔l~П╬Т Z=П╬Т ╔l~П╬Т ╔l~╚ЄЖ Z=╚ЄЖ ╔l~╚ЄЖ ╔l~{ Z={ ╔l~{ ╔l~:;o Z=:;o ╔l~:;o ╔l~s_c Z=s_c ╔l~s_c ╔l~мГW Z=мГW ╔l~мГW ╔l~хзK Z=хзK ╔l~хзK ╔l~╠? Z=╠? ╔l~╠? ╔l~WЁ3 Z=WЁ3 ╔l~WЁ3 ╔l~Р( Z=Р( ╔l~Р( ╔l~╔8 Z=╔8 ╔l~╔8 ╔l~] Z=] ╔l~] ╔l~;Б Z=;Б ╔l~;Б ╔l~tе° Z=tе° ╔l~tе° ╔l~н╔ь Z=н╔ь  ╔l~н╔ь  ╔l~цэр! Z=цэр! ╔l~цэр! ╔l~╒" Z=╒" ╔l~╒" ╔l~X6╔# Z=X6╔# ╔l~X6╔# ╔l~СZ╜$ Z=СZ╜$ ╔l~СZ╜$ ╔l~╩~▒% Z=╩~▒% ╔l~╩~▒% ╔l~ге& Z=ге& ╔l~ге& ╔l~<╟Щ' Z=<╟Щ' ╔l~<╟Щ' ╔l~uыН( Z=uыН( ╔l~uыН( ╔l~оВ) Z=оВ) ╔l~оВ) ╔l~ч3v* Z=ч3v* ╔l~ч3v* ╔l~ Xj+ Z= Xj+ ╔l~ Xj+ ╔l~Y|^, Z=Y|^, ╔l~Y|^, ╔l~ТаR- Z=ТаR- ╔l~ТаR- ╔l~╦─F. Z=╦─F. ╔l~╦─F. ╔l~щ:/ Z=щ:/ ╔l~щ:/ ╔l~= /0 Z== /0 ╔l~= /0 ╔l~v1#1 Z=v1#1 ╔l~v1#1 ╔l~пU2 Z=пU2 ╔l~пU2 ╔l~шy 3 Z=шy 3 ╔l~шy 3 ╔l~!Ю 3 Z=!Ю 3 ╔l~!Ю 3 ╔l~Z┬є4 Z=Z┬є4 ╔l~Z┬є4 ╔l~Уцч5 Z=Уцч5 ╔l~Уцч5 ╔l~╠ ▄6Z=╠ ▄6 ╔l~╠ ▄6╔l~QL┤g Z=QL┤g ╔l~QL┤g ╔l~Кpиh Z=Кpиh ╔l~Кpиh ╔l~├ФЬi Z=├ФЬi ╔l~├ФЬi ╔l~№╕Рj Z=№╕Рj ╔l~№╕Рj ╔l~5▌Дk Z=5▌Дk ╔l~5▌Дk ╔l~nyl Z=nyl ╔l~nyl ╔l~з%mm Z=з%mm ╔l~з%mm ╔l~рIan Z=рIan ╔l~рIan ╔l~nUo Z=nUo ╔l~nUo ╔l~RТIp Z=RТIp ╔l~RТIp ╔l~Л╢=q Z=Л╢=q ╔l~Л╢=q ╔l~─┌1r Z=─┌1r ╔l~─┌1r ╔l~¤■%s Z=¤■%s ╔l~¤■%s ╔l~6#t Z=6#t ╔l~6#t ╔l~oGu Z=oGu ╔l~oGu ╔l~иkv Z=иkv ╔l~иkv ╔l~сПЎvъъъъъъъъъъъъъъъъъъъъъъъъъъъъъъъъъъъъъъъъъъъъъъъъъъъъъъъъъъъъъъъ╨╨╨╨мr Д < N   ╛дА\8Ё╠иДМz┤р╬╝ЄквЖРt~Hb>ШP,(Ўф╥└оЬК&  L:h6$║ ╠ Ё ▐ №2 lZ╪ъ╞Т Dю▄╩╕жФВp^xfTB0 ·ш╓─▓аО|jXF4"V ┌ь■╢Ц ` * Їт╨╛мЪИvdR@. °ц╘┬░ЮТnJ&▐║Цr`╚и А J 8 n \  ZJЎdWоH*^c8!!!!╛`Вт7evм\lCO GтыfцSL Gq   SL Gr   SL Gs   SL Gt   SL Gu   SL Gv   SL Gw   SL Gx   SL Gy   SL Gz   SL G{   SL G|   SL G}   SL G~   SL G   SL GЦ   SL GЧ   SL GЫ   SL GЪ   SL GЩ   SL GШ   SL GХ   SL G■  SL G~■  SL G}■  SL G|■  SL G{■  SL Gz■  SL Gy■  SL Gx■  SL Gw■  SL Gv■  SL Gu■  SL Gt■  SL Gs■  SL Gr■  SL Gq■  SL Gp■  SL Go■  SL Gn■  SL Gm■  SL Gl■  SL Gk■  SL Gj■  SL Gi■  SL Gh■  SL Gg■  SL Gf■  SL Ge■  SL Gd■  SL Gc■  SL Gb■  SL Ga■  SL G`■  SL G_■  SL G^■  SL G]■  SL G\■  SL G[■  SL GZ■  SL GY■  SL GX■  SL GW■  SL GV■  SL GU■  SL GT■  SL GS■  SL GR■  SL GQ■  SL GP■  SL GO■  SL GN■  SL GM■  SL GL■  SL GK■  SL GJ■  SL GI■  SL GH■  SL GG■  SL GF■  SL GE■  SL GD■  SL GC■  SL GB■  SL GA■  SL G@■  SL G?■  SL G>■  SL G=■  SL G<■  SL G;■  SL G:■  SL G9■  SL G8■  SL G7■  SL G6■  SL G5■  SL G4■  SL G3■  SL G2■  SL G1■  SL G0■  SL G/■  SL G.■  SL G-■  SL G,■  SL G+■  SL G$■  SL G#■  SL G"■  SL G!■  SL G ■  SL G■  SL G■  SL G■  SL G■  SL G■  SL G■  SL G■  SL G■  SL G■  SL G■  SL G ■  SL G ■  SL G ■  SL G ■  SL G ■  SL G■  SL G■  SL G!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!ЗЗд┴▐jM√0Ў┘╝ЯВeH+ё╘╖Ъ5RoМй╞у:WtСо╦ш"?\yЦ│╨э 'Da~Ы╕╒Є,IfГа╜┌ў1NkИе┬▀№ 6 S p Н к ╟ ф   ; X u Т п ╠ щ  # @ ] z Ч ┤ ╤ ю ( E b  Ь ╣ ╓ є  - J g Д б ╛ █ ° 2OlЙж├р¤` ZЎfЖUо.к^e8!!!!╛`jK4° g HЦl"Oэ@TTTTTTT T T T T TTTTTTTTTTTTTTTTTTT T!T"T#T$T%T&T'T(T)T*T+T,T-T.T/T0T3T4T5T6T7T8T9T:T;T<T=T>T?T@TATBTCTDTETFTGTHTITJTKTLTMTNTOTPTQTRTSTTTUTVTWTXTYTZT[T\     T]T^TaTb!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!4  № р ─ и М p T P l 8 ▄ └ д И ф ╚ м Р t X <  ш╠░Фx\@$ь╨┤Ш|`D( Ё╘╕ЬАdH,Ї╪╝аДhL0°▄└дИlP4№р─иМpT8ф╚мРtX< ш╠░Фx\@$ь╨┤Ш|`  ZKЎhЧT. к^g8!!!!╛`jKX╘i HЧ╢Н╖~@TTTTTT T T T T TTTTTTTTTTTTTTTTTTT T!T"T#T$T%T&T'T(T)T*T+T,T-T.T/T0T3T4T5T6T7T8T9T:T;T<T=T>T?T@TATBTCTDTETFTGTHTITJTKTLTMTNTOTPTQTRTSTTTUTVTWTXTYTZT[T\T     ]T^TaTbT!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!`┬░ЮМР~lZH6$ю▄╩╕жФВp^L:(Єр╬╝кШЖtbP>,Ўф╥└оЬКxfTB0 ·ш╓─▓аО|jXF4"■ь┌╚╢дТАn\J8V&D2 Ё▐№╠ъ║╪и╞ЦhД┤zrв ZKЎjгR.*^i8!!!!╛`В-( )d k и╨┴m00-АErowsetid0-88 АKrowsetcolid0-88 АGhobtcolid0-88 АAstatus0-АIrcmodified0-44АKmaxinrowlen0-АErowsetid0-00АGownertype0-88 АCidmajor0-88 АCidminor0-88 АCnumpart0-88 АAstatus0-44АAfgidfs0-АArcrows0-А=rsid0-88 АCrscolid0-88 АChbcolid0-АIrcmodified0-88 А9ti0-88 А;cid0-44АAordkey0-44АKmaxinrowlen0- 88 АAstatus0- 88 АAoffset0- 88 АCnullbit0- 44АAbitpos0- ееАCcolguid0-88 АEdbfragid0- 00АGcmprlevel0- 00АEfillfact0- 44АImaxnullbit0- 88 АCmaxleaf0- 44АAmaxint0-44АCminleaf0-44АAminint0-ееАArsguid0-ееАClockres0-88 АEdbfragidАIoffsetleaf0- 44АGoffsetint0- 00АIbitposleaf0- 00АGbitposint0- 44АKnullbitleaf0- 44АInullbitint0-АAhobtid0-88 АAstatus0-00АEfillfact0-44АImaxnullbit0-88 АCmaxleaf0-44АAmaxint0-44АCminleaf0-44АAminint0- АClockres0-88 А=fgid0-88 АEfgfragid0-88 АEdbfragid0-88 АAphfgid0-88 АAstatus0-88 АEdbfragid0-88 АAphfgid0-88 А=fgid0-ппА=type0-$$АAfgguid0-88 АAlgfgid0-88 АAstatus0-ч╨4А=name0-88 АEdbfragid0-88 АAfileid0-88 А?grpid0-88 АAstatus0-00АEfiletype0-00АGfilestate0-88 А=size0-88 АCmaxsize0- 88 АAgrowth0- ч╨4А?lname0- чч╨4А?pname0- нн  АGcreatelsn0- нн  АCdroplsn0-$$АEfileguid0-88 АQinternalstatus0-нн  АKreadonlylsn0-нн  АMreadwritelsn0-нн  АSreadonlybaselsn0-нн  АQfirstupdatelsn0-нн  АOlastupdatelsn0-нн  АGbackuplsn0-нн  АKdiffbaselsn0-$$АMdiffbaseguid0-==АMdiffbasetime0-нн  АQdiffbaseseclsn0-нн  АMredostartlsn0-нн  АOredotargetlsn0-$$АEforkguid0-нн  АCforklsn0-АAforkvc0-$$АWredostartforkguid0-А=rsid0-88 АCrscolid0-88 АChbcolid0-АIrcmodified0-88 А9ti0-88 А;cid0-44АAordkey0-44АKmaxinrowlen0- 88 АAstatus0- 88 АAoffset0- 88 АCnullbit0- 44АAbitpos0- ееАCcolguid0-88 АEdbfragid0- 00АGcmprlevel0- 00АEfillfact0- 44АImaxnullbit0- 88 АCmaxleaf0- 44АAmaxint0-44АCminleaf ╩Й<√╢y8ўоm,ув       ▄ Ы Z  ╓УJ╛увa█ШQ y6ї▓q0хдi0чдa$ Z)Ўl`G[оo*^kopqDCU8 !!!!╛` 7Н)F №mЧЫGg╤D6fgidfs6auid6fgid6fileid6"filename6 (collationid6 &bitposleaf6 $bitposint6"fillfact6crtype6 crstart6crend6crrows6"crerrors6 "crschver6 "crtsnext6 4bXVTDocidUseBaseT6 $batchsize6fgid6class6depid6 dfltsch6 created6class6"  created6)colid6) (collationid6)dflt6)chk6,class6, created61class62(collationid62  created62 dflt62 chk63class63 (collationid66"fillfact66 $dataspace6@class6@ created6Aclass6Jclass6Jdepid6J"depsubid6Kclass6Kdepid6K"depsubid6Ldbid6Lfileid6L $createlsn6L  droplsn6L "filetype6L $filestate6L"fileguid6L.firstupdatelsn6L$backuplsn6L(diffbaselsn6L*diffbaseguid6L*diffbasetime6L.diffbaseseclsn6L"forkguid6L forklsn6Lforkvc6:class6: created6aclass6Nclass6[ deriv6[ enum6[ defval6\compid6\dflt6]defval6E"brkrinst6Eaddr6Ddlgid6D&finitiator6D  enqtime6Ddlgerr6Hdiagid6Idiagid6I "contract6I $convgroup6I $enddlgseq6I(firstoorder6I"dlgtimer6I$dlgopened6I&farprincid6Ifarsvc6I(farbrkrinst6^class6^crypto6."encrtype6.cert6_$bitlength6_$algorithm6_"encrtype6` created6Xз╦v<conversation_group_id6Xз╦v8conversation_handle6Xз╦v0fragment_bitmap6Xз╦v8binary_message_body6╩я│x<conversation_group_id6╩я│x8conversation_handle6╩я│x0fragment_bitmap6╩я│x8binary_message_body6<8Ьz<conversation_group_id6<8Ьz8conversation_handle6<8Ьz0fragment_bitmap6<8Ьz8binary_message_body6fgid6"fgfragid6"dbfragid6"dbfragid6fgid6fgguid6"dbfragid6fileid6"filetype6$filestate6 $createlsn6  droplsn6"fileguid6.firstupdatelsn6$backuplsn6(diffbaselsn6*diffbaseguid6*diffbasetime6.diffbaseseclsn6"forkguid6 forklsn6forkvc6cid6 bitpos6  colguid6"dbfragid6 $cmprlevel6 "fillfact6"dbfragid6 "dbfragid6b"depclass6bdepid6u\Р{ file_id6u\Р{(column_guid6u\Р{<filestream_value_name6оАД|$commit_ts6оАД|&commit_lbn6оАД|&commit_csn6оАД|(commit_time6оАД|"dbfragid6` $batchtext6;class6;,audit_spec_id6R cprelid6Rfragid6R"datasize:чдx}(Description:чдx}(Category_Id6Z=(Description6Z=(Category_Id6Z=&CreateDate6Z=$CreatedBy6Z= 2DiscontinuedDate"dlgtimer6I$dlgopened6I&farprincid6I"inseskey6I&inseskeyid6Ifarsvc6I(farbrkrinst6^class6^id6^crypto6.id6.issuer6."encrtype6.cert6_id6_$bitlength6_$algorithm6_"modified6_"encrtype6`id6`hash6` created6`"modified6Xз╦v<conversation_group_id6Xз╦v8conversation_handle6Xз╦v@message_sequence_number6Xз╦v&message_id6Xз╦v0message_type_id6Xз╦v ,fragment_size6Xз╦v0fragment_bitmap6Xз╦v8binary_message_body6╩я│x<conversation_group_id6╩я│x8conversation_handle6╩я│x@message_sequence_number6╩я│x&message_id6╩я│x0message_type_id6╩я│x ,fragment_size6╩я│x0fragment_bitmap6╩я│x8binary_message_body6<8Ьz<conversation_group_id6<8Ьz8conversation_handle6<8Ьz@message_sequence_number6<8Ьz&message_id6<8Ьz0message_type_id6<8Ьz ,fragment_size6<8Ьz0fragment_bitmap6<8Ьz8binary_message_body6fgid6"fgfragid6.Rv аxX6:(  2О░╨p▓╓`╝ЦШ0░╝ Ц ┌ 8 D  └ < °P r  d ╩▐М┤а В О а╬0 Fь║*╨Ши R ЄNЇ╥vTь8╛ ЖBд р■─╘жАт x─Аj.Ар Ў> ║▐  ╛ p Z╩~дЎюXжК╠ф ┤Ш\8и╥<NЦ║ш^ Xd╞ оx ^Вж Шh~TЬ ш  Z)Ўn Zr.р*^mrs78!!!!╛`)шo`BЄ& M, kp<q)DECJ)Xз╦v U(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!╞╡дВУq╫`(-D9)╔хp`=&Ы╗║0-88 А9id0-88 А?indid0-88 АAstatus0-ппАAcrtype0-==АCcrstart0-==А?crend0-АAcrrows0-88 АEcrerrors0- ннАEcrschver0- ннАEcrtsnext0- 00АKsensitivity0- 00АWbXVTDocidUseBaseT0- 88 АGbatchsize0-АGnextdocid0-88 А=fgid0-00А?class0-А?depid0-АCindepid0-88 А9id0-ч╨4А=name0-ппА=type0-ееUUА;sid0-ееАEpassword0-ч╨4АCdfltsch0-88 АAstatus0-==АCcreated0- ==АEmodified0-00А?class0-88 А9id0-88 А?subid0-88 АCgrantee0-88 АCgrantor0-ппА=type0-ппА?state0-"88 А9id0-"ч╨4А=name0-"88 А=nsid0-"00АCnsclass0-"88 АAstatus0-"ппА=type0-"88 А;pid0-"00АApclass0-" 88 АCintprop0-" ==АCcreated0-" ==АEmodified0-)88 А9id0-)44АAnumber0-)88 А?colid0-)ч╨4А=name0-)00А?xtype0-)88 А?utype0-)44АAlength0-)00А=prec0-) 00А?scale0-) 88 АKcollationid0-) 88 АAstatus0-) 44АEmaxinrow0-) 88 А?xmlns0-)88 А=dflt0-)88 А;chk0-)ее@@АAidtval0-,00А?class0-,88 А9id0-,ч╨4А=name0-,88 А=nsid0-,88 АAstatus0-,88 АCintprop0-,==АCcreated0-,==АEmodified0-100А?class0-188 А9id0-188 А?subid0-1ч╨4А=name0-1bbPPА?value0-288 А9id0-288 А?schid0-2ч╨4А=name0-200А?xtype0-244АAlength0-200А=prec0-200А?scale0-288 АKcollationid0-2 88 АAstatus0-2 ==АCcreated0-2 ==АEmodified0-2 88 А=dflt0-2 88 А;chk0-300А?class0-388 АCidmajor0-388 А?subid0-3чА=name0-300А?xtype0-388 А?utype0-344АAlength0-300А=prec0-3 00А?scale0-3 88 АKcollationid0-3 88 АAstatus0-3 88 АCintprop0-688 А9id0-688 А?indid0-6ч╨4А=name0-688 АAstatus0-688 АCintprop0-600АEfillfact0-600А=type0-600АEtinyprop0-6 88 АGdataspace0-6 88 А?lobds0-6 АArowset0-788 АCidmajor0-788 АCidminor0-788 А?subid0-788 АAstatus0-788 АCintprop0-700АGtinyprop10-700АGtinyprop20-<00АEvalclass0-<88 А?objid0-<88 АEsubobjid0-<88 АAvalnum!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!д_ █ФM ╔КG├Д=°╗v3Є╡v=·╣n/Є▒r3Ў╖t5·╜x5Їйj-ьнp1°╣|=┼А=·╣|?╟ЖKKKK╧КI■ ┐ В A  ├ Ж G  ═ И E  ┴ Ж I  ┼ И K  ╙ЦS╤ШY╤РM═РS╒О7ьзb▄ЭZ╪Щ`ВD-C))п  q`>j з0-<bbPPА?value0-<ее  @АEimageval0-@00А?class0-@88 А9id0-@ч╨4А=name0-@88 АAstatus0-@ппА=type0-@88 АCintprop0-@==АCcreated0-@==АEmodified0-A00А?class0-A88 А?objid0-A88 АCindexid0-A88 АGrowsetnum0-AАErowsetid0-A88 АAstatus0-C88 А9id0-Cч╨4А=name0-C88 А=scid0-CччАAremsvc0-C88 АAstatus0-D$$А?dlgid0-DhhАIfinitiator0-DччА?tosvc0-DччАItobrkrinst0-DччАCfromsvc0-DччАMfrombrkrinst0-DччАEsvccontr0-DАGmsgseqnum0-D ччАCmsgtype0-D 88 АEunackmfn0-D 88 АAstatus0-D ==АCenqtime0-D ==АErsndtime0-D88 АAdlgerr0-D$$А?msgid0-D44АIhdrpartlen0-D44АGhdrseclen0-D00АAmsgenc0-D88 АImsgbodylen0-Dее  @АCmsgbodyАEfileguid0-L88 АQinternalstatus0-Lнн  АKreadonlylsn0-Lнн  АMreadwritelsn0-Lнн  АSreadonlybaselsn0-Lнн  АQfirstupdatelsn0-Lнн  АOlastupdatelsn0-Lнн  АGbackuplsn0-Lнн  АKdiffbaselsn0-L$$АMdiffbaseguid0-L==АMdiffbasetime0-Lнн  АQdiffbaseseclsn0-Lнн  АMredostartlsn0-Lнн  АOredotargetlsn0-L$$АEforkguid0-Lнн  АCforklsn0-LАAforkvc0-L$$АWredostartforkguid0-a00А?class0-a88 АCidmajor0-a88 А?subid0-aчА=name0-a88 АAstatus0-a88 АCintprop0-N00А?class0-N88 А9id0-N88 А?subid0-N$$А=guid0-N88 АAstatus0-Z88 А;qid0-Z88 А=hash0-Z88 А;nid0-Zчч@@А=name0-[88 А9id0-[88 А?xsdid0-[88 АAuriord0-[00А=qual0-[88 АAnameid0-[ппАEsymspace0-[88 АCnmscope0-[ппА=kind0-[ ппА?deriv0-[ 88 АAstatus0-[ ппА=enum0-[ чч@@АAdefval0-\88 АAcompid0-\88 А;ord0-\ппА=kind0-\44АAstatus0-\чч@@А=dflt0-]88 АGplacingid0-]88 АCordinal0-]88 АEplacedid0-]88 АAstatus0-]88 АEminoccur0-]88 АEmaxoccur0-]чч@@АAdefval0-C88 А9id0-Cч╨4А=name0-C88 А=scid0-CччАAremsvc0-C88 АAstatus0-G$$А9id0-G88 АIservice_id0-G88 АAstatus0-G88 АErefcount0-E88 А9id0-Eч╨4А=name0-EччАAremsvc0-EччАEbrkrinst0-EччА=addr0-EччАCmiraddr0-E==АElifetime0-D$$А?dlgid0-DhhАIfinitiator0-DччА?tosvc0-DччАItobrkrinst0-DччАCfromsvc0-DччАMfrombrkrinstO  ╦ОM═РO├~?┐╝ s 2 ы в c " ▌ЪY╤КE°╡l-феd#цйp/ъг`!тЭZ┌Щ\#фЯ` )C╖r UYYЎm6sname6Xз╦v7.fragment_size!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!mЙ`7 р)■xs2G├∙РВ6name6name6"name6)name6,name61name62name63name66name6@name6$nextdocid6" nsclass6"nsid6,nsid6)number6 numpart6<objid6 ownerid6$ownertype6"password6 pcdata6"pclass6 &pcreserved6 pcused6 pgfirst6&pgfirstiam6pgroot6"pid6)prec62prec63prec6rcrows66 rowset6"rowsetid6) scale62scale63 scale62schid6 (sensitivity6sid6state6status6status6status6status6status6"status6) status6,status62 status63 status66status67status6@status6subid61subid63subid67subid6<"subobjid66"tinyprop67$tinyprop167$tinyprop26type6type6type6"type66type6@type6)utype63utype6<"valclass6<valnum61value6<value6) xmlns6)xtype62xtype63xtype6Aobjid6A$rowsetnum6A"rowsetid6Astatus6Jstatus6Kstatus6:nsid6:name6:status6:type6asubid6aname6astatus6Nsubid6Nstatus6Zqid6Znid6Zname6[xsdid6[uriord6[qual6[nameid6["symspace6[ nmscope6[ status6\ord6\status6]$placingid6] ordinal6]"placedid6]status6Cname6Cscid6Cremsvc6Cstatus6G&service_id6Gstatus6G"refcount6Ename6Eremsvc6Dtosvc6D&tobrkrinst6D"svccontr6D "unackmfn6D status6D "rsndtime6H sendseq6H"sendxact6Ircvseq6I rcvfrag6Istatus6Istate6I svcid6I sysseq6I princid6I$outseskey6I(outseskeyid6^&thumbprint6^type6^status6.name6.snum6.&thumbprint6.pkey6. status6_name6_&thumbprint6_pkey6_ pukey6`name6`$scopetype6` scopeid6`status6Xз╦vstatus6Xз╦v"priority6Xз╦v,queuing_order6Xз╦v &service_id6Xз╦v 8service_contract_id6Xз╦v &validation6Xз╦v ,next_fragment6╩я│xstatus6╩я│x"priority6╩я│x,queuing_order6╩я│x &service_id6╩я│x 8service_contract_id6╩я│x &validation6╩я│x ,next_fragment6<8Ьzstatus6<8Ьz"priority6<8Ьz,queuing_order6<8Ьz &service_id6<8Ьz 8service_contract_id6<8Ьz &validation6<8Ьz ,next_fragment6phfgid6status6phfgid6type6status6name6status6size6 pname6(readonlylsn6*readwritelsn60readonlybaselsn6*redostartlsn6,redotargetlsn64redostartforkguid6rsid6 rscolid6&rcmodified6ti6ordkey6 status6 offset6  nullbit6rsguid6bnumber6b status6u\Р{*oplsn_fseqno6u\Р{,oplsn_bOffset6u\Р{*oplsn_slotid6u\Р{(rowset_guid6u\Р{Btransaction_sequence_num6u\Р{ status6оАД| xdes_id6` 0paramorhinttext6I"priority6(priority_id6name68service_contract_id68remote_service_name6"priority6;subid6;type6;state6Rts6Rstatus6Rrowcnt6U&stoplistid6U"stopword6Ustatus:чдx}Name:чдx}Price6 ╔l~Name6Z=Name6Z=PriceBtransaction_sequence_num6u\Р{ status6оАД| xdes_id6` 0paramorhinttext6I"priority6(priority_id6name68service_contract_id68remote_service_name6"priority6;subid6;2 2 2  ·N ▐в┬жИЄ╓║fJ.j L4\ ·р╞мЮТ:Bш nJ(░аД└ h*v ╩ шъ╬▓Ц▓МД( Ё|м ╥N╝ 8  ╘Pц ь ╬ .p n, ░ x> Z<рт─жИjЁ╕bL.фLЇЖ▄Фx\J ║ЮВV┤╬оО▓Ї Ш|`DМP@jj О "n╩  ОО Ё╞lDЦЁцКhL0И  XF*Є╞в\╠▓Ш(V Ъ >╞ААDb<■╪║Ьz┬V6ц┬╞z ЁЪ─N ·^▄  ┬иИт  d№рв (BТ t■4 ░ ┌ J$ 0№тl╚оФz╓<`,<"║ vtЧЫфC ^√n0,S Ї* ╘Ъi+ ╘Ъ Hsysrowsets0,S  Ї* ╘Ъn+ ╘Ъ Nsysallocunits0,S tШUУtШUУ Fsysfiles10,S  + ╘Ъ + ╘Ъ Fsysftinds0,S  + ╘Ъ+ ╘Ъ Fsysowners0,S Ї* ╘ЪЇ* ╘Ъ Dsysprivs0,"S  ■* ╘Ъ■* ╘Ъ Hsysschobjs0,)S + ╘Ъ+ ╘Ъ Hsyscolpars0,,S + ╘Ъ+ ╘Ъ Fsysnsobjs0,1S  + ╘Ъ + ╘Ъ Fsysxprops0,2S  Ё* ╘ЪЁ* ╘Ъ Psysscalartypes0,3S  + ╘Ъ+ ╘Ъ Rsystypedsubobjs0,6S  + ╘Ъ+ ╘Ъ Jsysidxstats0,7S + ╘Ъ╠+ ╘Ъ Fsysiscols0,<S ■* ╘Ъ■* ╘Ъ Lsysobjvalues0,@S ■* ╘Ъ■* ╘Ъ Hsysclsobjs0,AS + ╘Ъ+ ╘Ъ Nsysrowsetrefs0,JS Ё* ╘ЪЁ* ╘Ъ Tsyssingleobjrefs0,KS Ё* ╘ЪЁ* ╘Ъ Rsysmultiobjrefs0,:S  + ╘Ъ+ ╘Ъ Hsysbinobjs0,aS + ╘Ъ+ ╘Ъ Nsysbinsubobjs0,NS + ╘Ъ+ ╘Ъ Jsysguidrefs0,ZS + ╘Ъ+ ╘Ъ Fsysqnames0,[S  + ╘Ъ!+ ╘Ъ Rsysxmlcomponent0,\S + ╘Ъ + ╘Ъ Jsysxmlfacet0,]S + ╘Ъ!+ ╘Ъ Rsysxmlplacement0,CS + ╘Ъ"+ ╘Ъ Psysremsvcbinds0,GS + ╘Ъ + ╘Ъ Lsysconvgroup0,ES + ╘Ъ$+ ╘Ъ @sysrts0,DS #+ ╘Ъ%+ ╘Ъ Lsysxmitqueue0,HS #+ ╘Ъ%+ ╘Ъ Fsysdesend0,IS #+ ╘Ъл+ ╘Ъ Dsysdercv0,^S #+ ╘Ъ(+ ╘Ъ Rsysobjkeycrypts0,.S  (+ ╘Ъш+ ╘Ъ Dsyscerts0,_S  (+ ╘Ъ,+ ╘Ъ Jsysasymkeys0,`S  (+ ╘Ъв+ ╘Ъ Lsyssqlguides0,Г╫uSQR+ ╘Ъл+ ╘Ъ lQueryNotificationErrorsQueue0,Xз╦v ITГ╫uR+ ╘Ъм+ ╘Ъ fqueue_messages_19770580790,С╦┐wSQW+ ╘Ъл+ ╘Ъ lEventNotificationErrorsQueue0,╩я│x ITС╦┐wW+ ╘Ъм+ ╘Ъ fqueue_messages_20090581930,иySQW+ ╘Ъ░+ ╘Ъ XServiceBrokerQueue0,<8Ьz ITиyW+ ╘Ъ▒+ ╘Ъ fqueue_messages_20410583070,S [+ ╘Ъa+ ╘Ъ Fsysfgfrag0,S `+ ╘Ъb+ ╘Ъ Bsysphfg0,S `+ ╘Ъb+ ╘Ъ Jsysprufiles0,S i+ ╘Ъk+ ╘Ъ Fsysrscols0,bS  Б+ ╘ЪИ+ ╘Ъ Psyssoftobjrefs0,u\Р{IT Ш+ ╘ЪЩ+ ╘Ъ rfilestream_tombstone_20730584210,оАД| ITЭ+ ╘ЪЮ+ ╘Ъ Lsyscommittab0,S л+ ╘Ъп+ ╘Ъ Nsyspriorities0,;S ╣+ ╘Ъ╗+ ╘Ъ Hsysaudacts0,RS ╛+ ╘Ъ└+ ╘Ъ Tsyscompfragments0,US ╛+ ╘Ъ└+ ╘Ъ Hsysftstops0, ╔l~U jИ┤wЭЭ@rжЭ HCategories0,ТUPK ╔l~ЕИ┤wЭЕИ┤wЭ NPK_Categories0,Z=U  >╬wЭА:d▀Э DProducts0,=~1PKZ=2>╬wЭ2>╬wЭ JPK_Products0,ЪЧ╪}D Z=! ЁвЭ! ЁвЭ `DF_Products_CreateDate0,╙╗╠~D Z=! ЁвЭ! ЁвЭ dDF_Products_ModifiedDate<,хзKF Z=фuzеЭV&{еЭ XFK_CategoryProduct<,╠?F Z=Y&{еЭ▐&{еЭ XFK_CategoryProduct<,WЁ3F Z=р&{еЭб'{еЭ XFK_CategoryProduct<,Р(F Z=г'{еЭU({еЭ XFK_CategoryProduct<,╔8F Z=V({еЭ ({еЭ XFK_CategoryProduct<,]F Z=){еЭW){еЭ XFK_CategoryProduct<,;БF Z=X){еЭ─){еЭ XFK_CategoryProduct<,tе°F Z=╞){еЭ*{еЭ XFK_CategoryProduct<,н╔ь F Z=*{еЭy*{еЭ XFK_CategoryProduct<,цэр!F Z=z*{еЭу*{еЭ XFK_CategoryProduct<,╒"F Z=х*{еЭk+{еЭ XFK_CategoryProduct<,X6╔#F Z=m+{еЭ,{еЭ XFK_CategoryProduct<,СZ╜$F Z=,{еЭв,{еЭ XFK_CategoryProduct<,╩~▒%F Z=ж,{еЭC-{еЭ XFK_CategoryProduct<,ге&F Z=E-{еЭ▀-{еЭ XFK_CategoryProduct<,<╟Щ'F Z=р-{еЭr.{еЭ XFK_CategoryProduct<,uыН(F Z=s.{еЭ╚.{еЭ XFK_CategoryProduct<,оВ)F Z=╩.{еЭ/{еЭ XFK_CategoryProduct<,ч3v*F Z=!/{еЭx/{еЭ XFK_CategoryProduct<, Xj+F Z=y/{еЭ╠/{еЭ XFK_CategoryProduct<,Y|^,F Z=╧/{еЭ0{еЭ XFK_CategoryProduct<,ТаR-F Z=0{еЭ}0{еЭ XFK_CategoryProduct<,╦─F.F Z=0{еЭъ]{еЭ XFK_CategoryProduct<,щ:/F Z=ь]{еЭ3А{еЭ XFK_CategoryProduct<,= /0F Z=5А{еЭ┐ЪжЭ XFK_CategoryProduct<,v1#1F Z=╟ЪжЭАiжЭ XFK_CategoryProduct<,пU2F Z=АiжЭ╓oжЭ XFK_CategoryProduct<,шy 3F Z=-╓oжЭТfpжЭ XFK_CategoryProduct<,!Ю 3F Z=ФfpжЭaУpжЭ XFK_CategoryProduct<,Z┬є4F Z=cУpжЭ;qжЭ XFK_CategoryProduct<,Уцч5F Z==qжЭР@rжЭ XFK_CategoryProduct0,╠ ▄6F Z=Э@rжЭЭ@rжЭ XFK_CategoryProduct,╔8F Z=V({еЭ ({еЭ XFK_CategoryProduct<,]F Z=){еЭW){еЭ XFK_CategoryProduct<,;БF Z=X){еЭ─){еЭ XFK_CategoryProduct<,tе°F Z=╞){еЭ*{еЭ XFK_CategoryProduct<,н╔ь F Z=*{еЭy*{еЭ XFK_CategoryProduct,ж▀╫dF Z=жJJеЭKJеЭ О▓Ю╨ x  ж @ ╘ h$╓N*И > и дZ┬FЄxР<d  FТ╥ЎюжZкт╩x(т· ЬT ╚В<╛ | 6 \Ўи` Z"ЎuD].\*^t8!!!!╛` <"в<vЧTфCegzъ&"sysrowsets&(sysallocunits& sysfiles1& sysftinds& sysowners&sysprivs&""sysschobjs&)"syscolpars&, sysnsobjs&1 sysxprops&2*sysscalartypes&3,systypedsubobjs&6$sysidxstats&7 sysiscols&<&sysobjvalues&@"sysclsobjs&A(sysrowsetrefs&J.syssingleobjrefs&K,sysmultiobjrefs&:"sysbinobjs&a(sysbinsubobjs&N$sysguidrefs&Z sysqnames&[,sysxmlcomponent&\$sysxmlfacet&],sysxmlplacement&C*sysremsvcbinds&G&sysconvgroup&Esysrts&D&sysxmitqueue&H sysdesend&Isysdercv&^,sysobjkeycrypts&.syscerts&_$sysasymkeys&`&syssqlguides&Г╫uFQueryNotificationErrorsQueue&Xз╦v@queue_messages_1977058079&С╦┐wFEventNotificationErrorsQueue&╩я│x@queue_messages_2009058193&иy2ServiceBrokerQueue&<8Ьz@queue_messages_2041058307& sysfgfrag&sysphfg&$sysprufiles& sysrscols&b*syssoftobjrefs&u\Р{Lfilestream_tombstone_2073058421&оАД|&syscommittab&(syspriorities&;"sysaudacts&R.syscompfragments&U"sysftstops& ╔l~"Categories&ТU(PK_Categories&Z=Products&=~1$PK_Products&ЪЧ╪}:DF_Products_CreateDate&╙╗╠~>DF_Products_ModifiedDate*┴rX2FK_CategoryProduct*·,fY2FK_CategoryProduct*3QZZ2FK_CategoryProduct*luN[2FK_CategoryProduct*еЩB\2FK_CategoryProduct*▐╜6]2FK_CategoryProduct*т*^2FK_CategoryProduct*P_2FK_CategoryProduct*Й*`2FK_CategoryProduct*┬Na2FK_CategoryProduct*√r√a2FK_CategoryProduct*4Чяb2FK_CategoryProduct*m╗уc2FK_CategoryProduct*ж▀╫d2FK_CategoryProduct*▀╠e2FK_CategoryProduct*(└f2FK_CategoryProduct*QL┤g2FK_CategoryProduct*Кpиh2FK_CategoryProduct*├ФЬi2FK_CategoryProduct*№╕Рj2FK_CategoryProduct*5▌Дk2FK_CategoryProduct*nyl2FK_CategoryProduct*з%mm2FK_CategoryProduct*рIan2FK_CategoryProduct*nUo2FK_CategoryProduct*RТIp2FK_CategoryProduct*Л╢=q2FK_CategoryProduct*─┌1r2FK_CategoryProduct*¤■%s2FK_CategoryProduct*6#t2FK_CategoryProduct*oGu2FK_CategoryProduct*иkv2FK_CategoryProduct*сПЎv2FK_CategoryProduct*┤ъw2FK_CategoryProduct*S╪▐x2FK_CategoryProduct*М№╥y2FK_CategoryProduct*┼ ╟z2FK_CategoryProduct*■D╗{2FK_CategoryProduct*7iп|2FK_CategoryProduct*pНг}2FK_CategoryProduct*й▒Ч~2FK_CategoryProduct*т╒Л2FK_CategoryProduct*·2FK_CategoryProduct*Tt2FK_CategoryProduct*НBh2FK_CategoryProduct*╞f\2FK_CategoryProduct* КP2FK_CategoryProduct*8пD2FK_CategoryProduct*q╙82FK_CategoryProduct*кў,2FK_CategoryProduct*у!2FK_CategoryProduct*@ 2FK_CategoryProduct*Ud 2FK_CategoryProduct*ОИ¤ 2FK_CategoryProduct*╟мё 2FK_CategoryProduct*╤х 2FK_CategoryProduct*9ї┘ 2FK_CategoryProduct*r╬2FK_CategoryProduct*л=┬2FK_CategoryProduct*фa╢2FK_CategoryProduct*Жк2FK_CategoryProduct*VкЮ2FK_CategoryProduct*П╬Т2FK_CategoryProduct*╚ЄЖ2FK_CategoryProduct*{2FK_CategoryProduct*:;o2FK_CategoryProduct*s_c2FK_CategoryProduct*мГW2FK_CategoryProduct*хзK2FK_CategoryProduct*╠?2FK_CategoryProduct*WЁ32FK_CategoryProduct*Р(2FK_CategoryProduct*╔82FK_CategoryProduct*]2FK_CategoryProduct*;Б2FK_CategoryProduct*tе°2FK_CategoryProduct*н╔ь 2FK_CategoryProduct*цэр!2FK_CategoryProduct*╒"2FK_CategoryProduct*X6╔#2FK_CategoryProduct*СZ╜$2FK_CategoryProduct*╩~▒%2FK_CategoryProduct*ге&2FK_CategoryProduct*<╟Щ'2FK_CategoryProduct*uыН(2FK_CategoryProduct*оВ)2FK_CategoryProduct*ч3v*2FK_CategoryProduct* Xj+2FK_CategoryProduct*Y|^,2FK_CategoryProduct*ТаR-2FK_CategoryProduct*╦─F.2FK_CategoryProduct*щ:/2FK_CategoryProduct*= /02FK_CategoryProduct*v1#12FK_CategoryProduct*пU22FK_CategoryProduct*шy 32FK_CategoryProduct*!Ю 32FK_CategoryProduct*Z┬є42FK_CategoryProduct*Уцч52FK_CategoryProduct&╠ ▄62FK_CategoryProductNzЇM2FK_CategoryProduct*ЗЮшN2FK_CategoryProduct*└┬▄O2FK_CategoryProduct*∙ц╨P2FK_CategoryProduct*2 ┼Q2FK_CategoryProduct*k/╣R2FK_CategoryProduct*дSнS2FK_CategoryProduct*▌wбT2FK_CategoryProduct*ЬХU2FK_CategoryProduct*O└ЙV2FK_CategoryProduct*Иф}W2FK_CategoryProductategoryProduct!!!!!!Мю╩ЮД╓Vz╢(мjZ`О~6 ъFшlф&ZО╩к·к╩D`ЁJl2>2В║H┬дИ|· ╥ v < ░ Z"ЎwP].Wк^v8!!!!╛` <"в<xЧT фCH;б─&"sysrowsets&(sysallocunits& sysfiles1& sysftinds& sysowners&sysprivs&""sysschobjs&)"syscolpars&, sysnsobjs&1 sysxprops&2*sysscalartypes&3,systypedsubobjs&6$sysidxstats&7 sysiscols&<&sysobjvalues&@"sysclsobjs&A(sysrowsetrefs&J.syssingleobjrefs&K,sysmultiobjrefs&:"sysbinobjs&a(sysbinsubobjs&N$sysguidrefs&Z sysqnames&[,sysxmlcomponent&\$sysxmlfacet&],sysxmlplacement&C*sysremsvcbinds&G&sysconvgroup&Esysrts&D&sysxmitqueue&H sysdesend&Isysdercv&^,sysobjkeycrypts&.syscerts&_$sysasymkeys&`&syssqlguides&Г╫uFQueryNotificationErrorsQueue&Xз╦v@queue_messages_1977058079&С╦┐wFEventNotificationErrorsQueue&╩я│x@queue_messages_2009058193&иy2ServiceBrokerQueue&<8Ьz@queue_messages_2041058307& sysfgfrag&sysphfg&$sysprufiles& sysrscols&b*syssoftobjrefs&u\Р{Lfilestream_tombstone_2073058421&оАД|&syscommittab&(syspriorities&;"sysaudacts&R.syscompfragments&U"sysftstops& ╔l~"Categories&ТU(PK_Categories&Z=Products&=~1$PK_Products&ЪЧ╪}:DF_Products_CreateDate&╙╗╠~>DF_Products_ModifiedDate*┴rX2FK_CategoryProduct*·,fY2FK_CategoryProduct*3QZZ2FK_CategoryProduct*luN[2FK_CategoryProduct*еЩB\2FK_CategoryProduct*▐╜6]2FK_CategoryProduct*т*^2FK_CategoryProduct*P_2FK_CategoryProduct*Й*`2FK_CategoryProduct*┬Na2FK_CategoryProduct*√r√a2FK_CategoryProduct*4Чяb2FK_CategoryProduct*m╗уc2FK_CategoryProduct*ж▀╫d2FK_CategoryProduct*▀╠e2FK_CategoryProduct*(└f2FK_CategoryProduct*QL┤g2FK_CategoryProduct*Кpиh2FK_CategoryProduct*├ФЬi2FK_CategoryProduct*№╕Рj2FK_CategoryProduct*5▌Дk2FK_CategoryProduct*nyl2FK_CategoryProduct*з%mm2FK_CategoryProduct*рIan2FK_CategoryProduct*nUo2FK_CategoryProduct*RТIp2FK_CategoryProduct*Л╢=q2FK_CategoryProduct*─┌1r2FK_CategoryProduct*¤■%s2FK_CategoryProduct*6#t2FK_CategoryProduct*oGu2FK_CategoryProduct*иkv2FK_CategoryProduct*сПЎv2FK_CategoryProduct*┤ъw2FK_CategoryProduct*S╪▐x2FK_CategoryProduct*М№╥y2FK_CategoryProduct*┼ ╟z2FK_CategoryProduct*■D╗{2FK_CategoryProduct*7iп|2FK_CategoryProduct*pНг}2FK_CategoryProduct*й▒Ч~2FK_CategoryProduct*т╒Л2FK_CategoryProduct*·2FK_CategoryProduct*Tt2FK_CategoryProduct*НBh2FK_CategoryProduct*╞f\2FK_CategoryProduct* КP2FK_CategoryProduct*8пD2FK_CategoryProduct*q╙82FK_CategoryProduct*кў,2FK_CategoryProduct*у!2FK_CategoryProduct*@ 2FK_CategoryProduct*Ud 2FK_CategoryProduct*ОИ¤ 2FK_CategoryProduct*╟мё 2FK_CategoryProduct*╤х 2FK_CategoryProduct*9ї┘ 2FK_CategoryProduct*r╬2FK_CategoryProduct*л=┬2FK_CategoryProduct*фa╢2FK_CategoryProduct*Жк2FK_CategoryProduct*VкЮ2FK_CategoryProduct*П╬Т2FK_CategoryProduct*╚ЄЖ2FK_CategoryProduct*{2FK_CategoryProduct*:;o2FK_CategoryProduct*s_c2FK_CategoryProduct*мГW2FK_CategoryProduct*хзK2FK_CategoryProduct*╠?2FK_CategoryProduct*WЁ32FK_CategoryProduct*Р(2FK_CategoryProduct*╔82FK_CategoryProduct*]2FK_CategoryProduct*;Б2FK_CategoryProduct*tе°2FK_CategoryProduct*н╔ь 2FK_CategoryProduct*цэр!2FK_CategoryProduct*╒"2FK_CategoryProduct*X6╔#2FK_CategoryProduct*СZ╜$2FK_CategoryProduct*╩~▒%2FK_CategoryProduct*ге&2FK_CategoryProduct*<╟Щ'2FK_CategoryProduct*uыН(2FK_CategoryProduct*оВ)2FK_CategoryProduct*ч3v*2FK_CategoryProduct* Xj+2FK_CategoryProduct*Y|^,2FK_CategoryProduct*ТаR-2FK_CategoryProduct*╦─F.2FK_CategoryProduct*щ:/2FK_CategoryProduct*= /02FK_CategoryProduct*v1#12FK_CategoryProduct*пU22FK_CategoryProduct*шy 32FK_CategoryProduct*!Ю 32FK_CategoryProduct*Z┬є42FK_CategoryProduct*Уцч52FK_CategoryProduct&╠ ▄62FK_CategoryProductNzЇM2FK_CategoryProduct*ЗЮшN2FK_CategoryProduct*└┬▄O2FK_CategoryProduct*∙ц╨P2FK_CategoryProduct*2 ┼Q2FK_CategoryProduct*k/╣R2FK_CategoryProduct*дSнS2FK_CategoryProduct*▌wбT2FK_CategoryProduct*ЬХU2FK_CategoryProduct*O└ЙV2FK_CategoryProduct*Иф}W2FK_CategoryProductategoryProduct!!!!!!Мю╩ЮД╓Vz╢(мjZ`О~6 ъFшlф&ZО╩к·к╩D`ЁJl2>2ВИ║H┬|· ╥ дv < ░ Z"ЎybZ.I*^x8!!!!╛` <"╨╪zЧe фC6#Мє"),12367<@AJK:aNZ[\]CGEDHI^._`Г╫uГ╫uXз╦vС╦┐wС╦┐w╩я│xиyиy<8Ьzbu\Р{оАД|;RU ╔l~ ╔l~ТUZ=Z==~1 Z=К7Дt Z=├[xu Z=№lv Z=5д`w Z=n╚Tx Z=зьHy Z=р=z Z=51{ Z=RY%| Z=Л}} Z=─б ~ Z=¤┼ Z=6ъї Z=oъ Z=и2▐ Z=сV╥ Z={╞ Z=SЯ║ Z=М├о Z=┼чв Z=■ Ч Z=70Л Z=pT Z=йxs Z=тЬg Z=┴[ Z=TхO Z=Н D Z=╞-8 Z= Q, Z=8v  Z=qЪ Z=к╛ Z=ут№ Z=ё Z=U+х Z=ОO┘ Z=╟s═ Z=Ш┴ Z=9╝╡ Z=rрй Z=лЮ Z=ф(Т Z=MЖ Z=Vqz Z=ПХn Z=╚╣b Z=▐V! Z=:K" Z=s&?# Z=мJ3$ Z=хn'% Z=У& Z=W╖' Z=Р█( Z=╔ ў( Z=$ь) Z=;Hр* Z=tl╘+ Z=нР╚, Z=ц┤╝- Z=┘░. Z=X¤д/ Z=С!Щ0 Z=╩EН1 Z=jБ2 Z=<Оu3 Z=u▓i4 Z=о╓]5 Z=ч·Q6 Z= F7 Z=YC:8 Z=Тg.9 Z=╦Л": Z=░; Z==╘ < Z=v°■< Z=пє= Z=ш@ч> Z=!e█? Z=ZЙ╧@ Z=Ун├A Z=╠╤╖B Z=ЎлC Z=>аD Z=w>ФE Z=░bИF Z=щЖ|G Z="лpH Z=[╧dI Z=ФєXJ Z=═MK Z= Z=╕Т2 Z=ё╢& Z=*█ Z=c  Z=Ь# Z=╒Gў Z=lы Z=GР▀ Z=А┤╙ Z=╣╪╟ Z=Є№╗ Z=+!░ Z=dEд Z=ЭiШ Z=╓НМ Z=▓А Z=H╓t Z=Б·h Z=║] Z=єBQ Z=,gE Z=eЛ9 Z=Юп- Z=╫╙!! Z=°" Z=I # Z=В@■# Z=╗dЄ$ Z=ЇИц% Z=-н┌& Z=f╤╬' Z=Яї┬( Z=╪╖) Z=>л* Z=JbЯ+ Z=ГЖУ, Z=╝кЗ- Z=ї╬{. Z=.єo/ Z=gd0 Z=а;X1 Z=┘_L2 Z=Д@3 Z=Kи44 Z=Д╠(5 Z=╜Ё6 Z=Ў7 Z=/98 Z=h]∙8 Z=бБэ9 Z=┌ес: Z=╩╒; Z=Lю╔< Z=Е╛= Z=╛6▓> Z=ўZж? Z=0Ъ@ Z=iгОA Z=в╟ВB Z=█ыvC Z=kD Z=M4_E Z=ЖXSF Z=┐|GG Z=°а;H Z=1┼/I Z=jщ#J Z=г K Z=▄1 L Z=VM Z=NzЇM Z=ЗЮшN Z=└┬▄O Z=∙ц╨P Z=2 ┼Q Z=k/╣R Z=дSнS Z=▌wбT Z=ЬХU Z=O└ЙV Z=Иф}W Z=┴rX Z=·,fY Z=3QZZ Z=luN[ Z=еЩB\ Z=▐╜6] Z=т*^ Z=P_ Z=Й*` Z=┬Na Z=√r√a Z=4Чяb Z=m╗уc Z=ж▀╫d Z=▀╠e Z=(└f Z=QL┤g Z=Кpиh Z=├ФЬi Z=№╕Рj Z=5▌Дk Z=nyl Z=з%mm Z=рIan Z=nUo Z=RТIp Z=Л╢=q Z=─┌1r Z=¤■%s Z=6#t Z=oGu Z=иkv Z=сПЎv Z=┤ъw Z=S╪▐x Z=М№╥y Z=┼ ╟z Z=■D╗{ Z=7iп| Z=pНг} Z=й▒Ч~ Z=т╒Л Z=· Z=Tt Z=НBh Z=╞f\ Z= КP Z=8пD Z=q╙8 Z=кў, Z=у! Z=@ Z=Ud Z=ОИ¤ Z=╟мё Z=╤х Z=9ї┘ Z=r╬ Z=л=┬ Z=фa╢ Z=Жк Z=VкЮ Z=П╬Т Z=╚ЄЖ Z={ Z=:;o Z=s_c Z=мГW Z=хзK Z=╠? Z=WЁ3 Z=Р( Z=╔8 Z=] Z=;Б Z=tе° Z=н╔ь Z=цэр! Z=╒" Z=X6╔# Z=СZ╜$ Z=╩~▒% Z=ге& Z=<╟Щ' Z=uыН( Z=оВ) Z=ч3v* Z= Xj+ Z=Y|^, Z=ТаR- Z=╦─F. Z=щ:/ Z== /0 Z=v1#1 Z=пU2 Z=шy 3 Z=!Ю 3 Z=Z┬є4 Z=Уцч5Z=╠ ▄6Z=^/▄z Z=ЧS╨{ Z=╨w─| Z= Ь╕} Z=B└м~ Z={фа Z=┤Х Z=э,Й Z=&Q} Z=_uq Z=ШЩe Z=╤╜Y Z= тM Z=CB Z=|*6 Z=╡N* Z=юr Z='Ч Z=`╗ Z=Щ▀· Z=╥я Z= (у Z=DL╫ Z=}p╦ Z=╢Ф┐ Z=я╕│ Z=(▌з Z=aЬ Z=Ъ%Р Z=╙IД Z= nx Z=EТl Z=~╢` Z=╖┌T Z=Ё■H Z=)#= Z=bG1 Z=Ыk% Z=╘П Z= ┤ Z=F╪! Z=№ї! Z=╕ ъ" Z=ёD▐# Z=*i╥$ Z=cН╞% Z=Ь▒║& Z=╒╒о' Z=·в( Z=GЧ) Z=АBЛ* Z=╣f+ Z=ЄКs, Z=+пg- Z=d╙[. Z=ЭўO/ Z=╓D0 Z=@81 Z=Hd,2 Z=БИ 3 Z=║м4 Z=є╨5 Z=,ї№5 Z=eё6 Z=Ю=х7 Z=╫a┘8 Z=Ж═9 Z=Iк┴: Z=В╬╡; Z=╗Єй< Z=ЇЮ= Z=-;Т> Z=f_Ж? Z=ЯГz@ Z=╪зnA Z=╠bB Z=JЁVC Z=ГKD Z=╝8?E Z=ї\3F Z=.Б'G Z=gеH Z=а╔I Z=┘эJ Z=°J Z=K6ьK Z=ДZрL Z=╜~╘M Z=Ўв╚N Z=/╟╝O Z=hы░P Z=беQ Z=┌3ЩR Z=XНS Z=L|БT Z=ЕаuU Z=╛─iV Z=ўш]W Z=0 RX Z=i1FY Z=вU:Z Z=█y.[ Z=Ю"\ Z=M┬] Z=Жц ^ Z=┐  ^ Z=°.є_ Z=1Sч` Z=jw█a Z=гЫ╧b Z=▄┐├c Z=ф╖d Z=Nмe Z=З,аf Z=└PФg Z=∙tИh Z=2Щ|i Z=k╜pj Z=дсdk Z=▌Yl Z=*Mm Z=ONAn Z=Иr5o Z=┴Ц)p Z=·║q Z=3▀r Z=ls Z=е'·s Z=▐Kюt Z=pтu Z=PФ╓v Z=Й╕╩w Z=┬▄╛x Z=√│y Z=4%зz Z=mIЫ{ Z=жmП| Z=▀СГ} Z=╢w~ Z=Q┌k Z=К■_ Z=├"T Z=№FH Z=5k< Z=nП0 Z=з│$ Z=р╫ Z=№  Z=R  Z=ЛDї Z=─hщ Z=¤М▌ Z=6▒╤ Z=o╒┼ Z=и∙╣ Z=со Z=Bв Z=SfЦ Z=МКК Z=┼о~ Z=■╥r Z=7ўf Z=p[ Z=й?O Z=тcC Z=И7 Z=Tм+ Z=Н╨ Z=╞Ї Z=  Z=8=№ Z=qaЁ Z=кЕф Z=уй╪ Z=╬╠ Z=UЄ└! Z=О╡" Z=╟:й# Z=_Э$ Z=9ГС% Z=rзЕ& Z=л╦y' Z=фяm( Z=b) Z=V8V* Z=П\J+ Z=╚А>, Z=е2- Z=:╔&. Z=sэ/ Z=м0 Z=х51 Z=Zў1 Z=W~ы2 Z=Рв▀3 Z=╔╞╙4 Z=ы╟5 Z=;╝6 Z=t3░7 Z=нWд8 Z=ц{Ш9 Z=аМ: Z=X─А; Z=Сшt< Z=╩ i= Z=1]> Z=с{P Z=wpQ Z=░)dR Z=щMXS Z="rLT Z=[Ц@U Z=Ф║4V Z=═▐(W Z=X Z=?'Y Z=xKZ Z=▒o∙Z Z=ъУэ[ Z=#╕с\ Z=\▄╒] Z=Х╩^ Z=╬$╛_ Z=I▓` Z=@mжa Z=yСЪb Z=▓╡Оc Z=ы┘Вd Z=$■ve Z=]"kf Z=ЦF_g Z=╧jSh Z=ПGi Z=A│;j Z=z╫/k Z=│√#l Z=ьm Z=%D n Z=^ho Z=ЧМЇo Z=╨░шp Z= ╒▄q Z=B∙╨r Z={┼s Z=┤A╣t Z=эeнu Z=&Кбv Z=_оХw Z=Ш╥Йx Z=╤Ў}y Z= rz Z=C?f{ Z=|cZ| Z=╡ЗN} Z=юлB~ Z='╨6 Z=`Ї* Z=Щ Z=╥< Z= a Z=DЕ√ Z=}йя Z=╢═у Z=яё╫ Z=(╠ Z=a:└ Z=Ъ^┤ Z=╙Ви Z= зЬ Z=E╦Р Z=~яД Z=╖y Z=Ё7m Z=)\a Z=bАU Z=ЫдI Z=╘╚= Z= э1 Z=F& Z=5 Z=╕Y Z=ё} Z=*вЎ Z=c╞ъ Z=Ьъ▐ Z=╒╙ Z=3╟ Z=GW╗ Z=А{п Z=╣Яг Z=Є├Ч Z=+шЛ! Z=d А" Z=Э0t# Z=╓Th$ Z=y\% Z=HЭP& Z=Б┴D' Z=║х8( Z=є -) Z=,.!* Z=eR+ Z=Юv , Z=╫Ъ¤, Z=┐ё- Z=Iух. Z=В┌/ Z=╗+╬0 Z=ЇO┬1 Z=-t╢2 Z=fШк3 Z=Я╝Ю4 Z=╪рТ5 Z=З6 Z=J){7 Z=ГMo8 Z=╝qc9 Z=їХW: Z=.║K; Z=g▐?< Z=а4= Z=┘&(> Z=K? Z=Ko@ Z=ДУA Z=╜╖°A Z=Ў█ьB Z=/сC Z=h$╒D Z=бH╔E Z=┌l╜F Z=С▒G Z=L╡еH Z=Е┘ЩI Z=╛¤НJ Z=ў!ВK Z=0FvL Z=ijjM Z=вО^N Z=█▓RO Z=╫FP Z=M√:Q Z=Ж/R Z=┐C#S Z=°gT Z=1М U Z=j░ U Z=г╘єV Z=▄°чW Z=▄X Z=NA╨Y Z=Зe─Z Z=└Й╕[ Z=∙нм\ Z=2╥а] Z=kЎФ^ Z=дЙ_ Z=▌>}` Z=cqa Z=OЗeb Z=ИлYc Z=┴╧Md Z=·єAe Z=36f Z=l<*g Z=е`h Z=▐Дi Z=йj Z=P═·j Z=Йёюk Z=┬уl Z=√9╫m Z=4^╦n Z=mВ┐o Z=жж│p Z=▀╩зq Z=яЫr Z=QРs Z=К7Дt||||||||||||||||||||||||·ц╥D:╬Рr@6Ё▄╚Ж,(╛┤аZPF<h^2 ЦМnxВdЎьTт╪╬─║к░жЬТИ~Jtj`" Z"Ў{nX.Nк^z8!!!!╛`'ЦR6jЄ|╤▐Эb`0'  9clust0'  9clust' 0'  7clst0'  7clst0'  5nc10'  5nc20'  9clust0'" " 7clst0'" " 5nc10'" " 5nc20'"" 5nc30') ) 7clst0') ) 3nc0', , 7clst0', , 3nc0'1 1 9clust0'2 2 7clst0'2 2 5nc10'2 2 5nc20'3 3 7clst0'3 3 3nc0'6 6 7clst0'6 6 3nc0'7 7 7clst0'. . 3cl0'. . 5nc10'. . 5nc20'. . 5nc30'  3cl0'  3cl0'  7clst0'  7clst0'  3nc0'  3cl0'  3nc0'  5nc20'7 7 5nc10'  a_WA_Sys_00000006_000000180'  a_WA_Sys_00000005_000000180'  a_WA_Sys_00000001_000000180'  a_WA_Sys_00000003_0000001B0')  a_WA_Sys_00000003_000000290')  a_WA_Sys_00000002_000000290'"  a_WA_Sys_00000008_000000220'"  a_WA_Sys_00000006_000000220'"  a_WA_Sys_00000003_000000220'  a_WA_Sys_00000004_000000050'  a_WA_Sys_00000003_000000050'1  a_WA_Sys_00000004_000000310'1  a_WA_Sys_00000003_000000310'1  a_WA_Sys_00000002_000000310'6  a_WA_Sys_00000002_000000360'" a_WA_Sys_00000005_000000220'2  a_WA_Sys_00000004_000000320'6  a_WA_Sys_00000004_000000360'  a_WA_Sys_00000002_000000070'  a_WA_Sys_00000005_000000030',  a_WA_Sys_00000004_0000002C0',  a_WA_Sys_00000002_0000002C0'  a_WA_Sys_00000002_000000030')  a_WA_Sys_0000000D_000000290') a_WA_Sys_0000000B_000000290') a_WA_Sys_00000006_000000290') a_WA_Sys_00000005_000000290'3  a_WA_Sys_00000005_000000330'3  a_WA_Sys_00000002_000000330'6  a_WA_Sys_00000009_000000360'6 a_WA_Sys_0000000A_000000360'2  a_WA_Sys_0000000D_000000320'2  a_WA_Sys_0000000C_000000320'" a_WA_Sys_00000009_000000220') a_WA_Sys_0000000F_000000290') a_WA_Sys_0000000E_000000290'6 a_WA_Sys_00000007_000000360'6 a_WA_Sys_00000005_000000360'  a_WA_Sys_00000002_000000190'  a_WA_Sys_00000007_0000001D0'  a_WA_Sys_00000005_0000001D0'  a_WA_Sys_00000004_0000001D0' a_WA_Sys_00000003_0000001D0' a_WA_Sys_00000002_0000001D<  a_WA_Sys_00000003_0000003C0'<  a_WA_Sys_00000002_0000003C0'  a_WA_Sys_00000004_000000050'  a_WA_Sys_00000003_000000050'1  a_WA_Sys_00000004_000000310'1  a_WA_Sys_00000003_000000310'1  a_WA_Sys_00000002_000000310'6  a_WA_Sys_00000002_000000360'" a_WA_Sys_00000005_000000220'2  a_WA_Sys_00000004_000000320'J  a_WA_Sys_00000003_0000004A0'J  a_WA_Sys_00000001_0000004A0'7  a_WA_Sys_00000004_000000370'7  a_WA_Sys_00000002_000000370'6  a_WA_Sys_00000004_000000360'  a_WA_Sys_00000002_000000070'  a_WA_Sys_00000005_00000fKъдC╖Ф 3№тБ╔ТfV](ё3 ╥ q ╕:╨Э;┌ЕNЙ( ┐^¤+ ╩ ф╟ї N э М пzEС0╧n ╒i аk4м¤ зF╒вo▄йv╥CЩ п `Ьy  Z6Ў}C.к^|УЦ8!!!!╛` в6Jr~╬Gи┌╛6clust6clust6clst6clst6nc16nc26clust6"clst6"nc16"nc26"nc36)clst6)nc6,clst6,nc61clust62clst62nc162nc263clst63nc66clst66nc67clst6<clst6@clst6@nc6Aclust6Jclst6Jnc16Kclst6Knc16:clst6:nc16aclst6anc16Ncl6Nnc6Zclst6Znc16[cl6[nc16\cl6]cl6]nc16Cclst6Cnc16Cnc26Gclst6Eclst6Enc16Enc26Dclst6Hcl6Icl6^cl6.cl6.nc16.nc26.nc36_cl6_nc16_nc36`clst6`nc16`nc26Xз╦v:queue_secondary_index6╩я│x:queue_secondary_index6<8Ьz:queue_secondary_index6cl6cl6clst6clst6nc6bclst6bnc16u\Р{&FSTSClusIdx6u\Р{"FSTSNCIdx6оАД|(ci_commit_ts6оАД|$si_xdes_id6cl6nc6nc26Xз╦v:queue_clustered_index6╩я│x:queue_clustered_index6<8Ьz:queue_clustered_index6;clust6Rclst6Uclst67nc16 B_WA_Sys_00000006_000000186 B_WA_Sys_00000005_000000186 B_WA_Sys_00000001_000000186 B_WA_Sys_00000003_0000001B6@ B_WA_Sys_00000005_000000406@ B_WA_Sys_00000002_000000406) B_WA_Sys_00000003_000000296) B_WA_Sys_00000002_000000296" B_WA_Sys_00000008_000000226" B_WA_Sys_00000006_000000226" B_WA_Sys_00000003_000000226< B_WA_Sys_00000004_0000003C6< B_WA_Sys_00000003_0000003C6< B_WA_Sys_00000002_0000003C6 B_WA_Sys_00000004_000000056 B_WA_Sys_00000003_0000000561 B_WA_Sys_00000004_0000003161 B_WA_Sys_00000003_0000003161 B_WA_Sys_00000002_0000003166 B_WA_Sys_00000002_000000366"B_WA_Sys_00000005_0000002262 B_WA_Sys_00000004_000000326J B_WA_Sys_00000003_0000004A6J B_WA_Sys_00000001_0000004A67 B_WA_Sys_00000004_0000003767 B_WA_Sys_00000002_0000003766 B_WA_Sys_00000004_000000366 B_WA_Sys_00000002_000000076 B_WA_Sys_00000005_000000036, B_WA_Sys_00000004_0000002C6, B_WA_Sys_00000002_0000002C6 B_WA_Sys_00000002_000000036) B_WA_Sys_0000000D_000000296)B_WA_Sys_0000000B_000000296)B_WA_Sys_00000006_000000296)B_WA_Sys_00000005_000000296 ╔l~*PK_Categories63 B_WA_Sys_00000005_0000003363 B_WA_Sys_00000002_000000336J B_WA_Sys_00000005_0000004A66 B_WA_Sys_00000009_0000003666B_WA_Sys_0000000A_0000003662 B_WA_Sys_0000000D_0000003262 B_WA_Sys_0000000C_000000326a B_WA_Sys_00000003_000000616a B_WA_Sys_00000002_000000616"B_WA_Sys_00000009_000000226)B_WA_Sys_0000000F_000000296)B_WA_Sys_0000000E_0000002967 B_WA_Sys_00000005_0000003766B_WA_Sys_00000007_0000003666B_WA_Sys_00000005_000000366<B_WA_Sys_00000005_0000003C6 B_WA_Sys_00000002_000000196K B_WA_Sys_00000005_0000004B6K B_WA_Sys_00000001_0000004B6b B_WA_Sys_00000009_000000626b B_WA_Sys_00000007_000000626b B_WA_Sys_00000006_000000626bB_WA_Sys_00000005_000000626bB_WA_Sys_00000003_000000626 B_WA_Sys_00000007_0000001D6 B_WA_Sys_00000005_0000001D6 B_WA_Sys_00000004_0000001D6B_WA_Sys_00000003_0000001D6B_WA_Sys_00000002_0000001D6Z=&PK_Products6Z=:IX_FK_CategoryProduct67B_WA_Sys_00000006_000000376Z=B_WA_Sys_00000002_023D5A0467B_WA_Sys_00000007_00000037A_Sys_00000001_0000004B6b B_WA_Sys_00000009_000000626b B_WA_Sys_00000007_000000626b B_WA_Sys_00000006_000000626bB_WA_Sys_00000005_000000626bB_WA_Sys_00000003_000000626 B_WA_Sys_00000007_0000001D6 B_WA_Sys_00000005_0000001D6 B_WA_Sys_00000004_0000001D6B_WA_Sys_00000003_0000001D6B_WA_Sys_00000002_0000001DZ=6Z=&PK_Products6Z=:IX_FK_CategoryProduct!!!!!!!!!!!!!!!!!!!!!!!!Ёмr8╞МRLи▐ЮZ"ЇШИDц<jЦ ╚Tь: ▐ВhJ ·r.╨└╞j>┤И(>rжА┌ ╚№z`R~Ї╘2  "Їо╞ jоЦP~R&тЬp╕а&┤J@,м6"^·ц╚fиа^т┌╕Ш$p ·0,<м$▓ ` ~4Vh ░ъn╥fИDв Ш6 Р╩А ┌Ж№ └а x ┬ ь Ї ╚& > ютк ║ ╥F. ЄV^vNф Ф Z6ЎРYо╣к^~8!!!!╛`><жАИє"S)RL0< "0  Zч╨4microsoft.sqlserver.types.dll 00Є&0< "0<$╣ н8, ╘Ъ[[А?A 4<CCA╢BA) 1 3NiДЯ║╒Ё &A\wТн╚у■4OjЕа╗╓ё 'B]xУо╔ф 5PkЖб╝╫Є (C^yФп╩х6QlЗв╜╪є А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?"А?А?)А?А?,А?А?.А?А?1А?А?А?3А?А?6А?А?7А?А?:А?А?А?<А?А?@А?А?AА?@А?EА?@А?IА?А?А?KА?А?NА?А?RА?А?UА?А?ZА?А?А?\А?А?А?^А?А?А?`А?А?А?bА?А?А?А?А?А?А?А?)А?А?,А?А?.А?А?2А?А?3А?А?6А?А?7А?А?:А?А?@А?А?CА?А?EА?А?JА?А?KА?А?NА?А?ZА?А?[А?@@А?aА?А?bА?А?А?А?А?А?"А?А?.А?А?2А?А?CА?А?EА?А?_А?А?`А?А?"А?А?.А?А?А?@@А?А?А?А? А?А?А? А?А? [0<$R X8, ╘Ъxx▌` >A 4А@╢BА@Ыг(?VmДА?А?DBА?ЁAА?AА?@А?[0<  "0ЪЧ╪} .8(getutcdate())0╙╗╠~ .8(getutcdate())иAШAА?А@А@А@А@А@8@$А?А?РAА?0<$И3, ╘ЪА?%IТ=А@`AА@°@WnЕЬ│╩сА?А?А?А?А?А?А?А?А?А?@А?А?А?@А?А?@А?@А?@А?А?А? @w ж Ё^*ц─X[√|╬ xМ$ яЦтВj8чЪxVРe▄ВЁр▓ Z<ЎБ#O.*^АОПРШGFE8А!!!!╛`ВI:║ ЗВЧЯ~Gл0▒ўI.. I22MMN I33 I66~~ I::SST I@@YYZ ICC IEE IJJccd IKKiij INN IZZЯ@ I[[##$ I]]IIJ I__ I`` IaaККЛ Ibb I I__` I""xxy I.. I22OOP ICC IEE I__ I`` I""zz{ I.. I< <ФФХ ID I^ I. I_ I  I I   I  I  I I I I I  I` I  I  I  I  I  I  I77ДДЕ I  I  I I I I  I! I"ЩЩЪ I# I$ I% I& I'ЫЫЬ I( I)ЭЭЮ А}9DagА}9"". А}9..ПСА}922 А}9CCF А}9EE  А}9__)+А}9``F%+ А}9"".  А}9..)+А}9Xз╦v м1d1А}9Xз╦v /5/5А}9╩я│x м1d1А}9╩я│x /5/5А}9<8Ьz м1d1А}9<8Ьz /5/5А}9YАА}9AA А}9CC А}9DDз) R А}9EE А}9GG# А}9HH63А}9II3│А}9JJЕА}9KKfА}9NN$!А}9ZZ\WА}9[[] i! А}9\\aWА}9]]cА}9^^z0 А}9__ V( А}9``>! А}9aaА}9 А}9""1 А}9))D╢ А}9,, А}9..  А}922 А}933D А}966DP А}9:: А}!!!!!!!!!!!!!!!!!!!!!!!!.....Ё▓t6°║|>┬ДF:::::::эаS8j╨Г6щ Ь O  ╡ h  ╬ Б 4 ч Ъ M │ f  ╠2хШK■▒d╩}0уЦI№пb╚{.сФ╖G·н` ZЎГ ╪gо№*^8!!!!╛`:7R\Д╬GU┘GЁ """"""""")))))),,,,,.....1111222223333336666777:::::;;;;;;<<<<@@@@AAAACCCCDDDEEEEEGHIIJJJJJJJJKKKKKKKKKKNNNNNRRUUUZZZZ[[[[[[[\\]]]]]^^^___``````aaaaaabbbbbbbbbbbbXз╦vXз╦vXз╦vXз╦vXз╦vXз╦vXз╦vXз╦vXз╦vXз╦vXз╦v ╩я│x╩я│x╩я│x╩я│x╩я│x╩я│x╩я│x╩я│x╩я│x╩я│x╩я│x <8Ьz<8Ьz<8Ьz<8Ьz<8Ьz<8Ьz<8Ьz<8Ьz<8Ьz<8Ьz<8Ьz u\Р{u\Р{u\Р{u\Р{u\Р{u\Р{u\Р{u\Р{u\Р{оАД|оАД|оАД|оАД|7777    @ @ ) ) " " " < < <   1 1 1 6 "2 J J 7 7 6   , ,  )  ) )) чдx} ╔l~ чдx}3 3 J 6  6 2  2  a a " ))7 66< K K b  b b bb   Z=Z=7Z=7!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!°. √ъ┘╚╖жХДsbQ@/ №ы┌╔╕зЦЕtcRA0¤ ь █ ╩ ╣ и Ч Ж u d S B 1 :]  n■ э Р▄ ╦ ║ й бШ З v e T C С2 ! в   ю ▌ ╠ ╗ к Щ И w f U D 3 "  я ▐ ═ ╝ л Ъ Й x g V E 4 #   Ё ▀ ╬ ╜ м Ы К y h W F 5 ;$   ёр╧╛LнЬ<Лzi∙XG6 %Єс╨┐оЭМ{jYH7&єт╤╟└п╪ЮН|>kOZ`I8'Їу╥┴░ЯОK)Pцa}rl,?[^Mў=J9╞(їф╙+┬▒oАшаП~m\KУ:д)╡Ўх╘├▓pбРБn─╒г┤┼╓]Lщ;*·│ў ц╫╒─│в-САo▓^M├<╘+хЎ °╢ч╓┼*┤ГФгеТБp_N=, ∙ш╫╞╡NдУqВВ_qТ` Z7ЎЕ Р\$.чк^Д8!!!!╛`┬EWзЖ H ■рЄЁ0l===GAutoCreatedLocalLOCAL  """""""")))),,,,112222223333666677<<<< @@@@AAJJJJKKKKLL::::::aaaaaaNNNNNNZZZZZZ[[[[[[\\\\]]]]]]CCCCCCCCGGGGEEEEEEEEDDDDDDHHHHIIII^^^^^^............__________````````     !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!( ( ╚ h X  ° ░ Ш P H И8 ╪ АЁH0 p@ └ Р╨ИШhh╪ °иx0 ш╕X°( Р ИxH╕pАP@ P╚└8╪р└Р`ш╨а@(р╚░ш ╕ И ШАhP  @ р А и арЁ` ZEЎЗ Pgо┘к^Ж8!!!!╛`Вa`ЪИ (.╔с#0 АlMicrosoft.SqlServer.Types.SqlHierarchyId0 БfMicrosoft.SqlServer.Types.SqlGeometry0 ВhMicrosoft.SqlServer.Types.SqlGeography) 0 ) 8 ) 8 ) 8 ) 8 ) 4) ) ) 0 )  ) 8 ) 4) н) н!) н') - ) 5 ) = ) 8 ) 4) я╨4 ) я╨4 )  )  8 )  8 )  4)  0)  4)  0)  0) 8  ) 4 ) 4! ) 0# ) 0$ )  4%)  4') ) 8 ) 0) 4) 8 ) 4) 4) 4)  ) 8 ) 8 ) 8 ) 8  ) 8 ) 8 ) 8 ) 8 ) п) $)8 ") 8 &) ч╨4  ) 8 ) 8 ) 8 ) 8 ) 0) 0) 8 ) 8 ) 8  ) ч╨4   ) ч╨4■  ) н " ) н , )$6) 8 F)н J)н T)н ^)н h)н r)н |)н Ж)$Р) =а)н и)н ▓)н ╝)$╞)н ╓) р)$ш) 8 ) 8 ) 8 ) 8 ) 0) 0) 8 ) 8 ) 8  ) ч╨4   ) ч╨4■  ) н " ) н , )$6) 8 F)н J)н T)н ^)н h)н r)н |)н Ж)$Р) =а)н и)н ▓)н ╝)$╞)н ╓) р)$ш) ) 8 ) 8 ) ) 8 ) 8 ) 4$) 4&) 8 ( ) 8 , ) 8 0 ) 44 ) е   ) 8 6) ) 8 ) 8  ) ) 8 ) 8 ) 4$) 4&) 8 ( ) 8 , ) 8 0 ) 44 ) е   ) 8 6) 0' ) 0( ) 4) ) 8 + ) 4/ ) 41) 43) е  ) е■ ) 8 5) 8 E )н J)н T)н ^)н h)н r)н |)н Ж' · ═ а │││││││ЖY, ╥еxKё─Чj=у╢Й\/╒и{N!Ї╟Ъm═ а s F  ь ┐ Т e 8 ▐ ▒ Д W * ¤╨гvIя┬Хh;с┤ЗZ-╙жyLЄ┼ОШk>ф╖К]0╓a4┌нАS&∙╠й|O"ї╚ЫnAч║Н`ЯrEы╛Сd7 ▌2╠` ZaЎЙ (#о1*^И8!!!!╛`B aКpК (/Rfл& А^Microsoft.SqlServer.Types.SqlHierarchyId& БXMicrosoft.SqlServer.Types.SqlGeometry& ВZMicrosoft.SqlServer.Types.SqlGeographyЛ"Л"Л"Л"Н"Л"Л"Ш"Ь"Ь"Ш"Ш"╟"╟"╟" ╒" ╟" ╒""""" {" {" {" {" {" {" {" {" {" {" {" {" {" {" {"И"╟"╟"╟"╟"╟"╟"╟" ╟"""""""""""""""""""""" " " " " """ " " " " " " """ " " "" """"""""""" " " "  "  """ " " " " " " """ " " "" """"""""""" " " " " """""""""" " " " " "" " " " " """""" """"""" " " " " """ " " " " " " """ " " "" """"""""""" " " " " """ ╗╗╗╗╗╗╗ЦqL'▌╕УnI$ ┌╡РkF!№╫▓НhC∙╘пКe┼ а { V 1 ч┬ЭxS. ф┐ЪuP+с╝ЧrM(▐╣ФoJ%█╢СlG"¤^╪│ОiD·╒░Лf9я╩еА[6ьAў╥нИc>Ї╧кЕ`╟в}X3щ─ЯzU`╛ ZaЎЛ (!#о)к^К8!!!!╛`Т]7]щ М╤к╨nу""""""""")))))),,,,,1111.....     ) ) " " "   1 1 1 "  , ,  )  ) ))" ))    aaaNNNNNZZZZ[[[[[[[\\]]]]]CCCCGEEEEEDDDHII^^^.....___``````Xз╦vXз╦vXз╦vXз╦vXз╦vXз╦v ╩я│x╩я│x╩я│x╩я│x╩я│x╩я│x <8Ьz<8Ьz<8Ьz<8Ьz<8Ьz<8Ьz  bbbbbbbbbbbbu\Р{u\Р{u\Р{u\Р{u\Р{u\Р{u\Р{u\Р{u\Р{оАД|оАД|оАД|оАД|Xз╦vXз╦vXз╦vXз╦vXз╦v╩я│x╩я│x╩я│x╩я│x╩я│x<8Ьz<8Ьz<8Ьz<8Ьz<8Ьz;;;;;;RRUUU7777    @ @ ) ) " " " < < <   1 1 1 "  , ,  )  ) ))" еИktW:ш╦оС6  у╞йМ  ╟ к Н p ╜аoR5√▐ф ┬ў┌┴дЗjM0Ў┘╠ п Т u X ╝ЯВeH+Гё╘╖; ЪfI,│Цy\?"Є╒╕Ы~▀aD' }N1`S №э╨ Z7ЎН█hозк^МСТ8!!!!╛`<╝ОУU к> 'qk┐и'А<7П<\Ш<?! ` %`  ` %`%+ ` %Xм1d1Xз╦v %H/5/5Xз╦v %Xм1d1╩я│x %H/5/5╩я│x %Xм1d1<8Ьz %H/5/5<8Ьz % % %=* %1*  %° % °  %^: %R: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!ННd;щ└OцЧє: D .&╜bn╩а ╙ X ▌Cё  vч╥А¤ К8ФЁ9EбВ w % к / ┤╚0 ▐ Ц ш М Є ЯM$╛√▄ИЬМ░P┤t─╪аьЁ╚<(xd`Eв<∙ _П╬ ▌50<:$ф*, ╘Ълкк>C2=а@╕AА?А@T\,@`AА?└@А?@@А?0<7$[K*, ╘Ъєє1 C>/зА@ЖCА@]e/F╚AА?pCА?@@А? 0<7 $Иe m┤wЭ  >А@АЖCА@°@WnЕЬ│╩с°BА?─BА?РAА?@@А?@AА? AА? А@А? А?А? 0<7  "0<7 $х├)╬wЭ''9Оу>ЙИИ= А@АУCА@U]XoЖЭ┤╦т∙'>РBА?МBА?`BА? BА?рAА?AА?@А?а@а@а@ А?А?А? @@@ А?А?А?'0<7 "0<7$TФ\╬wЭ88%I>А?ЬCА?─╠8L`tИЬ░КBА?║BА?xBА?,BА?иAА?pAА?AА?80<7 "0<7$мЦ╟&yЭ::А?А?ЭCА?$ЭCА?:А?@А?@@А?А?А?А?А?А@А?А?А?А@А?А?А?р@А?"А@А?)@А?,А@А?.А?А?1@@А?2@А?3@А?6@А?7@А?:А?А?;А@А?<А@А?@А?А?A@@А?CА?А?D@@А?EА?@А?I@@@K@А?NА?А?RА?А?U@А?Z@А?[А?А?\@А?]А?А?^@@@@@@`@@@bА?А?Є@А?Xз╦v@└@@оАД|k0<7  "0<7 $эd■m┤wЭ  лкк>А@ЖCА@]e/F╚AА?pCА?@@А? 0<7  "0<7 $Иe m┤wЭ  >А@АЖCА@°@WnЕЬ│╩с°BА?─BА?РAА?@@А?@AА? AА? А@А? А?А? 0<7  "pAА?А?А?FG  ((FG@Й0<@  "0<<  "А?NА?А?hА?А?|А?А?}@А?@@@@@@А?@@А?@@@@@@@@ @А?А?А?А?Xз╦vА?@@А?оАД|Т LЖPv= ╘У q O - оd pN,AТ ш╞d║л В`│=6М Я DВвF<U пРГ║┐Bn0<@$*, ╘ЪА>А=а@АAА?А@px 4H\А?А?А?А? А?А?PAА?20<@$э*, ╘ЪА?ЙИИ=А=А=ъAАA┬AА?А@U]pг▄ >kд▌;XУ▄0А?А?3db_accessadmin0А?А?9db_backupoperator0А?А?1db_datareader0А?А?1db_datawriter0А?А?-db_ddladmin0А?А?9db_denydatareader0А?А?9db_denydatawriter0А?А?'db_owner0А?А?7db_securityadmin0А?А?dbo0А?А?А?;INFORMATION_SCHEMA0А?А?IMicrosoft.SqlServer.Types0@А?%PRIMARY0А?А?sys  ((fdb_accessadmindatareaderdladminenydatareaderownersecurityadminguestMicrosoft.SqlServer.TypesPRIMARYsys @└Б └Б Б Б, 1Б>БCБ\c0<@ $?▒wЭ?@АA@:w%pAА?А?А?FG  ((FG@Й0<@  "0Pg~Хм├┌ёА?А?А?А?А?А?А?.А?@@А?kА?А?А?mА?А?А?oА?А?А?qА?А?А?sА?А?tА?А?|0<]$%, ╘ЪА?┘ЙЭ=9Оc=9Оc= @AРAА@А@А@t|`wОе╝╙ъ/F]@@А?А?А?А?А?А?А?fА?А?p@@А?q@А?xА?А?А?А?,А?А?А?.А?А?|А?А?}0<^"0<_"0<_"0<_"0<`"0<`"0<`"0A@@А?А@А@$@@А? 0лкк>лкк>лкк>UUлB@@UUЩBА@А?А@Cў {▄0А?А?cMicrosoft.SqlServer.Types.SqlGeography0А?А?aMicrosoft.SqlServer.Types.SqlGeometry0А?А?gMicrosoft.SqlServer.Types.SqlHierarchyId ((6Microsoft.SqlServer.Types.SqlGeographymetryHierarchyId@@└Б & +0А@@@А@>F'А?А?АА?А?А?В0═╠L>Aа@А@А@|Д 7NeА?А?А?А?А?А?А?А?А?0<Z=└$_Zx╨wЭ?лкКA└@лкКAf╟╧?0А?А?/Test Product0а@А?'Widget 1 ((Test ProductWidget 1@Б  !!!!!!!!!!!!!!╕ЦtR0ь╩иЖdI=ОlJ(фB 5gСх ├ б  ] ;  ў є-`┬"{ГЩЧZуС╫▀0`#Category 1!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!` Z"ЎЪЧZ лор*^Щ8!!!!╛`┬$'7,ЫЧd╗д i0$°$юй(зЭюй(зЭ?UeWidget 1Test WidgetCucumber0$°$юй(зЭ9к(зЭ?UgWidget 1Test WidgetThis Test!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!┼ Z'ЎЬЧZк.ш*^Ы8!!!!╛`┬ )ХiЭЧZ6вА?^!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!` Z)ЎЮЧZ,йої*^Э8!!!!╛` bZтZЯ0РWЛЯ аЖ ЯЪjeX╡°tZNР√Ш¤ЄЁЫmC╡╕■ ┬у:= xаS CёSZ хvЪ ezШ ╧=0Їp9{ОПК*∙0ё T╣√▌oЫїє╕xGj5ярv╪jYsM"щЄ·MУЇa~хv╪ Сt╪9─$┬вФШuhТъ г╪єI!ЕU╕L"Є5 Є# щФ$gўЫ %tw&s∙='ez^ (К5aг)ЁўZа*uїA/+е▓Ы▌,ЄzЯб-rщO┼.aQJ/wXЪ0ўQь∙1п·ч2уn И3Е&U 4If,=5ЪSмb6ГРНc7Є0z 8Ї0zь9¤ы{,:¤ыз,;t|Щ<r|Щю=o▓ы>oz╪Э?уs╕Э@▀┴KJA┌_BM╜▄Cbt·ЬDz└}═E:д;яFЇ┤GьpYHCёS^I5In5J ▓√▌Kж80LЫЫ7Mь6NК·Р-OgwШ Pтq>QхyX RC╩}YSХЙq+T0U·█@VvЧ~бWVЦЗ_XzЦ╛НYbvx<ZЁрЯю[0█Єб\й╧gI]Эб°)^є№#_@c4Ю`r.gФaFщ√╪b`╝НM@3&  Єх╪╦╛▒дЧК}pcVI</"√юс╘╟║наУЖyl_RE8+ўъ▌╨├╢йЬПВuh[NA4' єц┘╠┐▓еШЛ~qdWJ=0# №ят╒╚╗обФЗzm`Fж<┐@аУn/╒4ч0x<>xА@CА@]н╡/FCА?@А?А?А?q)╬wЭаb@Х`UU╒?╠▓@╠▓@Х0А@CА@║V^0G^uМг CА?@@А?А?А?А?@@А?╔А?А?╨А?А?╥╥╛явЭаb@-&а$I┬?Ёx@Ёx@▒m┤wЭ@b@Та$I┬?╧▓@╠▓@NЛ▌ерsк?Х0x<>xА@CА@]∙/FCА?@А?А?А?▌╛явЭаb@-&`UU╒?Ёx@Ёx@q)╬wЭаb@Х`UU╒?╠▓@╠▓@ХА@CА@]н╡/FCА?@А?А?А?q)╬wЭаb@Х`UU╒?╠▓@╠▓@Х!!!!!!!!!!!!!╨ о М j H . к`пUg e8= <╞ lб ╝ы╡0<)$+ -n┤wЭуу═╠L>А@АёCА@Ыг(?VmДpAА?АоCА?XBА?xBА?@@А?у0<)$Bу.n┤wЭуу%IТ=А@АёCА@▓║pЗЮ╡╠у·(?VmДЫ╪AА?$XBА?0РAА?4HCА?8╨AА?=@А?bА?А?hBА?└AА?еаAА?наAА?п╕AА?ча@А?я└AА?у0<)$№у/n┤wЭуу┘ЙЭ= А?АёCА?lth|Рд╕╠рЇ0DX╪AА?$XBА?0РAА?4HCА?8╨AА?=@А?bА?А?hBА?└AА?еаAА?наAА?плкк>C2=C2=-d C╕AА?А@-dCА@T\,@`AА?└@А?@@А?0<;"0<<$фБ*, ╘Ъ]]лкк>бааА@╥BА@]e/F╠BА?@А?А?А?i0<< $ИО%¤▓wЭjj>А@╘BА@°@WnЕЬ│╩сА?А?LBА?ЁAА?AА?@А?└@А? а@А? @А? j0<< $жП%¤▓wЭkk?баа<**А@╓BА@Pg~Хм├┌ё6Md{Тй└╫ю3JaxПж╜╘ы0G^uМг║╤ш @А?А?А?А?@А?@@А?А?А?А?А?А@А?А?А?А@А?А?А?р@А?"А@А?)@А?,А@А?.А?А?1@@А?2@А?3@А?6@А?7@А?:А?А?;А@А?<А@А?@А?А?A@@А?CА?А?D@@А?EА?@А?I@@@K@А?NА?А?RА?А?U@А?Z@А?[А?А?\@А?]А?А?^@@@@@@`@@@bА?А?Є@А?Xз╦v@└@@оАД|k0<< "0<<$:=р)╬wЭФФOьD?a ╢<""Sф#AC@Sф#Aк▓iКл╠э/PqТ│╘ї7XyЪ╗▄¤?`Бв├ф&GhЙ0А?А?Yч╨4microsoft.sqlserver.types.dll0LBА?!0AА?!0@@А?!0А@А?!0@@@!0А@А?!0@А?!0А?А?!0@А?!0А?А?А?!0└@А?!"0р@А?!G0@@@!c0А?А?!k0@А?!o0А?А?А?!u0А?А?А?!Н0А?А?А?!П0А@А?!Т0А?А?!Х0@@А?!н0@@@!┴0@А?!╚0А?А?А?!р0А?А?А?!ц0А?А?!щ0@А?!K0А?А?А?!e0А?А?!0р@А?!у0@А?!ъ0А?А?! 0@@А?!XФ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!З┐7JfD`В:9<ПгИЛ ▐Эё0< $ъДЁ=╬wЭВВА?А?CА?RZCА?G ((G@В0< $пДЁ=╬wЭВВА?А@CА@'CА?В0< $╬ДЁ=╬wЭВВ?А@CА@>F'CА?А?А?В0<$пДё=╬wЭВВА?А@CА@'CА?В0<"$мG3, ╘Ъ55А??шРЪ<шРЪ<СЪ BTBА?А@"5╤AА@$TBА?50<$ Дё=╬wЭВВА?┴№;FFА@CА@zВ0G^uМг║╤ш -D[rЙа╖╬х№*AXoЖЭ┤╦т∙'>UlГЪ▒╚▀Ў $;RiАЧо┼▄є !8Of}Фл┬┘Ё5LcА?А?■  А?А?А? ■  А?А?А? ■  А?А?А? ■  А?А?А?■  А?А?■  А?А?■  А?А?■  А?А?■  А?А?А?■  А?А?А?■  А?А?А?!■  А?А?А?#■  А?А?$■  А?А?+■  А?А?А?-■  А?А?А?/■  А?А?А?1■  А?А?А?3■  А?А?А?5■  А?А?А?7■  А?А?А?9■  А?А?А?;■  А?А?А?=■  А?А?А??■  А?А?А?A■  А?А?А?C■  А?А?А?E■  А?А?А?G■  А?А?А?I■  А?А?А?K■  А?А?А?M■  А?А?А?O■  А?А?А?Q■  А?А?А?S■  А?А?А?U■  А?А?А?W■  А?А?А?Y■  А?А?А?[■  А?А?А?]■  А?А?А?_■  А?А?А?a■  А?А?А?c■  А?А?А?e■  А?А?А?g■  А?А?А?i■  А?А?А?k■  А?А?А?m■  А?А?А?o■  А?А?А?q■  А?А?А?s■  А?А?А?u■  А?А?А?w■  А?А?А?y■  А?А?А?{■  А?А?А?}■  А?А?А?■  А?А?q   А?А?А?s   А?А?А?u   А?А?А?w   А?А?А?y   А?А?А?{   А?А?А?}   А?А?А?   А?А?Х   А?А?А?Ч   А?А?А?Щ   А?А?А?Ы   А?А?В0<"$▀╪ звювЭ::А?╦=Н<))А@hBА@ўGOH_vНд╗╥щ.E\sКб╕╧ц¤+BYpЗЮ╡╠у·(?VmДЫ▓╔рА?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?А?"А?А?)А?А?,А?А?.А?А?1А?А?А?3А?А?6А?А?7А?А?:А?А?А?<А?А?@А?А?AА?@А?EА?@А?IА?А?А?KА?А?NА?А?RА?А?UА?А?ZА?А?А?\А?А?А?^А?А?А?`А?А?А?bА?А?ТUА?А?Z=А?А?=~1А?А?Г╫uА?А?А?С╦┐wА?А?А?иyА?А?А?u\Р{А?А?оАД|А?А?asф|А?А? ╔l~., ╘ЪАJ@G$RУ?@,Щ@Щ@/~`╩@╨?:0<"$╪ ╡вювЭ::А??╦=Н<╦=Н<░▄ BhBА?А@a╣╧AА@lthBА?3, ╘ЪАJ@GЁ?,Щ@Щ@:!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ," ╟∙J`ВШ<╗ дТV9Ц: U0лкк>лкк>лкк>UUлB@@UUЩBА@А?А@Cў {▄0А?А?cMicrosoft.SqlServer.Types.SqlGeography0А?А?aMicrosoft.SqlServer.Types.SqlGeometry0А?А?gMicrosoft.SqlServer.Types.SqlHierarchyId ((6Microsoft.SqlServer.Types.SqlGeographymetryHierarchyId@@└Б & +0А@@@А@>F'А?А?АА?А?А?В0А>AА@А@А@]EM/FА?А?А?А?А?А?А?ЫjВЧЭЁ?∙Ё?@p@аo@┌NO▒▐√ю?&ЁКЦЭЁ?¤ Ё?└o@└o@ыpФЭЁ?щ Ё?аp@аp@= ╧ЁОЧЭА?└AА?└A7Гks0А?А?/Test Product (( Test Product@ ┌╛wФЭЁ? Ё?шp@шp@ЪhФЭЁ? Ё?╕p@╕p@Е▌;ФЭЁ?ъЁ?°p@°p@0<Z=└$Яи│КЧЭА?А@А?А@А?А?жЩЧЭЁ?'Ё?@o@@o@.┬ЙЦЭЁ?3 Ё?@o@@o@A╬oФЭЁ?; Ё?Аo@Аo@0<Z=└";КЧЭ?РA@РAb┤Ьд90А?А?)Product 10А?А?)Product 2 (( Product 12@@Б ╧ЁОЧЭЁ?= Ё?Ё?8p@(p@Ё?┌╛wФЭЁ? Ё?шp@шp@ЪhФЭЁ? Ё?╕p@╕p@0<Z=└$LE╬ вЭ?РA@РAb┤╝90А?А?)Product 10А?А?)Product 2 (( Product 12@@Б !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!о М j H &  т└Ю|Zь8M 8Ї╥░Оl╜я`В98<SЕеЧШ>&oъ0<"$Г╪ d┐явЭ::А?лк*>лк*>╦=Н<AhBА@А?А@Ыыє(?VmДPBА?@А?Z=А?А?Г╫uА?А?А?иyА?А? ╔l~3, ╘ЪАJ@G╨?Ё?,Щ@Щ@B∙Еoе7╝?:0<" $╪ ╢вювЭ::А?А?hBА?lthBА?¤▓wЭАJ@GЁ?,Щ@Щ@:0<" $э╪ ╝вювЭ::лк*>@hB@о¤MU0EZoДЩА?А?F а@А?IT@А?PK4BА?S @@А?SQ@А?U   ((F ITS Q@ББ@Й¤▓wЭАJ@G`UU╒?@@,Щ@Щ@RjгMJм┬?:0<" $&╪ ├гявЭ::?А@hBА@>ОЦ'AА?HBА?¤▓wЭАJ@Gр?,Щ@Щ@Ш\╘▌╤─?:0<"$ГD╜вювЭ::═╠L>А@hBА@Ыыє(?VmД@@А?@@А?@А?8BА?А@А? м■▓wЭАJ@k`UU╒?@▐в@╘в@6{¤йц─├?:0<"$auо)╬wЭ::лкк>6ФW=А@hBА@╤┘xПж╜╘ы0G^uМг║а@А?А?А?А@А?AAAа@А?А@А?а@А? @@@ @@А? А?А?А?А@А?А?А?А?А?А?А?А?А?А?:0<"$╣ d┐явЭ::лкк>6ФW=А@hBА@╤!)xПж╜╘ы0G^uМг║а@А?А?А?А@А?AAAа@А?А@А?а@А? @@@ @@А? А?А?А?А@А?А?А?А?А?А?А?А?А?А?о)╬wЭM@u└ЖЄк?Щ@Щ@:0<"$юЙg+d▀Э<<лк*>А@pBА@║V^0G^uМг@@А?@@А?@А?@А?8BА?А@А? ╜вювЭM@DаЩЩ╔?8r@r@╖│XB┼║?м■▓wЭАJ@k`UU╒?@▐в@╘в@6{¤йц─├?<!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!▐Ч╘чу`ВаG <└.жУU|ж#k09Оу=9Оу=шР<шР<ИA╘BА@А?А@А@А@║┬0G^uМг╝BА?А?А?└@А?А?А?@@А?А?А?j0А?╘BА?px 4H\@А?0AА?А?А?╕BА?Tj0" + elem.substr(0, entry.length) + "" + elem.substr(entry.length) + ""); break; } else if (entry.length >= instance.options.partialChars && instance.options.partialSearch && foundPos != -1) { if (instance.options.fullSearch || /\s/.test(elem.substr(foundPos-1,1))) { partial.push("
  • " + elem.substr(0, foundPos) + "" + elem.substr(foundPos, entry.length) + "" + elem.substr( foundPos + entry.length) + "
  • "); break; } } foundPos = instance.options.ignoreCase ? elem.toLowerCase().indexOf(entry.toLowerCase(), foundPos + 1) : elem.indexOf(entry, foundPos + 1); } } if (partial.length) ret = ret.concat(partial.slice(0, instance.options.choices - ret.length)); return "
      " + ret.join('') + "
    "; } }, options || { }); } }); // AJAX in-place editor and collection editor // Full rewrite by Christophe Porteneuve (April 2007). // Use this if you notice weird scrolling problems on some browsers, // the DOM might be a bit confused when this gets called so do this // waits 1 ms (with setTimeout) until it does the activation Field.scrollFreeActivate = function(field) { setTimeout(function() { Field.activate(field); }, 1); }; Ajax.InPlaceEditor = Class.create({ initialize: function(element, url, options) { this.url = url; this.element = element = $(element); this.prepareOptions(); this._controls = { }; arguments.callee.dealWithDeprecatedOptions(options); // DEPRECATION LAYER!!! Object.extend(this.options, options || { }); if (!this.options.formId && this.element.id) { this.options.formId = this.element.id + '-inplaceeditor'; if ($(this.options.formId)) this.options.formId = ''; } if (this.options.externalControl) this.options.externalControl = $(this.options.externalControl); if (!this.options.externalControl) this.options.externalControlOnly = false; this._originalBackground = this.element.getStyle('background-color') || 'transparent'; this.element.title = this.options.clickToEditText; this._boundCancelHandler = this.handleFormCancellation.bind(this); this._boundComplete = (this.options.onComplete || Prototype.emptyFunction).bind(this); this._boundFailureHandler = this.handleAJAXFailure.bind(this); this._boundSubmitHandler = this.handleFormSubmission.bind(this); this._boundWrapperHandler = this.wrapUp.bind(this); this.registerListeners(); }, checkForEscapeOrReturn: function(e) { if (!this._editing || e.ctrlKey || e.altKey || e.shiftKey) return; if (Event.KEY_ESC == e.keyCode) this.handleFormCancellation(e); else if (Event.KEY_RETURN == e.keyCode) this.handleFormSubmission(e); }, createControl: function(mode, handler, extraClasses) { var control = this.options[mode + 'Control']; var text = this.options[mode + 'Text']; if ('button' == control) { var btn = document.createElement('input'); btn.type = 'submit'; btn.value = text; btn.className = 'editor_' + mode + '_button'; if ('cancel' == mode) btn.onclick = this._boundCancelHandler; this._form.appendChild(btn); this._controls[mode] = btn; } else if ('link' == control) { var link = document.createElement('a'); link.href = '#'; link.appendChild(document.createTextNode(text)); link.onclick = 'cancel' == mode ? this._boundCancelHandler : this._boundSubmitHandler; link.className = 'editor_' + mode + '_link'; if (extraClasses) link.className += ' ' + extraClasses; this._form.appendChild(link); this._controls[mode] = link; } }, createEditField: function() { var text = (this.options.loadTextURL ? this.options.loadingText : this.getText()); var fld; if (1 >= this.options.rows && !/\r|\n/.test(this.getText())) { fld = document.createElement('input'); fld.type = 'text'; var size = this.options.size || this.options.cols || 0; if (0 < size) fld.size = size; } else { fld = document.createElement('textarea'); fld.rows = (1 >= this.options.rows ? this.options.autoRows : this.options.rows); fld.cols = this.options.cols || 40; } fld.name = this.options.paramName; fld.value = text; // No HTML breaks conversion anymore fld.className = 'editor_field'; if (this.options.submitOnBlur) fld.onblur = this._boundSubmitHandler; this._controls.editor = fld; if (this.options.loadTextURL) this.loadExternalText(); this._form.appendChild(this._controls.editor); }, createForm: function() { var ipe = this; function addText(mode, condition) { var text = ipe.options['text' + mode + 'Controls']; if (!text || condition === false) return; ipe._form.appendChild(document.createTextNode(text)); }; this._form = $(document.createElement('form')); this._form.id = this.options.formId; this._form.addClassName(this.options.formClassName); this._form.onsubmit = this._boundSubmitHandler; this.createEditField(); if ('textarea' == this._controls.editor.tagName.toLowerCase()) this._form.appendChild(document.createElement('br')); if (this.options.onFormCustomization) this.options.onFormCustomization(this, this._form); addText('Before', this.options.okControl || this.options.cancelControl); this.createControl('ok', this._boundSubmitHandler); addText('Between', this.options.okControl && this.options.cancelControl); this.createControl('cancel', this._boundCancelHandler, 'editor_cancel'); addText('After', this.options.okControl || this.options.cancelControl); }, destroy: function() { if (this._oldInnerHTML) this.element.innerHTML = this._oldInnerHTML; this.leaveEditMode(); this.unregisterListeners(); }, enterEditMode: function(e) { if (this._saving || this._editing) return; this._editing = true; this.triggerCallback('onEnterEditMode'); if (this.options.externalControl) this.options.externalControl.hide(); this.element.hide(); this.createForm(); this.element.parentNode.insertBefore(this._form, this.element); if (!this.options.loadTextURL) this.postProcessEditField(); if (e) Event.stop(e); }, enterHover: function(e) { if (this.options.hoverClassName) this.element.addClassName(this.options.hoverClassName); if (this._saving) return; this.triggerCallback('onEnterHover'); }, getText: function() { return this.element.innerHTML.unescapeHTML(); }, handleAJAXFailure: function(transport) { this.triggerCallback('onFailure', transport); if (this._oldInnerHTML) { this.element.innerHTML = this._oldInnerHTML; this._oldInnerHTML = null; } }, handleFormCancellation: function(e) { this.wrapUp(); if (e) Event.stop(e); }, handleFormSubmission: function(e) { var form = this._form; var value = $F(this._controls.editor); this.prepareSubmission(); var params = this.options.callback(form, value) || ''; if (Object.isString(params)) params = params.toQueryParams(); params.editorId = this.element.id; if (this.options.htmlResponse) { var options = Object.extend({ evalScripts: true }, this.options.ajaxOptions); Object.extend(options, { parameters: params, onComplete: this._boundWrapperHandler, onFailure: this._boundFailureHandler }); new Ajax.Updater({ success: this.element }, this.url, options); } else { var options = Object.extend({ method: 'get' }, this.options.ajaxOptions); Object.extend(options, { parameters: params, onComplete: this._boundWrapperHandler, onFailure: this._boundFailureHandler }); new Ajax.Request(this.url, options); } if (e) Event.stop(e); }, leaveEditMode: function() { this.element.removeClassName(this.options.savingClassName); this.removeForm(); this.leaveHover(); this.element.style.backgroundColor = this._originalBackground; this.element.show(); if (this.options.externalControl) this.options.externalControl.show(); this._saving = false; this._editing = false; this._oldInnerHTML = null; this.triggerCallback('onLeaveEditMode'); }, leaveHover: function(e) { if (this.options.hoverClassName) this.element.removeClassName(this.options.hoverClassName); if (this._saving) return; this.triggerCallback('onLeaveHover'); }, loadExternalText: function() { this._form.addClassName(this.options.loadingClassName); this._controls.editor.disabled = true; var options = Object.extend({ method: 'get' }, this.options.ajaxOptions); Object.extend(options, { parameters: 'editorId=' + encodeURIComponent(this.element.id), onComplete: Prototype.emptyFunction, onSuccess: function(transport) { this._form.removeClassName(this.options.loadingClassName); var text = transport.responseText; if (this.options.stripLoadedTextTags) text = text.stripTags(); this._controls.editor.value = text; this._controls.editor.disabled = false; this.postProcessEditField(); }.bind(this), onFailure: this._boundFailureHandler }); new Ajax.Request(this.options.loadTextURL, options); }, postProcessEditField: function() { var fpc = this.options.fieldPostCreation; if (fpc) $(this._controls.editor)['focus' == fpc ? 'focus' : 'activate'](); }, prepareOptions: function() { this.options = Object.clone(Ajax.InPlaceEditor.DefaultOptions); Object.extend(this.options, Ajax.InPlaceEditor.DefaultCallbacks); [this._extraDefaultOptions].flatten().compact().each(function(defs) { Object.extend(this.options, defs); }.bind(this)); }, prepareSubmission: function() { this._saving = true; this.removeForm(); this.leaveHover(); this.showSaving(); }, registerListeners: function() { this._listeners = { }; var listener; $H(Ajax.InPlaceEditor.Listeners).each(function(pair) { listener = this[pair.value].bind(this); this._listeners[pair.key] = listener; if (!this.options.externalControlOnly) this.element.observe(pair.key, listener); if (this.options.externalControl) this.options.externalControl.observe(pair.key, listener); }.bind(this)); }, removeForm: function() { if (!this._form) return; this._form.remove(); this._form = null; this._controls = { }; }, showSaving: function() { this._oldInnerHTML = this.element.innerHTML; this.element.innerHTML = this.options.savingText; this.element.addClassName(this.options.savingClassName); this.element.style.backgroundColor = this._originalBackground; this.element.show(); }, triggerCallback: function(cbName, arg) { if ('function' == typeof this.options[cbName]) { this.options[cbName](this, arg); } }, unregisterListeners: function() { $H(this._listeners).each(function(pair) { if (!this.options.externalControlOnly) this.element.stopObserving(pair.key, pair.value); if (this.options.externalControl) this.options.externalControl.stopObserving(pair.key, pair.value); }.bind(this)); }, wrapUp: function(transport) { this.leaveEditMode(); // Can't use triggerCallback due to backward compatibility: requires // binding + direct element this._boundComplete(transport, this.element); } }); Object.extend(Ajax.InPlaceEditor.prototype, { dispose: Ajax.InPlaceEditor.prototype.destroy }); Ajax.InPlaceCollectionEditor = Class.create(Ajax.InPlaceEditor, { initialize: function($super, element, url, options) { this._extraDefaultOptions = Ajax.InPlaceCollectionEditor.DefaultOptions; $super(element, url, options); }, createEditField: function() { var list = document.createElement('select'); list.name = this.options.paramName; list.size = 1; this._controls.editor = list; this._collection = this.options.collection || []; if (this.options.loadCollectionURL) this.loadCollection(); else this.checkForExternalText(); this._form.appendChild(this._controls.editor); }, loadCollection: function() { this._form.addClassName(this.options.loadingClassName); this.showLoadingText(this.options.loadingCollectionText); var options = Object.extend({ method: 'get' }, this.options.ajaxOptions); Object.extend(options, { parameters: 'editorId=' + encodeURIComponent(this.element.id), onComplete: Prototype.emptyFunction, onSuccess: function(transport) { var js = transport.responseText.strip(); if (!/^\[.*\]$/.test(js)) // TODO: improve sanity check throw('Server returned an invalid collection representation.'); this._collection = eval(js); this.checkForExternalText(); }.bind(this), onFailure: this.onFailure }); new Ajax.Request(this.options.loadCollectionURL, options); }, showLoadingText: function(text) { this._controls.editor.disabled = true; var tempOption = this._controls.editor.firstChild; if (!tempOption) { tempOption = document.createElement('option'); tempOption.value = ''; this._controls.editor.appendChild(tempOption); tempOption.selected = true; } tempOption.update((text || '').stripScripts().stripTags()); }, checkForExternalText: function() { this._text = this.getText(); if (this.options.loadTextURL) this.loadExternalText(); else this.buildOptionList(); }, loadExternalText: function() { this.showLoadingText(this.options.loadingText); var options = Object.extend({ method: 'get' }, this.options.ajaxOptions); Object.extend(options, { parameters: 'editorId=' + encodeURIComponent(this.element.id), onComplete: Prototype.emptyFunction, onSuccess: function(transport) { this._text = transport.responseText.strip(); this.buildOptionList(); }.bind(this), onFailure: this.onFailure }); new Ajax.Request(this.options.loadTextURL, options); }, buildOptionList: function() { this._form.removeClassName(this.options.loadingClassName); this._collection = this._collection.map(function(entry) { return 2 === entry.length ? entry : [entry, entry].flatten(); }); var marker = ('value' in this.options) ? this.options.value : this._text; var textFound = this._collection.any(function(entry) { return entry[0] == marker; }.bind(this)); this._controls.editor.update(''); var option; this._collection.each(function(entry, index) { option = document.createElement('option'); option.value = entry[0]; option.selected = textFound ? entry[0] == marker : 0 == index; option.appendChild(document.createTextNode(entry[1])); this._controls.editor.appendChild(option); }.bind(this)); this._controls.editor.disabled = false; Field.scrollFreeActivate(this._controls.editor); } }); //**** DEPRECATION LAYER FOR InPlace[Collection]Editor! **** //**** This only exists for a while, in order to let **** //**** users adapt to the new API. Read up on the new **** //**** API and convert your code to it ASAP! **** Ajax.InPlaceEditor.prototype.initialize.dealWithDeprecatedOptions = function(options) { if (!options) return; function fallback(name, expr) { if (name in options || expr === undefined) return; options[name] = expr; }; fallback('cancelControl', (options.cancelLink ? 'link' : (options.cancelButton ? 'button' : options.cancelLink == options.cancelButton == false ? false : undefined))); fallback('okControl', (options.okLink ? 'link' : (options.okButton ? 'button' : options.okLink == options.okButton == false ? false : undefined))); fallback('highlightColor', options.highlightcolor); fallback('highlightEndColor', options.highlightendcolor); }; Object.extend(Ajax.InPlaceEditor, { DefaultOptions: { ajaxOptions: { }, autoRows: 3, // Use when multi-line w/ rows == 1 cancelControl: 'link', // 'link'|'button'|false cancelText: 'cancel', clickToEditText: 'Click to edit', externalControl: null, // id|elt externalControlOnly: false, fieldPostCreation: 'activate', // 'activate'|'focus'|false formClassName: 'inplaceeditor-form', formId: null, // id|elt highlightColor: '#ffff99', highlightEndColor: '#ffffff', hoverClassName: '', htmlResponse: true, loadingClassName: 'inplaceeditor-loading', loadingText: 'Loading...', okControl: 'button', // 'link'|'button'|false okText: 'ok', paramName: 'value', rows: 1, // If 1 and multi-line, uses autoRows savingClassName: 'inplaceeditor-saving', savingText: 'Saving...', size: 0, stripLoadedTextTags: false, submitOnBlur: false, textAfterControls: '', textBeforeControls: '', textBetweenControls: '' }, DefaultCallbacks: { callback: function(form) { return Form.serialize(form); }, onComplete: function(transport, element) { // For backward compatibility, this one is bound to the IPE, and passes // the element directly. It was too often customized, so we don't break it. new Effect.Highlight(element, { startcolor: this.options.highlightColor, keepBackgroundImage: true }); }, onEnterEditMode: null, onEnterHover: function(ipe) { ipe.element.style.backgroundColor = ipe.options.highlightColor; if (ipe._effect) ipe._effect.cancel(); }, onFailure: function(transport, ipe) { alert('Error communication with the server: ' + transport.responseText.stripTags()); }, onFormCustomization: null, // Takes the IPE and its generated form, after editor, before controls. onLeaveEditMode: null, onLeaveHover: function(ipe) { ipe._effect = new Effect.Highlight(ipe.element, { startcolor: ipe.options.highlightColor, endcolor: ipe.options.highlightEndColor, restorecolor: ipe._originalBackground, keepBackgroundImage: true }); } }, Listeners: { click: 'enterEditMode', keydown: 'checkForEscapeOrReturn', mouseover: 'enterHover', mouseout: 'leaveHover' } }); Ajax.InPlaceCollectionEditor.DefaultOptions = { loadingCollectionText: 'Loading options...' }; // Delayed observer, like Form.Element.Observer, // but waits for delay after last key input // Ideal for live-search fields Form.Element.DelayedObserver = Class.create({ initialize: function(element, delay, callback) { this.delay = delay || 0.5; this.element = $(element); this.callback = callback; this.timer = null; this.lastValue = $F(this.element); Event.observe(this.element,'keyup',this.delayedListener.bindAsEventListener(this)); }, delayedListener: function(event) { if(this.lastValue == $F(this.element)) return; if(this.timer) clearTimeout(this.timer); this.timer = setTimeout(this.onTimerEvent.bind(this), this.delay * 1000); this.lastValue = $F(this.element); }, onTimerEvent: function() { this.timer = null; this.callback(this.element, $F(this.element)); } });// Copyright (c) 2005-2008 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us) // (c) 2005-2008 Sammi Williams (http://www.oriontransfer.co.nz, sammi@oriontransfer.co.nz) // // script.aculo.us is freely distributable under the terms of an MIT-style license. // For details, see the script.aculo.us web site: http://script.aculo.us/ if(Object.isUndefined(Effect)) throw("dragdrop.js requires including script.aculo.us' effects.js library"); var Droppables = { drops: [], remove: function(element) { this.drops = this.drops.reject(function(d) { return d.element==$(element) }); }, add: function(element) { element = $(element); var options = Object.extend({ greedy: true, hoverclass: null, tree: false }, arguments[1] || { }); // cache containers if(options.containment) { options._containers = []; var containment = options.containment; if(Object.isArray(containment)) { containment.each( function(c) { options._containers.push($(c)) }); } else { options._containers.push($(containment)); } } if(options.accept) options.accept = [options.accept].flatten(); Element.makePositioned(element); // fix IE options.element = element; this.drops.push(options); }, findDeepestChild: function(drops) { deepest = drops[0]; for (i = 1; i < drops.length; ++i) if (Element.isParent(drops[i].element, deepest.element)) deepest = drops[i]; return deepest; }, isContained: function(element, drop) { var containmentNode; if(drop.tree) { containmentNode = element.treeNode; } else { containmentNode = element.parentNode; } return drop._containers.detect(function(c) { return containmentNode == c }); }, isAffected: function(point, element, drop) { return ( (drop.element!=element) && ((!drop._containers) || this.isContained(element, drop)) && ((!drop.accept) || (Element.classNames(element).detect( function(v) { return drop.accept.include(v) } ) )) && Position.within(drop.element, point[0], point[1]) ); }, deactivate: function(drop) { if(drop.hoverclass) Element.removeClassName(drop.element, drop.hoverclass); this.last_active = null; }, activate: function(drop) { if(drop.hoverclass) Element.addClassName(drop.element, drop.hoverclass); this.last_active = drop; }, show: function(point, element) { if(!this.drops.length) return; var drop, affected = []; this.drops.each( function(drop) { if(Droppables.isAffected(point, element, drop)) affected.push(drop); }); if(affected.length>0) drop = Droppables.findDeepestChild(affected); if(this.last_active && this.last_active != drop) this.deactivate(this.last_active); if (drop) { Position.within(drop.element, point[0], point[1]); if(drop.onHover) drop.onHover(element, drop.element, Position.overlap(drop.overlap, drop.element)); if (drop != this.last_active) Droppables.activate(drop); } }, fire: function(event, element) { if(!this.last_active) return; Position.prepare(); if (this.isAffected([Event.pointerX(event), Event.pointerY(event)], element, this.last_active)) if (this.last_active.onDrop) { this.last_active.onDrop(element, this.last_active.element, event); return true; } }, reset: function() { if(this.last_active) this.deactivate(this.last_active); } }; var Draggables = { drags: [], observers: [], register: function(draggable) { if(this.drags.length == 0) { this.eventMouseUp = this.endDrag.bindAsEventListener(this); this.eventMouseMove = this.updateDrag.bindAsEventListener(this); this.eventKeypress = this.keyPress.bindAsEventListener(this); Event.observe(document, "mouseup", this.eventMouseUp); Event.observe(document, "mousemove", this.eventMouseMove); Event.observe(document, "keypress", this.eventKeypress); } this.drags.push(draggable); }, unregister: function(draggable) { this.drags = this.drags.reject(function(d) { return d==draggable }); if(this.drags.length == 0) { Event.stopObserving(document, "mouseup", this.eventMouseUp); Event.stopObserving(document, "mousemove", this.eventMouseMove); Event.stopObserving(document, "keypress", this.eventKeypress); } }, activate: function(draggable) { if(draggable.options.delay) { this._timeout = setTimeout(function() { Draggables._timeout = null; window.focus(); Draggables.activeDraggable = draggable; }.bind(this), draggable.options.delay); } else { window.focus(); // allows keypress events if window isn't currently focused, fails for Safari this.activeDraggable = draggable; } }, deactivate: function() { this.activeDraggable = null; }, updateDrag: function(event) { if(!this.activeDraggable) return; var pointer = [Event.pointerX(event), Event.pointerY(event)]; // Mozilla-based browsers fire successive mousemove events with // the same coordinates, prevent needless redrawing (moz bug?) if(this._lastPointer && (this._lastPointer.inspect() == pointer.inspect())) return; this._lastPointer = pointer; this.activeDraggable.updateDrag(event, pointer); }, endDrag: function(event) { if(this._timeout) { clearTimeout(this._timeout); this._timeout = null; } if(!this.activeDraggable) return; this._lastPointer = null; this.activeDraggable.endDrag(event); this.activeDraggable = null; }, keyPress: function(event) { if(this.activeDraggable) this.activeDraggable.keyPress(event); }, addObserver: function(observer) { this.observers.push(observer); this._cacheObserverCallbacks(); }, removeObserver: function(element) { // element instead of observer fixes mem leaks this.observers = this.observers.reject( function(o) { return o.element==element }); this._cacheObserverCallbacks(); }, notify: function(eventName, draggable, event) { // 'onStart', 'onEnd', 'onDrag' if(this[eventName+'Count'] > 0) this.observers.each( function(o) { if(o[eventName]) o[eventName](eventName, draggable, event); }); if(draggable.options[eventName]) draggable.options[eventName](draggable, event); }, _cacheObserverCallbacks: function() { ['onStart','onEnd','onDrag'].each( function(eventName) { Draggables[eventName+'Count'] = Draggables.observers.select( function(o) { return o[eventName]; } ).length; }); } }; /*--------------------------------------------------------------------------*/ var Draggable = Class.create({ initialize: function(element) { var defaults = { handle: false, reverteffect: function(element, top_offset, left_offset) { var dur = Math.sqrt(Math.abs(top_offset^2)+Math.abs(left_offset^2))*0.02; new Effect.Move(element, { x: -left_offset, y: -top_offset, duration: dur, queue: {scope:'_draggable', position:'end'} }); }, endeffect: function(element) { var toOpacity = Object.isNumber(element._opacity) ? element._opacity : 1.0; new Effect.Opacity(element, {duration:0.2, from:0.7, to:toOpacity, queue: {scope:'_draggable', position:'end'}, afterFinish: function(){ Draggable._dragging[element] = false } }); }, zindex: 1000, revert: false, quiet: false, scroll: false, scrollSensitivity: 20, scrollSpeed: 15, snap: false, // false, or xy or [x,y] or function(x,y){ return [x,y] } delay: 0 }; if(!arguments[1] || Object.isUndefined(arguments[1].endeffect)) Object.extend(defaults, { starteffect: function(element) { element._opacity = Element.getOpacity(element); Draggable._dragging[element] = true; new Effect.Opacity(element, {duration:0.2, from:element._opacity, to:0.7}); } }); var options = Object.extend(defaults, arguments[1] || { }); this.element = $(element); if(options.handle && Object.isString(options.handle)) this.handle = this.element.down('.'+options.handle, 0); if(!this.handle) this.handle = $(options.handle); if(!this.handle) this.handle = this.element; if(options.scroll && !options.scroll.scrollTo && !options.scroll.outerHTML) { options.scroll = $(options.scroll); this._isScrollChild = Element.childOf(this.element, options.scroll); } Element.makePositioned(this.element); // fix IE this.options = options; this.dragging = false; this.eventMouseDown = this.initDrag.bindAsEventListener(this); Event.observe(this.handle, "mousedown", this.eventMouseDown); Draggables.register(this); }, destroy: function() { Event.stopObserving(this.handle, "mousedown", this.eventMouseDown); Draggables.unregister(this); }, currentDelta: function() { return([ parseInt(Element.getStyle(this.element,'left') || '0'), parseInt(Element.getStyle(this.element,'top') || '0')]); }, initDrag: function(event) { if(!Object.isUndefined(Draggable._dragging[this.element]) && Draggable._dragging[this.element]) return; if(Event.isLeftClick(event)) { // abort on form elements, fixes a Firefox issue var src = Event.element(event); if((tag_name = src.tagName.toUpperCase()) && ( tag_name=='INPUT' || tag_name=='SELECT' || tag_name=='OPTION' || tag_name=='BUTTON' || tag_name=='TEXTAREA')) return; var pointer = [Event.pointerX(event), Event.pointerY(event)]; var pos = Position.cumulativeOffset(this.element); this.offset = [0,1].map( function(i) { return (pointer[i] - pos[i]) }); Draggables.activate(this); Event.stop(event); } }, startDrag: function(event) { this.dragging = true; if(!this.delta) this.delta = this.currentDelta(); if(this.options.zindex) { this.originalZ = parseInt(Element.getStyle(this.element,'z-index') || 0); this.element.style.zIndex = this.options.zindex; } if(this.options.ghosting) { this._clone = this.element.cloneNode(true); this._originallyAbsolute = (this.element.getStyle('position') == 'absolute'); if (!this._originallyAbsolute) Position.absolutize(this.element); this.element.parentNode.insertBefore(this._clone, this.element); } if(this.options.scroll) { if (this.options.scroll == window) { var where = this._getWindowScroll(this.options.scroll); this.originalScrollLeft = where.left; this.originalScrollTop = where.top; } else { this.originalScrollLeft = this.options.scroll.scrollLeft; this.originalScrollTop = this.options.scroll.scrollTop; } } Draggables.notify('onStart', this, event); if(this.options.starteffect) this.options.starteffect(this.element); }, updateDrag: function(event, pointer) { if(!this.dragging) this.startDrag(event); if(!this.options.quiet){ Position.prepare(); Droppables.show(pointer, this.element); } Draggables.notify('onDrag', this, event); this.draw(pointer); if(this.options.change) this.options.change(this); if(this.options.scroll) { this.stopScrolling(); var p; if (this.options.scroll == window) { with(this._getWindowScroll(this.options.scroll)) { p = [ left, top, left+width, top+height ]; } } else { p = Position.page(this.options.scroll); p[0] += this.options.scroll.scrollLeft + Position.deltaX; p[1] += this.options.scroll.scrollTop + Position.deltaY; p.push(p[0]+this.options.scroll.offsetWidth); p.push(p[1]+this.options.scroll.offsetHeight); } var speed = [0,0]; if(pointer[0] < (p[0]+this.options.scrollSensitivity)) speed[0] = pointer[0]-(p[0]+this.options.scrollSensitivity); if(pointer[1] < (p[1]+this.options.scrollSensitivity)) speed[1] = pointer[1]-(p[1]+this.options.scrollSensitivity); if(pointer[0] > (p[2]-this.options.scrollSensitivity)) speed[0] = pointer[0]-(p[2]-this.options.scrollSensitivity); if(pointer[1] > (p[3]-this.options.scrollSensitivity)) speed[1] = pointer[1]-(p[3]-this.options.scrollSensitivity); this.startScrolling(speed); } // fix AppleWebKit rendering if(Prototype.Browser.WebKit) window.scrollBy(0,0); Event.stop(event); }, finishDrag: function(event, success) { this.dragging = false; if(this.options.quiet){ Position.prepare(); var pointer = [Event.pointerX(event), Event.pointerY(event)]; Droppables.show(pointer, this.element); } if(this.options.ghosting) { if (!this._originallyAbsolute) Position.relativize(this.element); delete this._originallyAbsolute; Element.remove(this._clone); this._clone = null; } var dropped = false; if(success) { dropped = Droppables.fire(event, this.element); if (!dropped) dropped = false; } if(dropped && this.options.onDropped) this.options.onDropped(this.element); Draggables.notify('onEnd', this, event); var revert = this.options.revert; if(revert && Object.isFunction(revert)) revert = revert(this.element); var d = this.currentDelta(); if(revert && this.options.reverteffect) { if (dropped == 0 || revert != 'failure') this.options.reverteffect(this.element, d[1]-this.delta[1], d[0]-this.delta[0]); } else { this.delta = d; } if(this.options.zindex) this.element.style.zIndex = this.originalZ; if(this.options.endeffect) this.options.endeffect(this.element); Draggables.deactivate(this); Droppables.reset(); }, keyPress: function(event) { if(event.keyCode!=Event.KEY_ESC) return; this.finishDrag(event, false); Event.stop(event); }, endDrag: function(event) { if(!this.dragging) return; this.stopScrolling(); this.finishDrag(event, true); Event.stop(event); }, draw: function(point) { var pos = Position.cumulativeOffset(this.element); if(this.options.ghosting) { var r = Position.realOffset(this.element); pos[0] += r[0] - Position.deltaX; pos[1] += r[1] - Position.deltaY; } var d = this.currentDelta(); pos[0] -= d[0]; pos[1] -= d[1]; if(this.options.scroll && (this.options.scroll != window && this._isScrollChild)) { pos[0] -= this.options.scroll.scrollLeft-this.originalScrollLeft; pos[1] -= this.options.scroll.scrollTop-this.originalScrollTop; } var p = [0,1].map(function(i){ return (point[i]-pos[i]-this.offset[i]) }.bind(this)); if(this.options.snap) { if(Object.isFunction(this.options.snap)) { p = this.options.snap(p[0],p[1],this); } else { if(Object.isArray(this.options.snap)) { p = p.map( function(v, i) { return (v/this.options.snap[i]).round()*this.options.snap[i] }.bind(this)); } else { p = p.map( function(v) { return (v/this.options.snap).round()*this.options.snap }.bind(this)); } }} var style = this.element.style; if((!this.options.constraint) || (this.options.constraint=='horizontal')) style.left = p[0] + "px"; if((!this.options.constraint) || (this.options.constraint=='vertical')) style.top = p[1] + "px"; if(style.visibility=="hidden") style.visibility = ""; // fix gecko rendering }, stopScrolling: function() { if(this.scrollInterval) { clearInterval(this.scrollInterval); this.scrollInterval = null; Draggables._lastScrollPointer = null; } }, startScrolling: function(speed) { if(!(speed[0] || speed[1])) return; this.scrollSpeed = [speed[0]*this.options.scrollSpeed,speed[1]*this.options.scrollSpeed]; this.lastScrolled = new Date(); this.scrollInterval = setInterval(this.scroll.bind(this), 10); }, scroll: function() { var current = new Date(); var delta = current - this.lastScrolled; this.lastScrolled = current; if(this.options.scroll == window) { with (this._getWindowScroll(this.options.scroll)) { if (this.scrollSpeed[0] || this.scrollSpeed[1]) { var d = delta / 1000; this.options.scroll.scrollTo( left + d*this.scrollSpeed[0], top + d*this.scrollSpeed[1] ); } } } else { this.options.scroll.scrollLeft += this.scrollSpeed[0] * delta / 1000; this.options.scroll.scrollTop += this.scrollSpeed[1] * delta / 1000; } Position.prepare(); Droppables.show(Draggables._lastPointer, this.element); Draggables.notify('onDrag', this); if (this._isScrollChild) { Draggables._lastScrollPointer = Draggables._lastScrollPointer || $A(Draggables._lastPointer); Draggables._lastScrollPointer[0] += this.scrollSpeed[0] * delta / 1000; Draggables._lastScrollPointer[1] += this.scrollSpeed[1] * delta / 1000; if (Draggables._lastScrollPointer[0] < 0) Draggables._lastScrollPointer[0] = 0; if (Draggables._lastScrollPointer[1] < 0) Draggables._lastScrollPointer[1] = 0; this.draw(Draggables._lastScrollPointer); } if(this.options.change) this.options.change(this); }, _getWindowScroll: function(w) { var T, L, W, H; with (w.document) { if (w.document.documentElement && documentElement.scrollTop) { T = documentElement.scrollTop; L = documentElement.scrollLeft; } else if (w.document.body) { T = body.scrollTop; L = body.scrollLeft; } if (w.innerWidth) { W = w.innerWidth; H = w.innerHeight; } else if (w.document.documentElement && documentElement.clientWidth) { W = documentElement.clientWidth; H = documentElement.clientHeight; } else { W = body.offsetWidth; H = body.offsetHeight; } } return { top: T, left: L, width: W, height: H }; } }); Draggable._dragging = { }; /*--------------------------------------------------------------------------*/ var SortableObserver = Class.create({ initialize: function(element, observer) { this.element = $(element); this.observer = observer; this.lastValue = Sortable.serialize(this.element); }, onStart: function() { this.lastValue = Sortable.serialize(this.element); }, onEnd: function() { Sortable.unmark(); if(this.lastValue != Sortable.serialize(this.element)) this.observer(this.element) } }); var Sortable = { SERIALIZE_RULE: /^[^_\-](?:[A-Za-z0-9\-\_]*)[_](.*)$/, sortables: { }, _findRootElement: function(element) { while (element.tagName.toUpperCase() != "BODY") { if(element.id && Sortable.sortables[element.id]) return element; element = element.parentNode; } }, options: function(element) { element = Sortable._findRootElement($(element)); if(!element) return; return Sortable.sortables[element.id]; }, destroy: function(element){ element = $(element); var s = Sortable.sortables[element.id]; if(s) { Draggables.removeObserver(s.element); s.droppables.each(function(d){ Droppables.remove(d) }); s.draggables.invoke('destroy'); delete Sortable.sortables[s.element.id]; } }, create: function(element) { element = $(element); var options = Object.extend({ element: element, tag: 'li', // assumes li children, override with tag: 'tagname' dropOnEmpty: false, tree: false, treeTag: 'ul', overlap: 'vertical', // one of 'vertical', 'horizontal' constraint: 'vertical', // one of 'vertical', 'horizontal', false containment: element, // also takes array of elements (or id's); or false handle: false, // or a CSS class only: false, delay: 0, hoverclass: null, ghosting: false, quiet: false, scroll: false, scrollSensitivity: 20, scrollSpeed: 15, format: this.SERIALIZE_RULE, // these take arrays of elements or ids and can be // used for better initialization performance elements: false, handles: false, onChange: Prototype.emptyFunction, onUpdate: Prototype.emptyFunction }, arguments[1] || { }); // clear any old sortable with same element this.destroy(element); // build options for the draggables var options_for_draggable = { revert: true, quiet: options.quiet, scroll: options.scroll, scrollSpeed: options.scrollSpeed, scrollSensitivity: options.scrollSensitivity, delay: options.delay, ghosting: options.ghosting, constraint: options.constraint, handle: options.handle }; if(options.starteffect) options_for_draggable.starteffect = options.starteffect; if(options.reverteffect) options_for_draggable.reverteffect = options.reverteffect; else if(options.ghosting) options_for_draggable.reverteffect = function(element) { element.style.top = 0; element.style.left = 0; }; if(options.endeffect) options_for_draggable.endeffect = options.endeffect; if(options.zindex) options_for_draggable.zindex = options.zindex; // build options for the droppables var options_for_droppable = { overlap: options.overlap, containment: options.containment, tree: options.tree, hoverclass: options.hoverclass, onHover: Sortable.onHover }; var options_for_tree = { onHover: Sortable.onEmptyHover, overlap: options.overlap, containment: options.containment, hoverclass: options.hoverclass }; // fix for gecko engine Element.cleanWhitespace(element); options.draggables = []; options.droppables = []; // drop on empty handling if(options.dropOnEmpty || options.tree) { Droppables.add(element, options_for_tree); options.droppables.push(element); } (options.elements || this.findElements(element, options) || []).each( function(e,i) { var handle = options.handles ? $(options.handles[i]) : (options.handle ? $(e).select('.' + options.handle)[0] : e); options.draggables.push( new Draggable(e, Object.extend(options_for_draggable, { handle: handle }))); Droppables.add(e, options_for_droppable); if(options.tree) e.treeNode = element; options.droppables.push(e); }); if(options.tree) { (Sortable.findTreeElements(element, options) || []).each( function(e) { Droppables.add(e, options_for_tree); e.treeNode = element; options.droppables.push(e); }); } // keep reference this.sortables[element.id] = options; // for onupdate Draggables.addObserver(new SortableObserver(element, options.onUpdate)); }, // return all suitable-for-sortable elements in a guaranteed order findElements: function(element, options) { return Element.findChildren( element, options.only, options.tree ? true : false, options.tag); }, findTreeElements: function(element, options) { return Element.findChildren( element, options.only, options.tree ? true : false, options.treeTag); }, onHover: function(element, dropon, overlap) { if(Element.isParent(dropon, element)) return; if(overlap > .33 && overlap < .66 && Sortable.options(dropon).tree) { return; } else if(overlap>0.5) { Sortable.mark(dropon, 'before'); if(dropon.previousSibling != element) { var oldParentNode = element.parentNode; element.style.visibility = "hidden"; // fix gecko rendering dropon.parentNode.insertBefore(element, dropon); if(dropon.parentNode!=oldParentNode) Sortable.options(oldParentNode).onChange(element); Sortable.options(dropon.parentNode).onChange(element); } } else { Sortable.mark(dropon, 'after'); var nextElement = dropon.nextSibling || null; if(nextElement != element) { var oldParentNode = element.parentNode; element.style.visibility = "hidden"; // fix gecko rendering dropon.parentNode.insertBefore(element, nextElement); if(dropon.parentNode!=oldParentNode) Sortable.options(oldParentNode).onChange(element); Sortable.options(dropon.parentNode).onChange(element); } } }, onEmptyHover: function(element, dropon, overlap) { var oldParentNode = element.parentNode; var droponOptions = Sortable.options(dropon); if(!Element.isParent(dropon, element)) { var index; var children = Sortable.findElements(dropon, {tag: droponOptions.tag, only: droponOptions.only}); var child = null; if(children) { var offset = Element.offsetSize(dropon, droponOptions.overlap) * (1.0 - overlap); for (index = 0; index < children.length; index += 1) { if (offset - Element.offsetSize (children[index], droponOptions.overlap) >= 0) { offset -= Element.offsetSize (children[index], droponOptions.overlap); } else if (offset - (Element.offsetSize (children[index], droponOptions.overlap) / 2) >= 0) { child = index + 1 < children.length ? children[index + 1] : null; break; } else { child = children[index]; break; } } } dropon.insertBefore(element, child); Sortable.options(oldParentNode).onChange(element); droponOptions.onChange(element); } }, unmark: function() { if(Sortable._marker) Sortable._marker.hide(); }, mark: function(dropon, position) { // mark on ghosting only var sortable = Sortable.options(dropon.parentNode); if(sortable && !sortable.ghosting) return; if(!Sortable._marker) { Sortable._marker = ($('dropmarker') || Element.extend(document.createElement('DIV'))). hide().addClassName('dropmarker').setStyle({position:'absolute'}); document.getElementsByTagName("body").item(0).appendChild(Sortable._marker); } var offsets = Position.cumulativeOffset(dropon); Sortable._marker.setStyle({left: offsets[0]+'px', top: offsets[1] + 'px'}); if(position=='after') if(sortable.overlap == 'horizontal') Sortable._marker.setStyle({left: (offsets[0]+dropon.clientWidth) + 'px'}); else Sortable._marker.setStyle({top: (offsets[1]+dropon.clientHeight) + 'px'}); Sortable._marker.show(); }, _tree: function(element, options, parent) { var children = Sortable.findElements(element, options) || []; for (var i = 0; i < children.length; ++i) { var match = children[i].id.match(options.format); if (!match) continue; var child = { id: encodeURIComponent(match ? match[1] : null), element: element, parent: parent, children: [], position: parent.children.length, container: $(children[i]).down(options.treeTag) }; /* Get the element containing the children and recurse over it */ if (child.container) this._tree(child.container, options, child); parent.children.push (child); } return parent; }, tree: function(element) { element = $(element); var sortableOptions = this.options(element); var options = Object.extend({ tag: sortableOptions.tag, treeTag: sortableOptions.treeTag, only: sortableOptions.only, name: element.id, format: sortableOptions.format }, arguments[1] || { }); var root = { id: null, parent: null, children: [], container: element, position: 0 }; return Sortable._tree(element, options, root); }, /* Construct a [i] index for a particular node */ _constructIndex: function(node) { var index = ''; do { if (node.id) index = '[' + node.position + ']' + index; } while ((node = node.parent) != null); return index; }, sequence: function(element) { element = $(element); var options = Object.extend(this.options(element), arguments[1] || { }); return $(this.findElements(element, options) || []).map( function(item) { return item.id.match(options.format) ? item.id.match(options.format)[1] : ''; }); }, setSequence: function(element, new_sequence) { element = $(element); var options = Object.extend(this.options(element), arguments[2] || { }); var nodeMap = { }; this.findElements(element, options).each( function(n) { if (n.id.match(options.format)) nodeMap[n.id.match(options.format)[1]] = [n, n.parentNode]; n.parentNode.removeChild(n); }); new_sequence.each(function(ident) { var n = nodeMap[ident]; if (n) { n[1].appendChild(n[0]); delete nodeMap[ident]; } }); }, serialize: function(element) { element = $(element); var options = Object.extend(Sortable.options(element), arguments[1] || { }); var name = encodeURIComponent( (arguments[1] && arguments[1].name) ? arguments[1].name : element.id); if (options.tree) { return Sortable.tree(element, arguments[1]).children.map( function (item) { return [name + Sortable._constructIndex(item) + "[id]=" + encodeURIComponent(item.id)].concat(item.children.map(arguments.callee)); }).flatten().join('&'); } else { return Sortable.sequence(element, arguments[1]).map( function(item) { return name + "[]=" + encodeURIComponent(item); }).join('&'); } } }; // Returns true if child is contained within element Element.isParent = function(child, element) { if (!child.parentNode || child == element) return false; if (child.parentNode == element) return true; return Element.isParent(child.parentNode, element); }; Element.findChildren = function(element, only, recursive, tagName) { if(!element.hasChildNodes()) return null; tagName = tagName.toUpperCase(); if(only) only = [only].flatten(); var elements = []; $A(element.childNodes).each( function(e) { if(e.tagName && e.tagName.toUpperCase()==tagName && (!only || (Element.classNames(e).detect(function(v) { return only.include(v) })))) elements.push(e); if(recursive) { var grandchildren = Element.findChildren(e, only, recursive, tagName); if(grandchildren) elements.push(grandchildren); } }); return (elements.length>0 ? elements.flatten() : []); }; Element.offsetSize = function (element, type) { return element['offset' + ((type=='vertical' || type=='height') ? 'Height' : 'Width')]; };// Copyright (c) 2005-2008 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us) // Contributors: // Justin Palmer (http://encytemedia.com/) // Mark Pilgrim (http://diveintomark.org/) // Martin Bialasinki // // script.aculo.us is freely distributable under the terms of an MIT-style license. // For details, see the script.aculo.us web site: http://script.aculo.us/ // converts rgb() and #xxx to #xxxxxx format, // returns self (or first argument) if not convertable String.prototype.parseColor = function() { var color = '#'; if (this.slice(0,4) == 'rgb(') { var cols = this.slice(4,this.length-1).split(','); var i=0; do { color += parseInt(cols[i]).toColorPart() } while (++i<3); } else { if (this.slice(0,1) == '#') { if (this.length==4) for(var i=1;i<4;i++) color += (this.charAt(i) + this.charAt(i)).toLowerCase(); if (this.length==7) color = this.toLowerCase(); } } return (color.length==7 ? color : (arguments[0] || this)); }; /*--------------------------------------------------------------------------*/ Element.collectTextNodes = function(element) { return $A($(element).childNodes).collect( function(node) { return (node.nodeType==3 ? node.nodeValue : (node.hasChildNodes() ? Element.collectTextNodes(node) : '')); }).flatten().join(''); }; Element.collectTextNodesIgnoreClass = function(element, className) { return $A($(element).childNodes).collect( function(node) { return (node.nodeType==3 ? node.nodeValue : ((node.hasChildNodes() && !Element.hasClassName(node,className)) ? Element.collectTextNodesIgnoreClass(node, className) : '')); }).flatten().join(''); }; Element.setContentZoom = function(element, percent) { element = $(element); element.setStyle({fontSize: (percent/100) + 'em'}); if (Prototype.Browser.WebKit) window.scrollBy(0,0); return element; }; Element.getInlineOpacity = function(element){ return $(element).style.opacity || ''; }; Element.forceRerendering = function(element) { try { element = $(element); var n = document.createTextNode(' '); element.appendChild(n); element.removeChild(n); } catch(e) { } }; /*--------------------------------------------------------------------------*/ var Effect = { _elementDoesNotExistError: { name: 'ElementDoesNotExistError', message: 'The specified DOM element does not exist, but is required for this effect to operate' }, Transitions: { linear: Prototype.K, sinoidal: function(pos) { return (-Math.cos(pos*Math.PI)/2) + .5; }, reverse: function(pos) { return 1-pos; }, flicker: function(pos) { var pos = ((-Math.cos(pos*Math.PI)/4) + .75) + Math.random()/4; return pos > 1 ? 1 : pos; }, wobble: function(pos) { return (-Math.cos(pos*Math.PI*(9*pos))/2) + .5; }, pulse: function(pos, pulses) { return (-Math.cos((pos*((pulses||5)-.5)*2)*Math.PI)/2) + .5; }, spring: function(pos) { return 1 - (Math.cos(pos * 4.5 * Math.PI) * Math.exp(-pos * 6)); }, none: function(pos) { return 0; }, full: function(pos) { return 1; } }, DefaultOptions: { duration: 1.0, // seconds fps: 100, // 100= assume 66fps max. sync: false, // true for combining from: 0.0, to: 1.0, delay: 0.0, queue: 'parallel' }, tagifyText: function(element) { var tagifyStyle = 'position:relative'; if (Prototype.Browser.IE) tagifyStyle += ';zoom:1'; element = $(element); $A(element.childNodes).each( function(child) { if (child.nodeType==3) { child.nodeValue.toArray().each( function(character) { element.insertBefore( new Element('span', {style: tagifyStyle}).update( character == ' ' ? String.fromCharCode(160) : character), child); }); Element.remove(child); } }); }, multiple: function(element, effect) { var elements; if (((typeof element == 'object') || Object.isFunction(element)) && (element.length)) elements = element; else elements = $(element).childNodes; var options = Object.extend({ speed: 0.1, delay: 0.0 }, arguments[2] || { }); var masterDelay = options.delay; $A(elements).each( function(element, index) { new effect(element, Object.extend(options, { delay: index * options.speed + masterDelay })); }); }, PAIRS: { 'slide': ['SlideDown','SlideUp'], 'blind': ['BlindDown','BlindUp'], 'appear': ['Appear','Fade'] }, toggle: function(element, effect) { element = $(element); effect = (effect || 'appear').toLowerCase(); var options = Object.extend({ queue: { position:'end', scope:(element.id || 'global'), limit: 1 } }, arguments[2] || { }); Effect[element.visible() ? Effect.PAIRS[effect][1] : Effect.PAIRS[effect][0]](element, options); } }; Effect.DefaultOptions.transition = Effect.Transitions.sinoidal; /* ------------- core effects ------------- */ Effect.ScopedQueue = Class.create(Enumerable, { initialize: function() { this.effects = []; this.interval = null; }, _each: function(iterator) { this.effects._each(iterator); }, add: function(effect) { var timestamp = new Date().getTime(); var position = Object.isString(effect.options.queue) ? effect.options.queue : effect.options.queue.position; switch(position) { case 'front': // move unstarted effects after this effect this.effects.findAll(function(e){ return e.state=='idle' }).each( function(e) { e.startOn += effect.finishOn; e.finishOn += effect.finishOn; }); break; case 'with-last': timestamp = this.effects.pluck('startOn').max() || timestamp; break; case 'end': // start effect after last queued effect has finished timestamp = this.effects.pluck('finishOn').max() || timestamp; break; } effect.startOn += timestamp; effect.finishOn += timestamp; if (!effect.options.queue.limit || (this.effects.length < effect.options.queue.limit)) this.effects.push(effect); if (!this.interval) this.interval = setInterval(this.loop.bind(this), 15); }, remove: function(effect) { this.effects = this.effects.reject(function(e) { return e==effect }); if (this.effects.length == 0) { clearInterval(this.interval); this.interval = null; } }, loop: function() { var timePos = new Date().getTime(); for(var i=0, len=this.effects.length;i= this.startOn) { if (timePos >= this.finishOn) { this.render(1.0); this.cancel(); this.event('beforeFinish'); if (this.finish) this.finish(); this.event('afterFinish'); return; } var pos = (timePos - this.startOn) / this.totalTime, frame = (pos * this.totalFrames).round(); if (frame > this.currentFrame) { this.render(pos); this.currentFrame = frame; } } }, cancel: function() { if (!this.options.sync) Effect.Queues.get(Object.isString(this.options.queue) ? 'global' : this.options.queue.scope).remove(this); this.state = 'finished'; }, event: function(eventName) { if (this.options[eventName + 'Internal']) this.options[eventName + 'Internal'](this); if (this.options[eventName]) this.options[eventName](this); }, inspect: function() { var data = $H(); for(property in this) if (!Object.isFunction(this[property])) data.set(property, this[property]); return '#'; } }); Effect.Parallel = Class.create(Effect.Base, { initialize: function(effects) { this.effects = effects || []; this.start(arguments[1]); }, update: function(position) { this.effects.invoke('render', position); }, finish: function(position) { this.effects.each( function(effect) { effect.render(1.0); effect.cancel(); effect.event('beforeFinish'); if (effect.finish) effect.finish(position); effect.event('afterFinish'); }); } }); Effect.Tween = Class.create(Effect.Base, { initialize: function(object, from, to) { object = Object.isString(object) ? $(object) : object; var args = $A(arguments), method = args.last(), options = args.length == 5 ? args[3] : null; this.method = Object.isFunction(method) ? method.bind(object) : Object.isFunction(object[method]) ? object[method].bind(object) : function(value) { object[method] = value }; this.start(Object.extend({ from: from, to: to }, options || { })); }, update: function(position) { this.method(position); } }); Effect.Event = Class.create(Effect.Base, { initialize: function() { this.start(Object.extend({ duration: 0 }, arguments[0] || { })); }, update: Prototype.emptyFunction }); Effect.Opacity = Class.create(Effect.Base, { initialize: function(element) { this.element = $(element); if (!this.element) throw(Effect._elementDoesNotExistError); // make this work on IE on elements without 'layout' if (Prototype.Browser.IE && (!this.element.currentStyle.hasLayout)) this.element.setStyle({zoom: 1}); var options = Object.extend({ from: this.element.getOpacity() || 0.0, to: 1.0 }, arguments[1] || { }); this.start(options); }, update: function(position) { this.element.setOpacity(position); } }); Effect.Move = Class.create(Effect.Base, { initialize: function(element) { this.element = $(element); if (!this.element) throw(Effect._elementDoesNotExistError); var options = Object.extend({ x: 0, y: 0, mode: 'relative' }, arguments[1] || { }); this.start(options); }, setup: function() { this.element.makePositioned(); this.originalLeft = parseFloat(this.element.getStyle('left') || '0'); this.originalTop = parseFloat(this.element.getStyle('top') || '0'); if (this.options.mode == 'absolute') { this.options.x = this.options.x - this.originalLeft; this.options.y = this.options.y - this.originalTop; } }, update: function(position) { this.element.setStyle({ left: (this.options.x * position + this.originalLeft).round() + 'px', top: (this.options.y * position + this.originalTop).round() + 'px' }); } }); // for backwards compatibility Effect.MoveBy = function(element, toTop, toLeft) { return new Effect.Move(element, Object.extend({ x: toLeft, y: toTop }, arguments[3] || { })); }; Effect.Scale = Class.create(Effect.Base, { initialize: function(element, percent) { this.element = $(element); if (!this.element) throw(Effect._elementDoesNotExistError); var options = Object.extend({ scaleX: true, scaleY: true, scaleContent: true, scaleFromCenter: false, scaleMode: 'box', // 'box' or 'contents' or { } with provided values scaleFrom: 100.0, scaleTo: percent }, arguments[2] || { }); this.start(options); }, setup: function() { this.restoreAfterFinish = this.options.restoreAfterFinish || false; this.elementPositioning = this.element.getStyle('position'); this.originalStyle = { }; ['top','left','width','height','fontSize'].each( function(k) { this.originalStyle[k] = this.element.style[k]; }.bind(this)); this.originalTop = this.element.offsetTop; this.originalLeft = this.element.offsetLeft; var fontSize = this.element.getStyle('font-size') || '100%'; ['em','px','%','pt'].each( function(fontSizeType) { if (fontSize.indexOf(fontSizeType)>0) { this.fontSize = parseFloat(fontSize); this.fontSizeType = fontSizeType; } }.bind(this)); this.factor = (this.options.scaleTo - this.options.scaleFrom)/100; this.dims = null; if (this.options.scaleMode=='box') this.dims = [this.element.offsetHeight, this.element.offsetWidth]; if (/^content/.test(this.options.scaleMode)) this.dims = [this.element.scrollHeight, this.element.scrollWidth]; if (!this.dims) this.dims = [this.options.scaleMode.originalHeight, this.options.scaleMode.originalWidth]; }, update: function(position) { var currentScale = (this.options.scaleFrom/100.0) + (this.factor * position); if (this.options.scaleContent && this.fontSize) this.element.setStyle({fontSize: this.fontSize * currentScale + this.fontSizeType }); this.setDimensions(this.dims[0] * currentScale, this.dims[1] * currentScale); }, finish: function(position) { if (this.restoreAfterFinish) this.element.setStyle(this.originalStyle); }, setDimensions: function(height, width) { var d = { }; if (this.options.scaleX) d.width = width.round() + 'px'; if (this.options.scaleY) d.height = height.round() + 'px'; if (this.options.scaleFromCenter) { var topd = (height - this.dims[0])/2; var leftd = (width - this.dims[1])/2; if (this.elementPositioning == 'absolute') { if (this.options.scaleY) d.top = this.originalTop-topd + 'px'; if (this.options.scaleX) d.left = this.originalLeft-leftd + 'px'; } else { if (this.options.scaleY) d.top = -topd + 'px'; if (this.options.scaleX) d.left = -leftd + 'px'; } } this.element.setStyle(d); } }); Effect.Highlight = Class.create(Effect.Base, { initialize: function(element) { this.element = $(element); if (!this.element) throw(Effect._elementDoesNotExistError); var options = Object.extend({ startcolor: '#ffff99' }, arguments[1] || { }); this.start(options); }, setup: function() { // Prevent executing on elements not in the layout flow if (this.element.getStyle('display')=='none') { this.cancel(); return; } // Disable background image during the effect this.oldStyle = { }; if (!this.options.keepBackgroundImage) { this.oldStyle.backgroundImage = this.element.getStyle('background-image'); this.element.setStyle({backgroundImage: 'none'}); } if (!this.options.endcolor) this.options.endcolor = this.element.getStyle('background-color').parseColor('#ffffff'); if (!this.options.restorecolor) this.options.restorecolor = this.element.getStyle('background-color'); // init color calculations this._base = $R(0,2).map(function(i){ return parseInt(this.options.startcolor.slice(i*2+1,i*2+3),16) }.bind(this)); this._delta = $R(0,2).map(function(i){ return parseInt(this.options.endcolor.slice(i*2+1,i*2+3),16)-this._base[i] }.bind(this)); }, update: function(position) { this.element.setStyle({backgroundColor: $R(0,2).inject('#',function(m,v,i){ return m+((this._base[i]+(this._delta[i]*position)).round().toColorPart()); }.bind(this)) }); }, finish: function() { this.element.setStyle(Object.extend(this.oldStyle, { backgroundColor: this.options.restorecolor })); } }); Effect.ScrollTo = function(element) { var options = arguments[1] || { }, scrollOffsets = document.viewport.getScrollOffsets(), elementOffsets = $(element).cumulativeOffset(); if (options.offset) elementOffsets[1] += options.offset; return new Effect.Tween(null, scrollOffsets.top, elementOffsets[1], options, function(p){ scrollTo(scrollOffsets.left, p.round()); } ); }; /* ------------- combination effects ------------- */ Effect.Fade = function(element) { element = $(element); var oldOpacity = element.getInlineOpacity(); var options = Object.extend({ from: element.getOpacity() || 1.0, to: 0.0, afterFinishInternal: function(effect) { if (effect.options.to!=0) return; effect.element.hide().setStyle({opacity: oldOpacity}); } }, arguments[1] || { }); return new Effect.Opacity(element,options); }; Effect.Appear = function(element) { element = $(element); var options = Object.extend({ from: (element.getStyle('display') == 'none' ? 0.0 : element.getOpacity() || 0.0), to: 1.0, // force Safari to render floated elements properly afterFinishInternal: function(effect) { effect.element.forceRerendering(); }, beforeSetup: function(effect) { effect.element.setOpacity(effect.options.from).show(); }}, arguments[1] || { }); return new Effect.Opacity(element,options); }; Effect.Puff = function(element) { element = $(element); var oldStyle = { opacity: element.getInlineOpacity(), position: element.getStyle('position'), top: element.style.top, left: element.style.left, width: element.style.width, height: element.style.height }; return new Effect.Parallel( [ new Effect.Scale(element, 200, { sync: true, scaleFromCenter: true, scaleContent: true, restoreAfterFinish: true }), new Effect.Opacity(element, { sync: true, to: 0.0 } ) ], Object.extend({ duration: 1.0, beforeSetupInternal: function(effect) { Position.absolutize(effect.effects[0].element); }, afterFinishInternal: function(effect) { effect.effects[0].element.hide().setStyle(oldStyle); } }, arguments[1] || { }) ); }; Effect.BlindUp = function(element) { element = $(element); element.makeClipping(); return new Effect.Scale(element, 0, Object.extend({ scaleContent: false, scaleX: false, restoreAfterFinish: true, afterFinishInternal: function(effect) { effect.element.hide().undoClipping(); } }, arguments[1] || { }) ); }; Effect.BlindDown = function(element) { element = $(element); var elementDimensions = element.getDimensions(); return new Effect.Scale(element, 100, Object.extend({ scaleContent: false, scaleX: false, scaleFrom: 0, scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width}, restoreAfterFinish: true, afterSetup: function(effect) { effect.element.makeClipping().setStyle({height: '0px'}).show(); }, afterFinishInternal: function(effect) { effect.element.undoClipping(); } }, arguments[1] || { })); }; Effect.SwitchOff = function(element) { element = $(element); var oldOpacity = element.getInlineOpacity(); return new Effect.Appear(element, Object.extend({ duration: 0.4, from: 0, transition: Effect.Transitions.flicker, afterFinishInternal: function(effect) { new Effect.Scale(effect.element, 1, { duration: 0.3, scaleFromCenter: true, scaleX: false, scaleContent: false, restoreAfterFinish: true, beforeSetup: function(effect) { effect.element.makePositioned().makeClipping(); }, afterFinishInternal: function(effect) { effect.element.hide().undoClipping().undoPositioned().setStyle({opacity: oldOpacity}); } }); } }, arguments[1] || { })); }; Effect.DropOut = function(element) { element = $(element); var oldStyle = { top: element.getStyle('top'), left: element.getStyle('left'), opacity: element.getInlineOpacity() }; return new Effect.Parallel( [ new Effect.Move(element, {x: 0, y: 100, sync: true }), new Effect.Opacity(element, { sync: true, to: 0.0 }) ], Object.extend( { duration: 0.5, beforeSetup: function(effect) { effect.effects[0].element.makePositioned(); }, afterFinishInternal: function(effect) { effect.effects[0].element.hide().undoPositioned().setStyle(oldStyle); } }, arguments[1] || { })); }; Effect.Shake = function(element) { element = $(element); var options = Object.extend({ distance: 20, duration: 0.5 }, arguments[1] || {}); var distance = parseFloat(options.distance); var split = parseFloat(options.duration) / 10.0; var oldStyle = { top: element.getStyle('top'), left: element.getStyle('left') }; return new Effect.Move(element, { x: distance, y: 0, duration: split, afterFinishInternal: function(effect) { new Effect.Move(effect.element, { x: -distance*2, y: 0, duration: split*2, afterFinishInternal: function(effect) { new Effect.Move(effect.element, { x: distance*2, y: 0, duration: split*2, afterFinishInternal: function(effect) { new Effect.Move(effect.element, { x: -distance*2, y: 0, duration: split*2, afterFinishInternal: function(effect) { new Effect.Move(effect.element, { x: distance*2, y: 0, duration: split*2, afterFinishInternal: function(effect) { new Effect.Move(effect.element, { x: -distance, y: 0, duration: split, afterFinishInternal: function(effect) { effect.element.undoPositioned().setStyle(oldStyle); }}); }}); }}); }}); }}); }}); }; Effect.SlideDown = function(element) { element = $(element).cleanWhitespace(); // SlideDown need to have the content of the element wrapped in a container element with fixed height! var oldInnerBottom = element.down().getStyle('bottom'); var elementDimensions = element.getDimensions(); return new Effect.Scale(element, 100, Object.extend({ scaleContent: false, scaleX: false, scaleFrom: window.opera ? 0 : 1, scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width}, restoreAfterFinish: true, afterSetup: function(effect) { effect.element.makePositioned(); effect.element.down().makePositioned(); if (window.opera) effect.element.setStyle({top: ''}); effect.element.makeClipping().setStyle({height: '0px'}).show(); }, afterUpdateInternal: function(effect) { effect.element.down().setStyle({bottom: (effect.dims[0] - effect.element.clientHeight) + 'px' }); }, afterFinishInternal: function(effect) { effect.element.undoClipping().undoPositioned(); effect.element.down().undoPositioned().setStyle({bottom: oldInnerBottom}); } }, arguments[1] || { }) ); }; Effect.SlideUp = function(element) { element = $(element).cleanWhitespace(); var oldInnerBottom = element.down().getStyle('bottom'); var elementDimensions = element.getDimensions(); return new Effect.Scale(element, window.opera ? 0 : 1, Object.extend({ scaleContent: false, scaleX: false, scaleMode: 'box', scaleFrom: 100, scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width}, restoreAfterFinish: true, afterSetup: function(effect) { effect.element.makePositioned(); effect.element.down().makePositioned(); if (window.opera) effect.element.setStyle({top: ''}); effect.element.makeClipping().show(); }, afterUpdateInternal: function(effect) { effect.element.down().setStyle({bottom: (effect.dims[0] - effect.element.clientHeight) + 'px' }); }, afterFinishInternal: function(effect) { effect.element.hide().undoClipping().undoPositioned(); effect.element.down().undoPositioned().setStyle({bottom: oldInnerBottom}); } }, arguments[1] || { }) ); }; // Bug in opera makes the TD containing this element expand for a instance after finish Effect.Squish = function(element) { return new Effect.Scale(element, window.opera ? 1 : 0, { restoreAfterFinish: true, beforeSetup: function(effect) { effect.element.makeClipping(); }, afterFinishInternal: function(effect) { effect.element.hide().undoClipping(); } }); }; Effect.Grow = function(element) { element = $(element); var options = Object.extend({ direction: 'center', moveTransition: Effect.Transitions.sinoidal, scaleTransition: Effect.Transitions.sinoidal, opacityTransition: Effect.Transitions.full }, arguments[1] || { }); var oldStyle = { top: element.style.top, left: element.style.left, height: element.style.height, width: element.style.width, opacity: element.getInlineOpacity() }; var dims = element.getDimensions(); var initialMoveX, initialMoveY; var moveX, moveY; switch (options.direction) { case 'top-left': initialMoveX = initialMoveY = moveX = moveY = 0; break; case 'top-right': initialMoveX = dims.width; initialMoveY = moveY = 0; moveX = -dims.width; break; case 'bottom-left': initialMoveX = moveX = 0; initialMoveY = dims.height; moveY = -dims.height; break; case 'bottom-right': initialMoveX = dims.width; initialMoveY = dims.height; moveX = -dims.width; moveY = -dims.height; break; case 'center': initialMoveX = dims.width / 2; initialMoveY = dims.height / 2; moveX = -dims.width / 2; moveY = -dims.height / 2; break; } return new Effect.Move(element, { x: initialMoveX, y: initialMoveY, duration: 0.01, beforeSetup: function(effect) { effect.element.hide().makeClipping().makePositioned(); }, afterFinishInternal: function(effect) { new Effect.Parallel( [ new Effect.Opacity(effect.element, { sync: true, to: 1.0, from: 0.0, transition: options.opacityTransition }), new Effect.Move(effect.element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition }), new Effect.Scale(effect.element, 100, { scaleMode: { originalHeight: dims.height, originalWidth: dims.width }, sync: true, scaleFrom: window.opera ? 1 : 0, transition: options.scaleTransition, restoreAfterFinish: true}) ], Object.extend({ beforeSetup: function(effect) { effect.effects[0].element.setStyle({height: '0px'}).show(); }, afterFinishInternal: function(effect) { effect.effects[0].element.undoClipping().undoPositioned().setStyle(oldStyle); } }, options) ); } }); }; Effect.Shrink = function(element) { element = $(element); var options = Object.extend({ direction: 'center', moveTransition: Effect.Transitions.sinoidal, scaleTransition: Effect.Transitions.sinoidal, opacityTransition: Effect.Transitions.none }, arguments[1] || { }); var oldStyle = { top: element.style.top, left: element.style.left, height: element.style.height, width: element.style.width, opacity: element.getInlineOpacity() }; var dims = element.getDimensions(); var moveX, moveY; switch (options.direction) { case 'top-left': moveX = moveY = 0; break; case 'top-right': moveX = dims.width; moveY = 0; break; case 'bottom-left': moveX = 0; moveY = dims.height; break; case 'bottom-right': moveX = dims.width; moveY = dims.height; break; case 'center': moveX = dims.width / 2; moveY = dims.height / 2; break; } return new Effect.Parallel( [ new Effect.Opacity(element, { sync: true, to: 0.0, from: 1.0, transition: options.opacityTransition }), new Effect.Scale(element, window.opera ? 1 : 0, { sync: true, transition: options.scaleTransition, restoreAfterFinish: true}), new Effect.Move(element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition }) ], Object.extend({ beforeStartInternal: function(effect) { effect.effects[0].element.makePositioned().makeClipping(); }, afterFinishInternal: function(effect) { effect.effects[0].element.hide().undoClipping().undoPositioned().setStyle(oldStyle); } }, options) ); }; Effect.Pulsate = function(element) { element = $(element); var options = arguments[1] || { }, oldOpacity = element.getInlineOpacity(), transition = options.transition || Effect.Transitions.linear, reverser = function(pos){ return 1 - transition((-Math.cos((pos*(options.pulses||5)*2)*Math.PI)/2) + .5); }; return new Effect.Opacity(element, Object.extend(Object.extend({ duration: 2.0, from: 0, afterFinishInternal: function(effect) { effect.element.setStyle({opacity: oldOpacity}); } }, options), {transition: reverser})); }; Effect.Fold = function(element) { element = $(element); var oldStyle = { top: element.style.top, left: element.style.left, width: element.style.width, height: element.style.height }; element.makeClipping(); return new Effect.Scale(element, 5, Object.extend({ scaleContent: false, scaleX: false, afterFinishInternal: function(effect) { new Effect.Scale(element, 1, { scaleContent: false, scaleY: false, afterFinishInternal: function(effect) { effect.element.hide().undoClipping().setStyle(oldStyle); } }); }}, arguments[1] || { })); }; Effect.Morph = Class.create(Effect.Base, { initialize: function(element) { this.element = $(element); if (!this.element) throw(Effect._elementDoesNotExistError); var options = Object.extend({ style: { } }, arguments[1] || { }); if (!Object.isString(options.style)) this.style = $H(options.style); else { if (options.style.include(':')) this.style = options.style.parseStyle(); else { this.element.addClassName(options.style); this.style = $H(this.element.getStyles()); this.element.removeClassName(options.style); var css = this.element.getStyles(); this.style = this.style.reject(function(style) { return style.value == css[style.key]; }); options.afterFinishInternal = function(effect) { effect.element.addClassName(effect.options.style); effect.transforms.each(function(transform) { effect.element.style[transform.style] = ''; }); }; } } this.start(options); }, setup: function(){ function parseColor(color){ if (!color || ['rgba(0, 0, 0, 0)','transparent'].include(color)) color = '#ffffff'; color = color.parseColor(); return $R(0,2).map(function(i){ return parseInt( color.slice(i*2+1,i*2+3), 16 ); }); } this.transforms = this.style.map(function(pair){ var property = pair[0], value = pair[1], unit = null; if (value.parseColor('#zzzzzz') != '#zzzzzz') { value = value.parseColor(); unit = 'color'; } else if (property == 'opacity') { value = parseFloat(value); if (Prototype.Browser.IE && (!this.element.currentStyle.hasLayout)) this.element.setStyle({zoom: 1}); } else if (Element.CSS_LENGTH.test(value)) { var components = value.match(/^([\+\-]?[0-9\.]+)(.*)$/); value = parseFloat(components[1]); unit = (components.length == 3) ? components[2] : null; } var originalValue = this.element.getStyle(property); return { style: property.camelize(), originalValue: unit=='color' ? parseColor(originalValue) : parseFloat(originalValue || 0), targetValue: unit=='color' ? parseColor(value) : value, unit: unit }; }.bind(this)).reject(function(transform){ return ( (transform.originalValue == transform.targetValue) || ( transform.unit != 'color' && (isNaN(transform.originalValue) || isNaN(transform.targetValue)) ) ); }); }, update: function(position) { var style = { }, transform, i = this.transforms.length; while(i--) style[(transform = this.transforms[i]).style] = transform.unit=='color' ? '#'+ (Math.round(transform.originalValue[0]+ (transform.targetValue[0]-transform.originalValue[0])*position)).toColorPart() + (Math.round(transform.originalValue[1]+ (transform.targetValue[1]-transform.originalValue[1])*position)).toColorPart() + (Math.round(transform.originalValue[2]+ (transform.targetValue[2]-transform.originalValue[2])*position)).toColorPart() : (transform.originalValue + (transform.targetValue - transform.originalValue) * position).toFixed(3) + (transform.unit === null ? '' : transform.unit); this.element.setStyle(style, true); } }); Effect.Transform = Class.create({ initialize: function(tracks){ this.tracks = []; this.options = arguments[1] || { }; this.addTracks(tracks); }, addTracks: function(tracks){ tracks.each(function(track){ track = $H(track); var data = track.values().first(); this.tracks.push($H({ ids: track.keys().first(), effect: Effect.Morph, options: { style: data } })); }.bind(this)); return this; }, play: function(){ return new Effect.Parallel( this.tracks.map(function(track){ var ids = track.get('ids'), effect = track.get('effect'), options = track.get('options'); var elements = [$(ids) || $$(ids)].flatten(); return elements.map(function(e){ return new effect(e, Object.extend({ sync:true }, options)) }); }).flatten(), this.options ); } }); Element.CSS_PROPERTIES = $w( 'backgroundColor backgroundPosition borderBottomColor borderBottomStyle ' + 'borderBottomWidth borderLeftColor borderLeftStyle borderLeftWidth ' + 'borderRightColor borderRightStyle borderRightWidth borderSpacing ' + 'borderTopColor borderTopStyle borderTopWidth bottom clip color ' + 'fontSize fontWeight height left letterSpacing lineHeight ' + 'marginBottom marginLeft marginRight marginTop markerOffset maxHeight '+ 'maxWidth minHeight minWidth opacity outlineColor outlineOffset ' + 'outlineWidth paddingBottom paddingLeft paddingRight paddingTop ' + 'right textIndent top width wordSpacing zIndex'); Element.CSS_LENGTH = /^(([\+\-]?[0-9\.]+)(em|ex|px|in|cm|mm|pt|pc|\%))|0$/; String.__parseStyleElement = document.createElement('div'); String.prototype.parseStyle = function(){ var style, styleRules = $H(); if (Prototype.Browser.WebKit) style = new Element('div',{style:this}).style; else { String.__parseStyleElement.innerHTML = '
    '; style = String.__parseStyleElement.childNodes[0].style; } Element.CSS_PROPERTIES.each(function(property){ if (style[property]) styleRules.set(property, style[property]); }); if (Prototype.Browser.IE && this.include('opacity')) styleRules.set('opacity', this.match(/opacity:\s*((?:0|1)?(?:\.\d*)?)/)[1]); return styleRules; }; if (document.defaultView && document.defaultView.getComputedStyle) { Element.getStyles = function(element) { var css = document.defaultView.getComputedStyle($(element), null); return Element.CSS_PROPERTIES.inject({ }, function(styles, property) { styles[property] = css[property]; return styles; }); }; } else { Element.getStyles = function(element) { element = $(element); var css = element.currentStyle, styles; styles = Element.CSS_PROPERTIES.inject({ }, function(results, property) { results[property] = css[property]; return results; }); if (!styles.opacity) styles.opacity = element.getOpacity(); return styles; }; } Effect.Methods = { morph: function(element, style) { element = $(element); new Effect.Morph(element, Object.extend({ style: style }, arguments[2] || { })); return element; }, visualEffect: function(element, effect, options) { element = $(element); var s = effect.dasherize().camelize(), klass = s.charAt(0).toUpperCase() + s.substring(1); new Effect[klass](element, options); return element; }, highlight: function(element, options) { element = $(element); new Effect.Highlight(element, options); return element; } }; $w('fade appear grow shrink fold blindUp blindDown slideUp slideDown '+ 'pulsate shake puff squish switchOff dropOut').each( function(effect) { Effect.Methods[effect] = function(element, options){ element = $(element); Effect[effect.charAt(0).toUpperCase() + effect.substring(1)](element, options); return element; }; } ); $w('getInlineOpacity forceRerendering setContentZoom collectTextNodes collectTextNodesIgnoreClass getStyles').each( function(f) { Effect.Methods[f] = Element[f]; } ); Element.addMethods(Effect.Methods);/* Prototype JavaScript framework, version 1.6.0.3 * (c) 2005-2008 Sam Stephenson * * Prototype is freely distributable under the terms of an MIT-style license. * For details, see the Prototype web site: http://www.prototypejs.org/ * *--------------------------------------------------------------------------*/ var Prototype = { Version: '1.6.0.3', Browser: { IE: !!(window.attachEvent && navigator.userAgent.indexOf('Opera') === -1), Opera: navigator.userAgent.indexOf('Opera') > -1, WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1, Gecko: navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('KHTML') === -1, MobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/) }, BrowserFeatures: { XPath: !!document.evaluate, SelectorsAPI: !!document.querySelector, ElementExtensions: !!window.HTMLElement, SpecificElementExtensions: document.createElement('div')['__proto__'] && document.createElement('div')['__proto__'] !== document.createElement('form')['__proto__'] }, ScriptFragment: ']*>([\\S\\s]*?)<\/script>', JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/, emptyFunction: function() { }, K: function(x) { return x } }; if (Prototype.Browser.MobileSafari) Prototype.BrowserFeatures.SpecificElementExtensions = false; /* Based on Alex Arnell's inheritance implementation. */ var Class = { create: function() { var parent = null, properties = $A(arguments); if (Object.isFunction(properties[0])) parent = properties.shift(); function klass() { this.initialize.apply(this, arguments); } Object.extend(klass, Class.Methods); klass.superclass = parent; klass.subclasses = []; if (parent) { var subclass = function() { }; subclass.prototype = parent.prototype; klass.prototype = new subclass; parent.subclasses.push(klass); } for (var i = 0; i < properties.length; i++) klass.addMethods(properties[i]); if (!klass.prototype.initialize) klass.prototype.initialize = Prototype.emptyFunction; klass.prototype.constructor = klass; return klass; } }; Class.Methods = { addMethods: function(source) { var ancestor = this.superclass && this.superclass.prototype; var properties = Object.keys(source); if (!Object.keys({ toString: true }).length) properties.push("toString", "valueOf"); for (var i = 0, length = properties.length; i < length; i++) { var property = properties[i], value = source[property]; if (ancestor && Object.isFunction(value) && value.argumentNames().first() == "$super") { var method = value; value = (function(m) { return function() { return ancestor[m].apply(this, arguments) }; })(property).wrap(method); value.valueOf = method.valueOf.bind(method); value.toString = method.toString.bind(method); } this.prototype[property] = value; } return this; } }; var Abstract = { }; Object.extend = function(destination, source) { for (var property in source) destination[property] = source[property]; return destination; }; Object.extend(Object, { inspect: function(object) { try { if (Object.isUndefined(object)) return 'undefined'; if (object === null) return 'null'; return object.inspect ? object.inspect() : String(object); } catch (e) { if (e instanceof RangeError) return '...'; throw e; } }, toJSON: function(object) { var type = typeof object; switch (type) { case 'undefined': case 'function': case 'unknown': return; case 'boolean': return object.toString(); } if (object === null) return 'null'; if (object.toJSON) return object.toJSON(); if (Object.isElement(object)) return; var results = []; for (var property in object) { var value = Object.toJSON(object[property]); if (!Object.isUndefined(value)) results.push(property.toJSON() + ': ' + value); } return '{' + results.join(', ') + '}'; }, toQueryString: function(object) { return $H(object).toQueryString(); }, toHTML: function(object) { return object && object.toHTML ? object.toHTML() : String.interpret(object); }, keys: function(object) { var keys = []; for (var property in object) keys.push(property); return keys; }, values: function(object) { var values = []; for (var property in object) values.push(object[property]); return values; }, clone: function(object) { return Object.extend({ }, object); }, isElement: function(object) { return !!(object && object.nodeType == 1); }, isArray: function(object) { return object != null && typeof object == "object" && 'splice' in object && 'join' in object; }, isHash: function(object) { return object instanceof Hash; }, isFunction: function(object) { return typeof object == "function"; }, isString: function(object) { return typeof object == "string"; }, isNumber: function(object) { return typeof object == "number"; }, isUndefined: function(object) { return typeof object == "undefined"; } }); Object.extend(Function.prototype, { argumentNames: function() { var names = this.toString().match(/^[\s\(]*function[^(]*\(([^\)]*)\)/)[1] .replace(/\s+/g, '').split(','); return names.length == 1 && !names[0] ? [] : names; }, bind: function() { if (arguments.length < 2 && Object.isUndefined(arguments[0])) return this; var __method = this, args = $A(arguments), object = args.shift(); return function() { return __method.apply(object, args.concat($A(arguments))); } }, bindAsEventListener: function() { var __method = this, args = $A(arguments), object = args.shift(); return function(event) { return __method.apply(object, [event || window.event].concat(args)); } }, curry: function() { if (!arguments.length) return this; var __method = this, args = $A(arguments); return function() { return __method.apply(this, args.concat($A(arguments))); } }, delay: function() { var __method = this, args = $A(arguments), timeout = args.shift() * 1000; return window.setTimeout(function() { return __method.apply(__method, args); }, timeout); }, defer: function() { var args = [0.01].concat($A(arguments)); return this.delay.apply(this, args); }, wrap: function(wrapper) { var __method = this; return function() { return wrapper.apply(this, [__method.bind(this)].concat($A(arguments))); } }, methodize: function() { if (this._methodized) return this._methodized; var __method = this; return this._methodized = function() { return __method.apply(null, [this].concat($A(arguments))); }; } }); Date.prototype.toJSON = function() { return '"' + this.getUTCFullYear() + '-' + (this.getUTCMonth() + 1).toPaddedString(2) + '-' + this.getUTCDate().toPaddedString(2) + 'T' + this.getUTCHours().toPaddedString(2) + ':' + this.getUTCMinutes().toPaddedString(2) + ':' + this.getUTCSeconds().toPaddedString(2) + 'Z"'; }; var Try = { these: function() { var returnValue; for (var i = 0, length = arguments.length; i < length; i++) { var lambda = arguments[i]; try { returnValue = lambda(); break; } catch (e) { } } return returnValue; } }; RegExp.prototype.match = RegExp.prototype.test; RegExp.escape = function(str) { return String(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1'); }; /*--------------------------------------------------------------------------*/ var PeriodicalExecuter = Class.create({ initialize: function(callback, frequency) { this.callback = callback; this.frequency = frequency; this.currentlyExecuting = false; this.registerCallback(); }, registerCallback: function() { this.timer = setInterval(this.onTimerEvent.bind(this), this.frequency * 1000); }, execute: function() { this.callback(this); }, stop: function() { if (!this.timer) return; clearInterval(this.timer); this.timer = null; }, onTimerEvent: function() { if (!this.currentlyExecuting) { try { this.currentlyExecuting = true; this.execute(); } finally { this.currentlyExecuting = false; } } } }); Object.extend(String, { interpret: function(value) { return value == null ? '' : String(value); }, specialChar: { '\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '\\': '\\\\' } }); Object.extend(String.prototype, { gsub: function(pattern, replacement) { var result = '', source = this, match; replacement = arguments.callee.prepareReplacement(replacement); while (source.length > 0) { if (match = source.match(pattern)) { result += source.slice(0, match.index); result += String.interpret(replacement(match)); source = source.slice(match.index + match[0].length); } else { result += source, source = ''; } } return result; }, sub: function(pattern, replacement, count) { replacement = this.gsub.prepareReplacement(replacement); count = Object.isUndefined(count) ? 1 : count; return this.gsub(pattern, function(match) { if (--count < 0) return match[0]; return replacement(match); }); }, scan: function(pattern, iterator) { this.gsub(pattern, iterator); return String(this); }, truncate: function(length, truncation) { length = length || 30; truncation = Object.isUndefined(truncation) ? '...' : truncation; return this.length > length ? this.slice(0, length - truncation.length) + truncation : String(this); }, strip: function() { return this.replace(/^\s+/, '').replace(/\s+$/, ''); }, stripTags: function() { return this.replace(/<\/?[^>]+>/gi, ''); }, stripScripts: function() { return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), ''); }, extractScripts: function() { var matchAll = new RegExp(Prototype.ScriptFragment, 'img'); var matchOne = new RegExp(Prototype.ScriptFragment, 'im'); return (this.match(matchAll) || []).map(function(scriptTag) { return (scriptTag.match(matchOne) || ['', ''])[1]; }); }, evalScripts: function() { return this.extractScripts().map(function(script) { return eval(script) }); }, escapeHTML: function() { var self = arguments.callee; self.text.data = this; return self.div.innerHTML; }, unescapeHTML: function() { var div = new Element('div'); div.innerHTML = this.stripTags(); return div.childNodes[0] ? (div.childNodes.length > 1 ? $A(div.childNodes).inject('', function(memo, node) { return memo+node.nodeValue }) : div.childNodes[0].nodeValue) : ''; }, toQueryParams: function(separator) { var match = this.strip().match(/([^?#]*)(#.*)?$/); if (!match) return { }; return match[1].split(separator || '&').inject({ }, function(hash, pair) { if ((pair = pair.split('='))[0]) { var key = decodeURIComponent(pair.shift()); var value = pair.length > 1 ? pair.join('=') : pair[0]; if (value != undefined) value = decodeURIComponent(value); if (key in hash) { if (!Object.isArray(hash[key])) hash[key] = [hash[key]]; hash[key].push(value); } else hash[key] = value; } return hash; }); }, toArray: function() { return this.split(''); }, succ: function() { return this.slice(0, this.length - 1) + String.fromCharCode(this.charCodeAt(this.length - 1) + 1); }, times: function(count) { return count < 1 ? '' : new Array(count + 1).join(this); }, camelize: function() { var parts = this.split('-'), len = parts.length; if (len == 1) return parts[0]; var camelized = this.charAt(0) == '-' ? parts[0].charAt(0).toUpperCase() + parts[0].substring(1) : parts[0]; for (var i = 1; i < len; i++) camelized += parts[i].charAt(0).toUpperCase() + parts[i].substring(1); return camelized; }, capitalize: function() { return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase(); }, underscore: function() { return this.gsub(/::/, '/').gsub(/([A-Z]+)([A-Z][a-z])/,'#{1}_#{2}').gsub(/([a-z\d])([A-Z])/,'#{1}_#{2}').gsub(/-/,'_').toLowerCase(); }, dasherize: function() { return this.gsub(/_/,'-'); }, inspect: function(useDoubleQuotes) { var escapedString = this.gsub(/[\x00-\x1f\\]/, function(match) { var character = String.specialChar[match[0]]; return character ? character : '\\u00' + match[0].charCodeAt().toPaddedString(2, 16); }); if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') + '"'; return "'" + escapedString.replace(/'/g, '\\\'') + "'"; }, toJSON: function() { return this.inspect(true); }, unfilterJSON: function(filter) { return this.sub(filter || Prototype.JSONFilter, '#{1}'); }, isJSON: function() { var str = this; if (str.blank()) return false; str = this.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, ''); return (/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(str); }, evalJSON: function(sanitize) { var json = this.unfilterJSON(); try { if (!sanitize || json.isJSON()) return eval('(' + json + ')'); } catch (e) { } throw new SyntaxError('Badly formed JSON string: ' + this.inspect()); }, include: function(pattern) { return this.indexOf(pattern) > -1; }, startsWith: function(pattern) { return this.indexOf(pattern) === 0; }, endsWith: function(pattern) { var d = this.length - pattern.length; return d >= 0 && this.lastIndexOf(pattern) === d; }, empty: function() { return this == ''; }, blank: function() { return /^\s*$/.test(this); }, interpolate: function(object, pattern) { return new Template(this, pattern).evaluate(object); } }); if (Prototype.Browser.WebKit || Prototype.Browser.IE) Object.extend(String.prototype, { escapeHTML: function() { return this.replace(/&/g,'&').replace(//g,'>'); }, unescapeHTML: function() { return this.stripTags().replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>'); } }); String.prototype.gsub.prepareReplacement = function(replacement) { if (Object.isFunction(replacement)) return replacement; var template = new Template(replacement); return function(match) { return template.evaluate(match) }; }; String.prototype.parseQuery = String.prototype.toQueryParams; Object.extend(String.prototype.escapeHTML, { div: document.createElement('div'), text: document.createTextNode('') }); String.prototype.escapeHTML.div.appendChild(String.prototype.escapeHTML.text); var Template = Class.create({ initialize: function(template, pattern) { this.template = template.toString(); this.pattern = pattern || Template.Pattern; }, evaluate: function(object) { if (Object.isFunction(object.toTemplateReplacements)) object = object.toTemplateReplacements(); return this.template.gsub(this.pattern, function(match) { if (object == null) return ''; var before = match[1] || ''; if (before == '\\') return match[2]; var ctx = object, expr = match[3]; var pattern = /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/; match = pattern.exec(expr); if (match == null) return before; while (match != null) { var comp = match[1].startsWith('[') ? match[2].gsub('\\\\]', ']') : match[1]; ctx = ctx[comp]; if (null == ctx || '' == match[3]) break; expr = expr.substring('[' == match[3] ? match[1].length : match[0].length); match = pattern.exec(expr); } return before + String.interpret(ctx); }); } }); Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/; var $break = { }; var Enumerable = { each: function(iterator, context) { var index = 0; try { this._each(function(value) { iterator.call(context, value, index++); }); } catch (e) { if (e != $break) throw e; } return this; }, eachSlice: function(number, iterator, context) { var index = -number, slices = [], array = this.toArray(); if (number < 1) return array; while ((index += number) < array.length) slices.push(array.slice(index, index+number)); return slices.collect(iterator, context); }, all: function(iterator, context) { iterator = iterator || Prototype.K; var result = true; this.each(function(value, index) { result = result && !!iterator.call(context, value, index); if (!result) throw $break; }); return result; }, any: function(iterator, context) { iterator = iterator || Prototype.K; var result = false; this.each(function(value, index) { if (result = !!iterator.call(context, value, index)) throw $break; }); return result; }, collect: function(iterator, context) { iterator = iterator || Prototype.K; var results = []; this.each(function(value, index) { results.push(iterator.call(context, value, index)); }); return results; }, detect: function(iterator, context) { var result; this.each(function(value, index) { if (iterator.call(context, value, index)) { result = value; throw $break; } }); return result; }, findAll: function(iterator, context) { var results = []; this.each(function(value, index) { if (iterator.call(context, value, index)) results.push(value); }); return results; }, grep: function(filter, iterator, context) { iterator = iterator || Prototype.K; var results = []; if (Object.isString(filter)) filter = new RegExp(filter); this.each(function(value, index) { if (filter.match(value)) results.push(iterator.call(context, value, index)); }); return results; }, include: function(object) { if (Object.isFunction(this.indexOf)) if (this.indexOf(object) != -1) return true; var found = false; this.each(function(value) { if (value == object) { found = true; throw $break; } }); return found; }, inGroupsOf: function(number, fillWith) { fillWith = Object.isUndefined(fillWith) ? null : fillWith; return this.eachSlice(number, function(slice) { while(slice.length < number) slice.push(fillWith); return slice; }); }, inject: function(memo, iterator, context) { this.each(function(value, index) { memo = iterator.call(context, memo, value, index); }); return memo; }, invoke: function(method) { var args = $A(arguments).slice(1); return this.map(function(value) { return value[method].apply(value, args); }); }, max: function(iterator, context) { iterator = iterator || Prototype.K; var result; this.each(function(value, index) { value = iterator.call(context, value, index); if (result == null || value >= result) result = value; }); return result; }, min: function(iterator, context) { iterator = iterator || Prototype.K; var result; this.each(function(value, index) { value = iterator.call(context, value, index); if (result == null || value < result) result = value; }); return result; }, partition: function(iterator, context) { iterator = iterator || Prototype.K; var trues = [], falses = []; this.each(function(value, index) { (iterator.call(context, value, index) ? trues : falses).push(value); }); return [trues, falses]; }, pluck: function(property) { var results = []; this.each(function(value) { results.push(value[property]); }); return results; }, reject: function(iterator, context) { var results = []; this.each(function(value, index) { if (!iterator.call(context, value, index)) results.push(value); }); return results; }, sortBy: function(iterator, context) { return this.map(function(value, index) { return { value: value, criteria: iterator.call(context, value, index) }; }).sort(function(left, right) { var a = left.criteria, b = right.criteria; return a < b ? -1 : a > b ? 1 : 0; }).pluck('value'); }, toArray: function() { return this.map(); }, zip: function() { var iterator = Prototype.K, args = $A(arguments); if (Object.isFunction(args.last())) iterator = args.pop(); var collections = [this].concat(args).map($A); return this.map(function(value, index) { return iterator(collections.pluck(index)); }); }, size: function() { return this.toArray().length; }, inspect: function() { return '#'; } }; Object.extend(Enumerable, { map: Enumerable.collect, find: Enumerable.detect, select: Enumerable.findAll, filter: Enumerable.findAll, member: Enumerable.include, entries: Enumerable.toArray, every: Enumerable.all, some: Enumerable.any }); function $A(iterable) { if (!iterable) return []; if (iterable.toArray) return iterable.toArray(); var length = iterable.length || 0, results = new Array(length); while (length--) results[length] = iterable[length]; return results; } if (Prototype.Browser.WebKit) { $A = function(iterable) { if (!iterable) return []; // In Safari, only use the `toArray` method if it's not a NodeList. // A NodeList is a function, has an function `item` property, and a numeric // `length` property. Adapted from Google Doctype. if (!(typeof iterable === 'function' && typeof iterable.length === 'number' && typeof iterable.item === 'function') && iterable.toArray) return iterable.toArray(); var length = iterable.length || 0, results = new Array(length); while (length--) results[length] = iterable[length]; return results; }; } Array.from = $A; Object.extend(Array.prototype, Enumerable); if (!Array.prototype._reverse) Array.prototype._reverse = Array.prototype.reverse; Object.extend(Array.prototype, { _each: function(iterator) { for (var i = 0, length = this.length; i < length; i++) iterator(this[i]); }, clear: function() { this.length = 0; return this; }, first: function() { return this[0]; }, last: function() { return this[this.length - 1]; }, compact: function() { return this.select(function(value) { return value != null; }); }, flatten: function() { return this.inject([], function(array, value) { return array.concat(Object.isArray(value) ? value.flatten() : [value]); }); }, without: function() { var values = $A(arguments); return this.select(function(value) { return !values.include(value); }); }, reverse: function(inline) { return (inline !== false ? this : this.toArray())._reverse(); }, reduce: function() { return this.length > 1 ? this : this[0]; }, uniq: function(sorted) { return this.inject([], function(array, value, index) { if (0 == index || (sorted ? array.last() != value : !array.include(value))) array.push(value); return array; }); }, intersect: function(array) { return this.uniq().findAll(function(item) { return array.detect(function(value) { return item === value }); }); }, clone: function() { return [].concat(this); }, size: function() { return this.length; }, inspect: function() { return '[' + this.map(Object.inspect).join(', ') + ']'; }, toJSON: function() { var results = []; this.each(function(object) { var value = Object.toJSON(object); if (!Object.isUndefined(value)) results.push(value); }); return '[' + results.join(', ') + ']'; } }); // use native browser JS 1.6 implementation if available if (Object.isFunction(Array.prototype.forEach)) Array.prototype._each = Array.prototype.forEach; if (!Array.prototype.indexOf) Array.prototype.indexOf = function(item, i) { i || (i = 0); var length = this.length; if (i < 0) i = length + i; for (; i < length; i++) if (this[i] === item) return i; return -1; }; if (!Array.prototype.lastIndexOf) Array.prototype.lastIndexOf = function(item, i) { i = isNaN(i) ? this.length : (i < 0 ? this.length + i : i) + 1; var n = this.slice(0, i).reverse().indexOf(item); return (n < 0) ? n : i - n - 1; }; Array.prototype.toArray = Array.prototype.clone; function $w(string) { if (!Object.isString(string)) return []; string = string.strip(); return string ? string.split(/\s+/) : []; } if (Prototype.Browser.Opera){ Array.prototype.concat = function() { var array = []; for (var i = 0, length = this.length; i < length; i++) array.push(this[i]); for (var i = 0, length = arguments.length; i < length; i++) { if (Object.isArray(arguments[i])) { for (var j = 0, arrayLength = arguments[i].length; j < arrayLength; j++) array.push(arguments[i][j]); } else { array.push(arguments[i]); } } return array; }; } Object.extend(Number.prototype, { toColorPart: function() { return this.toPaddedString(2, 16); }, succ: function() { return this + 1; }, times: function(iterator, context) { $R(0, this, true).each(iterator, context); return this; }, toPaddedString: function(length, radix) { var string = this.toString(radix || 10); return '0'.times(length - string.length) + string; }, toJSON: function() { return isFinite(this) ? this.toString() : 'null'; } }); $w('abs round ceil floor').each(function(method){ Number.prototype[method] = Math[method].methodize(); }); function $H(object) { return new Hash(object); }; var Hash = Class.create(Enumerable, (function() { function toQueryPair(key, value) { if (Object.isUndefined(value)) return key; return key + '=' + encodeURIComponent(String.interpret(value)); } return { initialize: function(object) { this._object = Object.isHash(object) ? object.toObject() : Object.clone(object); }, _each: function(iterator) { for (var key in this._object) { var value = this._object[key], pair = [key, value]; pair.key = key; pair.value = value; iterator(pair); } }, set: function(key, value) { return this._object[key] = value; }, get: function(key) { // simulating poorly supported hasOwnProperty if (this._object[key] !== Object.prototype[key]) return this._object[key]; }, unset: function(key) { var value = this._object[key]; delete this._object[key]; return value; }, toObject: function() { return Object.clone(this._object); }, keys: function() { return this.pluck('key'); }, values: function() { return this.pluck('value'); }, index: function(value) { var match = this.detect(function(pair) { return pair.value === value; }); return match && match.key; }, merge: function(object) { return this.clone().update(object); }, update: function(object) { return new Hash(object).inject(this, function(result, pair) { result.set(pair.key, pair.value); return result; }); }, toQueryString: function() { return this.inject([], function(results, pair) { var key = encodeURIComponent(pair.key), values = pair.value; if (values && typeof values == 'object') { if (Object.isArray(values)) return results.concat(values.map(toQueryPair.curry(key))); } else results.push(toQueryPair(key, values)); return results; }).join('&'); }, inspect: function() { return '#'; }, toJSON: function() { return Object.toJSON(this.toObject()); }, clone: function() { return new Hash(this); } } })()); Hash.prototype.toTemplateReplacements = Hash.prototype.toObject; Hash.from = $H; var ObjectRange = Class.create(Enumerable, { initialize: function(start, end, exclusive) { this.start = start; this.end = end; this.exclusive = exclusive; }, _each: function(iterator) { var value = this.start; while (this.include(value)) { iterator(value); value = value.succ(); } }, include: function(value) { if (value < this.start) return false; if (this.exclusive) return value < this.end; return value <= this.end; } }); var $R = function(start, end, exclusive) { return new ObjectRange(start, end, exclusive); }; var Ajax = { getTransport: function() { return Try.these( function() {return new XMLHttpRequest()}, function() {return new ActiveXObject('Msxml2.XMLHTTP')}, function() {return new ActiveXObject('Microsoft.XMLHTTP')} ) || false; }, activeRequestCount: 0 }; Ajax.Responders = { responders: [], _each: function(iterator) { this.responders._each(iterator); }, register: function(responder) { if (!this.include(responder)) this.responders.push(responder); }, unregister: function(responder) { this.responders = this.responders.without(responder); }, dispatch: function(callback, request, transport, json) { this.each(function(responder) { if (Object.isFunction(responder[callback])) { try { responder[callback].apply(responder, [request, transport, json]); } catch (e) { } } }); } }; Object.extend(Ajax.Responders, Enumerable); Ajax.Responders.register({ onCreate: function() { Ajax.activeRequestCount++ }, onComplete: function() { Ajax.activeRequestCount-- } }); Ajax.Base = Class.create({ initialize: function(options) { this.options = { method: 'post', asynchronous: true, contentType: 'application/x-www-form-urlencoded', encoding: 'UTF-8', parameters: '', evalJSON: true, evalJS: true }; Object.extend(this.options, options || { }); this.options.method = this.options.method.toLowerCase(); if (Object.isString(this.options.parameters)) this.options.parameters = this.options.parameters.toQueryParams(); else if (Object.isHash(this.options.parameters)) this.options.parameters = this.options.parameters.toObject(); } }); Ajax.Request = Class.create(Ajax.Base, { _complete: false, initialize: function($super, url, options) { $super(options); this.transport = Ajax.getTransport(); this.request(url); }, request: function(url) { this.url = url; this.method = this.options.method; var params = Object.clone(this.options.parameters); if (!['get', 'post'].include(this.method)) { // simulate other verbs over post params['_method'] = this.method; this.method = 'post'; } this.parameters = params; if (params = Object.toQueryString(params)) { // when GET, append parameters to URL if (this.method == 'get') this.url += (this.url.include('?') ? '&' : '?') + params; else if (/Konqueror|Safari|KHTML/.test(navigator.userAgent)) params += '&_='; } try { var response = new Ajax.Response(this); if (this.options.onCreate) this.options.onCreate(response); Ajax.Responders.dispatch('onCreate', this, response); this.transport.open(this.method.toUpperCase(), this.url, this.options.asynchronous); if (this.options.asynchronous) this.respondToReadyState.bind(this).defer(1); this.transport.onreadystatechange = this.onStateChange.bind(this); this.setRequestHeaders(); this.body = this.method == 'post' ? (this.options.postBody || params) : null; this.transport.send(this.body); /* Force Firefox to handle ready state 4 for synchronous requests */ if (!this.options.asynchronous && this.transport.overrideMimeType) this.onStateChange(); } catch (e) { this.dispatchException(e); } }, onStateChange: function() { var readyState = this.transport.readyState; if (readyState > 1 && !((readyState == 4) && this._complete)) this.respondToReadyState(this.transport.readyState); }, setRequestHeaders: function() { var headers = { 'X-Requested-With': 'XMLHttpRequest', 'X-Prototype-Version': Prototype.Version, 'Accept': 'text/javascript, text/html, application/xml, text/xml, */*' }; if (this.method == 'post') { headers['Content-type'] = this.options.contentType + (this.options.encoding ? '; charset=' + this.options.encoding : ''); /* Force "Connection: close" for older Mozilla browsers to work * around a bug where XMLHttpRequest sends an incorrect * Content-length header. See Mozilla Bugzilla #246651. */ if (this.transport.overrideMimeType && (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 2005) headers['Connection'] = 'close'; } // user-defined headers if (typeof this.options.requestHeaders == 'object') { var extras = this.options.requestHeaders; if (Object.isFunction(extras.push)) for (var i = 0, length = extras.length; i < length; i += 2) headers[extras[i]] = extras[i+1]; else $H(extras).each(function(pair) { headers[pair.key] = pair.value }); } for (var name in headers) this.transport.setRequestHeader(name, headers[name]); }, success: function() { var status = this.getStatus(); return !status || (status >= 200 && status < 300); }, getStatus: function() { try { return this.transport.status || 0; } catch (e) { return 0 } }, respondToReadyState: function(readyState) { var state = Ajax.Request.Events[readyState], response = new Ajax.Response(this); if (state == 'Complete') { try { this._complete = true; (this.options['on' + response.status] || this.options['on' + (this.success() ? 'Success' : 'Failure')] || Prototype.emptyFunction)(response, response.headerJSON); } catch (e) { this.dispatchException(e); } var contentType = response.getHeader('Content-type'); if (this.options.evalJS == 'force' || (this.options.evalJS && this.isSameOrigin() && contentType && contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i))) this.evalResponse(); } try { (this.options['on' + state] || Prototype.emptyFunction)(response, response.headerJSON); Ajax.Responders.dispatch('on' + state, this, response, response.headerJSON); } catch (e) { this.dispatchException(e); } if (state == 'Complete') { // avoid memory leak in MSIE: clean up this.transport.onreadystatechange = Prototype.emptyFunction; } }, isSameOrigin: function() { var m = this.url.match(/^\s*https?:\/\/[^\/]*/); return !m || (m[0] == '#{protocol}//#{domain}#{port}'.interpolate({ protocol: location.protocol, domain: document.domain, port: location.port ? ':' + location.port : '' })); }, getHeader: function(name) { try { return this.transport.getResponseHeader(name) || null; } catch (e) { return null } }, evalResponse: function() { try { return eval((this.transport.responseText || '').unfilterJSON()); } catch (e) { this.dispatchException(e); } }, dispatchException: function(exception) { (this.options.onException || Prototype.emptyFunction)(this, exception); Ajax.Responders.dispatch('onException', this, exception); } }); Ajax.Request.Events = ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete']; Ajax.Response = Class.create({ initialize: function(request){ this.request = request; var transport = this.transport = request.transport, readyState = this.readyState = transport.readyState; if((readyState > 2 && !Prototype.Browser.IE) || readyState == 4) { this.status = this.getStatus(); this.statusText = this.getStatusText(); this.responseText = String.interpret(transport.responseText); this.headerJSON = this._getHeaderJSON(); } if(readyState == 4) { var xml = transport.responseXML; this.responseXML = Object.isUndefined(xml) ? null : xml; this.responseJSON = this._getResponseJSON(); } }, status: 0, statusText: '', getStatus: Ajax.Request.prototype.getStatus, getStatusText: function() { try { return this.transport.statusText || ''; } catch (e) { return '' } }, getHeader: Ajax.Request.prototype.getHeader, getAllHeaders: function() { try { return this.getAllResponseHeaders(); } catch (e) { return null } }, getResponseHeader: function(name) { return this.transport.getResponseHeader(name); }, getAllResponseHeaders: function() { return this.transport.getAllResponseHeaders(); }, _getHeaderJSON: function() { var json = this.getHeader('X-JSON'); if (!json) return null; json = decodeURIComponent(escape(json)); try { return json.evalJSON(this.request.options.sanitizeJSON || !this.request.isSameOrigin()); } catch (e) { this.request.dispatchException(e); } }, _getResponseJSON: function() { var options = this.request.options; if (!options.evalJSON || (options.evalJSON != 'force' && !(this.getHeader('Content-type') || '').include('application/json')) || this.responseText.blank()) return null; try { return this.responseText.evalJSON(options.sanitizeJSON || !this.request.isSameOrigin()); } catch (e) { this.request.dispatchException(e); } } }); Ajax.Updater = Class.create(Ajax.Request, { initialize: function($super, container, url, options) { this.container = { success: (container.success || container), failure: (container.failure || (container.success ? null : container)) }; options = Object.clone(options); var onComplete = options.onComplete; options.onComplete = (function(response, json) { this.updateContent(response.responseText); if (Object.isFunction(onComplete)) onComplete(response, json); }).bind(this); $super(url, options); }, updateContent: function(responseText) { var receiver = this.container[this.success() ? 'success' : 'failure'], options = this.options; if (!options.evalScripts) responseText = responseText.stripScripts(); if (receiver = $(receiver)) { if (options.insertion) { if (Object.isString(options.insertion)) { var insertion = { }; insertion[options.insertion] = responseText; receiver.insert(insertion); } else options.insertion(receiver, responseText); } else receiver.update(responseText); } } }); Ajax.PeriodicalUpdater = Class.create(Ajax.Base, { initialize: function($super, container, url, options) { $super(options); this.onComplete = this.options.onComplete; this.frequency = (this.options.frequency || 2); this.decay = (this.options.decay || 1); this.updater = { }; this.container = container; this.url = url; this.start(); }, start: function() { this.options.onComplete = this.updateComplete.bind(this); this.onTimerEvent(); }, stop: function() { this.updater.options.onComplete = undefined; clearTimeout(this.timer); (this.onComplete || Prototype.emptyFunction).apply(this, arguments); }, updateComplete: function(response) { if (this.options.decay) { this.decay = (response.responseText == this.lastText ? this.decay * this.options.decay : 1); this.lastText = response.responseText; } this.timer = this.onTimerEvent.bind(this).delay(this.decay * this.frequency); }, onTimerEvent: function() { this.updater = new Ajax.Updater(this.container, this.url, this.options); } }); function $(element) { if (arguments.length > 1) { for (var i = 0, elements = [], length = arguments.length; i < length; i++) elements.push($(arguments[i])); return elements; } if (Object.isString(element)) element = document.getElementById(element); return Element.extend(element); } if (Prototype.BrowserFeatures.XPath) { document._getElementsByXPath = function(expression, parentElement) { var results = []; var query = document.evaluate(expression, $(parentElement) || document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); for (var i = 0, length = query.snapshotLength; i < length; i++) results.push(Element.extend(query.snapshotItem(i))); return results; }; } /*--------------------------------------------------------------------------*/ if (!window.Node) var Node = { }; if (!Node.ELEMENT_NODE) { // DOM level 2 ECMAScript Language Binding Object.extend(Node, { ELEMENT_NODE: 1, ATTRIBUTE_NODE: 2, TEXT_NODE: 3, CDATA_SECTION_NODE: 4, ENTITY_REFERENCE_NODE: 5, ENTITY_NODE: 6, PROCESSING_INSTRUCTION_NODE: 7, COMMENT_NODE: 8, DOCUMENT_NODE: 9, DOCUMENT_TYPE_NODE: 10, DOCUMENT_FRAGMENT_NODE: 11, NOTATION_NODE: 12 }); } (function() { var element = this.Element; this.Element = function(tagName, attributes) { attributes = attributes || { }; tagName = tagName.toLowerCase(); var cache = Element.cache; if (Prototype.Browser.IE && attributes.name) { tagName = '<' + tagName + ' name="' + attributes.name + '">'; delete attributes.name; return Element.writeAttribute(document.createElement(tagName), attributes); } if (!cache[tagName]) cache[tagName] = Element.extend(document.createElement(tagName)); return Element.writeAttribute(cache[tagName].cloneNode(false), attributes); }; Object.extend(this.Element, element || { }); if (element) this.Element.prototype = element.prototype; }).call(window); Element.cache = { }; Element.Methods = { visible: function(element) { return $(element).style.display != 'none'; }, toggle: function(element) { element = $(element); Element[Element.visible(element) ? 'hide' : 'show'](element); return element; }, hide: function(element) { element = $(element); element.style.display = 'none'; return element; }, show: function(element) { element = $(element); element.style.display = ''; return element; }, remove: function(element) { element = $(element); element.parentNode.removeChild(element); return element; }, update: function(element, content) { element = $(element); if (content && content.toElement) content = content.toElement(); if (Object.isElement(content)) return element.update().insert(content); content = Object.toHTML(content); element.innerHTML = content.stripScripts(); content.evalScripts.bind(content).defer(); return element; }, replace: function(element, content) { element = $(element); if (content && content.toElement) content = content.toElement(); else if (!Object.isElement(content)) { content = Object.toHTML(content); var range = element.ownerDocument.createRange(); range.selectNode(element); content.evalScripts.bind(content).defer(); content = range.createContextualFragment(content.stripScripts()); } element.parentNode.replaceChild(content, element); return element; }, insert: function(element, insertions) { element = $(element); if (Object.isString(insertions) || Object.isNumber(insertions) || Object.isElement(insertions) || (insertions && (insertions.toElement || insertions.toHTML))) insertions = {bottom:insertions}; var content, insert, tagName, childNodes; for (var position in insertions) { content = insertions[position]; position = position.toLowerCase(); insert = Element._insertionTranslations[position]; if (content && content.toElement) content = content.toElement(); if (Object.isElement(content)) { insert(element, content); continue; } content = Object.toHTML(content); tagName = ((position == 'before' || position == 'after') ? element.parentNode : element).tagName.toUpperCase(); childNodes = Element._getContentFromAnonymousElement(tagName, content.stripScripts()); if (position == 'top' || position == 'after') childNodes.reverse(); childNodes.each(insert.curry(element)); content.evalScripts.bind(content).defer(); } return element; }, wrap: function(element, wrapper, attributes) { element = $(element); if (Object.isElement(wrapper)) $(wrapper).writeAttribute(attributes || { }); else if (Object.isString(wrapper)) wrapper = new Element(wrapper, attributes); else wrapper = new Element('div', wrapper); if (element.parentNode) element.parentNode.replaceChild(wrapper, element); wrapper.appendChild(element); return wrapper; }, inspect: function(element) { element = $(element); var result = '<' + element.tagName.toLowerCase(); $H({'id': 'id', 'className': 'class'}).each(function(pair) { var property = pair.first(), attribute = pair.last(); var value = (element[property] || '').toString(); if (value) result += ' ' + attribute + '=' + value.inspect(true); }); return result + '>'; }, recursivelyCollect: function(element, property) { element = $(element); var elements = []; while (element = element[property]) if (element.nodeType == 1) elements.push(Element.extend(element)); return elements; }, ancestors: function(element) { return $(element).recursivelyCollect('parentNode'); }, descendants: function(element) { return $(element).select("*"); }, firstDescendant: function(element) { element = $(element).firstChild; while (element && element.nodeType != 1) element = element.nextSibling; return $(element); }, immediateDescendants: function(element) { if (!(element = $(element).firstChild)) return []; while (element && element.nodeType != 1) element = element.nextSibling; if (element) return [element].concat($(element).nextSiblings()); return []; }, previousSiblings: function(element) { return $(element).recursivelyCollect('previousSibling'); }, nextSiblings: function(element) { return $(element).recursivelyCollect('nextSibling'); }, siblings: function(element) { element = $(element); return element.previousSiblings().reverse().concat(element.nextSiblings()); }, match: function(element, selector) { if (Object.isString(selector)) selector = new Selector(selector); return selector.match($(element)); }, up: function(element, expression, index) { element = $(element); if (arguments.length == 1) return $(element.parentNode); var ancestors = element.ancestors(); return Object.isNumber(expression) ? ancestors[expression] : Selector.findElement(ancestors, expression, index); }, down: function(element, expression, index) { element = $(element); if (arguments.length == 1) return element.firstDescendant(); return Object.isNumber(expression) ? element.descendants()[expression] : Element.select(element, expression)[index || 0]; }, previous: function(element, expression, index) { element = $(element); if (arguments.length == 1) return $(Selector.handlers.previousElementSibling(element)); var previousSiblings = element.previousSiblings(); return Object.isNumber(expression) ? previousSiblings[expression] : Selector.findElement(previousSiblings, expression, index); }, next: function(element, expression, index) { element = $(element); if (arguments.length == 1) return $(Selector.handlers.nextElementSibling(element)); var nextSiblings = element.nextSiblings(); return Object.isNumber(expression) ? nextSiblings[expression] : Selector.findElement(nextSiblings, expression, index); }, select: function() { var args = $A(arguments), element = $(args.shift()); return Selector.findChildElements(element, args); }, adjacent: function() { var args = $A(arguments), element = $(args.shift()); return Selector.findChildElements(element.parentNode, args).without(element); }, identify: function(element) { element = $(element); var id = element.readAttribute('id'), self = arguments.callee; if (id) return id; do { id = 'anonymous_element_' + self.counter++ } while ($(id)); element.writeAttribute('id', id); return id; }, readAttribute: function(element, name) { element = $(element); if (Prototype.Browser.IE) { var t = Element._attributeTranslations.read; if (t.values[name]) return t.values[name](element, name); if (t.names[name]) name = t.names[name]; if (name.include(':')) { return (!element.attributes || !element.attributes[name]) ? null : element.attributes[name].value; } } return element.getAttribute(name); }, writeAttribute: function(element, name, value) { element = $(element); var attributes = { }, t = Element._attributeTranslations.write; if (typeof name == 'object') attributes = name; else attributes[name] = Object.isUndefined(value) ? true : value; for (var attr in attributes) { name = t.names[attr] || attr; value = attributes[attr]; if (t.values[attr]) name = t.values[attr](element, value); if (value === false || value === null) element.removeAttribute(name); else if (value === true) element.setAttribute(name, name); else element.setAttribute(name, value); } return element; }, getHeight: function(element) { return $(element).getDimensions().height; }, getWidth: function(element) { return $(element).getDimensions().width; }, classNames: function(element) { return new Element.ClassNames(element); }, hasClassName: function(element, className) { if (!(element = $(element))) return; var elementClassName = element.className; return (elementClassName.length > 0 && (elementClassName == className || new RegExp("(^|\\s)" + className + "(\\s|$)").test(elementClassName))); }, addClassName: function(element, className) { if (!(element = $(element))) return; if (!element.hasClassName(className)) element.className += (element.className ? ' ' : '') + className; return element; }, removeClassName: function(element, className) { if (!(element = $(element))) return; element.className = element.className.replace( new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ').strip(); return element; }, toggleClassName: function(element, className) { if (!(element = $(element))) return; return element[element.hasClassName(className) ? 'removeClassName' : 'addClassName'](className); }, // removes whitespace-only text node children cleanWhitespace: function(element) { element = $(element); var node = element.firstChild; while (node) { var nextNode = node.nextSibling; if (node.nodeType == 3 && !/\S/.test(node.nodeValue)) element.removeChild(node); node = nextNode; } return element; }, empty: function(element) { return $(element).innerHTML.blank(); }, descendantOf: function(element, ancestor) { element = $(element), ancestor = $(ancestor); if (element.compareDocumentPosition) return (element.compareDocumentPosition(ancestor) & 8) === 8; if (ancestor.contains) return ancestor.contains(element) && ancestor !== element; while (element = element.parentNode) if (element == ancestor) return true; return false; }, scrollTo: function(element) { element = $(element); var pos = element.cumulativeOffset(); window.scrollTo(pos[0], pos[1]); return element; }, getStyle: function(element, style) { element = $(element); style = style == 'float' ? 'cssFloat' : style.camelize(); var value = element.style[style]; if (!value || value == 'auto') { var css = document.defaultView.getComputedStyle(element, null); value = css ? css[style] : null; } if (style == 'opacity') return value ? parseFloat(value) : 1.0; return value == 'auto' ? null : value; }, getOpacity: function(element) { return $(element).getStyle('opacity'); }, setStyle: function(element, styles) { element = $(element); var elementStyle = element.style, match; if (Object.isString(styles)) { element.style.cssText += ';' + styles; return styles.include('opacity') ? element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : element; } for (var property in styles) if (property == 'opacity') element.setOpacity(styles[property]); else elementStyle[(property == 'float' || property == 'cssFloat') ? (Object.isUndefined(elementStyle.styleFloat) ? 'cssFloat' : 'styleFloat') : property] = styles[property]; return element; }, setOpacity: function(element, value) { element = $(element); element.style.opacity = (value == 1 || value === '') ? '' : (value < 0.00001) ? 0 : value; return element; }, getDimensions: function(element) { element = $(element); var display = element.getStyle('display'); if (display != 'none' && display != null) // Safari bug return {width: element.offsetWidth, height: element.offsetHeight}; // All *Width and *Height properties give 0 on elements with display none, // so enable the element temporarily var els = element.style; var originalVisibility = els.visibility; var originalPosition = els.position; var originalDisplay = els.display; els.visibility = 'hidden'; els.position = 'absolute'; els.display = 'block'; var originalWidth = element.clientWidth; var originalHeight = element.clientHeight; els.display = originalDisplay; els.position = originalPosition; els.visibility = originalVisibility; return {width: originalWidth, height: originalHeight}; }, makePositioned: function(element) { element = $(element); var pos = Element.getStyle(element, 'position'); if (pos == 'static' || !pos) { element._madePositioned = true; element.style.position = 'relative'; // Opera returns the offset relative to the positioning context, when an // element is position relative but top and left have not been defined if (Prototype.Browser.Opera) { element.style.top = 0; element.style.left = 0; } } return element; }, undoPositioned: function(element) { element = $(element); if (element._madePositioned) { element._madePositioned = undefined; element.style.position = element.style.top = element.style.left = element.style.bottom = element.style.right = ''; } return element; }, makeClipping: function(element) { element = $(element); if (element._overflow) return element; element._overflow = Element.getStyle(element, 'overflow') || 'auto'; if (element._overflow !== 'hidden') element.style.overflow = 'hidden'; return element; }, undoClipping: function(element) { element = $(element); if (!element._overflow) return element; element.style.overflow = element._overflow == 'auto' ? '' : element._overflow; element._overflow = null; return element; }, cumulativeOffset: function(element) { var valueT = 0, valueL = 0; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; element = element.offsetParent; } while (element); return Element._returnOffset(valueL, valueT); }, positionedOffset: function(element) { var valueT = 0, valueL = 0; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; element = element.offsetParent; if (element) { if (element.tagName.toUpperCase() == 'BODY') break; var p = Element.getStyle(element, 'position'); if (p !== 'static') break; } } while (element); return Element._returnOffset(valueL, valueT); }, absolutize: function(element) { element = $(element); if (element.getStyle('position') == 'absolute') return element; // Position.prepare(); // To be done manually by Scripty when it needs it. var offsets = element.positionedOffset(); var top = offsets[1]; var left = offsets[0]; var width = element.clientWidth; var height = element.clientHeight; element._originalLeft = left - parseFloat(element.style.left || 0); element._originalTop = top - parseFloat(element.style.top || 0); element._originalWidth = element.style.width; element._originalHeight = element.style.height; element.style.position = 'absolute'; element.style.top = top + 'px'; element.style.left = left + 'px'; element.style.width = width + 'px'; element.style.height = height + 'px'; return element; }, relativize: function(element) { element = $(element); if (element.getStyle('position') == 'relative') return element; // Position.prepare(); // To be done manually by Scripty when it needs it. element.style.position = 'relative'; var top = parseFloat(element.style.top || 0) - (element._originalTop || 0); var left = parseFloat(element.style.left || 0) - (element._originalLeft || 0); element.style.top = top + 'px'; element.style.left = left + 'px'; element.style.height = element._originalHeight; element.style.width = element._originalWidth; return element; }, cumulativeScrollOffset: function(element) { var valueT = 0, valueL = 0; do { valueT += element.scrollTop || 0; valueL += element.scrollLeft || 0; element = element.parentNode; } while (element); return Element._returnOffset(valueL, valueT); }, getOffsetParent: function(element) { if (element.offsetParent) return $(element.offsetParent); if (element == document.body) return $(element); while ((element = element.parentNode) && element != document.body) if (Element.getStyle(element, 'position') != 'static') return $(element); return $(document.body); }, viewportOffset: function(forElement) { var valueT = 0, valueL = 0; var element = forElement; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; // Safari fix if (element.offsetParent == document.body && Element.getStyle(element, 'position') == 'absolute') break; } while (element = element.offsetParent); element = forElement; do { if (!Prototype.Browser.Opera || (element.tagName && (element.tagName.toUpperCase() == 'BODY'))) { valueT -= element.scrollTop || 0; valueL -= element.scrollLeft || 0; } } while (element = element.parentNode); return Element._returnOffset(valueL, valueT); }, clonePosition: function(element, source) { var options = Object.extend({ setLeft: true, setTop: true, setWidth: true, setHeight: true, offsetTop: 0, offsetLeft: 0 }, arguments[2] || { }); // find page position of source source = $(source); var p = source.viewportOffset(); // find coordinate system to use element = $(element); var delta = [0, 0]; var parent = null; // delta [0,0] will do fine with position: fixed elements, // position:absolute needs offsetParent deltas if (Element.getStyle(element, 'position') == 'absolute') { parent = element.getOffsetParent(); delta = parent.viewportOffset(); } // correct by body offsets (fixes Safari) if (parent == document.body) { delta[0] -= document.body.offsetLeft; delta[1] -= document.body.offsetTop; } // set position if (options.setLeft) element.style.left = (p[0] - delta[0] + options.offsetLeft) + 'px'; if (options.setTop) element.style.top = (p[1] - delta[1] + options.offsetTop) + 'px'; if (options.setWidth) element.style.width = source.offsetWidth + 'px'; if (options.setHeight) element.style.height = source.offsetHeight + 'px'; return element; } }; Element.Methods.identify.counter = 1; Object.extend(Element.Methods, { getElementsBySelector: Element.Methods.select, childElements: Element.Methods.immediateDescendants }); Element._attributeTranslations = { write: { names: { className: 'class', htmlFor: 'for' }, values: { } } }; if (Prototype.Browser.Opera) { Element.Methods.getStyle = Element.Methods.getStyle.wrap( function(proceed, element, style) { switch (style) { case 'left': case 'top': case 'right': case 'bottom': if (proceed(element, 'position') === 'static') return null; case 'height': case 'width': // returns '0px' for hidden elements; we want it to return null if (!Element.visible(element)) return null; // returns the border-box dimensions rather than the content-box // dimensions, so we subtract padding and borders from the value var dim = parseInt(proceed(element, style), 10); if (dim !== element['offset' + style.capitalize()]) return dim + 'px'; var properties; if (style === 'height') { properties = ['border-top-width', 'padding-top', 'padding-bottom', 'border-bottom-width']; } else { properties = ['border-left-width', 'padding-left', 'padding-right', 'border-right-width']; } return properties.inject(dim, function(memo, property) { var val = proceed(element, property); return val === null ? memo : memo - parseInt(val, 10); }) + 'px'; default: return proceed(element, style); } } ); Element.Methods.readAttribute = Element.Methods.readAttribute.wrap( function(proceed, element, attribute) { if (attribute === 'title') return element.title; return proceed(element, attribute); } ); } else if (Prototype.Browser.IE) { // IE doesn't report offsets correctly for static elements, so we change them // to "relative" to get the values, then change them back. Element.Methods.getOffsetParent = Element.Methods.getOffsetParent.wrap( function(proceed, element) { element = $(element); // IE throws an error if element is not in document try { element.offsetParent } catch(e) { return $(document.body) } var position = element.getStyle('position'); if (position !== 'static') return proceed(element); element.setStyle({ position: 'relative' }); var value = proceed(element); element.setStyle({ position: position }); return value; } ); $w('positionedOffset viewportOffset').each(function(method) { Element.Methods[method] = Element.Methods[method].wrap( function(proceed, element) { element = $(element); try { element.offsetParent } catch(e) { return Element._returnOffset(0,0) } var position = element.getStyle('position'); if (position !== 'static') return proceed(element); // Trigger hasLayout on the offset parent so that IE6 reports // accurate offsetTop and offsetLeft values for position: fixed. var offsetParent = element.getOffsetParent(); if (offsetParent && offsetParent.getStyle('position') === 'fixed') offsetParent.setStyle({ zoom: 1 }); element.setStyle({ position: 'relative' }); var value = proceed(element); element.setStyle({ position: position }); return value; } ); }); Element.Methods.cumulativeOffset = Element.Methods.cumulativeOffset.wrap( function(proceed, element) { try { element.offsetParent } catch(e) { return Element._returnOffset(0,0) } return proceed(element); } ); Element.Methods.getStyle = function(element, style) { element = $(element); style = (style == 'float' || style == 'cssFloat') ? 'styleFloat' : style.camelize(); var value = element.style[style]; if (!value && element.currentStyle) value = element.currentStyle[style]; if (style == 'opacity') { if (value = (element.getStyle('filter') || '').match(/alpha\(opacity=(.*)\)/)) if (value[1]) return parseFloat(value[1]) / 100; return 1.0; } if (value == 'auto') { if ((style == 'width' || style == 'height') && (element.getStyle('display') != 'none')) return element['offset' + style.capitalize()] + 'px'; return null; } return value; }; Element.Methods.setOpacity = function(element, value) { function stripAlpha(filter){ return filter.replace(/alpha\([^\)]*\)/gi,''); } element = $(element); var currentStyle = element.currentStyle; if ((currentStyle && !currentStyle.hasLayout) || (!currentStyle && element.style.zoom == 'normal')) element.style.zoom = 1; var filter = element.getStyle('filter'), style = element.style; if (value == 1 || value === '') { (filter = stripAlpha(filter)) ? style.filter = filter : style.removeAttribute('filter'); return element; } else if (value < 0.00001) value = 0; style.filter = stripAlpha(filter) + 'alpha(opacity=' + (value * 100) + ')'; return element; }; Element._attributeTranslations = { read: { names: { 'class': 'className', 'for': 'htmlFor' }, values: { _getAttr: function(element, attribute) { return element.getAttribute(attribute, 2); }, _getAttrNode: function(element, attribute) { var node = element.getAttributeNode(attribute); return node ? node.value : ""; }, _getEv: function(element, attribute) { attribute = element.getAttribute(attribute); return attribute ? attribute.toString().slice(23, -2) : null; }, _flag: function(element, attribute) { return $(element).hasAttribute(attribute) ? attribute : null; }, style: function(element) { return element.style.cssText.toLowerCase(); }, title: function(element) { return element.title; } } } }; Element._attributeTranslations.write = { names: Object.extend({ cellpadding: 'cellPadding', cellspacing: 'cellSpacing' }, Element._attributeTranslations.read.names), values: { checked: function(element, value) { element.checked = !!value; }, style: function(element, value) { element.style.cssText = value ? value : ''; } } }; Element._attributeTranslations.has = {}; $w('colSpan rowSpan vAlign dateTime accessKey tabIndex ' + 'encType maxLength readOnly longDesc frameBorder').each(function(attr) { Element._attributeTranslations.write.names[attr.toLowerCase()] = attr; Element._attributeTranslations.has[attr.toLowerCase()] = attr; }); (function(v) { Object.extend(v, { href: v._getAttr, src: v._getAttr, type: v._getAttr, action: v._getAttrNode, disabled: v._flag, checked: v._flag, readonly: v._flag, multiple: v._flag, onload: v._getEv, onunload: v._getEv, onclick: v._getEv, ondblclick: v._getEv, onmousedown: v._getEv, onmouseup: v._getEv, onmouseover: v._getEv, onmousemove: v._getEv, onmouseout: v._getEv, onfocus: v._getEv, onblur: v._getEv, onkeypress: v._getEv, onkeydown: v._getEv, onkeyup: v._getEv, onsubmit: v._getEv, onreset: v._getEv, onselect: v._getEv, onchange: v._getEv }); })(Element._attributeTranslations.read.values); } else if (Prototype.Browser.Gecko && /rv:1\.8\.0/.test(navigator.userAgent)) { Element.Methods.setOpacity = function(element, value) { element = $(element); element.style.opacity = (value == 1) ? 0.999999 : (value === '') ? '' : (value < 0.00001) ? 0 : value; return element; }; } else if (Prototype.Browser.WebKit) { Element.Methods.setOpacity = function(element, value) { element = $(element); element.style.opacity = (value == 1 || value === '') ? '' : (value < 0.00001) ? 0 : value; if (value == 1) if(element.tagName.toUpperCase() == 'IMG' && element.width) { element.width++; element.width--; } else try { var n = document.createTextNode(' '); element.appendChild(n); element.removeChild(n); } catch (e) { } return element; }; // Safari returns margins on body which is incorrect if the child is absolutely // positioned. For performance reasons, redefine Element#cumulativeOffset for // KHTML/WebKit only. Element.Methods.cumulativeOffset = function(element) { var valueT = 0, valueL = 0; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; if (element.offsetParent == document.body) if (Element.getStyle(element, 'position') == 'absolute') break; element = element.offsetParent; } while (element); return Element._returnOffset(valueL, valueT); }; } if (Prototype.Browser.IE || Prototype.Browser.Opera) { // IE and Opera are missing .innerHTML support for TABLE-related and SELECT elements Element.Methods.update = function(element, content) { element = $(element); if (content && content.toElement) content = content.toElement(); if (Object.isElement(content)) return element.update().insert(content); content = Object.toHTML(content); var tagName = element.tagName.toUpperCase(); if (tagName in Element._insertionTranslations.tags) { $A(element.childNodes).each(function(node) { element.removeChild(node) }); Element._getContentFromAnonymousElement(tagName, content.stripScripts()) .each(function(node) { element.appendChild(node) }); } else element.innerHTML = content.stripScripts(); content.evalScripts.bind(content).defer(); return element; }; } if ('outerHTML' in document.createElement('div')) { Element.Methods.replace = function(element, content) { element = $(element); if (content && content.toElement) content = content.toElement(); if (Object.isElement(content)) { element.parentNode.replaceChild(content, element); return element; } content = Object.toHTML(content); var parent = element.parentNode, tagName = parent.tagName.toUpperCase(); if (Element._insertionTranslations.tags[tagName]) { var nextSibling = element.next(); var fragments = Element._getContentFromAnonymousElement(tagName, content.stripScripts()); parent.removeChild(element); if (nextSibling) fragments.each(function(node) { parent.insertBefore(node, nextSibling) }); else fragments.each(function(node) { parent.appendChild(node) }); } else element.outerHTML = content.stripScripts(); content.evalScripts.bind(content).defer(); return element; }; } Element._returnOffset = function(l, t) { var result = [l, t]; result.left = l; result.top = t; return result; }; Element._getContentFromAnonymousElement = function(tagName, html) { var div = new Element('div'), t = Element._insertionTranslations.tags[tagName]; if (t) { div.innerHTML = t[0] + html + t[1]; t[2].times(function() { div = div.firstChild }); } else div.innerHTML = html; return $A(div.childNodes); }; Element._insertionTranslations = { before: function(element, node) { element.parentNode.insertBefore(node, element); }, top: function(element, node) { element.insertBefore(node, element.firstChild); }, bottom: function(element, node) { element.appendChild(node); }, after: function(element, node) { element.parentNode.insertBefore(node, element.nextSibling); }, tags: { TABLE: ['', '
    ', 1], TBODY: ['', '
    ', 2], TR: ['', '
    ', 3], TD: ['
    ', '
    ', 4], SELECT: ['', 1] } }; (function() { Object.extend(this.tags, { THEAD: this.tags.TBODY, TFOOT: this.tags.TBODY, TH: this.tags.TD }); }).call(Element._insertionTranslations); Element.Methods.Simulated = { hasAttribute: function(element, attribute) { attribute = Element._attributeTranslations.has[attribute] || attribute; var node = $(element).getAttributeNode(attribute); return !!(node && node.specified); } }; Element.Methods.ByTag = { }; Object.extend(Element, Element.Methods); if (!Prototype.BrowserFeatures.ElementExtensions && document.createElement('div')['__proto__']) { window.HTMLElement = { }; window.HTMLElement.prototype = document.createElement('div')['__proto__']; Prototype.BrowserFeatures.ElementExtensions = true; } Element.extend = (function() { if (Prototype.BrowserFeatures.SpecificElementExtensions) return Prototype.K; var Methods = { }, ByTag = Element.Methods.ByTag; var extend = Object.extend(function(element) { if (!element || element._extendedByPrototype || element.nodeType != 1 || element == window) return element; var methods = Object.clone(Methods), tagName = element.tagName.toUpperCase(), property, value; // extend methods for specific tags if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]); for (property in methods) { value = methods[property]; if (Object.isFunction(value) && !(property in element)) element[property] = value.methodize(); } element._extendedByPrototype = Prototype.emptyFunction; return element; }, { refresh: function() { // extend methods for all tags (Safari doesn't need this) if (!Prototype.BrowserFeatures.ElementExtensions) { Object.extend(Methods, Element.Methods); Object.extend(Methods, Element.Methods.Simulated); } } }); extend.refresh(); return extend; })(); Element.hasAttribute = function(element, attribute) { if (element.hasAttribute) return element.hasAttribute(attribute); return Element.Methods.Simulated.hasAttribute(element, attribute); }; Element.addMethods = function(methods) { var F = Prototype.BrowserFeatures, T = Element.Methods.ByTag; if (!methods) { Object.extend(Form, Form.Methods); Object.extend(Form.Element, Form.Element.Methods); Object.extend(Element.Methods.ByTag, { "FORM": Object.clone(Form.Methods), "INPUT": Object.clone(Form.Element.Methods), "SELECT": Object.clone(Form.Element.Methods), "TEXTAREA": Object.clone(Form.Element.Methods) }); } if (arguments.length == 2) { var tagName = methods; methods = arguments[1]; } if (!tagName) Object.extend(Element.Methods, methods || { }); else { if (Object.isArray(tagName)) tagName.each(extend); else extend(tagName); } function extend(tagName) { tagName = tagName.toUpperCase(); if (!Element.Methods.ByTag[tagName]) Element.Methods.ByTag[tagName] = { }; Object.extend(Element.Methods.ByTag[tagName], methods); } function copy(methods, destination, onlyIfAbsent) { onlyIfAbsent = onlyIfAbsent || false; for (var property in methods) { var value = methods[property]; if (!Object.isFunction(value)) continue; if (!onlyIfAbsent || !(property in destination)) destination[property] = value.methodize(); } } function findDOMClass(tagName) { var klass; var trans = { "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph", "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": "DList", "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": "Heading", "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote", "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", "CAPTION": "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", "THEAD": "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", "TR": "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET": "FrameSet", "IFRAME": "IFrame" }; if (trans[tagName]) klass = 'HTML' + trans[tagName] + 'Element'; if (window[klass]) return window[klass]; klass = 'HTML' + tagName + 'Element'; if (window[klass]) return window[klass]; klass = 'HTML' + tagName.capitalize() + 'Element'; if (window[klass]) return window[klass]; window[klass] = { }; window[klass].prototype = document.createElement(tagName)['__proto__']; return window[klass]; } if (F.ElementExtensions) { copy(Element.Methods, HTMLElement.prototype); copy(Element.Methods.Simulated, HTMLElement.prototype, true); } if (F.SpecificElementExtensions) { for (var tag in Element.Methods.ByTag) { var klass = findDOMClass(tag); if (Object.isUndefined(klass)) continue; copy(T[tag], klass.prototype); } } Object.extend(Element, Element.Methods); delete Element.ByTag; if (Element.extend.refresh) Element.extend.refresh(); Element.cache = { }; }; document.viewport = { getDimensions: function() { var dimensions = { }, B = Prototype.Browser; $w('width height').each(function(d) { var D = d.capitalize(); if (B.WebKit && !document.evaluate) { // Safari <3.0 needs self.innerWidth/Height dimensions[d] = self['inner' + D]; } else if (B.Opera && parseFloat(window.opera.version()) < 9.5) { // Opera <9.5 needs document.body.clientWidth/Height dimensions[d] = document.body['client' + D] } else { dimensions[d] = document.documentElement['client' + D]; } }); return dimensions; }, getWidth: function() { return this.getDimensions().width; }, getHeight: function() { return this.getDimensions().height; }, getScrollOffsets: function() { return Element._returnOffset( window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft, window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop); } }; /* Portions of the Selector class are derived from Jack Slocum's DomQuery, * part of YUI-Ext version 0.40, distributed under the terms of an MIT-style * license. Please see http://www.yui-ext.com/ for more information. */ var Selector = Class.create({ initialize: function(expression) { this.expression = expression.strip(); if (this.shouldUseSelectorsAPI()) { this.mode = 'selectorsAPI'; } else if (this.shouldUseXPath()) { this.mode = 'xpath'; this.compileXPathMatcher(); } else { this.mode = "normal"; this.compileMatcher(); } }, shouldUseXPath: function() { if (!Prototype.BrowserFeatures.XPath) return false; var e = this.expression; // Safari 3 chokes on :*-of-type and :empty if (Prototype.Browser.WebKit && (e.include("-of-type") || e.include(":empty"))) return false; // XPath can't do namespaced attributes, nor can it read // the "checked" property from DOM nodes if ((/(\[[\w-]*?:|:checked)/).test(e)) return false; return true; }, shouldUseSelectorsAPI: function() { if (!Prototype.BrowserFeatures.SelectorsAPI) return false; if (!Selector._div) Selector._div = new Element('div'); // Make sure the browser treats the selector as valid. Test on an // isolated element to minimize cost of this check. try { Selector._div.querySelector(this.expression); } catch(e) { return false; } return true; }, compileMatcher: function() { var e = this.expression, ps = Selector.patterns, h = Selector.handlers, c = Selector.criteria, le, p, m; if (Selector._cache[e]) { this.matcher = Selector._cache[e]; return; } this.matcher = ["this.matcher = function(root) {", "var r = root, h = Selector.handlers, c = false, n;"]; while (e && le != e && (/\S/).test(e)) { le = e; for (var i in ps) { p = ps[i]; if (m = e.match(p)) { this.matcher.push(Object.isFunction(c[i]) ? c[i](m) : new Template(c[i]).evaluate(m)); e = e.replace(m[0], ''); break; } } } this.matcher.push("return h.unique(n);\n}"); eval(this.matcher.join('\n')); Selector._cache[this.expression] = this.matcher; }, compileXPathMatcher: function() { var e = this.expression, ps = Selector.patterns, x = Selector.xpath, le, m; if (Selector._cache[e]) { this.xpath = Selector._cache[e]; return; } this.matcher = ['.//*']; while (e && le != e && (/\S/).test(e)) { le = e; for (var i in ps) { if (m = e.match(ps[i])) { this.matcher.push(Object.isFunction(x[i]) ? x[i](m) : new Template(x[i]).evaluate(m)); e = e.replace(m[0], ''); break; } } } this.xpath = this.matcher.join(''); Selector._cache[this.expression] = this.xpath; }, findElements: function(root) { root = root || document; var e = this.expression, results; switch (this.mode) { case 'selectorsAPI': // querySelectorAll queries document-wide, then filters to descendants // of the context element. That's not what we want. // Add an explicit context to the selector if necessary. if (root !== document) { var oldId = root.id, id = $(root).identify(); e = "#" + id + " " + e; } results = $A(root.querySelectorAll(e)).map(Element.extend); root.id = oldId; return results; case 'xpath': return document._getElementsByXPath(this.xpath, root); default: return this.matcher(root); } }, match: function(element) { this.tokens = []; var e = this.expression, ps = Selector.patterns, as = Selector.assertions; var le, p, m; while (e && le !== e && (/\S/).test(e)) { le = e; for (var i in ps) { p = ps[i]; if (m = e.match(p)) { // use the Selector.assertions methods unless the selector // is too complex. if (as[i]) { this.tokens.push([i, Object.clone(m)]); e = e.replace(m[0], ''); } else { // reluctantly do a document-wide search // and look for a match in the array return this.findElements(document).include(element); } } } } var match = true, name, matches; for (var i = 0, token; token = this.tokens[i]; i++) { name = token[0], matches = token[1]; if (!Selector.assertions[name](element, matches)) { match = false; break; } } return match; }, toString: function() { return this.expression; }, inspect: function() { return "#"; } }); Object.extend(Selector, { _cache: { }, xpath: { descendant: "//*", child: "/*", adjacent: "/following-sibling::*[1]", laterSibling: '/following-sibling::*', tagName: function(m) { if (m[1] == '*') return ''; return "[local-name()='" + m[1].toLowerCase() + "' or local-name()='" + m[1].toUpperCase() + "']"; }, className: "[contains(concat(' ', @class, ' '), ' #{1} ')]", id: "[@id='#{1}']", attrPresence: function(m) { m[1] = m[1].toLowerCase(); return new Template("[@#{1}]").evaluate(m); }, attr: function(m) { m[1] = m[1].toLowerCase(); m[3] = m[5] || m[6]; return new Template(Selector.xpath.operators[m[2]]).evaluate(m); }, pseudo: function(m) { var h = Selector.xpath.pseudos[m[1]]; if (!h) return ''; if (Object.isFunction(h)) return h(m); return new Template(Selector.xpath.pseudos[m[1]]).evaluate(m); }, operators: { '=': "[@#{1}='#{3}']", '!=': "[@#{1}!='#{3}']", '^=': "[starts-with(@#{1}, '#{3}')]", '$=': "[substring(@#{1}, (string-length(@#{1}) - string-length('#{3}') + 1))='#{3}']", '*=': "[contains(@#{1}, '#{3}')]", '~=': "[contains(concat(' ', @#{1}, ' '), ' #{3} ')]", '|=': "[contains(concat('-', @#{1}, '-'), '-#{3}-')]" }, pseudos: { 'first-child': '[not(preceding-sibling::*)]', 'last-child': '[not(following-sibling::*)]', 'only-child': '[not(preceding-sibling::* or following-sibling::*)]', 'empty': "[count(*) = 0 and (count(text()) = 0)]", 'checked': "[@checked]", 'disabled': "[(@disabled) and (@type!='hidden')]", 'enabled': "[not(@disabled) and (@type!='hidden')]", 'not': function(m) { var e = m[6], p = Selector.patterns, x = Selector.xpath, le, v; var exclusion = []; while (e && le != e && (/\S/).test(e)) { le = e; for (var i in p) { if (m = e.match(p[i])) { v = Object.isFunction(x[i]) ? x[i](m) : new Template(x[i]).evaluate(m); exclusion.push("(" + v.substring(1, v.length - 1) + ")"); e = e.replace(m[0], ''); break; } } } return "[not(" + exclusion.join(" and ") + ")]"; }, 'nth-child': function(m) { return Selector.xpath.pseudos.nth("(count(./preceding-sibling::*) + 1) ", m); }, 'nth-last-child': function(m) { return Selector.xpath.pseudos.nth("(count(./following-sibling::*) + 1) ", m); }, 'nth-of-type': function(m) { return Selector.xpath.pseudos.nth("position() ", m); }, 'nth-last-of-type': function(m) { return Selector.xpath.pseudos.nth("(last() + 1 - position()) ", m); }, 'first-of-type': function(m) { m[6] = "1"; return Selector.xpath.pseudos['nth-of-type'](m); }, 'last-of-type': function(m) { m[6] = "1"; return Selector.xpath.pseudos['nth-last-of-type'](m); }, 'only-of-type': function(m) { var p = Selector.xpath.pseudos; return p['first-of-type'](m) + p['last-of-type'](m); }, nth: function(fragment, m) { var mm, formula = m[6], predicate; if (formula == 'even') formula = '2n+0'; if (formula == 'odd') formula = '2n+1'; if (mm = formula.match(/^(\d+)$/)) // digit only return '[' + fragment + "= " + mm[1] + ']'; if (mm = formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b if (mm[1] == "-") mm[1] = -1; var a = mm[1] ? Number(mm[1]) : 1; var b = mm[2] ? Number(mm[2]) : 0; predicate = "[((#{fragment} - #{b}) mod #{a} = 0) and " + "((#{fragment} - #{b}) div #{a} >= 0)]"; return new Template(predicate).evaluate({ fragment: fragment, a: a, b: b }); } } } }, criteria: { tagName: 'n = h.tagName(n, r, "#{1}", c); c = false;', className: 'n = h.className(n, r, "#{1}", c); c = false;', id: 'n = h.id(n, r, "#{1}", c); c = false;', attrPresence: 'n = h.attrPresence(n, r, "#{1}", c); c = false;', attr: function(m) { m[3] = (m[5] || m[6]); return new Template('n = h.attr(n, r, "#{1}", "#{3}", "#{2}", c); c = false;').evaluate(m); }, pseudo: function(m) { if (m[6]) m[6] = m[6].replace(/"/g, '\\"'); return new Template('n = h.pseudo(n, "#{1}", "#{6}", r, c); c = false;').evaluate(m); }, descendant: 'c = "descendant";', child: 'c = "child";', adjacent: 'c = "adjacent";', laterSibling: 'c = "laterSibling";' }, patterns: { // combinators must be listed first // (and descendant needs to be last combinator) laterSibling: /^\s*~\s*/, child: /^\s*>\s*/, adjacent: /^\s*\+\s*/, descendant: /^\s/, // selectors follow tagName: /^\s*(\*|[\w\-]+)(\b|$)?/, id: /^#([\w\-\*]+)(\b|$)/, className: /^\.([\w\-\*]+)(\b|$)/, pseudo: /^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis)abled|not)(\((.*?)\))?(\b|$|(?=\s|[:+~>]))/, attrPresence: /^\[((?:[\w]+:)?[\w]+)\]/, attr: /\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=)\s*((['"])([^\4]*?)\4|([^'"][^\]]*?)))?\]/ }, // for Selector.match and Element#match assertions: { tagName: function(element, matches) { return matches[1].toUpperCase() == element.tagName.toUpperCase(); }, className: function(element, matches) { return Element.hasClassName(element, matches[1]); }, id: function(element, matches) { return element.id === matches[1]; }, attrPresence: function(element, matches) { return Element.hasAttribute(element, matches[1]); }, attr: function(element, matches) { var nodeValue = Element.readAttribute(element, matches[1]); return nodeValue && Selector.operators[matches[2]](nodeValue, matches[5] || matches[6]); } }, handlers: { // UTILITY FUNCTIONS // joins two collections concat: function(a, b) { for (var i = 0, node; node = b[i]; i++) a.push(node); return a; }, // marks an array of nodes for counting mark: function(nodes) { var _true = Prototype.emptyFunction; for (var i = 0, node; node = nodes[i]; i++) node._countedByPrototype = _true; return nodes; }, unmark: function(nodes) { for (var i = 0, node; node = nodes[i]; i++) node._countedByPrototype = undefined; return nodes; }, // mark each child node with its position (for nth calls) // "ofType" flag indicates whether we're indexing for nth-of-type // rather than nth-child index: function(parentNode, reverse, ofType) { parentNode._countedByPrototype = Prototype.emptyFunction; if (reverse) { for (var nodes = parentNode.childNodes, i = nodes.length - 1, j = 1; i >= 0; i--) { var node = nodes[i]; if (node.nodeType == 1 && (!ofType || node._countedByPrototype)) node.nodeIndex = j++; } } else { for (var i = 0, j = 1, nodes = parentNode.childNodes; node = nodes[i]; i++) if (node.nodeType == 1 && (!ofType || node._countedByPrototype)) node.nodeIndex = j++; } }, // filters out duplicates and extends all nodes unique: function(nodes) { if (nodes.length == 0) return nodes; var results = [], n; for (var i = 0, l = nodes.length; i < l; i++) if (!(n = nodes[i])._countedByPrototype) { n._countedByPrototype = Prototype.emptyFunction; results.push(Element.extend(n)); } return Selector.handlers.unmark(results); }, // COMBINATOR FUNCTIONS descendant: function(nodes) { var h = Selector.handlers; for (var i = 0, results = [], node; node = nodes[i]; i++) h.concat(results, node.getElementsByTagName('*')); return results; }, child: function(nodes) { var h = Selector.handlers; for (var i = 0, results = [], node; node = nodes[i]; i++) { for (var j = 0, child; child = node.childNodes[j]; j++) if (child.nodeType == 1 && child.tagName != '!') results.push(child); } return results; }, adjacent: function(nodes) { for (var i = 0, results = [], node; node = nodes[i]; i++) { var next = this.nextElementSibling(node); if (next) results.push(next); } return results; }, laterSibling: function(nodes) { var h = Selector.handlers; for (var i = 0, results = [], node; node = nodes[i]; i++) h.concat(results, Element.nextSiblings(node)); return results; }, nextElementSibling: function(node) { while (node = node.nextSibling) if (node.nodeType == 1) return node; return null; }, previousElementSibling: function(node) { while (node = node.previousSibling) if (node.nodeType == 1) return node; return null; }, // TOKEN FUNCTIONS tagName: function(nodes, root, tagName, combinator) { var uTagName = tagName.toUpperCase(); var results = [], h = Selector.handlers; if (nodes) { if (combinator) { // fastlane for ordinary descendant combinators if (combinator == "descendant") { for (var i = 0, node; node = nodes[i]; i++) h.concat(results, node.getElementsByTagName(tagName)); return results; } else nodes = this[combinator](nodes); if (tagName == "*") return nodes; } for (var i = 0, node; node = nodes[i]; i++) if (node.tagName.toUpperCase() === uTagName) results.push(node); return results; } else return root.getElementsByTagName(tagName); }, id: function(nodes, root, id, combinator) { var targetNode = $(id), h = Selector.handlers; if (!targetNode) return []; if (!nodes && root == document) return [targetNode]; if (nodes) { if (combinator) { if (combinator == 'child') { for (var i = 0, node; node = nodes[i]; i++) if (targetNode.parentNode == node) return [targetNode]; } else if (combinator == 'descendant') { for (var i = 0, node; node = nodes[i]; i++) if (Element.descendantOf(targetNode, node)) return [targetNode]; } else if (combinator == 'adjacent') { for (var i = 0, node; node = nodes[i]; i++) if (Selector.handlers.previousElementSibling(targetNode) == node) return [targetNode]; } else nodes = h[combinator](nodes); } for (var i = 0, node; node = nodes[i]; i++) if (node == targetNode) return [targetNode]; return []; } return (targetNode && Element.descendantOf(targetNode, root)) ? [targetNode] : []; }, className: function(nodes, root, className, combinator) { if (nodes && combinator) nodes = this[combinator](nodes); return Selector.handlers.byClassName(nodes, root, className); }, byClassName: function(nodes, root, className) { if (!nodes) nodes = Selector.handlers.descendant([root]); var needle = ' ' + className + ' '; for (var i = 0, results = [], node, nodeClassName; node = nodes[i]; i++) { nodeClassName = node.className; if (nodeClassName.length == 0) continue; if (nodeClassName == className || (' ' + nodeClassName + ' ').include(needle)) results.push(node); } return results; }, attrPresence: function(nodes, root, attr, combinator) { if (!nodes) nodes = root.getElementsByTagName("*"); if (nodes && combinator) nodes = this[combinator](nodes); var results = []; for (var i = 0, node; node = nodes[i]; i++) if (Element.hasAttribute(node, attr)) results.push(node); return results; }, attr: function(nodes, root, attr, value, operator, combinator) { if (!nodes) nodes = root.getElementsByTagName("*"); if (nodes && combinator) nodes = this[combinator](nodes); var handler = Selector.operators[operator], results = []; for (var i = 0, node; node = nodes[i]; i++) { var nodeValue = Element.readAttribute(node, attr); if (nodeValue === null) continue; if (handler(nodeValue, value)) results.push(node); } return results; }, pseudo: function(nodes, name, value, root, combinator) { if (nodes && combinator) nodes = this[combinator](nodes); if (!nodes) nodes = root.getElementsByTagName("*"); return Selector.pseudos[name](nodes, value, root); } }, pseudos: { 'first-child': function(nodes, value, root) { for (var i = 0, results = [], node; node = nodes[i]; i++) { if (Selector.handlers.previousElementSibling(node)) continue; results.push(node); } return results; }, 'last-child': function(nodes, value, root) { for (var i = 0, results = [], node; node = nodes[i]; i++) { if (Selector.handlers.nextElementSibling(node)) continue; results.push(node); } return results; }, 'only-child': function(nodes, value, root) { var h = Selector.handlers; for (var i = 0, results = [], node; node = nodes[i]; i++) if (!h.previousElementSibling(node) && !h.nextElementSibling(node)) results.push(node); return results; }, 'nth-child': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, formula, root); }, 'nth-last-child': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, formula, root, true); }, 'nth-of-type': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, formula, root, false, true); }, 'nth-last-of-type': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, formula, root, true, true); }, 'first-of-type': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, "1", root, false, true); }, 'last-of-type': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, "1", root, true, true); }, 'only-of-type': function(nodes, formula, root) { var p = Selector.pseudos; return p['last-of-type'](p['first-of-type'](nodes, formula, root), formula, root); }, // handles the an+b logic getIndices: function(a, b, total) { if (a == 0) return b > 0 ? [b] : []; return $R(1, total).inject([], function(memo, i) { if (0 == (i - b) % a && (i - b) / a >= 0) memo.push(i); return memo; }); }, // handles nth(-last)-child, nth(-last)-of-type, and (first|last)-of-type nth: function(nodes, formula, root, reverse, ofType) { if (nodes.length == 0) return []; if (formula == 'even') formula = '2n+0'; if (formula == 'odd') formula = '2n+1'; var h = Selector.handlers, results = [], indexed = [], m; h.mark(nodes); for (var i = 0, node; node = nodes[i]; i++) { if (!node.parentNode._countedByPrototype) { h.index(node.parentNode, reverse, ofType); indexed.push(node.parentNode); } } if (formula.match(/^\d+$/)) { // just a number formula = Number(formula); for (var i = 0, node; node = nodes[i]; i++) if (node.nodeIndex == formula) results.push(node); } else if (m = formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b if (m[1] == "-") m[1] = -1; var a = m[1] ? Number(m[1]) : 1; var b = m[2] ? Number(m[2]) : 0; var indices = Selector.pseudos.getIndices(a, b, nodes.length); for (var i = 0, node, l = indices.length; node = nodes[i]; i++) { for (var j = 0; j < l; j++) if (node.nodeIndex == indices[j]) results.push(node); } } h.unmark(nodes); h.unmark(indexed); return results; }, 'empty': function(nodes, value, root) { for (var i = 0, results = [], node; node = nodes[i]; i++) { // IE treats comments as element nodes if (node.tagName == '!' || node.firstChild) continue; results.push(node); } return results; }, 'not': function(nodes, selector, root) { var h = Selector.handlers, selectorType, m; var exclusions = new Selector(selector).findElements(root); h.mark(exclusions); for (var i = 0, results = [], node; node = nodes[i]; i++) if (!node._countedByPrototype) results.push(node); h.unmark(exclusions); return results; }, 'enabled': function(nodes, value, root) { for (var i = 0, results = [], node; node = nodes[i]; i++) if (!node.disabled && (!node.type || node.type !== 'hidden')) results.push(node); return results; }, 'disabled': function(nodes, value, root) { for (var i = 0, results = [], node; node = nodes[i]; i++) if (node.disabled) results.push(node); return results; }, 'checked': function(nodes, value, root) { for (var i = 0, results = [], node; node = nodes[i]; i++) if (node.checked) results.push(node); return results; } }, operators: { '=': function(nv, v) { return nv == v; }, '!=': function(nv, v) { return nv != v; }, '^=': function(nv, v) { return nv == v || nv && nv.startsWith(v); }, '$=': function(nv, v) { return nv == v || nv && nv.endsWith(v); }, '*=': function(nv, v) { return nv == v || nv && nv.include(v); }, '$=': function(nv, v) { return nv.endsWith(v); }, '*=': function(nv, v) { return nv.include(v); }, '~=': function(nv, v) { return (' ' + nv + ' ').include(' ' + v + ' '); }, '|=': function(nv, v) { return ('-' + (nv || "").toUpperCase() + '-').include('-' + (v || "").toUpperCase() + '-'); } }, split: function(expression) { var expressions = []; expression.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/, function(m) { expressions.push(m[1].strip()); }); return expressions; }, matchElements: function(elements, expression) { var matches = $$(expression), h = Selector.handlers; h.mark(matches); for (var i = 0, results = [], element; element = elements[i]; i++) if (element._countedByPrototype) results.push(element); h.unmark(matches); return results; }, findElement: function(elements, expression, index) { if (Object.isNumber(expression)) { index = expression; expression = false; } return Selector.matchElements(elements, expression || '*')[index || 0]; }, findChildElements: function(element, expressions) { expressions = Selector.split(expressions.join(',')); var results = [], h = Selector.handlers; for (var i = 0, l = expressions.length, selector; i < l; i++) { selector = new Selector(expressions[i].strip()); h.concat(results, selector.findElements(element)); } return (l > 1) ? h.unique(results) : results; } }); if (Prototype.Browser.IE) { Object.extend(Selector.handlers, { // IE returns comment nodes on getElementsByTagName("*"). // Filter them out. concat: function(a, b) { for (var i = 0, node; node = b[i]; i++) if (node.tagName !== "!") a.push(node); return a; }, // IE improperly serializes _countedByPrototype in (inner|outer)HTML. unmark: function(nodes) { for (var i = 0, node; node = nodes[i]; i++) node.removeAttribute('_countedByPrototype'); return nodes; } }); } function $$() { return Selector.findChildElements(document, $A(arguments)); } var Form = { reset: function(form) { $(form).reset(); return form; }, serializeElements: function(elements, options) { if (typeof options != 'object') options = { hash: !!options }; else if (Object.isUndefined(options.hash)) options.hash = true; var key, value, submitted = false, submit = options.submit; var data = elements.inject({ }, function(result, element) { if (!element.disabled && element.name) { key = element.name; value = $(element).getValue(); if (value != null && element.type != 'file' && (element.type != 'submit' || (!submitted && submit !== false && (!submit || key == submit) && (submitted = true)))) { if (key in result) { // a key is already present; construct an array of values if (!Object.isArray(result[key])) result[key] = [result[key]]; result[key].push(value); } else result[key] = value; } } return result; }); return options.hash ? data : Object.toQueryString(data); } }; Form.Methods = { serialize: function(form, options) { return Form.serializeElements(Form.getElements(form), options); }, getElements: function(form) { return $A($(form).getElementsByTagName('*')).inject([], function(elements, child) { if (Form.Element.Serializers[child.tagName.toLowerCase()]) elements.push(Element.extend(child)); return elements; } ); }, getInputs: function(form, typeName, name) { form = $(form); var inputs = form.getElementsByTagName('input'); if (!typeName && !name) return $A(inputs).map(Element.extend); for (var i = 0, matchingInputs = [], length = inputs.length; i < length; i++) { var input = inputs[i]; if ((typeName && input.type != typeName) || (name && input.name != name)) continue; matchingInputs.push(Element.extend(input)); } return matchingInputs; }, disable: function(form) { form = $(form); Form.getElements(form).invoke('disable'); return form; }, enable: function(form) { form = $(form); Form.getElements(form).invoke('enable'); return form; }, findFirstElement: function(form) { var elements = $(form).getElements().findAll(function(element) { return 'hidden' != element.type && !element.disabled; }); var firstByIndex = elements.findAll(function(element) { return element.hasAttribute('tabIndex') && element.tabIndex >= 0; }).sortBy(function(element) { return element.tabIndex }).first(); return firstByIndex ? firstByIndex : elements.find(function(element) { return ['input', 'select', 'textarea'].include(element.tagName.toLowerCase()); }); }, focusFirstElement: function(form) { form = $(form); form.findFirstElement().activate(); return form; }, request: function(form, options) { form = $(form), options = Object.clone(options || { }); var params = options.parameters, action = form.readAttribute('action') || ''; if (action.blank()) action = window.location.href; options.parameters = form.serialize(true); if (params) { if (Object.isString(params)) params = params.toQueryParams(); Object.extend(options.parameters, params); } if (form.hasAttribute('method') && !options.method) options.method = form.method; return new Ajax.Request(action, options); } }; /*--------------------------------------------------------------------------*/ Form.Element = { focus: function(element) { $(element).focus(); return element; }, select: function(element) { $(element).select(); return element; } }; Form.Element.Methods = { serialize: function(element) { element = $(element); if (!element.disabled && element.name) { var value = element.getValue(); if (value != undefined) { var pair = { }; pair[element.name] = value; return Object.toQueryString(pair); } } return ''; }, getValue: function(element) { element = $(element); var method = element.tagName.toLowerCase(); return Form.Element.Serializers[method](element); }, setValue: function(element, value) { element = $(element); var method = element.tagName.toLowerCase(); Form.Element.Serializers[method](element, value); return element; }, clear: function(element) { $(element).value = ''; return element; }, present: function(element) { return $(element).value != ''; }, activate: function(element) { element = $(element); try { element.focus(); if (element.select && (element.tagName.toLowerCase() != 'input' || !['button', 'reset', 'submit'].include(element.type))) element.select(); } catch (e) { } return element; }, disable: function(element) { element = $(element); element.disabled = true; return element; }, enable: function(element) { element = $(element); element.disabled = false; return element; } }; /*--------------------------------------------------------------------------*/ var Field = Form.Element; var $F = Form.Element.Methods.getValue; /*--------------------------------------------------------------------------*/ Form.Element.Serializers = { input: function(element, value) { switch (element.type.toLowerCase()) { case 'checkbox': case 'radio': return Form.Element.Serializers.inputSelector(element, value); default: return Form.Element.Serializers.textarea(element, value); } }, inputSelector: function(element, value) { if (Object.isUndefined(value)) return element.checked ? element.value : null; else element.checked = !!value; }, textarea: function(element, value) { if (Object.isUndefined(value)) return element.value; else element.value = value; }, select: function(element, value) { if (Object.isUndefined(value)) return this[element.type == 'select-one' ? 'selectOne' : 'selectMany'](element); else { var opt, currentValue, single = !Object.isArray(value); for (var i = 0, length = element.length; i < length; i++) { opt = element.options[i]; currentValue = this.optionValue(opt); if (single) { if (currentValue == value) { opt.selected = true; return; } } else opt.selected = value.include(currentValue); } } }, selectOne: function(element) { var index = element.selectedIndex; return index >= 0 ? this.optionValue(element.options[index]) : null; }, selectMany: function(element) { var values, length = element.length; if (!length) return null; for (var i = 0, values = []; i < length; i++) { var opt = element.options[i]; if (opt.selected) values.push(this.optionValue(opt)); } return values; }, optionValue: function(opt) { // extend element because hasAttribute may not be native return Element.extend(opt).hasAttribute('value') ? opt.value : opt.text; } }; /*--------------------------------------------------------------------------*/ Abstract.TimedObserver = Class.create(PeriodicalExecuter, { initialize: function($super, element, frequency, callback) { $super(callback, frequency); this.element = $(element); this.lastValue = this.getValue(); }, execute: function() { var value = this.getValue(); if (Object.isString(this.lastValue) && Object.isString(value) ? this.lastValue != value : String(this.lastValue) != String(value)) { this.callback(this.element, value); this.lastValue = value; } } }); Form.Element.Observer = Class.create(Abstract.TimedObserver, { getValue: function() { return Form.Element.getValue(this.element); } }); Form.Observer = Class.create(Abstract.TimedObserver, { getValue: function() { return Form.serialize(this.element); } }); /*--------------------------------------------------------------------------*/ Abstract.EventObserver = Class.create({ initialize: function(element, callback) { this.element = $(element); this.callback = callback; this.lastValue = this.getValue(); if (this.element.tagName.toLowerCase() == 'form') this.registerFormCallbacks(); else this.registerCallback(this.element); }, onElementEvent: function() { var value = this.getValue(); if (this.lastValue != value) { this.callback(this.element, value); this.lastValue = value; } }, registerFormCallbacks: function() { Form.getElements(this.element).each(this.registerCallback, this); }, registerCallback: function(element) { if (element.type) { switch (element.type.toLowerCase()) { case 'checkbox': case 'radio': Event.observe(element, 'click', this.onElementEvent.bind(this)); break; default: Event.observe(element, 'change', this.onElementEvent.bind(this)); break; } } } }); Form.Element.EventObserver = Class.create(Abstract.EventObserver, { getValue: function() { return Form.Element.getValue(this.element); } }); Form.EventObserver = Class.create(Abstract.EventObserver, { getValue: function() { return Form.serialize(this.element); } }); if (!window.Event) var Event = { }; Object.extend(Event, { KEY_BACKSPACE: 8, KEY_TAB: 9, KEY_RETURN: 13, KEY_ESC: 27, KEY_LEFT: 37, KEY_UP: 38, KEY_RIGHT: 39, KEY_DOWN: 40, KEY_DELETE: 46, KEY_HOME: 36, KEY_END: 35, KEY_PAGEUP: 33, KEY_PAGEDOWN: 34, KEY_INSERT: 45, cache: { }, relatedTarget: function(event) { var element; switch(event.type) { case 'mouseover': element = event.fromElement; break; case 'mouseout': element = event.toElement; break; default: return null; } return Element.extend(element); } }); Event.Methods = (function() { var isButton; if (Prototype.Browser.IE) { var buttonMap = { 0: 1, 1: 4, 2: 2 }; isButton = function(event, code) { return event.button == buttonMap[code]; }; } else if (Prototype.Browser.WebKit) { isButton = function(event, code) { switch (code) { case 0: return event.which == 1 && !event.metaKey; case 1: return event.which == 1 && event.metaKey; default: return false; } }; } else { isButton = function(event, code) { return event.which ? (event.which === code + 1) : (event.button === code); }; } return { isLeftClick: function(event) { return isButton(event, 0) }, isMiddleClick: function(event) { return isButton(event, 1) }, isRightClick: function(event) { return isButton(event, 2) }, element: function(event) { event = Event.extend(event); var node = event.target, type = event.type, currentTarget = event.currentTarget; if (currentTarget && currentTarget.tagName) { // Firefox screws up the "click" event when moving between radio buttons // via arrow keys. It also screws up the "load" and "error" events on images, // reporting the document as the target instead of the original image. if (type === 'load' || type === 'error' || (type === 'click' && currentTarget.tagName.toLowerCase() === 'input' && currentTarget.type === 'radio')) node = currentTarget; } if (node.nodeType == Node.TEXT_NODE) node = node.parentNode; return Element.extend(node); }, findElement: function(event, expression) { var element = Event.element(event); if (!expression) return element; var elements = [element].concat(element.ancestors()); return Selector.findElement(elements, expression, 0); }, pointer: function(event) { var docElement = document.documentElement, body = document.body || { scrollLeft: 0, scrollTop: 0 }; return { x: event.pageX || (event.clientX + (docElement.scrollLeft || body.scrollLeft) - (docElement.clientLeft || 0)), y: event.pageY || (event.clientY + (docElement.scrollTop || body.scrollTop) - (docElement.clientTop || 0)) }; }, pointerX: function(event) { return Event.pointer(event).x }, pointerY: function(event) { return Event.pointer(event).y }, stop: function(event) { Event.extend(event); event.preventDefault(); event.stopPropagation(); event.stopped = true; } }; })(); Event.extend = (function() { var methods = Object.keys(Event.Methods).inject({ }, function(m, name) { m[name] = Event.Methods[name].methodize(); return m; }); if (Prototype.Browser.IE) { Object.extend(methods, { stopPropagation: function() { this.cancelBubble = true }, preventDefault: function() { this.returnValue = false }, inspect: function() { return "[object Event]" } }); return function(event) { if (!event) return false; if (event._extendedByPrototype) return event; event._extendedByPrototype = Prototype.emptyFunction; var pointer = Event.pointer(event); Object.extend(event, { target: event.srcElement, relatedTarget: Event.relatedTarget(event), pageX: pointer.x, pageY: pointer.y }); return Object.extend(event, methods); }; } else { Event.prototype = Event.prototype || document.createEvent("HTMLEvents")['__proto__']; Object.extend(Event.prototype, methods); return Prototype.K; } })(); Object.extend(Event, (function() { var cache = Event.cache; function getEventID(element) { if (element._prototypeEventID) return element._prototypeEventID[0]; arguments.callee.id = arguments.callee.id || 1; return element._prototypeEventID = [++arguments.callee.id]; } function getDOMEventName(eventName) { if (eventName && eventName.include(':')) return "dataavailable"; return eventName; } function getCacheForID(id) { return cache[id] = cache[id] || { }; } function getWrappersForEventName(id, eventName) { var c = getCacheForID(id); return c[eventName] = c[eventName] || []; } function createWrapper(element, eventName, handler) { var id = getEventID(element); var c = getWrappersForEventName(id, eventName); if (c.pluck("handler").include(handler)) return false; var wrapper = function(event) { if (!Event || !Event.extend || (event.eventName && event.eventName != eventName)) return false; Event.extend(event); handler.call(element, event); }; wrapper.handler = handler; c.push(wrapper); return wrapper; } function findWrapper(id, eventName, handler) { var c = getWrappersForEventName(id, eventName); return c.find(function(wrapper) { return wrapper.handler == handler }); } function destroyWrapper(id, eventName, handler) { var c = getCacheForID(id); if (!c[eventName]) return false; c[eventName] = c[eventName].without(findWrapper(id, eventName, handler)); } function destroyCache() { for (var id in cache) for (var eventName in cache[id]) cache[id][eventName] = null; } // Internet Explorer needs to remove event handlers on page unload // in order to avoid memory leaks. if (window.attachEvent) { window.attachEvent("onunload", destroyCache); } // Safari has a dummy event handler on page unload so that it won't // use its bfcache. Safari <= 3.1 has an issue with restoring the "document" // object when page is returned to via the back button using its bfcache. if (Prototype.Browser.WebKit) { window.addEventListener('unload', Prototype.emptyFunction, false); } return { observe: function(element, eventName, handler) { element = $(element); var name = getDOMEventName(eventName); var wrapper = createWrapper(element, eventName, handler); if (!wrapper) return element; if (element.addEventListener) { element.addEventListener(name, wrapper, false); } else { element.attachEvent("on" + name, wrapper); } return element; }, stopObserving: function(element, eventName, handler) { element = $(element); var id = getEventID(element), name = getDOMEventName(eventName); if (!handler && eventName) { getWrappersForEventName(id, eventName).each(function(wrapper) { element.stopObserving(eventName, wrapper.handler); }); return element; } else if (!eventName) { Object.keys(getCacheForID(id)).each(function(eventName) { element.stopObserving(eventName); }); return element; } var wrapper = findWrapper(id, eventName, handler); if (!wrapper) return element; if (element.removeEventListener) { element.removeEventListener(name, wrapper, false); } else { element.detachEvent("on" + name, wrapper); } destroyWrapper(id, eventName, handler); return element; }, fire: function(element, eventName, memo) { element = $(element); if (element == document && document.createEvent && !element.dispatchEvent) element = document.documentElement; var event; if (document.createEvent) { event = document.createEvent("HTMLEvents"); event.initEvent("dataavailable", true, true); } else { event = document.createEventObject(); event.eventType = "ondataavailable"; } event.eventName = eventName; event.memo = memo || { }; if (document.createEvent) { element.dispatchEvent(event); } else { element.fireEvent(event.eventType, event); } return Event.extend(event); } }; })()); Object.extend(Event, Event.Methods); Element.addMethods({ fire: Event.fire, observe: Event.observe, stopObserving: Event.stopObserving }); Object.extend(document, { fire: Element.Methods.fire.methodize(), observe: Element.Methods.observe.methodize(), stopObserving: Element.Methods.stopObserving.methodize(), loaded: false }); (function() { /* Support for the DOMContentLoaded event is based on work by Dan Webb, Matthias Miller, Dean Edwards and John Resig. */ var timer; function fireContentLoadedEvent() { if (document.loaded) return; if (timer) window.clearInterval(timer); document.fire("dom:loaded"); document.loaded = true; } if (document.addEventListener) { if (Prototype.Browser.WebKit) { timer = window.setInterval(function() { if (/loaded|complete/.test(document.readyState)) fireContentLoadedEvent(); }, 0); Event.observe(window, "load", fireContentLoadedEvent); } else { document.addEventListener("DOMContentLoaded", fireContentLoadedEvent, false); } } else { document.write("